@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap');
:root{color-scheme:dark;--ink:#05150e;--mint:#e6d19b;--pink:#d6b86a;--muted:#b4c8ba}*{box-sizing:border-box}body{margin:0;background:var(--ink);color:#fff;font-family:'Space Grotesk',sans-serif}button,a{-webkit-tap-highlight-color:transparent}header{padding:24px 4%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff16;gap:18px}.brand{font-family:'Space Mono',monospace;font-size:14px;letter-spacing:2px;color:#fff;text-decoration:none}.brand span{color:var(--pink)}.controls{display:flex;gap:10px;flex-wrap:wrap}button{font:500 14px 'Space Grotesk',sans-serif;color:#f0eedc;background:#102e20;border:1px solid #827049;border-radius:30px;padding:11px 18px;cursor:pointer;transition:background .2s,transform .2s}button:hover{background:#205037;transform:translateY(-2px)}button:focus-visible,a:focus-visible{outline:3px solid var(--mint);outline-offset:4px}.intro{text-align:center;padding:38px 20px 18px;position:relative;z-index:1}.eyebrow{font:12px 'Space Mono',monospace;letter-spacing:2px;color:var(--mint)}h1{font-size:clamp(32px,5.7vw,84px);line-height:1.1;letter-spacing:-.055em;margin:14px 0 12px}h1 span{display:inline-block;color:var(--pink);font-size:.65em;vertical-align:top;margin-left:12px;animation:spin 18s linear infinite}.intro p{color:var(--muted);font-size:17px;margin:0}.world-wrap{overflow:auto;scrollbar-color:#997c3f #05150e}.world{position:relative;width:100%;max-width:1920px;margin:auto;isolation:isolate}.world img{width:100%;height:auto;display:block}.hotspot{position:absolute;background:transparent;border:0;border-radius:50%;padding:0;min-width:44px;min-height:44px;transform:translate(-50%,-50%);color:transparent;z-index:2}.hotspot:hover{background:#ffffff12;box-shadow:0 0 35px #e4c77a60;transform:translate(-50%,-50%) scale(1.1)}.hotspot:focus-visible,.hints .hotspot:not(.found){outline:2px dashed var(--mint);outline-offset:2px;background:#e6d19b15}.hotspot.found:after{content:'✦';color:var(--mint);position:absolute;right:5%;top:4%;font-size:20px;text-shadow:0 2px 4px #000}.hotspot.pop{animation:pop .65s ease}.dashboard{margin:4px 4% 0;padding:25px 0;display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid #ffffff20}.dashboard p{margin:10px 0 0;color:var(--muted)}#count{font-family:'Space Mono',monospace;color:#fff;margin-right:10px}#rank{color:var(--pink)}#discoveries{margin:20px 4%;padding:24px;background:#10281d;border:1px solid #715e36;border-radius:16px}#discoveries h2{margin-top:0}#loot{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;padding:0;list-style:none}#loot li{padding:16px;background:#05150e;border-radius:10px;color:#c9d7c9}#loot strong{display:block;color:var(--mint);margin-bottom:6px}.mobile-note{display:none}footer{display:flex;justify-content:space-between;gap:16px;padding:28px 4% 44px;font:12px 'Space Mono',monospace;color:#a3b9a8;letter-spacing:1px}#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,25px);width:max-content;max-width:calc(100% - 32px);background:#f4eed8;color:#102518;border:3px solid #102518;box-shadow:6px 6px 0 var(--pink);border-radius:15px;padding:16px 24px;z-index:10;opacity:0;pointer-events:none;font-size:17px;transition:opacity .2s,transform .2s}#toast.show{opacity:1;transform:translate(-50%,0)}.particle{position:absolute;left:var(--x);top:var(--y);font-size:28px;pointer-events:none;animation:fly 1.6s ease-out forwards;z-index:4}#celebration{position:fixed;inset:0;pointer-events:none;z-index:8}#celebration .particle{animation:rain 3s ease-out forwards}.paused *{animation:none!important;transition:none!important}.paused .particle{display:none}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pop{50%{box-shadow:0 0 20px 18px #e6d19b5c;transform:translate(-50%,-50%) scale(1.2)}}@keyframes fly{to{transform:translate(var(--dx),-110px) rotate(50deg);opacity:0}}@keyframes rain{from{transform:translateY(-10vh) rotate(0)}to{transform:translateY(110vh) rotate(400deg);opacity:0}}@media(max-width:700px){header{padding:18px 5%;align-items:flex-start}.brand{max-width:130px;line-height:1.7;font-size:12px}.controls{gap:7px}button{padding:10px 12px}.intro{padding-top:30px}.intro .eyebrow{font-size:10px;line-height:1.8}.intro p{font-size:16px;max-width:290px;margin:auto}.world{width:1000px;max-width:none}.dashboard{align-items:flex-start;flex-direction:column;padding:22px 0}.dashboard .eyebrow{font-size:10px}.mobile-note{display:block;color:var(--muted);margin:20px 5%;font-size:14px}footer{flex-direction:column;font-size:10px}#rank{display:block;margin-top:8px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.particle{display:none}}

/* Dark forest marble and reflective gold */
body{background-color:#020a06;background-image:repeating-linear-gradient(123deg,transparent 0 140px,#90b09009 142px,transparent 146px 240px),radial-gradient(ellipse at 12% 5%,#164b32 0,transparent 55%),radial-gradient(ellipse at 85% 90%,#103d29 0,transparent 60%);background-attachment:fixed}
header{background:#020b07bb;border-bottom-color:#ad8c4645}
h1{color:#e6ce88;background:linear-gradient(115deg,#8f692b 0%,#e8cb79 19%,#fff8d6 28%,#c79e46 39%,#a4772d 51%,#fae9ae 63%,#b38b39 76%,#f7e2a0 91%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 10px 32px #d8b86315}
h1 span{-webkit-text-fill-color:#e4c578}
.controls button,#reset{border:1px solid transparent;background:linear-gradient(145deg,#143d29,#04160d) padding-box,linear-gradient(135deg,#745522,#eed491,#9c7731,#f1e0a2) border-box;box-shadow:inset 0 1px 0 #ffffff12,0 3px 10px #0005;color:#f5e8c4}
.controls button:hover,#reset:hover{background:linear-gradient(145deg,#205838,#082819) padding-box,linear-gradient(135deg,#eed491,#9c7731,#f1e0a2) border-box}
#discoveries{background:linear-gradient(140deg,#163e29e8,#061b11f5);border-color:#ac8a485c}#toast{background:linear-gradient(125deg,#a88235,#f8e7b3 32%,#d8b65e 68%,#faedc7);border-color:#132819;box-shadow:5px 5px 0 #010a06}


/* Each canvas displays and locally animates a single complete scene image. */
.world{overflow:hidden}.living-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}.scene-live>#scene-image{opacity:0}.hotspot{z-index:2}.hotspot:hover{background:transparent;box-shadow:inset 0 0 25px #e4c77a40}.hotspot.pop{animation:none}.hotspot:focus-visible,.hints .hotspot:not(.found){background:#ffe3a112}.dashboard .eyebrow{line-height:1.8}#world-title{color:#f2d693}header .controls{justify-content:flex-end}button{padding:8px 13px}@media(max-width:700px){header{gap:10px}.brand{flex-shrink:0}header .controls{max-width:245px}.intro{padding-top:24px}button{padding:8px 11px}.dashboard .eyebrow{letter-spacing:1px}}

/* Shared compact presentation: controls fit their labels and stay together. */
header{padding:14px 4%;gap:12px}.brand{letter-spacing:1.5px}header .controls{flex-wrap:nowrap;max-width:none;gap:7px}button{padding:6px 10px;line-height:1.35;white-space:nowrap}.intro{padding:24px 16px 16px}h1{font-size:clamp(30px,5vw,64px);margin:10px 0;letter-spacing:-.05em}.intro p{font-size:16px}.dashboard{padding:16px 0;gap:12px}.dashboard p{margin-top:6px}#discoveries{padding:18px;margin-top:16px;margin-bottom:16px}#discoveries h2{font-size:21px;margin-bottom:12px}#loot{gap:8px}#loot li{padding:12px}footer{padding-top:20px;padding-bottom:max(48px,calc(32px + env(safe-area-inset-bottom)))}
@media(max-width:700px){header{padding:12px 5%;flex-wrap:wrap;align-items:center}.brand{max-width:none;font-size:12px;line-height:1.35}header .controls{width:100%;justify-content:flex-start;gap:7px}.intro{padding-top:20px}.intro p{font-size:15px;max-width:330px}.dashboard{padding:16px 0}.dashboard .controls{gap:7px}.mobile-note{margin-top:16px;margin-bottom:16px}footer{padding-bottom:max(64px,calc(48px + env(safe-area-inset-bottom)))}}
@media(max-width:350px){header .controls{gap:6px}header .controls button{font-size:12px;padding:7px 9px}}

/* The play page is the artwork, edge to edge. Controls are illustrated props. */
body.immersive{width:100%;height:100dvh;overflow:hidden;background:#05150e}
.immersive .world-wrap{position:fixed;inset:0;overflow:hidden;touch-action:none}
.immersive .world{position:absolute;max-width:none;margin:0;left:0;top:0;will-change:transform}
.immersive .world img{width:100%;height:100%;object-fit:fill}
.immersive .hotspot{min-width:0;min-height:0}
.immersive .hotspot.found:after{display:none}
.immersive #toast{bottom:max(24px,env(safe-area-inset-bottom));font-size:14px;padding:10px 14px;max-width:min(420px,calc(100% - 32px))}
.details-page{max-width:850px;margin:auto;padding:32px 20px 64px;line-height:1.65}
.details-page h1{font-size:38px}.details-page a{color:#f2d693}.details-page .controls{margin:20px 0}

a,a:link,a:visited,a:hover,a:focus,a:active{text-decoration:none!important}a.text-link{border-bottom:0!important}

/* Discovery captions stay by the clicked prop and never intercept input. */
.immersive #toast{bottom:auto;left:12px;top:12px;transform:none;max-height:calc(100dvh - 24px);overflow:hidden;transition:opacity .15s;box-shadow:3px 3px 0 #010a06}
.immersive #toast.show{transform:none}
