:root{--paper:#f4efe4;--ink:#243e46;--muted:#7e8982;--line:#d9ddce;--coral:#ce7664;--mint:#b6cda5;--white:#fffdf7;--font:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:14px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #568b9a;outline-offset:5px}button{border:0;background:none}button:hover,a:hover{color:#9f5b49}button:disabled{cursor:default}.topbar{height:100px;display:flex;align-items:center;justify-content:space-between;gap:24px;max-width:1680px;margin:auto;padding:0 4.5vw;position:relative;z-index:10}.wordmark{display:flex;align-items:center;gap:11px;font-size:20px;font-weight:700;letter-spacing:-.5px}.wordmark small{display:block;letter-spacing:2px;font-size:8px;font-weight:600;color:var(--muted);margin-top:7px}.topbar nav{display:flex;align-items:center;gap:26px;font-size:12px}.topbar nav a span{margin-left:5px;color:#a0aca0}#help-button{border:1px solid #c9d0c1;border-radius:50%;width:30px;height:30px;font-size:13px}.eyebrow{font-size:9px;letter-spacing:2.1px;font-weight:700;color:#7c9184}#world-stage{height:calc(100svh - 290px);min-height:430px;max-height:860px;position:relative;overflow:hidden;margin-top:-4px}#world{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}#world:focus-visible{outline-offset:-8px;border-radius:20px}#landmark-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.landmark-label{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;white-space:nowrap;background:#fffdf7ed;border:1px solid #d2dbca;padding:7px 11px;border-radius:20px;box-shadow:0 4px 12px #405f4510;display:flex;align-items:center;gap:7px;font-size:10px;font-weight:600;transition:background .2s,border-color .2s,box-shadow .2s}.landmark-label:after{content:"";position:absolute;left:50%;bottom:-5px;width:8px;height:8px;background:inherit;border-right:1px solid #d2dbca;border-bottom:1px solid #d2dbca;transform:translateX(-50%) rotate(45deg)}.landmark-label .label-dot{width:6px;height:6px;border-radius:50%;background:var(--place-color);flex:none}.landmark-label:hover,.landmark-label.active{border-color:var(--place-color);background:#fff;box-shadow:0 5px 18px #45675425;color:var(--ink)}.landmark-label.visited .label-dot:after{content:"✓";display:block;width:10px;height:10px;font-size:10px;line-height:10px;color:var(--ink);position:relative;top:-3px;left:-2px}.landmark-label.visited .label-dot{background:none}.explore-bar{display:flex;align-items:center;justify-content:space-between;max-width:860px;margin:0 auto;padding:13px 22px 24px;gap:18px;font-size:11px}#walk-hint{display:flex;align-items:center;gap:3px;color:#869084;margin:0}.keycap{display:inline-grid;place-items:center;width:19px;height:21px;font-size:9px;border:1px solid #d3dacb;border-radius:5px;border-bottom-width:2px;background:#f9f7ef}.desktop-hint{margin-left:7px}.mobile-hint{display:none}#guide-toggle{display:flex;gap:11px;align-items:center;background:#fcfaf3;border:1px solid #d2d9c9;border-radius:28px;padding:12px 20px;font-size:12px;font-weight:600;box-shadow:0 3px 0 #e8e7db}#guide-toggle:hover{background:#fff}.book-icon{font-size:19px;line-height:1;color:#6c937e}#progress{font-size:9px;color:#8c978b;font-variant-numeric:tabular-nums;font-weight:500}#reset-view{color:#8b9488;font-size:16px;display:flex;align-items:center;gap:7px}#reset-view span{font-size:10px}.field-guide{max-width:1110px;margin:50px auto 0;padding:50px 36px 30px;border-top:1px solid var(--line)}.guide-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:26px;gap:24px}.guide-heading h2{font-family:Georgia,"Times New Roman",serif;font-size:35px;letter-spacing:-1px;font-weight:400;margin:9px 0 0}.guide-heading p{font-size:12px;line-height:1.7;color:var(--muted);margin:0;text-align:right}.destination-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.destination-card{position:relative;text-align:left;background:#faf8f0;border:1px solid #dde0d3;border-radius:13px;padding:19px 17px;min-height:165px;display:flex;flex-direction:column;transition:transform .18s,background .18s}.destination-card:hover{transform:translateY(-3px);background:#fffdf7;color:var(--ink)}.destination-card .card-number{font-family:Georgia,serif;font-size:23px;color:var(--place-color);margin-bottom:14px}.destination-card h3{font-size:12px;margin:0 0 7px;letter-spacing:-.1px}.destination-card p{font-size:10px;line-height:1.65;margin:0;color:#8a9386}.card-actions{margin-top:auto;padding-top:14px;display:flex;gap:10px;align-items:center}.card-actions button{font-size:9px;padding:0;text-decoration:underline;text-decoration-color:#b8c7b5;text-underline-offset:3px}.card-actions .read-note{font-weight:600}.visited-mark{position:absolute;top:20px;right:18px;font-size:9px;color:#5b8b73}.field-guide footer{display:flex;justify-content:space-between;gap:30px;font-size:9px;color:#95a08e;margin-top:42px;padding-top:23px;border-top:1px solid var(--line);line-height:1.8}.field-guide footer a{text-decoration:underline;text-underline-offset:3px}dialog{border:1px solid #d6decc;border-radius:20px;background:var(--white);color:var(--ink);width:min(520px,calc(100% - 32px));max-height:calc(100svh - 40px);padding:36px;box-shadow:0 30px 100px #1b392733;overflow:auto}dialog::backdrop{background:#263e3b55;backdrop-filter:blur(5px)}.dialog-close{position:absolute;top:15px;right:17px;color:#879685;font-size:25px;border-radius:50%;width:32px;height:32px;line-height:1}dialog h2{font-family:Georgia,serif;font-weight:400;font-size:33px;line-height:1.08;letter-spacing:-1px;margin:12px 0 19px}dialog .eyebrow{line-height:1.7;letter-spacing:1.4px;font-size:9px;max-width:85%}.note-number{font-family:Georgia,serif;font-size:48px;line-height:1;color:var(--place-color);opacity:.7;margin-bottom:20px}#place-summary{font-size:15px;font-weight:600;line-height:1.5;margin:0 0 16px}#place-body,#help-dialog p{font-size:13px;line-height:1.85;color:#6e7e76}.note-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:25px}.note-links a{font-size:10px;display:inline-flex;align-items:center;gap:8px;border:1px solid #dce2d6;border-radius:7px;padding:9px 11px;background:#f7f8f0}.note-links a:after{content:"↗";color:#7d9c88}.note-bottom{border-top:1px solid #e5e8df;display:flex;align-items:center;justify-content:space-between;margin-top:29px;padding-top:20px;font-size:10px;gap:10px}#place-badge{display:flex;align-items:center;gap:6px;color:#6f9079}#place-badge:before{content:"✦";color:var(--place-color);font-size:16px}#next-place{font-size:10px;font-weight:600;padding:7px}.primary-button{background:#35534b;color:#fffdf7;padding:12px 17px;border-radius:9px;margin-top:12px}.primary-button:hover{background:#426757;color:white}#loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--paper);transition:opacity .4s;pointer-events:none}#loading p{font-size:12px;color:#82917f}.loading-mark{font-size:48px;color:#91ae8c;animation:turn 5s linear infinite}#loading.loaded{opacity:0;visibility:hidden}#render-fallback{position:absolute;inset:10% 10%;background:#fffdf7eb;border:1px solid #d9decc;border-radius:24px;padding:45px;text-align:center}#render-fallback h2{font-family:Georgia,serif;font-size:28px;font-weight:400}#render-fallback p{line-height:1.8;color:var(--muted);max-width:400px;margin:20px auto}#render-fallback a{display:block;margin:16px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-100px;left:20px;padding:12px;background:white;z-index:1000}.skip-link:focus{top:10px}.noscript-note{max-width:680px;margin:40px auto;padding:30px;border:1px solid var(--line);border-radius:12px;line-height:1.8}.noscript-note a{text-decoration:underline}@keyframes turn{to{transform:rotate(360deg)}}@media(max-width:800px){.topbar{height:83px;padding:0 23px}.wordmark{font-size:16px}.wordmark small{font-size:6px}.topbar nav{gap:15px;font-size:10px}.destination-grid{grid-template-columns:repeat(2,1fr)}#world-stage{min-height:450px;height:calc(100svh - 265px);margin-top:4px}.landmark-label{font-size:8px;padding:6px 8px;gap:5px}.explore-bar{padding:10px 24px 23px}.field-guide{margin-top:28px;padding:35px 25px 25px}.guide-heading h2{font-size:31px}.guide-heading p{font-size:10px}.field-guide footer{display:block}.field-guide footer span{display:block;margin-top:10px}}@media(max-width:480px){.topbar{padding:0 18px;height:75px;gap:10px}.wordmark{font-size:14px;gap:7px}.wordmark small{letter-spacing:1px;font-size:6px}.topbar nav{gap:12px;font-size:9px}.topbar nav a:nth-child(2){display:none}#help-button{width:25px;height:25px;font-size:11px}#world-stage{height:calc(100svh - 235px);min-height:400px;max-height:620px;margin-top:6px}.landmark-label{font-size:7px;padding:5px 6px;gap:4px}.landmark-label .label-dot{width:4px;height:4px}.explore-bar{padding:10px 18px 20px;gap:8px;font-size:9px}.keycap,.desktop-hint{display:none}.mobile-hint{display:block;font-size:9px}#guide-toggle{font-size:10px;padding:10px 13px;gap:7px}.book-icon{font-size:16px}#progress{font-size:8px}#reset-view span{display:none}.guide-heading{align-items:start}.guide-heading p{font-size:9px;max-width:115px}.guide-heading h2{font-size:28px}.guide-heading .eyebrow{font-size:7px;letter-spacing:1px}.destination-card{padding:16px 13px;min-height:176px}.destination-card h3{font-size:11px}.destination-card p{font-size:9px}dialog{padding:28px 25px}dialog h2{font-size:29px}#place-body{font-size:12px}#render-fallback{padding:25px;inset:10% 6%}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* World-first game shell: the island carries the visual story. */
.topbar{height:72px}.wordmark{font-size:18px}.wordmark small{font-size:7px;letter-spacing:1.5px;margin-top:5px}#world-stage{height:calc(100svh - 150px);min-height:500px;max-height:none;margin:0;}.explore-bar{max-width:960px;padding:10px 24px 20px;min-height:78px}.field-guide{margin-top:30px}.guide-heading h2,dialog h2,.note-number,#render-fallback h2,.destination-card .card-number{font-family:var(--font);font-weight:650;letter-spacing:-.8px}.guide-heading h2{font-size:27px}dialog h2{font-size:28px}.note-number{font-size:39px;font-weight:500}.destination-card .card-number{font-size:21px}.motion-controls{display:flex;align-items:center;gap:20px}#quiet-mode{display:flex;gap:6px;align-items:center;color:#8b9488;font-size:14px}#quiet-mode span{font-size:10px}#interact-prompt{position:fixed;bottom:94px;left:50%;transform:translateX(-50%);background:#fffdf7f2;border:1px solid #c9d6c0;border-radius:24px;padding:10px 16px;box-shadow:0 5px 18px #3c60351a;z-index:11;font-size:11px;display:flex;gap:9px;align-items:center}#interact-prompt[hidden]{display:none}@media(max-width:800px){.topbar{height:68px}.wordmark{font-size:16px}#world-stage{height:calc(100svh - 145px);min-height:430px}.explore-bar{min-height:77px}.motion-controls{gap:12px}#quiet-mode span{display:none}#interact-prompt{bottom:90px}}@media(max-width:480px){.topbar{height:64px}.wordmark{font-size:14px}.wordmark small{font-size:6px}#world-stage{height:calc(100svh - 138px);min-height:440px;max-height:none}.explore-bar{padding:10px 15px 20px;min-height:74px;gap:6px}.motion-controls{gap:10px}.guide-heading h2{font-size:25px}.note-number{font-size:34px}.topbar nav{gap:10px}#interact-prompt{bottom:86px;max-width:calc(100% - 24px);font-size:10px;white-space:nowrap}#interact-prompt .keycap{display:inline-grid}}

@media(max-width:600px){#world-stage{height:clamp(340px,60svh,500px);min-height:340px}.field-guide{margin-top:8px;padding-top:28px}#interact-prompt{position:absolute;top:calc(64px + clamp(340px,60svh,500px) - 24px);bottom:auto;white-space:nowrap}.explore-bar{padding-top:22px;min-height:88px}.landmark-label{font-size:7px}}

.identity-chip{position:absolute;z-index:9;top:96px;left:4.5vw;display:flex;align-items:center;gap:11px;background:#fffdf7e6;border:1px solid #d6dece;border-radius:13px;padding:10px 13px;box-shadow:0 5px 18px #526c4010}.identity-chip img{width:36px;height:42px;object-fit:cover;object-position:center 25%;border-radius:8px;filter:saturate(.7)}.identity-chip>span{display:flex;flex-direction:column;gap:4px}.identity-chip strong{font-size:12px;font-weight:700}.identity-chip span span{font-size:9px;color:#6b8174}.identity-chip small{font-size:8px;color:#8a978a}.identity-chip b{font-size:13px;color:#96a68f;margin-left:5px;font-weight:400}@media(max-width:800px){.identity-chip{top:84px;left:23px;padding:8px 11px;gap:9px}.identity-chip img{width:30px;height:35px}.identity-chip strong{font-size:11px}.identity-chip span span{font-size:8px}.identity-chip small{font-size:7px}}@media(max-width:600px){.identity-chip{position:relative;top:auto;left:auto;margin:2px 18px 0;padding:10px 12px;background:#fffdf78c;max-width:none}.identity-chip img{width:32px;height:38px}.identity-chip>span{gap:3px}.identity-chip strong{font-size:12px}.identity-chip span span{font-size:9px}.identity-chip small{font-size:8px}.identity-chip b{margin-left:auto}#interact-prompt{top:calc(129px + clamp(340px,60svh,500px) - 24px)}}

.capture-ball{width:31px;height:31px;position:relative;display:block;flex:none;border:2px solid #35535b;border-radius:50%;background:linear-gradient(#db806d 0 46%,#35535b 46% 55%,#fffdf4 55% 100%);box-shadow:0 2px 0 #35535b12;transform:rotate(-15deg)}.capture-ball:after{content:"";position:absolute;width:8px;height:8px;left:50%;top:50%;transform:translate(-50%,-50%);background:#fffdf4;border:2px solid #35535b;border-radius:50%}.view-controls{position:absolute;right:4.5vw;bottom:24px;z-index:12;display:flex;align-items:center;background:#fffdf7ed;border:1px solid #d0dbca;border-radius:24px;box-shadow:0 4px 14px #324c3510;padding:3px}.view-controls button{min-width:35px;min-height:35px;font-size:19px;border-radius:50%}.view-controls #view-overview{font-size:10px;padding:0 10px;min-width:70px}.view-controls button:hover{background:#e9efdf;color:#3b6357}.view-controls button:disabled{opacity:.35}.landmark-label{background:#fffdf7f5}@media(max-width:600px){.view-controls{right:18px;bottom:13px}.view-controls button{min-height:33px;min-width:33px}.view-controls #view-overview{font-size:9px;min-width:60px}.capture-ball{width:28px;height:28px}}

/* Legible at a glance, with generous tap targets. */
:root{--muted:#52685d}
.identity-chip img{width:44px;height:48px}
.identity-chip strong{font-size:15px}
.identity-chip span span{font-size:12px;color:#52685d}
.identity-chip small{font-size:11px;color:#52685d}
.wordmark small{font-size:9px;color:#52685d}
.landmark-label{font-size:11px;min-height:36px;padding:8px 12px}
#help-button,.view-controls button,.dialog-close,#quiet-mode,#reset-view{min-width:40px;min-height:40px}
.view-controls #view-overview{font-size:12px;min-width:84px}
#quiet-mode,#reset-view,#walk-hint{color:#52685d}
#quiet-mode span,#reset-view span,#progress{font-size:12px;color:#52685d}
.topbar nav{font-size:12px}
.topbar nav a{min-height:40px;display:inline-flex;align-items:center}
.card-actions{gap:8px;flex-wrap:wrap}
.card-actions button{font-size:12px;min-height:40px;text-align:left}
.destination-card h3{font-size:14px}
.destination-card p{font-size:12px;color:#52685d;line-height:1.65}
.visited-mark{font-size:11px;color:#52685d}
.eyebrow,dialog .eyebrow{font-size:10px;color:#52685d}
.guide-heading p{font-size:12px}
.field-guide footer{font-size:11px;color:#52685d}
.note-links a{font-size:12px;min-height:40px}
.note-bottom,#next-place{font-size:12px}
#next-place{min-height:40px}
#place-badge{color:#52685d}
.keycap{font-size:10px}
@media(max-width:800px){
  .identity-chip strong{font-size:14px}
  .identity-chip span span{font-size:11px}
  .identity-chip small{font-size:10px}
  .identity-chip img{width:40px;height:44px}
  .landmark-label{font-size:10px;min-height:36px;padding:7px 9px}
}
@media(max-width:600px){
  .identity-chip{padding:10px 12px}
  .identity-chip strong{font-size:14px}
  .identity-chip span span{font-size:11px}
  .identity-chip small{font-size:10px}
  .identity-chip img{width:40px;height:44px}
  .wordmark small{font-size:8px}
  .topbar nav{font-size:11px;gap:5px}
  .landmark-label{font-size:9px;min-height:40px;padding:6px;gap:4px;max-width:124px;white-space:normal;text-align:center;justify-content:center}
  .view-controls #view-overview{font-size:11px;min-width:70px}
  #guide-toggle{font-size:12px;padding:10px 12px;min-height:44px}
  #progress{font-size:11px}
  .mobile-hint{font-size:11px;max-width:95px;line-height:1.45}
  .motion-controls{gap:3px}
  #interact-prompt{top:calc(145px + clamp(340px,60svh,500px) - 24px);font-size:11px;min-height:40px}
  .guide-heading p{font-size:11px;max-width:130px}
  .guide-heading .eyebrow{font-size:9px}
  .destination-card h3{font-size:13px}
  .destination-card p{font-size:12px}
}

.label-short{display:none}
@media(max-width:600px){
  #world-stage{height:390px;min-height:340px}
  .landmark-label .label-full{display:none}
  .landmark-label .label-short{display:block}
  .landmark-label{font-size:10px;min-width:45px;max-width:92px;min-height:40px;padding:5px 7px;gap:4px}
  #interact-prompt{top:511px}
}

/* The playable village is the first screen. Interface stays at its edges. */
:root{--paper:#edf1e7;--ink:#203f42;--muted:#4e665b;--line:#d3ddcd;--white:#fffef7}
body{background:var(--paper)}
.topbar{height:72px;background:#fafbf5;border-bottom:1px solid #dce4d8;max-width:none;padding:0 30px}
.identity-chip{top:94px;left:28px;background:#fffef5ef;backdrop-filter:blur(12px);box-shadow:0 8px 30px #294d3a12;border-color:#ffffffb0}
#world-stage{height:calc(100svh - 72px);min-height:600px;max-height:none;margin:0;background:#c5dfdd}
#world{cursor:grab}#world:active{cursor:grabbing}
.explore-bar{position:absolute;top:calc(100svh - 76px);left:50%;transform:translateX(-50%);z-index:12;width:calc(100% - 56px);max-width:none;min-height:56px;margin:0;padding:0;pointer-events:none}
.explore-bar>*{pointer-events:auto}
#walk-hint{background:#fffef2de;backdrop-filter:blur(10px);padding:10px 13px;border:1px solid #fff9;border-radius:13px;color:#3e5e52;min-height:45px}
#guide-toggle{background:#fffef5ee;backdrop-filter:blur(10px);box-shadow:0 5px 25px #2b4a3b18;border-color:#fff8;font-size:13px}
.motion-controls{background:#fffef2e3;backdrop-filter:blur(10px);border-radius:13px;border:1px solid #fff9;padding:2px 10px;gap:14px}
.view-controls{right:28px;bottom:99px;background:#fffef5ec;border-color:#fff8}
.landmark-label{background:#fffef4ec;border:1px solid #fff9;backdrop-filter:blur(8px);font-size:12px;box-shadow:0 4px 24px #24482e1f;padding:9px 14px;min-height:40px;white-space:nowrap;max-width:none}
.landmark-label[hidden]{display:none}
.landmark-label:after{border-color:#fff9}
#interact-prompt{position:absolute;top:calc(100svh - 143px);bottom:auto;font-size:12px;min-height:42px}
.field-guide{margin-top:0;border-top:0;padding-top:56px}
#loading{background:#d2e1d5}.loading-mark{color:#5b897b}
#render-fallback{z-index:15}
@media(max-width:800px){
  .topbar{height:68px;padding:0 20px}
  .identity-chip{left:20px;top:88px}
  #world-stage{height:calc(100svh - 68px)}
  .explore-bar{width:calc(100% - 40px)}
  .view-controls{right:20px}
  #walk-hint .keycap{display:none}
}

/* Rooms open onto the real photographs and work behind each chapter. */
#room-loading{position:absolute;bottom:160px;left:50%;transform:translateX(-50%);z-index:14;display:flex;gap:10px;align-items:center;padding:13px 18px;max-width:calc(100% - 32px);border:1px solid #fff9;background:#fffef5f5;box-shadow:0 8px 32px #25452d1f;border-radius:13px;font-size:12px;color:#3c5a4e}
#room-loading[hidden]{display:none}
#room-loading>span:first-child{font-size:20px;color:#779783}
.room-toolbar{position:absolute;top:22px;left:28px;right:28px;z-index:13;display:flex;align-items:center;gap:20px;pointer-events:none}
.room-toolbar[hidden]{display:none}
.room-toolbar>button,.room-heading{pointer-events:auto;background:#fffef5f2;border:1px solid #ffffffc0;box-shadow:0 6px 28px #243f3512;backdrop-filter:blur(12px);border-radius:13px}
.room-toolbar>button{min-height:44px;padding:12px 16px;font-size:12px;display:flex;align-items:center;gap:10px;white-space:nowrap}
.room-heading{padding:12px 18px;display:grid;gap:4px;max-width:440px}
.room-heading .eyebrow{font-size:8px;letter-spacing:1.8px;color:#738478}
.room-heading strong{font-size:16px;letter-spacing:-.3px}
.room-heading>span:last-child{font-size:11px;color:#596e62;line-height:1.5}
#room-story{margin-left:auto;font-size:11px}
.is-indoors .identity-chip{visibility:hidden}
.is-indoors #view-overview{display:none}
.is-indoors #world-stage{background:#e7e4da}
.place-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:24px}
.place-gallery[hidden]{display:none}
.gallery-piece{padding:0;text-align:left;overflow:hidden;border:1px solid #dce2d6;border-radius:9px;background:#f4f4eb;transition:transform .18s,border-color .18s}
.gallery-piece:hover{transform:translateY(-2px);border-color:#91ad9a}
.gallery-piece img{display:block;width:100%;height:130px;object-fit:contain;background:#e9e9df;padding:8px}
.gallery-piece span{display:block;font-size:11px;font-weight:600;line-height:1.5;padding:11px 12px}
#exhibit-dialog{padding:0;width:min(940px,calc(100vw - 40px));border-radius:18px;overflow:auto;background:#fffef7}
#exhibit-dialog[open]{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(260px,.8fr);align-items:stretch}
#exhibit-dialog .dialog-close{z-index:3;top:12px;right:12px;background:#fffef7ec;border:1px solid #d4ddd0;color:#3f5b51}
.exhibit-image-wrap{margin:0;padding:28px;background:#e9ebe1;min-height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}
#exhibit-image{display:block;width:100%;max-height:66svh;object-fit:contain;border-radius:2px}
#exhibit-image[hidden]{display:none}
#exhibit-credit{font-size:10px;line-height:1.5;color:#65786a;text-align:center}
#exhibit-credit:empty{display:none}
.exhibit-copy{padding:58px 30px 30px;display:flex;flex-direction:column;align-items:flex-start}
.exhibit-copy .eyebrow{font-size:9px;letter-spacing:1.5px;line-height:1.8;max-width:100%}
.exhibit-copy h2{font-size:27px;letter-spacing:-.7px;line-height:1.18;margin:12px 0 20px}
#exhibit-description{font-size:13px;line-height:1.85;color:#52685d;margin:0}
#exhibit-links{margin-top:22px;gap:9px}
.exhibit-return{margin-top:auto;padding:28px 0 0;font-size:11px;font-weight:600;min-height:44px;display:flex;align-items:center;gap:14px}
@media(max-width:800px){
  .room-toolbar{left:20px;right:20px;gap:10px}
  .room-heading{padding:10px 13px}.room-heading strong{font-size:14px}
  #exhibit-dialog[open]{grid-template-columns:1.1fr 1fr}
  .exhibit-copy{padding:56px 24px 24px}.exhibit-copy h2{font-size:24px}
  .exhibit-image-wrap{padding:20px;min-height:340px}
}
@media(max-width:600px){
  .is-indoors .identity-chip{display:none}
  .is-indoors #world-stage{height:calc(100svh - 64px)}
  .room-toolbar{top:12px;left:12px;right:12px;gap:8px;align-items:flex-start;flex-wrap:wrap}
  .room-toolbar>button{font-size:11px;padding:11px 12px;min-height:44px}
  .room-heading{flex:1;min-width:0;padding:10px 12px}
  .room-heading .eyebrow{font-size:7px;letter-spacing:1.2px}
  .room-heading strong{font-size:13px}
  .room-heading>span:last-child{font-size:10px}
  #room-story{display:none}
  #exhibit-dialog{width:calc(100vw - 24px);max-height:calc(100svh - 24px);border-radius:14px}
  #exhibit-dialog[open]{display:block}
  .exhibit-image-wrap{padding:28px 20px 16px;min-height:0}
  #exhibit-image{max-height:35svh;width:100%}
  .exhibit-copy{padding:24px}.exhibit-copy h2{font-size:24px;margin-top:8px;margin-bottom:13px}
  #exhibit-description{font-size:13px;line-height:1.7}
  #exhibit-links{margin-top:18px}.exhibit-return{padding-top:21px}
  .place-gallery{gap:9px}.gallery-piece img{height:110px}
}
@media(max-width:600px){
  .topbar{height:64px;padding:0 16px}
  .wordmark{font-size:14px}.wordmark small{font-size:8px}
  .identity-chip{position:relative;top:auto;left:auto;margin:0;padding:10px 16px;border-radius:0;border:0;border-bottom:1px solid #dce4d8;background:#fafbf5;box-shadow:none;min-height:74px}
  .identity-chip img{width:40px;height:44px}
  #world-stage{height:calc(100svh - 138px);min-height:480px}
  .explore-bar{top:calc(100svh - 69px);width:calc(100% - 24px);gap:6px;min-height:48px}
  #walk-hint{display:none}
  #guide-toggle{font-size:12px;min-height:43px;padding:9px 12px}
  .motion-controls{gap:0;padding:0 4px}
  .view-controls{right:13px;bottom:91px}
  .landmark-label{font-size:11px;padding:8px 10px;min-height:40px;max-width:190px;white-space:nowrap}
  #interact-prompt{top:calc(100svh - 127px);min-height:40px;max-width:calc(100% - 26px);font-size:11px}
  .field-guide{padding-top:35px}
}

/* Field journal: a place to browse, without leaving the village. */
:root{--ease-ui:cubic-bezier(.23,1,.32,1)}
button{touch-action:manipulation}
button:active{transform:translateY(1px)}
button:disabled{opacity:.4}
dialog{overscroll-behavior:contain;box-shadow:0 1px 0 #ffffff inset,0 0 0 1px #243f4222,0 24px 90px #142e3955}
dialog::backdrop{background:#142e3966;backdrop-filter:blur(9px)}
dialog h2{text-wrap:balance}
#journal-dialog{width:min(1060px,calc(100vw - 48px));padding:38px;max-height:calc(100svh - 48px);background:#f8f8ef;border:1px solid #fff8;border-radius:22px}
.journal-heading{display:flex;align-items:center;gap:30px;justify-content:space-between;padding:8px 24px 24px 0}
.journal-heading h2{font-family:var(--font);font-size:34px;line-height:1.12;font-weight:650;letter-spacing:-1.2px;margin:10px 0 12px}
.journal-heading p{font-size:13px;line-height:1.6;color:#52685d;margin:0}
.journal-passport{flex:none;display:flex;flex-direction:column;gap:7px;min-width:140px;padding-left:22px;border-left:1px solid #d5ddd2}
#journal-count{font-size:30px;font-weight:600;letter-spacing:-1px;color:#397e79;font-variant-numeric:tabular-nums}
.journal-passport>span:last-of-type{font-size:10px;color:#65786a}
.passport-track{height:4px;background:#dee6d7;border-radius:9px;overflow:hidden;margin-top:6px}
#passport-fill{display:block;height:100%;background:#638c75;transition:width .2s ease-out;border-radius:9px}
.journal-filters{display:flex;gap:7px;margin-bottom:21px;flex-wrap:wrap}
.journal-filters button{font-size:12px;padding:9px 14px;border-radius:30px;color:#52685d;border:1px solid #d5ded0;min-height:40px;background:#fff9}
.journal-filters button[aria-pressed=true]{background:#254a46;border-color:#254a46;color:#fffef5;box-shadow:0 2px 6px #203f4215}
#journal-places{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.journal-place{border-radius:14px;background:#fffef8;box-shadow:0 1px 2px #203f4212,0 0 0 1px #203f4212;overflow:hidden;display:flex;flex-direction:column}
.journal-place[hidden]{display:none}
.journal-preview{position:relative;display:block;padding:0;width:100%;overflow:hidden;text-align:left;background:#d5e1d6}
.journal-preview img{width:100%;height:auto;aspect-ratio:1.48;object-fit:cover;display:block;transition:transform 250ms var(--ease-ui)}
.journal-preview:hover img{transform:scale(1.045)}
.journal-preview-cta{position:absolute;right:10px;bottom:10px;background:#fffef6ed;color:#264a43;border-radius:22px;padding:7px 11px;font-size:10px;box-shadow:0 3px 10px #223f4320}
.journal-place-copy{padding:17px 18px 13px;display:flex;flex-direction:column;flex:1;border-top:3px solid var(--place-color)}
.journal-stamp{font-size:10px;color:#798c7d;letter-spacing:.1px}
.discovered .journal-stamp{color:#397d67;font-weight:600}
.journal-place h3{font-size:16px;margin:9px 0 7px;letter-spacing:-.3px}
.journal-place p{font-size:12px;color:#62766a;line-height:1.65;margin:0 0 16px}
.journal-actions{margin-top:auto;display:flex;gap:8px;justify-content:space-between;align-items:center}
.journal-actions button{font-size:11px;min-height:40px;padding:6px 0}
.journal-actions .journal-walk{font-weight:650;color:#336e62}
.journal-footer{display:flex;gap:20px;justify-content:space-between;border-top:1px solid #dce2d6;margin-top:25px;padding-top:21px;font-size:11px;color:#65786a;line-height:1.7}
.journal-footer a{text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
#journal-empty{padding:50px 20px;text-align:center;color:#62766a}
#discovery-toast{position:fixed;left:50%;top:86px;transform:translateX(-50%);z-index:25;pointer-events:none;display:flex;gap:14px;align-items:center;background:#fffef5f5;color:#31584d;border:1px solid #fff;border-radius:15px;padding:15px 21px;box-shadow:0 8px 35px #2746332b}
#discovery-toast[hidden]{display:none}
#discovery-toast>span{font-size:29px;color:#c19b5b}
#discovery-toast strong{display:block;font-size:13px}
#discovery-toast div>span{display:block;font-size:10px;margin-top:5px;color:#748372}
/* Exhibit window: stable image stage, room collection, and a readable caption. */
.exhibit-image-wrap{height:min(690px,78svh);min-height:440px;padding:20px 24px;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:14px;background:#e9ede4}
.exhibit-toolbar{display:flex;justify-content:space-between;align-items:center;width:100%;gap:16px;color:#63776a;font-size:10px;font-variant-numeric:tabular-nums}
.exhibit-toolbar>div{display:flex;gap:5px}
.exhibit-toolbar button{width:36px;height:36px;border-radius:50%;background:#fffdf3c9;border:1px solid #cfdacb;color:#34564d;font-size:17px}
.exhibit-toolbar button:hover{background:#fff;border-color:#7ea18b}
#exhibit-image{width:100%;height:100%;max-height:100%;min-height:0;object-fit:contain}
#exhibit-strip{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}
#exhibit-strip[hidden]{display:none}
.exhibit-thumb{padding:3px;background:#fff9;border-radius:7px;border:1px solid #cbd7c8;opacity:.65;transition:opacity .16s,border-color .16s}
.exhibit-thumb img{width:62px;height:42px;object-fit:contain;display:block;border-radius:3px}
.exhibit-thumb[aria-current=true]{opacity:1;border-color:#3b7e75;box-shadow:0 0 0 1px #3b7e75}
.exhibit-thumb:hover{opacity:1}
#place-dialog .note-number{font-family:var(--font);font-size:14px;font-weight:600;letter-spacing:2px;background:color-mix(in srgb,var(--place-color) 12%,transparent);border:1px solid color-mix(in srgb,var(--place-color) 24%,transparent);border-radius:50%;width:42px;height:42px;display:grid;place-items:center;opacity:1}
#place-dialog h2{font-family:var(--font);font-size:31px;font-weight:650;line-height:1.15;letter-spacing:-1px}
@media(max-width:800px){#journal-places{grid-template-columns:repeat(2,minmax(0,1fr))}.journal-heading h2{font-size:28px}.journal-passport{min-width:110px}}
@media(max-width:600px){
 #journal-dialog{width:calc(100vw - 20px);max-height:calc(100svh - 20px);padding:26px 18px 20px;border-radius:17px}
 .journal-heading{display:block;padding:5px 24px 19px 0}.journal-heading h2{font-size:28px}.journal-heading p{font-size:12px}
 .journal-passport{border:0;padding:17px 0 0;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px 12px}#journal-count{font-size:22px}.passport-track{grid-column:1/-1;margin-top:2px}
 .journal-filters{gap:5px}.journal-filters button{font-size:11px;padding:8px 11px}
 #journal-places{grid-template-columns:1fr;gap:17px}.journal-preview img{aspect-ratio:1.8}.journal-place-copy{padding:16px}
 .journal-actions button{min-height:44px;font-size:12px}.journal-footer{display:block;font-size:10px}.journal-footer a{display:block;margin-top:12px}
 .exhibit-image-wrap{height:46svh;min-height:300px;padding:15px 18px;gap:10px}.exhibit-toolbar{padding-right:28px}
 #exhibit-image{max-height:100%;height:100%}.exhibit-copy{padding-top:24px}.exhibit-thumb img{height:34px;width:51px}
 #discovery-toast{top:148px;width:max-content;max-width:calc(100vw - 36px);padding:12px 16px}
}
@media(prefers-reduced-motion:reduce){.journal-preview img,#passport-fill,.exhibit-thumb{transition:none!important}}

/* The backpack is an inventory: collection, selected object, walking party. */
:root{--font:"Avenir Next",Avenir,"Trebuchet MS",sans-serif}
.adventure-actions{display:flex;align-items:center;gap:8px}
#bag-toggle{display:flex;align-items:center;gap:9px;min-height:46px;padding:10px 17px;border:1px solid #fff8;border-radius:12px;background:#fffef5f2;backdrop-filter:blur(10px);box-shadow:0 3px 0 #233e4420;font-size:13px;font-weight:650}
#bag-toggle:hover{background:#fff}
#party-count{display:grid;place-items:center;width:21px;height:21px;border-radius:6px;background:#2d608a;color:#fff;font-size:11px;font-variant-numeric:tabular-nums}
#guide-toggle{border-radius:12px;box-shadow:0 3px 0 #233e4420}
#backpack-dialog{width:min(900px,calc(100vw - 40px));padding:0;max-height:calc(100svh - 32px);background:#fafdff;border:1px solid #b6c6d3;border-radius:17px;color:#223b50;box-shadow:0 0 0 5px #fff8,0 25px 90px #112d4a55}
.bag-header{display:flex;align-items:center;justify-content:space-between;padding:22px 27px;background:#28587e;color:#fff;border-bottom:4px solid #d8ac5d}
.bag-owner{display:flex;align-items:center;gap:13px}.bag-owner>img{width:43px;height:49px;object-fit:cover;object-position:center 28%;border-radius:7px;border:2px solid #ffffff80}
.bag-owner span{font-size:11px;color:#d4e4f0}.bag-header h2{font-family:var(--font);font-size:29px;font-weight:750;letter-spacing:-.9px;line-height:1.1;margin:3px 0 0;color:#fff}
#backpack-dialog .dialog-close{position:static;flex:none;color:#e7eff6;background:#1c486b;border:1px solid #ffffff40;border-radius:8px;font-size:25px;width:38px;height:38px}
.bag-workspace{display:grid;grid-template-columns:1fr 1fr}
.bag-collection{padding:24px;border-right:1px solid #cddbe5;background:#edf3f8}
.bag-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}
.bag-section-heading h3{font-size:13px;font-weight:700;margin:0}.bag-section-heading>span{font-size:11px;color:#667f91}
.bag-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.bag-slot{padding:7px 5px 9px;min-width:0;display:flex;align-items:center;flex-direction:column;border:1px solid #c4d3df;border-radius:9px;background:#ffffffa6;position:relative;transition:border-color .13s,box-shadow .13s}
.bag-slot:hover{border-color:#6391b5;background:#fff;color:#223b50}
.bag-slot.chosen{background:#fff;border-color:#2f648e;box-shadow:0 0 0 2px #2f648e,0 4px 0 #2f648e22}
.slot-art{position:relative;flex:none;height:82px;width:100%;display:grid;place-items:center;min-height:0}.slot-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.buddy-symbol{font-size:35px;color:var(--buddy-color);font-weight:650}
.slot-name{font-size:10px;font-weight:750;line-height:1.4;white-space:nowrap}.slot-state{font-size:9px;color:#82919c;margin-top:4px}.following .slot-state{color:#33715e;font-weight:600}
.bag-instruction{font-size:11px;color:#617b90;line-height:1.6;margin:17px 0 0}
.bag-detail{min-width:0;display:flex;flex-direction:column;background:#fafdff}
.buddy-view{height:227px;position:relative;overflow:hidden;background:#e8f0f5}
.buddy-view:before{content:"";position:absolute;width:45%;height:13px;background:#294a6220;border-radius:50%;bottom:40px;left:27.5%;filter:blur(11px);pointer-events:none}
#buddy-preview{display:block;width:100%;height:100%;touch-action:none;cursor:grab;position:relative;opacity:0}
.preview-ready #buddy-preview{opacity:1}#buddy-preview.turning{cursor:grabbing}#buddy-preview:focus-visible{outline-offset:-5px}
#buddy-preview-fallback{position:absolute;inset:0;display:grid;place-items:center;font-size:44px;color:#517a9b;font-weight:700}#buddy-preview-fallback[hidden]{display:none}
.buddy-turn{position:absolute;bottom:9px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:7px;white-space:nowrap;background:#fafdffd9;border:1px solid #c5d5e1;border-radius:18px;padding:0 2px}
.buddy-turn button{min-width:32px;min-height:30px;font-size:20px;color:#3a6b8e}.buddy-turn span{font-size:9px;color:#6a8293}
.buddy-copy{padding:19px 24px 21px;flex:1;display:flex;flex-direction:column}
.buddy-title-row{display:flex;align-items:baseline;gap:12px;justify-content:space-between}.buddy-title-row h3{font-size:22px;letter-spacing:-.6px;line-height:1.2;margin:0}.buddy-title-row>span{font-size:10px;color:#6f8799;white-space:nowrap}
#buddy-description{font-size:12px;color:#647b8b;line-height:1.7;margin:9px 0 16px;min-height:40px}
#buddy-toggle{margin-top:auto;min-height:43px;border-radius:8px;background:#30688f;color:#fff;display:flex;justify-content:center;align-items:center;gap:9px;font-size:12px;font-weight:650;border:1px solid #275473;box-shadow:0 3px 0 #d8e5ee}
#buddy-toggle:hover{background:#285a7e;color:#fff}#buddy-toggle[aria-pressed=true]{background:#eef4f7;color:#456b83;border-color:#c7d8e3;box-shadow:none}#buddy-toggle-icon{font-size:19px;font-weight:500}
.bag-party{padding:20px 24px 16px;border-top:1px solid #cbd9e3;background:#fff}
#party-status-text{font-size:11px;color:#6d8394;font-weight:500;margin-left:8px}
#party-recall{font-size:11px;text-decoration:underline;text-underline-offset:3px;color:#627f92;padding:6px 0;min-height:30px}
#party-line{display:flex;gap:10px}
.party-friend{position:relative;display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid #d1dfe7;border-radius:8px;background:#f0f5f8;height:59px;flex:1;min-width:0;padding:5px}
.party-friend img{width:44px;height:44px;object-fit:contain}.party-friend .buddy-symbol{font-size:23px}.party-name{font-size:9px;font-weight:600;line-height:1.3;max-width:45px;text-align:left}
.party-remove{position:absolute;right:3px;top:1px;font-size:13px;color:#8ba0ae;line-height:1}
.party-friend:hover{border-color:#7597ae;background:#e7f0f6;color:#304e63}.party-friend.empty{border-style:dashed;background:#fafcfd;opacity:1;color:#becdd8;font-size:25px}
#backpack-message{font-size:10px;color:#778c9b;margin:10px 0 0;line-height:1.5;min-height:15px}
.bag-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:17px 24px;background:#edf3f7;border-top:1px solid #cbd9e3}
.bag-footer>span{font-size:10px;color:#768d9e;display:flex;align-items:center;gap:6px}.bag-footer kbd{font:inherit;border:1px solid #c1d1dd;border-bottom-width:2px;border-radius:4px;padding:3px 5px;background:#fff}
.bag-footer>div{display:flex;gap:10px;align-items:center}
#party-all{border:1px solid #b9ccdb;min-height:42px;padding:9px 13px;border-radius:8px;font-size:11px;color:#456d89;background:#fff}#party-all:hover{background:#f8fbfd}
#backpack-done{border:1px solid #234b6a;min-height:43px;padding:9px 20px;border-radius:8px;font-size:12px;font-weight:700;color:#fff;background:#28587e;box-shadow:0 3px 0 #adc2d2;display:flex;gap:13px;align-items:center}#backpack-done:hover{background:#1f4c70;color:#fff}
@media(max-width:1050px){#walk-hint .keycap{display:none}.motion-controls{gap:4px}.explore-bar{gap:10px}#walk-hint{font-size:10px}}
@media(max-width:850px){#walk-hint{display:none}.explore-bar{justify-content:center;gap:14px}}
@media(max-width:650px){
 #backpack-dialog{width:calc(100vw - 18px);max-height:calc(100svh - 18px);border-radius:13px;box-shadow:0 0 0 3px #fff8,0 20px 60px #112d4a55}
 .bag-header{padding:16px 18px}.bag-header h2{font-size:25px}.bag-owner>img{width:36px;height:42px}.bag-owner span{font-size:10px}
 .bag-workspace{display:flex;flex-direction:column}.bag-collection{padding:16px 15px 13px;border-right:0;border-bottom:1px solid #cddbe5}.bag-section-heading{margin-bottom:12px}.bag-section-heading h3{font-size:12px}
 .bag-slots{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.bag-slot{padding:5px 1px 7px;border-radius:7px}.slot-art{height:53px}.slot-name{font-size:8px;white-space:normal;text-align:center;min-height:22px;max-width:65px}.slot-state{font-size:8px}.bag-slot .buddy-symbol{font-size:24px}.bag-instruction{margin:9px 0 0;font-size:10px}
 .bag-detail{display:grid;grid-template-columns:42% 58%;align-items:stretch}.buddy-view{height:215px}.buddy-turn{bottom:9px;gap:0}.buddy-turn span{font-size:8px}.buddy-turn button{min-width:29px;min-height:32px}.buddy-copy{padding:17px 15px 17px 12px}.buddy-title-row{display:block}.buddy-title-row h3{font-size:19px}.buddy-title-row>span{display:block;font-size:9px;margin-top:4px}#buddy-description{font-size:11px;line-height:1.6;min-height:48px;margin:8px 0 13px}#buddy-toggle{font-size:11px;min-height:42px;gap:6px}
 .bag-party{padding:15px}#party-status-text{font-size:10px;margin-left:5px}#party-recall{font-size:10px;min-height:32px}#party-line{gap:6px}.party-friend{height:57px;flex-direction:column;gap:0;padding:2px}.party-friend img{width:36px;height:36px}.party-name{font-size:7px;white-space:nowrap;max-width:none;text-align:center}.party-remove{font-size:11px}.party-friend .buddy-symbol{font-size:21px}#backpack-message{font-size:9px;margin-top:8px}
 .bag-footer{padding:14px 15px}.bag-footer>span{display:none}.bag-footer>div{width:100%;justify-content:space-between}#party-all{font-size:11px;min-height:44px}#backpack-done{min-height:44px;font-size:12px;min-width:120px;justify-content:center}
}
@media(max-width:600px){
 .adventure-actions{gap:6px}#bag-toggle{padding:9px 12px;font-size:12px;gap:7px;min-height:44px}#bag-toggle svg{width:18px;height:18px}#party-count{width:18px;height:18px;font-size:9px}
 #guide-toggle{gap:6px;padding:9px 11px}#guide-toggle>span:last-child,#progress{display:none}.motion-controls{padding:0;gap:0}.explore-bar{justify-content:space-between;gap:5px}#quiet-mode,#reset-view{min-width:35px}
}
@media(max-width:360px){#bag-toggle{padding-inline:8px;gap:5px}#guide-toggle{padding-inline:8px;font-size:11px}.adventure-actions{gap:4px}}

/* Music stays a small, deliberate control; audio is loaded only when requested. */
#music-toggle{display:flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:44px;color:#52685d;font-size:12px;border-radius:9px;padding:4px 7px}
#music-toggle[aria-pressed=true]{color:#326d58;background:#e2edda}
#music-toggle:focus-visible{outline:2px solid #326d58;outline-offset:3px}
@media(max-width:1050px){#music-toggle>span{display:none}}
@media(max-width:600px){#music-toggle{min-width:35px;padding:4px}#guide-toggle .journal-label{font-size:0}#guide-toggle .journal-label:after{content:"Journal";font-size:11px}}

@media(max-width:360px){#guide-toggle .journal-label{display:none}#guide-toggle{min-width:38px;justify-content:center}.motion-controls{flex-shrink:0}}
/* Map labels are positioned by their center/bottom anchor. Keep that anchor
   while pressed so the release cannot fall through onto the terrain. */
.landmark-label:active{transform:translate(-50%,-100%)}

/* Keep viewport-anchored controls separate on short phones. */
@media(max-width:600px) and (max-height:650px){
  #world-stage{min-height:360px}
}
