:root{--ink:#273735;--muted:#6c7470;--paper:#f3f1e9;--line:#d8dad1;--accent:#4c6862;font-family:Arial,Helvetica,sans-serif;color:var(--ink);font-synthesis:none;color-scheme:light}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:#e0e5df;font-size:15px}button,a,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit;border:0}a{color:#365e57;text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #588977;outline-offset:4px}button:disabled{opacity:.55;cursor:wait}[hidden]{display:none!important}#world{display:block;width:100vw;height:100vh;position:fixed;inset:0;outline:none}#masthead{position:fixed;top:0;left:0;right:0;z-index:4;height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 42px;pointer-events:none;font-size:10px;letter-spacing:1.8px;font-weight:600;color:#263a39}.wordmark{white-space:nowrap}.separator{margin:0 12px;color:#91a29a}.muted{font-weight:400}.review-mark{font-size:9px;background:#f3f1e9db;border:1px solid #ffffff70;padding:9px 13px;letter-spacing:1.45px}.version{padding-left:13px;margin-left:12px;border-left:1px solid #acb3ab}#intro{position:fixed;inset:0;z-index:3;background:linear-gradient(90deg,rgba(243,241,233,.99) 0%,rgba(243,241,233,.98) 32%,rgba(243,241,233,.80) 43%,rgba(243,241,233,0) 63%);display:flex;align-items:center}.intro-content{margin:76px 0 0 6.25vw;width:460px;max-width:45vw}.eyebrow{font-size:10px;font-weight:600;letter-spacing:2.15px;line-height:1.8}.eyebrow span{margin:0 8px;color:#8a9288}h1,h2{font-family:Georgia,'Times New Roman',serif;font-weight:400}h1{font-size:clamp(46px,5.1vw,76px);line-height:1.035;letter-spacing:-2.8px;margin:26px 0 30px}.fine-rule{height:1px;background:#bdc7ba;width:60px}.intro-copy{font-family:Georgia,'Times New Roman',serif;font-size:20px;line-height:1.55;margin:22px 0 30px;color:#5a6860}.primary{background:#304c46;color:#f9faf6;min-height:51px;padding:0 23px;display:inline-flex;align-items:center;justify-content:space-between;gap:42px;font-size:13px;border:1px solid #304c46;transition:background .15s}.primary:hover{background:#233c36}.primary span{font-size:21px}.intro-controls{font-size:10px;letter-spacing:.3px;color:#727b72;margin:14px 0 23px}.intro-links{display:flex;gap:17px;flex-wrap:wrap;max-width:470px}.text-button{background:none;padding:0 0 4px;font-size:11px;border-bottom:1px solid #a9b5aa}.text-button:hover{border-bottom-color:var(--ink)}.disclosure{font-size:10px;line-height:1.55;max-width:360px;color:#7e847c;margin-top:25px}.intro-caption{position:absolute;bottom:34px;right:42px;text-align:right;display:flex;flex-direction:column;gap:8px;color:#f8f9f2;text-shadow:0 1px 9px #233c3670;font-size:9px;letter-spacing:1.7px}.intro-caption span:last-child{font-size:10px;letter-spacing:.25px}#loading{position:fixed;z-index:20;inset:0;background:var(--paper);display:flex;align-items:center;justify-content:center;flex-direction:column}#loading p{font-family:Georgia,serif;font-size:25px}#loading small{color:var(--muted);font-size:12px}.loading-mark{display:flex;gap:10px;height:55px}.loading-mark i{height:55px;width:10px;border-left:2px solid #76887c;border-right:2px solid #76887c}.loading-mark i+ i{height:51px;margin-top:4px}#visit-ui{position:fixed;inset:0;z-index:2;pointer-events:none;color:#edf0e9}#location{position:absolute;left:34px;top:108px;font-family:Georgia,serif;font-size:17px;text-shadow:0 1px 5px #24353090;display:flex;align-items:center;gap:12px}.location-rule{width:24px;height:1px;background:#eef1e5}.visit-buttons{position:absolute;right:34px;top:104px;display:flex;gap:6px;pointer-events:auto}.visit-buttons button{padding:10px 13px;background:#f3f1e9ed;border:1px solid #ffffff65;color:#30443e;font-size:11px}.visit-buttons button:hover{background:#fff}kbd{display:inline-block;font:10px Arial,sans-serif;border:1px solid currentColor;padding:3px 5px;border-radius:2px;margin-left:5px;opacity:.8}#interaction{position:absolute;bottom:81px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;background:#f3f1e9f2;color:#314840;box-shadow:0 4px 20px #20362c20;padding:15px 21px;font-size:13px;border:1px solid #fff;white-space:nowrap}#interaction kbd{margin:0;font-size:12px;padding:5px 8px}#walking-help{position:absolute;left:34px;bottom:28px;font-size:10px;letter-spacing:.25px;text-shadow:0 1px 4px #132b25}#walking-help span{margin:0 8px}#review-badge{position:absolute;right:34px;bottom:28px;font-size:8px;letter-spacing:1.3px;background:#2b40385c;padding:5px 7px}#ride-progress{position:absolute;top:22%;left:50%;transform:translateX(-50%);text-align:center;background:#263a338f;backdrop-filter:blur(6px);padding:20px 34px;min-width:168px}#ride-progress>span{font-size:9px;letter-spacing:2px}#ride-number{font-family:Georgia,serif;display:block;font-size:42px;font-weight:400;line-height:1.3;margin:7px}#ride-label{font-size:10px;letter-spacing:.5px;color:#e0e6dc}#panel{border:1px solid #ffffff;border-radius:0;width:min(650px,calc(100vw - 32px));max-height:88vh;overflow:auto;padding:30px 35px 36px;background:var(--paper);color:var(--ink);box-shadow:0 18px 110px #071d1440}#panel::backdrop{background:#1c30274a;backdrop-filter:blur(5px)}.dialog-top{display:flex;justify-content:space-between;align-items:center;padding-bottom:15px;border-bottom:1px solid var(--line)}.icon-button{background:transparent;font-size:27px;font-weight:300;padding:0 3px;line-height:1.1}h2{font-size:37px;line-height:1.15;margin:27px 0 15px;letter-spacing:-.75px}#panel p{line-height:1.65;color:#616d63;font-size:13px}#panel .lead{font-family:Georgia,serif;font-size:18px;line-height:1.6;color:#58665b}.dialog-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.secondary{border:1px solid #bdc8ba;padding:13px 17px;background:transparent;font-size:12px}.secondary:hover{background:#e9ece2}.link-row{display:block;border-bottom:1px solid #d6dcd0;padding:16px 0;text-decoration:none;font-size:13px}.link-row::after{content:'↗';float:right}.small-note{font-size:11px!important;line-height:1.5!important}.setting{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:17px 0;border-bottom:1px solid #d7dcd0;font-size:12px}.setting input[type=range]{width:160px;accent-color:#536f5e}.setting input[type=checkbox]{width:18px;height:18px;accent-color:#536f5e}.setting select{padding:7px;border:1px solid #b9c3b4;background:#f9faf4;font-size:12px}.settings-group{padding:8px 0}.controls-grid{display:grid;grid-template-columns:1fr 1fr;font-size:12px;gap:10px;margin:20px 0;color:#657166}.controls-grid kbd{margin:0 8px 0 0;min-width:32px;text-align:center}.evidence-note{border-left:2px solid #879b87;padding-left:16px;margin-top:24px}.route-list{padding-left:22px;font-size:13px;line-height:2;color:#5b695d}.route-map{width:100%;height:auto;display:block;margin-top:18px;border:1px solid #d1d9c9}.approved-warning{font-size:10px!important;letter-spacing:1.25px;color:#626d61!important;padding:10px 0;border-top:1px solid #ced6c6}.error-box{max-width:560px;padding:30px;background:var(--paper);position:fixed;top:20%;left:50%;transform:translateX(-50%);z-index:40}.error-box h1{font-size:36px;letter-spacing:-1px}.error-box p{line-height:1.6}.error-box a{display:block;margin:12px 0}#fade{position:fixed;inset:0;z-index:12;background:#eeeee6;opacity:0;pointer-events:none;transition:opacity .18s}#toast{position:fixed;z-index:30;left:50%;bottom:24px;transform:translateX(-50%);background:#f3f1e9f2;color:#324839;padding:12px 18px;font-size:12px;box-shadow:0 4px 20px #0001;opacity:0;transition:opacity .2s;pointer-events:none;max-width:90vw;text-align:center}.noscript{position:absolute;inset:0;background:var(--paper);padding:80px;z-index:50}.noscript h1{font-size:42px}@media(max-height:800px) and (min-width:851px){#masthead{height:68px}.intro-content{margin-top:64px}h1{font-size:58px;margin:18px 0 20px}.intro-copy{font-size:18px;margin:16px 0 22px}.disclosure{margin-top:18px}.intro-controls{margin-bottom:18px}}@media(max-width:850px){#masthead{padding:0 22px;height:64px}.wordmark{font-size:9px}.wordmark .separator,.wordmark .muted{display:none}.review-mark{font-size:8px;padding:7px}.intro-content{max-width:68vw;width:430px;margin-left:7vw;margin-top:75px}#intro{background:linear-gradient(90deg,#f3f1e9f5 0%,#f3f1e9ef 45%,#f3f1e988 78%,#f3f1e900)}h1{font-size:53px;letter-spacing:-1.8px}.intro-copy{font-size:18px}.intro-caption{display:none}.visit-buttons{top:77px;right:16px}.visit-buttons button{padding:9px}#location{left:17px;top:124px;font-size:14px}#walking-help{left:17px;bottom:46px;font-size:9px}#review-badge{left:17px;right:auto;bottom:14px}#panel{padding:22px 25px}h2{font-size:30px}}@media(max-width:550px){.intro-content{max-width:86vw}.intro-links{gap:15px}.intro-controls{max-width:240px;line-height:1.7}.intro-copy{margin-bottom:20px}.disclosure{max-width:310px}h1{font-size:48px}.version{display:none}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Quiet visitor chrome: instructions reappear at each arrival and remain in Orientation. */
.visiting #masthead{height:58px;padding:0 24px}.visiting .wordmark{opacity:0;transition:opacity 1.4s}.visiting.stage-intro .wordmark{opacity:.85}
.visiting .review-mark{font-size:8px;letter-spacing:1px;padding:6px 9px;background:#f3f1e9c9}.visiting #location{top:77px;left:25px;font-size:15px;opacity:0;transition:opacity 1.4s}.visiting.stage-intro #location{opacity:1}
.visiting .visit-buttons{top:68px;right:24px;gap:3px}.visiting .visit-buttons button{padding:8px 10px;background:#f3f1e9ce;font-size:10px}.visiting .visit-buttons button:hover,.visiting .visit-buttons button:focus-visible{background:#fff}
.visiting #walking-help{opacity:.68;transition:opacity 1.4s}.visiting.stage-intro #walking-help{opacity:1}.visiting #review-badge{font-size:8px;right:144px;bottom:18px;letter-spacing:.8px;background:#233631b3;color:#fff}
.visiting #ride-progress{padding:16px 25px;top:24%;background:#263a33ba}.visiting #ride-number{font-size:34px}
@media(prefers-reduced-motion:reduce){.visiting #location,.visiting #walking-help,.visiting .wordmark{transition:none}}

/* A contextual street hint; no persistent minimap or world-space waypoint. */
#wayfinding-cue{position:absolute;left:25px;top:108px;max-width:calc(100vw - 50px);padding:8px 11px;background:#f3f1e9e8;color:#30443e;font-size:11px;line-height:1.5;border-left:2px solid #80988c}
@media(max-width:850px){#wayfinding-cue{top:154px;left:17px;max-width:calc(100vw - 34px)}}

/* Release copy and text reflow: the opening remains readable at browser zoom. */
#intro{overflow-y:auto;align-items:flex-start}
.intro-content{width:540px;max-width:min(49vw,540px);margin-top:max(110px,15vh);margin-bottom:55px}
#intro-title{font-size:clamp(2.7rem,4.2vw,4rem);line-height:1.09;letter-spacing:-1.9px}
.intro-copy{font-size:1.05rem;max-width:400px;line-height:1.65}
.disclosure{font-size:.72rem;color:#566159;max-width:400px}
#panel p{font-size:.875rem;color:#4e5e53}.small-note{font-size:.78rem!important}.setting,.secondary,.link-row{font-size:.875rem}
.about-sources summary{cursor:pointer;padding:12px 0;font-size:.875rem;color:#304c46}
summary:focus-visible{outline:3px solid #588977;outline-offset:4px}
.setting{flex-wrap:wrap}.setting input[type=range]{max-width:100%}
.error-box{position:relative;top:auto;left:auto;transform:none;margin:110px auto 40px;width:calc(100% - 36px);max-width:650px}
.unsupported-device{overflow:auto;background:var(--paper)}
.unsupported-device #masthead .wordmark{display:none}
.unsupported-device .error-box h1{font-size:2.6rem;letter-spacing:-1px}
.unsupported-device .error-box p{font-size:1rem}
.unsupported-device .error-box a{line-height:1.5;padding:7px 0}
.reduced-motion *, .reduced-motion *::before, .reduced-motion *::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
@media(max-width:900px){.intro-content{max-width:86vw;width:520px;margin-top:100px}#intro{background:linear-gradient(90deg,#f3f1e9fa,#f3f1e9e6 72%,#f3f1e960)}#intro-title{font-size:2.8rem}.intro-caption{display:none}}
@media(max-height:620px){.intro-content{margin-top:85px}#intro-title{font-size:2.65rem;margin:18px 0}.intro-copy{margin:18px 0}.intro-caption{display:none}}
@media(max-width:460px){#panel{padding:20px;max-height:92vh}.controls-grid{grid-template-columns:1fr}.visit-buttons{flex-wrap:wrap}#intro-title{font-size:2.35rem}.setting{gap:12px}.setting select{max-width:100%}}

.evolving-reconstruction{margin-top:28px;padding-top:8px;border-top:1px solid var(--line)}.evolving-reconstruction h3{font-family:Georgia,serif;font-weight:400;font-size:23px;line-height:1.3}

.loading-links{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;margin:30px 20px 0;max-width:560px;font-size:11px}.loading-links .text-button{font-size:11px}.loading-links a{font-size:11px;line-height:1.5}
.intro-route{font-size:12px;line-height:1.6;color:#66706a;max-width:420px;margin:-16px 0 26px}

/* v0.13 — visitor guidance. Post-launch feedback: visitors could not tell
   mouse-look from cursor mode, lost the 10-second control banner before they
   had read it, and could not recover a direction once turned around. Nothing
   below changes the reconstruction, its geometry, timing or framing. */

/* 1. The control hint is now permanent. It stays small, low-contrast and out of
   the sightline, and never takes pointer events (the parent is pointer-none). */
#walking-help{max-width:min(52vw,560px);line-height:1.6;text-shadow:0 1px 5px #0f241d,0 0 2px #0f241d99}
#walking-help b{font-weight:700;letter-spacing:.6px}
#walking-help span{margin:0 7px;opacity:.7}

/* 2. Heading indicator. A museum instrument: a card turning under a fixed index
   mark, with the facing written out. No minimap, no objective markers. */
#compass{position:absolute;right:24px;bottom:18px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 10px 6px;background:#f3f1e9d6;border:1px solid #ffffff65;color:#30443e;pointer-events:none;box-shadow:0 2px 10px #16281f24}
#compass svg{width:52px;height:52px;display:block}
.compass-face{fill:#fdfcf5;stroke:#b9c4b8;stroke-width:1}
.compass-tick{fill:none;stroke:#3c564c;stroke-width:1.6;stroke-linecap:round}
.compass-tick-minor{fill:none;stroke:#7d8b81;stroke-width:1;stroke-linecap:round}
.compass-letter{fill:#2d4740;font:700 9.5px Arial,Helvetica,sans-serif;text-anchor:middle;letter-spacing:.3px}
.compass-north{fill:#8c3b24}
.compass-hub{fill:#5d6e63}
.compass-index{fill:#23564f;stroke:#fdfcf5;stroke-width:1}
#compass-reading{font-size:7.5px;letter-spacing:1.3px;white-space:nowrap;color:#5c6a60}
#compass-reading b{font-size:10.5px;letter-spacing:1px;margin-left:4px;color:#23564f}

/* 3. Opening controls, written for a visitor who has never used WASD. */
.intro-controls{list-style:none;margin:16px 0 10px;padding:0;display:grid;gap:7px;max-width:430px;font-size:11px;color:#5c665d}
.intro-controls li{display:flex;align-items:center;gap:4px;line-height:1.45}
.intro-controls li>span{margin-left:7px}
.intro-controls kbd,.intro-controls b{display:inline-block;min-width:20px;padding:3px 5px;margin:0;border:1px solid #aab4a8;border-radius:2px;font:10px Arial,Helvetica,sans-serif;font-weight:600;text-align:center;color:#415244;background:#ffffff80;opacity:1}
.intro-controls-note{font-size:10px;line-height:1.55;color:#78817a;max-width:400px;margin:0 0 20px}
.intro-route kbd{border-color:#9fab9d;color:#415244}

/* 4. First-entry onboarding and the reopened "How to walk and look" panel. */
.onboarding{margin:20px 0 4px;display:grid;gap:0}
.onboarding>div{display:grid;grid-template-columns:118px 1fr;gap:18px;align-items:baseline;padding:11px 0;border-bottom:1px solid #d7dcd0}
.onboarding dt{display:flex;flex-wrap:wrap;gap:4px;font-size:11px;letter-spacing:.8px;color:#415244}
.onboarding dt kbd,.onboarding dt b{margin:0;min-width:24px;padding:4px 6px;border:1px solid #a7b2a5;border-radius:2px;font:10px Arial,Helvetica,sans-serif;font-weight:700;text-align:center;background:#ffffffa6;opacity:1}
.onboarding dd{margin:0;font-size:.875rem;line-height:1.6;color:#4e5e53}
#panel[data-kind=welcome] h2{font-size:31px;margin:20px 0 11px}
#panel[data-kind=welcome] .lead{font-size:16px;line-height:1.55;margin:0 0 2px}
/* The primary action stays reachable on a short laptop screen: the card body
   scrolls, the button does not leave the panel. */
#panel{--panel-pad:35px}
#panel[data-kind=welcome]{padding-bottom:0}
#panel[data-kind=welcome] .dialog-actions{position:sticky;bottom:0;z-index:1;margin:16px calc(var(--panel-pad) * -1) 0;padding:14px var(--panel-pad) 22px;background:var(--paper);box-shadow:0 -12px 20px -12px #16281f33}
@media(max-width:560px){.onboarding>div{grid-template-columns:1fr;gap:6px}}
@media(max-width:850px){#panel{--panel-pad:25px}}
@media(max-width:460px){#panel{--panel-pad:20px}}
@media(max-height:900px){#panel[data-kind=welcome] h2{font-size:26px;margin:14px 0 9px}#panel[data-kind=welcome] .lead{font-size:15px}.onboarding{margin-top:16px}.onboarding>div{padding:9px 0}.onboarding dd{font-size:.81rem;line-height:1.5}#panel[data-kind=welcome] .dialog-actions{margin-top:12px}}

/* 5. Quiet route wording sits with the place name, never in the sightline. The
   transient notice now clears the permanent control hint and the E prompt. */
#wayfinding-cue{max-width:min(46vw,430px)}
.visiting #toast{bottom:132px;max-width:min(62vw,680px)}
@media(max-width:980px){#walking-help{max-width:calc(100vw - 200px);font-size:9px}#compass svg{width:44px;height:44px}.visiting #review-badge{right:132px}}
@media(max-width:700px){#compass{right:14px}#walking-help{max-width:calc(100vw - 150px)}}
@media(prefers-reduced-motion:reduce){#compass-card,[data-compass-letter]{transition:none!important}}

/* v0.13b — guidance for a visitor who reads nothing. A novice user test found
   that the opening text is simply skipped, so the place itself has to say where
   the route goes. Still museum wayfinding: no world-space beam, no waypoint. */

.inline-link{font-size:inherit;padding:0 0 2px;border-bottom:1px solid #a9b5aa;vertical-align:baseline}

/* 1. Interpretive labels naming the route, pinned in screen space over the
   place they name. They are present-day wayfinding, not historical signage. */
#place-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.place-label{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center;gap:0;pointer-events:none;transition:opacity .3s linear;will-change:transform}
.place-label span{background:#f3f1e9e8;border:1px solid #ffffff6b;color:#2c4139;font-size:9.5px;letter-spacing:1.4px;text-transform:uppercase;padding:5px 10px;white-space:nowrap;box-shadow:0 2px 9px #16281f24}
.place-label i{width:1px;height:11px;background:#f0efe3c4;display:block}
.place-label::after{content:'';width:6px;height:6px;box-sizing:border-box;border:1px solid #f6f4ea;border-radius:50%;background:#23564fd9;display:block}
@media(max-width:850px){.place-label span{font-size:9px;letter-spacing:1.1px;padding:4px 8px}}

/* 2. Wrong-way guidance. The same quiet box, briefly a little more present,
   then back to its usual weight. No flashing and no colour alarm. */
#wayfinding-cue.wrong-way{border-left-color:#8c5b34;background:#f6f2e6f5}
.cue-alert #wayfinding-cue.wrong-way{box-shadow:0 3px 16px #2a3a2e2e}
@media(prefers-reduced-motion:reduce){.place-label{transition:none}}
