:root{--paper:#f5efe0;--ink:#342e27;--muted:#736b5d;--green:#314d40;--line:#b9ab91;--gold:#d7ad58}*{box-sizing:border-box}button,a,summary{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,summary:focus-visible,a:focus-visible,video:focus-visible{outline:3px solid #af7228;outline-offset:4px}button{color:var(--ink)}[hidden]{display:none!important}body{color:var(--ink);font-family:Georgia,'Times New Roman',serif}#bar{height:auto;min-height:64px;gap:18px;padding:10px 22px;background:linear-gradient(#f5efe0f5,#f5efe0e5);border-bottom:1px solid #b9ab9160;z-index:15;box-shadow:0 2px 18px #342e2710}#bar .brand{font-size:14px;white-space:nowrap;letter-spacing:.02em}.brand strong{font-size:22px;font-weight:400}#orientation{font:12px/1.4 system-ui;color:#5f6154;border-left:1px solid #b9ab91;padding-left:18px;flex:1}#bar button:not(#home){border:1px solid #9b9c86;border-radius:30px;min-height:40px;background:#f8f3e7;padding:7px 15px;font:12px system-ui}#home.icon{margin-left:auto;box-shadow:none}#home.icon .home-cap{display:none}#bar #current,#bar #slider,#travel-hint{display:none}#credits{z-index:14;font-family:system-ui;font-size:10px;bottom:8px;right:8px;background:#f5efe0d9}#credits summary{font-size:15px;padding:4px 8px}
#loading{position:fixed;inset:0;z-index:99998;background:#e8e8db;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#3c4f42}.loading-mark{text-align:center;font:24px/1.25 Georgia;letter-spacing:.03em}.loading-mark em{font-size:60px}.loading-mark:after{content:'';display:block;width:48px;height:1px;background:#7a8f77;margin:28px auto}#loading p{font:13px system-ui;letter-spacing:.02em}.eyebrow{display:block;font:10px/1.5 system-ui;text-transform:uppercase;letter-spacing:.13em;color:var(--muted)}
#harvey-host{position:fixed;z-index:12;bottom:max(24px,env(safe-area-inset-bottom));left:24px;display:flex;align-items:center;gap:14px;background:#f8f1e3f5;border:1px solid #c0ad8c;border-radius:5px 24px 5px 5px;padding:17px 23px 17px 10px;max-width:min(600px,calc(100vw - 70px));box-shadow:0 8px 40px #202d2930}#harvey-host .host-dog{width:82px;flex:none}.host-dog img{display:block;width:100%;height:82px;object-fit:contain;mix-blend-mode:multiply}.host-pick{display:block;font:22px/1.2 Georgia;text-align:left;padding:5px 0 9px;background:none;border:0}.host-pick:after{content:' ↗';font:18px Georgia;color:#5d735b}.host-links{display:flex;gap:14px;flex-wrap:wrap}.host-links button{border:0;border-bottom:1px solid #b7ad96;padding:3px 0;background:none;font:11px/1.4 system-ui;color:#59624e}.host-links button{min-height:30px}#harvey-host.compact{padding:8px 18px 8px 8px}#harvey-host.compact .host-dog{width:46px}#harvey-host.compact .host-dog img{height:46px}#harvey-host.compact .host-pick{font-size:16px}#harvey-host.compact .host-links button:first-child{display:none}
.orb-layer{z-index:8}.orb-photo{position:absolute;width:64%;height:64%;object-fit:cover;left:18%;top:18%;border-radius:50%;border:1px solid #ffffff90;opacity:.94;filter:sepia(.13)}.orb .orb-tag{position:absolute;top:105%;left:50%;transform:translateX(-50%);width:max-content;max-width:210px;padding:6px 10px;background:#faf3e4f5;box-shadow:0 2px 6px #0002;color:#392f22;border-radius:3px;border:1px solid #b9ab91;font:13px/1.25 Georgia;white-space:normal;text-align:center;opacity:0;transition:opacity .2s;pointer-events:none}.orb.host-next .orb-tag,.orb.host-awake .orb-tag,.orb:focus-visible .orb-tag{opacity:1}.orb.host-next{z-index:3}.orb.host-next .orb-tag{font-weight:bold}.orb.host-dark .orb-photo{filter:grayscale(.9)}.orb.visited:after{content:'✓';position:absolute;right:1px;bottom:4px;font:bold 19px system-ui;color:#314d40;background:#f5efe0;border:1px solid #82937a;width:24px;height:24px;line-height:24px;border-radius:50%}.orb.host-next .orb-rim{animation:none!important;box-shadow:0 0 22px #f8cf73b0}.nav-pop{position:fixed;z-index:13;width:74px;height:74px;border:3px solid #fcf4c4;border-radius:50%;pointer-events:none;animation:nav-pop .65s ease-out both}@keyframes nav-pop{from{transform:translate(-50%,-50%) scale(.5);box-shadow:0 0 0 1px #faf1cf}to{transform:translate(-50%,-50%) scale(1.8);opacity:0;box-shadow:0 0 0 18px #faf1cf00}}
#navigation-panel{position:fixed;z-index:30;top:82px;bottom:26px;left:50%;transform:translateX(-50%);width:min(880px,calc(100vw - 80px));background:var(--paper);box-shadow:0 24px 90px #15271e60;border:1px solid #aa9a7d;border-radius:6px;overflow:auto;overscroll-behavior:contain;scrollbar-color:#b7ac96 #f5efe0;isolation:isolate}#navigation-panel .panel-header{position:sticky;top:0;z-index:3;display:flex;gap:16px;justify-content:space-between;align-items:start;padding:23px 30px 18px;background:#f5efe0f8;border-bottom:1px solid #c4b699;box-shadow:0 3px 10px #65583808}#navigation-panel h1{font:normal 29px/1.1 Georgia;margin:4px 0 0;letter-spacing:-.02em}#navigation-panel h2{font:normal 23px/1.2 Georgia;margin:30px 0 15px}#navigation-panel h3{font:normal 19px/1.25 Georgia}#navigation-panel p{font:16px/1.65 Georgia}#navigation-panel .close-panel{flex:none;background:transparent;border:1px solid #b7ab92;border-radius:25px;font:11px/1.3 system-ui;padding:10px 13px;min-height:40px;white-space:nowrap}.cabinet-content,.story-content,.places-content,.completion-content{padding:20px 30px 36px}.story-content{max-width:800px;margin:auto}.cabinet-intro{display:flex;align-items:center;gap:16px;padding:3px 0 15px}.cabinet-intro .host-dog{width:67px;flex:none}.cabinet-intro .host-dog img{height:65px}.cabinet-pick{font:22px/1.2 Georgia;background:none;border:0;padding:4px 0;text-align:left}.cabinet-pick:after{content:' ↗';color:#5d735b}.film-shelf{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.story-tile{position:relative;background:#fffaf0;border:1px solid #c3b395;text-align:left;padding:0 0 15px;box-shadow:0 3px 0 #ded4bd;transition:transform .15s;border-radius:3px;overflow:hidden;display:flex;flex-direction:column}.story-tile:hover{transform:translateY(-3px)}.tile-image{position:relative;width:100%;aspect-ratio:16/9;background:#d8d2bf;overflow:hidden}.tile-image img{width:100%;height:100%;object-fit:cover;display:block}.film-label{position:absolute;bottom:8px;left:9px;padding:5px 8px;font:10px system-ui;color:#fff9e8;background:#314d40e8;border-radius:2px}.tile-period{display:block;color:#7a6b52;font:10px system-ui;padding:14px 14px 6px}.story-tile strong{display:block;font:normal 21px/1.2 Georgia;padding:0 14px}.visited-label{font:10px system-ui;color:#547156;display:block;padding:8px 14px 0}.short-shelf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.short-shelf .tile-image{aspect-ratio:3/2}.short-shelf strong{font-size:16px}.two-origins{padding:22px;background:#e9e1cd;border:1px solid #bead89;margin:32px 0 20px;border-radius:3px}.two-origins h2{margin:5px 0 10px!important}.origin-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}.origin-pair article{border-top:1px solid #b5a280}.origin-pair h3{margin-bottom:7px}.origin-pair p{font-size:15px!important}.two-origins .source{margin-bottom:5px}.origin-link{border:0;border-bottom:1px solid #a08a65;background:none;padding:6px 0;font:13px system-ui}.map-note,.time-access{font:11px/1.5 system-ui;color:#756f61}.map-note p,.time-access p{font:12px/1.6 system-ui!important;max-width:600px}.time-access{border-top:1px solid #b9ab91;margin-top:30px;padding-top:18px}.map-note summary,.time-access summary{cursor:pointer;padding:7px 0;min-height:30px}.period-caption{font:12px/1.5 system-ui!important;margin:0;color:#746a59}.map-note{margin:0 0 9px}.movie-frame{position:relative;width:100%;background:#151b17;border-radius:3px;overflow:hidden}.movie-frame video{display:block;width:100%;max-height:53vh;aspect-ratio:16/9;background:#151b17;object-fit:contain}.play-film{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#f5efe0;border:1px solid #b9ab91;padding:12px 18px;border-radius:28px;font:13px system-ui}.sound-note{font:10px/1.5 system-ui!important;margin:9px 0 15px;color:#7f7666}.story-host{display:flex;align-items:center;gap:17px;padding:18px 0 15px;border-top:1px solid #c3b395;margin-top:20px}.story-host .host-dog{width:66px;flex:none}.story-host .host-dog img{height:69px}.primary{display:block;border:1px solid #314d40;border-radius:4px;padding:11px 15px;background:var(--green);color:#fff8e7;font:16px/1.3 Georgia;text-align:left;min-height:44px;margin:6px 0 11px}.story-actions{display:flex;flex-wrap:wrap;gap:15px}.story-actions button{font:11px system-ui;padding:7px 0;min-height:36px;border:0;border-bottom:1px solid #b9ab91;background:transparent}.story-transcript{margin-top:15px;border-top:1px solid #c3b395;padding-top:15px}.story-transcript summary{font:12px system-ui;cursor:pointer;min-height:36px}.reading-image{max-height:270px;width:100%;object-fit:contain;display:block;background:#eee7d5;margin:17px 0 20px}.source{font:11px/1.5 system-ui!important;color:#7f7666}.origin-context{font:12px/1.6 system-ui!important;background:#e9e1cd;padding:12px 16px;border-left:2px solid #a18d64}.place-list{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.place-item{display:flex;gap:13px;align-items:center;padding:10px;text-align:left;background:#fff9ec;border:1px solid #c3b395;border-radius:3px}.place-item img{width:82px;height:65px;object-fit:cover;flex:none}.place-item strong{display:block;font:16px Georgia}.place-item span{display:block;font:11px/1.4 system-ui;margin-top:5px;color:#746a59}.completion{max-width:640px}.completion-content{padding:30px 45px 45px;text-align:center}.completion-content .host-dog{width:170px;margin:auto}.completion-content .host-dog img{height:150px}.completion-content .primary{margin:25px auto 15px;text-align:center}.completion-content>button:not(.primary){background:none;border:0;border-bottom:1px solid #b9ab91;font:12px system-ui;padding:10px}
@media(max-width:650px){#bar{min-height:62px;padding:8px 12px;gap:9px}.brand{font-size:0!important}.brand strong{font-size:20px}#orientation{border:0;padding-left:0;font-size:10px;line-height:1.4;max-width:105px}#bar button:not(#home){padding:6px 10px;font-size:10px;min-height:40px}#home.icon{width:40px;height:40px;min-width:40px;padding:7px}.home-cap{display:none}#navigation-panel{top:72px;bottom:12px;width:calc(100vw - 20px);border-radius:5px}#navigation-panel .panel-header{padding:16px;gap:10px}#navigation-panel h1{font-size:23px}#navigation-panel .close-panel{font-size:0;width:40px;padding:8px}#navigation-panel .close-panel:after{content:'×';font:22px system-ui}.cabinet-content,.story-content,.places-content{padding:16px 16px 26px}.film-shelf{gap:11px}.story-tile strong{font-size:17px;padding:0 10px}.tile-period{padding:10px 10px 5px}.short-shelf{grid-template-columns:1fr 1fr;gap:11px}.short-shelf strong{font-size:15px}.origin-pair{grid-template-columns:1fr;gap:0}.two-origins{padding:17px}.two-origins p{font-size:14px!important}#harvey-host{left:10px;bottom:30px;padding:12px 15px 12px 7px;gap:7px;max-width:calc(100vw - 20px);border-radius:4px 18px 4px 4px}#harvey-host .host-dog{width:56px}#harvey-host .host-dog img{height:65px}.host-pick{font-size:20px;line-height:1.2;padding-bottom:5px}.eyebrow{font-size:9px}.host-links{gap:9px}.host-links button{font-size:10px;min-height:32px}#harvey-host.compact .host-links{display:none}.story-host{gap:9px;align-items:start}.story-host .host-dog{width:45px}.story-host .host-dog img{height:48px}.story-host .primary{font-size:16px;padding:10px}.movie-frame video{max-height:none;aspect-ratio:16/9}.place-list{grid-template-columns:1fr}.place-item img{width:85px;height:63px}.completion-content{padding:25px}.orb .orb-tag{max-width:170px}.orb.host-next .orb-tag{font-size:15px}.sound-note{font-size:10px}.cabinet-pick{font-size:20px}#navigation-panel p{font-size:15px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.nav-pop{display:none}}
.orb .orb-tag{transform:translateX(-50%) scale(calc(1 / max(.05,var(--orb-scale,1))));transform-origin:top center;max-width:220px}.orb.host-next .orb-tag{font-size:14px}.orb.host-near .orb-tag{opacity:1}
.film-tools{display:flex;gap:12px;justify-content:space-between;align-items:center}.copy-story{background:none;border:0;border-bottom:1px solid #b9ab91;color:#756f61;white-space:nowrap;font:10px system-ui;padding:7px 0;min-height:32px}.film-tools input{max-width:100%;font:11px system-ui}
/* Story labels have natural height. Reset the old bottom anchor so multiline
   text determines its paper box; keep screen-size lettering as bubbles scale. */
.orb .orb-tag{bottom:auto;height:auto;min-height:34px;top:calc(100% + 10px / max(.05,var(--orb-scale,1)));display:block;width:max-content;max-width:min(220px,calc(100vw - 32px));padding:8px 12px;line-height:1.35;white-space:normal;overflow-wrap:anywhere;transform:scale(calc(1 / max(.05,var(--orb-scale,1)))) translateX(calc(-50% + var(--label-shift,0px)));transform-origin:top left;border-radius:5px;box-shadow:0 3px 9px #342e2730}
.orb .orb-tag:before{content:'';position:absolute;width:10px;height:10px;left:calc(50% - var(--label-shift,0px));top:-6px;transform:translateX(-50%) rotate(45deg);border-left:1px solid #b9ab91;border-top:1px solid #b9ab91;background:#faf3e4}
@media(max-width:650px){.orb .orb-tag{max-width:190px;font-size:13px}.orb.host-next .orb-tag{font-size:14px}}
/* Visible choices in Harvey's box; exploring never collapses them into small print. */
#harvey-host{width:min(610px,calc(100vw - 48px));max-width:calc(100vw - 48px);align-items:flex-start;padding:16px 18px 16px 10px}
#harvey-host .host-dog{width:74px;padding-top:8px}#harvey-host .host-words{min-width:0;flex:1}
#harvey-host .host-pick{width:100%;font-size:22px;padding:7px 0 13px;line-height:1.2}
#harvey-host .host-links{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:8px}
#harvey-host .host-links button,#navigation-panel .story-actions button{display:block;min-height:46px;padding:10px 12px;background:#fffaee;border:1px solid #9d9279;border-radius:5px;color:#354b3e;font:13px/1.3 system-ui;text-align:center;box-shadow:0 2px 0 #d7cdb8;white-space:normal}
#harvey-host .host-links button:hover,#navigation-panel .story-actions button:hover{background:#e7eddf;border-color:#5c775d}
#harvey-host .host-links button[aria-pressed=true]{background:#e2eadb;border-color:#5c775d;box-shadow:inset 0 0 0 1px #5c775d}
#navigation-panel .story-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
/* Hover changes the label, never the bubble's size, picture, or hit area. */
.orb,.orb.hop{transition:opacity .28s ease-out}
.orb .orb-body,.orb.hop .orb-body,.orb:hover .orb-body,.orb:focus-visible .orb-body,.orb.hop:hover .orb-body{animation:none!important;transform:none!important;transition:none;filter:drop-shadow(0 0 4px #fff8dc) drop-shadow(0 4px 5px #342e2750)}
.orb.host-dark .orb-body{filter:drop-shadow(0 0 4px #fff8dc) drop-shadow(0 4px 5px #342e2750)}
.orb.host-dark .orb-photo,.orb .orb-photo{filter:sepia(.08);opacity:1}
.orb.host-dark .orb-rim{opacity:.72}.orb .orb-rim{animation:none!important}
.orb.host-next .orb-body{filter:drop-shadow(0 0 9px #ffe6a4) drop-shadow(0 0 18px #e3b75c99)}
.orb .orb-tag{transition:opacity .3s ease-out;pointer-events:none}
.orb.host-awake .orb-tag,.orb.host-next .orb-tag,.orb.host-near .orb-tag,.orb:focus-visible .orb-tag{pointer-events:auto}
@media(max-width:650px){
 #harvey-host{width:calc(100vw - 20px);max-width:calc(100vw - 20px);padding:12px 13px 12px 7px;gap:8px}
 #harvey-host .host-dog{width:46px;padding-top:3px}#harvey-host .host-dog img{height:58px}
 #harvey-host .host-pick{font-size:20px;padding:6px 0 11px}
 #harvey-host .host-links{display:grid!important;grid-template-columns:1fr 1fr;gap:8px}
 #harvey-host .host-links button{font-size:13px;min-height:46px;padding:10px}
 #harvey-host .host-explore{order:1}#harvey-host .host-places{order:2}#harvey-host .host-cabinet{order:3;grid-column:1/-1}
 #navigation-panel .story-actions{grid-template-columns:1fr 1fr}#navigation-panel .story-actions button:last-child{grid-column:1/-1}
}

/* Reading a label must not intercept a neighbouring bubble's pointer/tap. */
.orb .orb-tag,.orb.host-awake .orb-tag,.orb.host-next .orb-tag,.orb.host-near .orb-tag,.orb:focus-visible .orb-tag{pointer-events:none}
.orb .orb-tag.label-above{top:calc((-10px - var(--label-height,34px)) / max(.05,var(--orb-scale,1)))}
.orb .orb-tag.label-above:before{top:auto;bottom:-6px;transform:translateX(-50%) rotate(225deg)}
.panel-controls{display:flex;align-items:center;gap:8px;flex:none}.panel-explore{background:#fffaee;border:1px solid #9d9279;border-radius:5px;padding:10px 12px;min-height:44px;font:12px/1.3 system-ui;color:#354b3e}
@media(max-width:650px){.panel-controls{gap:6px}.panel-explore{max-width:94px;padding:7px;font-size:11px}}
#period-display{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:58px;padding:0 12px;border-left:1px solid #b9ab91;border-right:1px solid #b9ab91;font-family:system-ui}
#period-count{font:500 20px/1.1 system-ui;font-variant-numeric:tabular-nums;color:#354b3e}#period-kind{font:9px/1.4 system-ui;white-space:nowrap;color:#756f61}#orientation{border-left:0;padding-left:0}
@media(max-width:650px){#bar{display:grid;grid-template-columns:auto 58px 1fr auto;column-gap:9px;row-gap:2px;min-height:70px}#bar .brand{grid-column:1;grid-row:1}#period-display{grid-column:2;grid-row:1/3;padding:0 7px;min-width:58px}#period-count{font-size:18px}#period-kind{font-size:8px}#orientation{grid-column:1;grid-row:2;max-width:110px;font-size:9px;line-height:1.2}#return-today,#skip-flight{grid-column:3;grid-row:1/3;justify-self:end}#home.icon{grid-column:4;grid-row:1/3}#bar button:not(#home){font-size:10px;padding:6px 8px}}

/* Timed titles are independent of recommendation, camera proximity and pulse. */
.orb .orb-tag{opacity:0!important;transition:opacity .15s ease-out}
.orb.label-visible .orb-tag{opacity:1!important}
/* Opening-only invitation: recognise the navigation surface, then notice Harvey. */
@keyframes host-panel-intro{from{opacity:0}to{opacity:1}}
@keyframes host-dog-intro{from{opacity:0}to{opacity:1}}
#harvey-host.intro-host{animation:host-panel-intro .8s ease-out both}
#harvey-host.intro-host>.host-dog{animation:host-dog-intro .45s ease-out 1.05s both}
#harvey-host.intro-host:focus-within,#harvey-host.intro-host:focus-within>.host-dog{animation:none;opacity:1}
@media(prefers-reduced-motion:reduce){#harvey-host.intro-host{animation:none;opacity:1}#harvey-host.intro-host.reduced-intro>.host-dog{animation:none!important;opacity:0}}

/* Job 78, 4 Nov: Harvey stays small until invited to fetch the first story. */
#harvey-host.harvey-invitation{box-sizing:border-box;width:auto;max-width:calc(100vw - 20px);left:10px;bottom:max(26px,env(safe-area-inset-bottom));padding:7px 12px 4px 7px;gap:8px;align-items:center;border-radius:4px 16px 4px 4px;animation:none}
.harvey-sitting{display:block;width:34px;height:62px;object-fit:contain;flex:none;mix-blend-mode:multiply}
.harvey-invite-words{min-width:0}.harvey-invite-words p{font:clamp(10.5px,2.9vw,15px)/1.25 Georgia;margin:0;white-space:nowrap}
.harvey-invite-choices{display:flex;gap:7px}.harvey-invite-choices button{font:13px Georgia;background:none;border:0;min-width:44px;min-height:44px;padding:4px 10px;color:#354b3e;text-decoration:underline;text-underline-offset:3px}.harvey-invite-choices button:focus-visible{outline:2px solid #354b3e;outline-offset:-3px}
#harvey-host.harvey-pulling{display:block;box-sizing:border-box;width:min(510px,calc(100vw - 20px));height:88px;padding:0;background:none;border:0;box-shadow:none;animation:none;will-change:transform}
.harvey-pull-dog{position:absolute;left:0;bottom:0;object-fit:contain;transform:scaleX(-1);transform-origin:center;z-index:2;mix-blend-mode:multiply}
.harvey-pull-card{position:absolute;left:64px;right:0;top:0;bottom:0;display:flex;align-items:center;gap:12px;background:#f8f1e3;border:1px solid #c0ad8c;box-shadow:0 4px 16px #202d2930;padding:8px 12px;box-sizing:border-box;border-radius:3px}
.harvey-pull-card img{height:68px;width:90px;object-fit:cover}.harvey-pull-card span{font:17px/1.2 Georgia}
@media(max-width:380px){#harvey-host.harvey-invitation{gap:5px;padding-right:7px}.harvey-sitting{width:27px}.harvey-invite-words p{font-size:10px}.harvey-pull-card img{width:64px}.harvey-pull-card span{font-size:15px}}

/* Job 79, 4 Nov. Author display rules must respect the native hidden attribute. */
#home[hidden],#skip-flight[hidden]{display:none!important}
#harvey-host.harvey-invitation{padding-right:54px}
.harvey-dismiss{position:absolute;right:4px;top:4px;width:44px;height:44px;min-width:44px;min-height:44px;border:0;border-radius:50%;background:#fff9ec;color:#403326;font:26px/1 Georgia;cursor:pointer}
.harvey-dismiss:focus-visible{outline:2px solid #354b3e;outline-offset:1px}
.harvey-leaving .harvey-sitting{animation:harvey-trot79 .13s ease-in-out infinite alternate}
@keyframes harvey-trot79{to{transform:translateY(-4px) rotate(-7deg)}}
@media(max-width:650px){.harvey-invite-words p{white-space:normal}.harvey-invite-words{max-width:245px}}
@media(prefers-reduced-motion:reduce){.harvey-leaving .harvey-sitting{animation:none}}

/* Job 79, 4 Nov: the expanded story suggestion has the same dismiss control. */
#harvey-host{padding-right:54px}
.harvey-leaving .host-dog{animation:harvey-trot79 .13s ease-in-out infinite alternate}
@media(prefers-reduced-motion:reduce){.harvey-leaving .host-dog{animation:none}}

/* // Job 81, 4 Nov. Harvey is the invitation, with a quiet ink cross. */
#loading{transition:opacity .65s ease-out;pointer-events:none}
#loading.loading-away{opacity:0}
#loading .harvey-alive{margin-bottom:8px}
#loading .loading-mark:after{margin:18px auto}
#harvey-host.harvey-invitation,.warm-village #harvey-host.harvey-invitation{display:flex;flex-direction:column;align-items:center;width:240px;max-width:calc(100vw - 20px);left:10px;bottom:max(20px,env(safe-area-inset-bottom));padding:0;background:none;border:0;border-radius:0;box-shadow:none;gap:0}
.harvey-invite-dog{display:block;border:0;padding:0;width:144px;height:192px;background:none;cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent}
.harvey-invite-dog:focus-visible{outline:2px solid #354b3e;outline-offset:2px;border-radius:45%}
.harvey-invite-line{font:12px/1.4 Georgia,serif;margin:0;text-align:center;color:#403b2e;text-shadow:0 1px 2px #fff6dc}
#harvey-host.harvey-invitation .harvey-dismiss{top:18px;right:12px}
.harvey-dismiss{background:none;border:0;border-radius:0;font:200 28px/1 Georgia;color:#594c3b;transform:rotate(-6deg);text-shadow:.4px .3px #8a765455}
@media(max-width:650px){#harvey-host.harvey-invitation{width:220px;left:0}.harvey-invite-dog{height:154px;width:116px;overflow:hidden}.harvey-invite-dog .harvey-alive{transform:scale(.8);transform-origin:top left}.harvey-invite-line{font-size:11px}}
@media(prefers-reduced-motion:reduce){#loading{transition-duration:.15s}}

/* // Job 83, 4 Nov: a small paper disc inside the retained 44px dismissal target. */
.harvey-dismiss{border-radius:50%;background:radial-gradient(circle at center,#fff9ec 0 14px,#c2b39a 14px 15px,transparent 15px);color:#403326;text-shadow:none}
/* // Job 83, 4 Nov: keep Harvey at the phone corner, clear of the village road. */
@media(max-width:650px){
 #harvey-host.harvey-invitation,.warm-village #harvey-host.harvey-invitation{width:148px;left:4px;bottom:max(8px,env(safe-area-inset-bottom))}
 .harvey-invite-dog{width:72px;height:96px}
 .harvey-invite-dog .harvey-alive{transform:scale(.5);transform-origin:top left}
 .harvey-invite-line{font-size:10px;line-height:1.3;max-width:148px}
 #harvey-host.harvey-invitation .harvey-dismiss{top:0;right:0}
}
/* // Job 83, 4 Nov: full card dates can wrap without widening the phone bar. */
#field-guide #period-count{max-width:180px;overflow-wrap:anywhere;text-align:center}
@media(max-width:650px){
 .warm-village #bar #field-guide{grid-template-columns:minmax(0,1fr) minmax(80px,45%)}
 #bar #field-guide #period-display{min-width:0;max-width:100%}
 #bar #field-guide #period-count{font-size:14px;line-height:1.15}
}

/* // Job 84, 4 Nov: show the complete wide picture in the desktop and phone card frame. */
.reading-image{height:auto;aspect-ratio:740 / 270;object-fit:contain;object-position:center}

/* Malcolm 4 Nov 15:55: a card picture that is a link to a film, with a plain play button over it (Fraser 15:51) */
.reading-link{position:relative;display:block;margin:17px 0 20px;background:#eee7d5}.reading-link .reading-image{margin:0}.play-badge{position:absolute;left:50%;top:50%;width:66px;height:66px;transform:translate(-50%,-50%);border-radius:50%;background:#151b17cc;border:2px solid #fff9e8;box-shadow:0 2px 12px #0007;pointer-events:none}.play-badge::after{content:'';position:absolute;left:56%;top:50%;transform:translate(-50%,-50%);border-left:26px solid #fff9e8;border-top:15px solid transparent;border-bottom:15px solid transparent}.reading-link:hover .play-badge{background:#314d40e8}

/* 4 Nov 15:49 */
.harvey-invite-dog .harvey-sitting{width:100%;height:100%;object-fit:contain;object-position:center bottom}

/* 5 Nov 09:30 (Fraser 09:29): Harvey with no box. Smaller at rest (two-thirds); on a tap he runs out of shot and
   drags the story's own picture back (no border, no card); the picture grows into the story. */
#harvey-host.harvey-invitation,.warm-village #harvey-host.harvey-invitation{width:170px;background:none;border:0;box-shadow:none;padding:0}
.harvey-invite-dog{width:96px;height:128px}
#harvey-host.harvey-invitation .harvey-dismiss{top:-4px;right:0;z-index:3}
.harvey-invite-line{font-size:11px}
@media(max-width:650px){
 #harvey-host.harvey-invitation,.warm-village #harvey-host.harvey-invitation{width:118px}
 .harvey-invite-dog{width:48px;height:64px}
 #harvey-host.harvey-invitation .harvey-dismiss{top:-10px;right:4px;z-index:3}
 .harvey-invite-line{font-size:9.5px;max-width:118px}
}
#harvey-host.harvey-pulling,.warm-village #harvey-host.harvey-pulling{position:fixed;left:0;bottom:0;top:auto;width:100vw;max-width:none;height:100vh;padding:0;margin:0;background:none;border:0;border-radius:0;box-shadow:none;overflow:hidden;pointer-events:none;transform:none;will-change:auto;animation:none}
.harvey-runner{position:absolute;display:block;object-fit:contain;transform-origin:center;mix-blend-mode:normal;z-index:2}
.harvey-drag{position:absolute;display:block;object-fit:cover;z-index:1;filter:drop-shadow(0 3px 6px #2a1f1440)}
.harvey-launch{position:fixed;z-index:60;display:block;object-fit:cover;pointer-events:none;filter:drop-shadow(0 6px 18px #2a1f1455)}
.harvey-drag-words{display:flex;align-items:center;justify-content:center;background:#f6efdf;color:#2b2118;font:15px/1.2 Georgia,serif;text-align:center;padding:6px}

/* Fraser 5 Nov 10:03: the close cross is a small clear bubble, not a white dot ("so you always have to look for it"). */
#harvey-host .harvey-dismiss{isolation:isolate;display:flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;min-height:44px;background:none!important;border:0!important;border-radius:50%;transform:none!important;font:400 14px/1 Georgia,serif!important;color:#5d4c36!important;text-shadow:0 0 2px #fff8!important;padding:0}
#harvey-host .harvey-dismiss::before{content:"";position:absolute;left:50%;top:50%;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;z-index:-1;pointer-events:none;
 background:radial-gradient(circle at 34% 30%,#ffffffd0 0 2.5px,#ffffff30 3.5px 8px,#ffffff10 9px 11px,transparent 12px);
 box-shadow:inset 0 0 0 1px #c9a24a90,inset -2px -3px 5px #d7ad5830,0 0 7px #d7ad5855}
.harvey-invite-line{display:none!important}
/* 8 Nov 14:15 (Fraser 14:10): the corner Harvey wags now (harvey78.mjs). His wag cells are one size with room for the tail,
   so he is drawn at the box's full height and centred on his body, not squeezed to the box's width; the tail may pass its edge. */
.harvey-invite-dog{position:relative;overflow:visible}
.harvey-invite-dog .harvey-sitting{position:absolute;bottom:0;left:50%;width:auto;height:100%;transform:translateX(-44.7%);object-fit:fill}
