*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f1ecdf;color:#f5efdd;font-family:Arial,sans-serif}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #bdf64c;outline-offset:5px}.hero{position:relative;isolation:isolate;min-height:760px;height:min(880px,100svh);overflow:hidden;background:radial-gradient(ellipse at 78% 45%,#39301d 0,#101c24 48%,#080f1b 85%)}.scene{position:absolute;inset:0;pointer-events:none}.layer{position:absolute;max-width:none;will-change:transform;user-select:none}.landscape{width:112%;height:123%;object-fit:cover;left:-20%;top:-10%;opacity:.9}.bookcase{width:26%;height:85%;object-fit:contain;right:-7%;top:8%;opacity:.65}.workshop{width:87%;aspect-ratio:1.5;right:-14%;top:1%}.room{position:absolute;width:100%;height:100%;object-fit:contain;transition:opacity .6s ease}.light{opacity:0}body[data-room="light"] .light{opacity:1}body[data-room="light"] .dark{opacity:0}.reading-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,13,23,.55),transparent 64%),linear-gradient(0deg,rgba(6,13,22,.8),transparent 32%)}.treasures{width:56%;left:15%;bottom:-5%}.map{width:58%;right:-9%;bottom:-9%}.vines{width:116%;height:125%;object-fit:fill;left:-8%;top:-12%;opacity:.82}header{position:relative;z-index:5;display:flex;align-items:center;gap:64px;max-width:1440px;margin:auto;padding:27px 6%}.brand img{width:145px;height:55px;object-fit:contain}nav{display:flex;gap:32px;font-size:13px}nav a{padding:12px 0}.header-note{margin-left:auto;font:italic 16px Georgia,serif;color:#c5cbb8}.copy{position:relative;z-index:4;margin:58px 0 0 10%;width:470px;max-width:80%}.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.25em;color:#c5dca2}h1{font:normal clamp(48px,5.1vw,79px)/.99 Georgia,serif;letter-spacing:-.045em;margin:22px 0}h1 em{font-weight:normal;color:#e9edcc}.intro{font:20px/1.5 Georgia,serif;color:#dbdfd6}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.actions a{padding:15px 19px;border-radius:3px;font-size:12px;font-weight:600;display:flex;gap:20px;align-items:center}.primary{background:#b9f343;color:#182210;box-shadow:0 0 25px #b7f44716}.secondary{border:1px solid #aeb8aa;background:#0b172677}.actions a:hover{filter:brightness(1.12)}.aside{font:italic 14px Georgia,serif;color:#bdc5b4;margin-top:22px}.hero-caption{position:absolute;bottom:24px;left:10%;z-index:4;font-size:10px;letter-spacing:.08em;color:#e2e4d8}.hero-caption span{color:#b9f343;font-size:20px;margin-right:12px}.below{position:relative;text-align:center;padding:47px 6% 45px;color:#1a2525;background:#f1ecdf}.below:before{content:"";position:absolute;left:0;right:0;top:-18px;height:20px;background:#f1ecdf;clip-path:polygon(0 90%,8% 65%,17% 85%,26% 42%,34% 72%,42% 25%,52% 60%,60% 32%,68% 76%,79% 46%,87% 80%,95% 55%,100% 85%,100% 100%,0 100%)}.below .eyebrow{color:#68754e}h2{font:normal clamp(29px,3vw,44px) Georgia,serif;letter-spacing:-.025em;margin:14px 0}.below>p:not(.eyebrow){font:16px Georgia,serif;color:#636b60}.subjects{display:flex;max-width:960px;margin:30px auto 0;gap:30px}.subjects a{flex:1;text-align:left;border-top:1px solid #c9c9b8;padding:20px 0;font:18px Georgia,serif}.subjects span{float:right;color:#657944}.test-panel{display:flex;align-items:center;justify-content:center;gap:28px;padding:22px 5%;background:#17201f;color:#e3e6db;font-size:12px;flex-wrap:wrap}.test-panel>div{display:grid;gap:6px}.test-panel strong{font:18px Georgia,serif}.test-panel span{color:#a7b4a7;font-size:11px}.test-panel fieldset{border:0;padding:0;margin:0;display:flex;gap:5px}.test-panel legend{font-size:10px;margin-bottom:7px;color:#a7b4a7}.test-panel button{cursor:pointer;border:1px solid #64705c;background:transparent;color:#e3e6db;padding:9px 14px;border-radius:4px}.test-panel button[aria-pressed="true"][data-room]{background:#c2df8a;color:#142017;border-color:#c2df8a}.strength{display:flex;align-items:center;gap:10px}.strength input{width:90px;accent-color:#b9f343}.strength output{min-width:34px} @media(min-width:1600px){.workshop{width:76%;right:-7%;top:-10%}.treasures{width:48%;left:25%;bottom:-15%}.map{width:50%;bottom:-15%}}@media(max-width:900px){header{gap:25px;padding:20px 7%}.header-note{display:none}.copy{margin-left:8%;margin-top:40px;width:390px}.hero{min-height:840px}.workshop{width:125%;right:-44%;top:22%}.treasures{width:84%;left:-6%;bottom:-1%}.map{width:75%;right:-21%;bottom:-2%}.bookcase{right:-14%;width:40%;top:18%}.vines{width:150%;left:-25%}.hero-caption{left:8%}}@media(max-width:580px){.hero{height:900px;min-height:900px}header{justify-content:space-between;gap:15px}.brand img{width:115px;height:45px}nav{gap:16px;font-size:11px}.copy{margin-top:27px;max-width:86%}h1{font-size:55px}.intro{font-size:18px}.eyebrow{font-size:9px}.actions{gap:10px}.actions a{padding:13px 14px;font-size:11px}.workshop{width:170%;right:-44%;top:42%}.treasures{width:113%;left:-30%;bottom:1%}.map{width:109%;right:-37%;bottom:0}.bookcase{width:60%;top:38%;right:-23%}.landscape{height:95%;width:200%;left:-48%;top:-8%}.vines{width:230%;left:-65%;height:115%;top:-7%;opacity:.6}.hero-caption{font-size:8px;bottom:17px}.subjects{flex-direction:column;gap:0}.below{padding-top:35px}.test-panel{justify-content:flex-start;gap:20px}.reading-shade{background:linear-gradient(180deg,#08132288,transparent 60%)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.room{transition:none}.layer{will-change:auto}}

/* Midnight base + locally masked warm exposures. All move/focus as one depth plane. */
.firelight{position:absolute;inset:0;transition:opacity .6s ease;pointer-events:none}
body[data-room="light"] .firelight{opacity:0}
.lamp-patch{position:absolute;overflow:hidden;isolation:isolate;opacity:.78;mask-image:radial-gradient(ellipse at center,#000 0%,#000c 24%,#0005 55%,transparent 74%);-webkit-mask-image:radial-gradient(ellipse at center,#000 0%,#000c 24%,#0005 55%,transparent 74%);animation:fire-breathe 4.7s linear infinite}
.lamp-patch img{position:absolute;max-width:none;filter:brightness(1.12) saturate(1.12)}
.lamp-glow{position:absolute;inset:18%;background:radial-gradient(ellipse,#ffe3a36b 0%,#ffad3926 28%,transparent 67%);filter:blur(5px);mix-blend-mode:screen}
@keyframes fire-breathe{0%,100%{opacity:.78}13%{opacity:.9}21%{opacity:.76}29%{opacity:.84}43%{opacity:.72}51%{opacity:.88}64%{opacity:.8}73%{opacity:.91}82%{opacity:.75}93%{opacity:.85}}
.firelight.still .lamp-patch,body[data-room="light"] .lamp-patch{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.lamp-patch{animation:none;opacity:.8}.firelight{transition:none}}

/* Deliberate 24fps lighting clock in script.js; no interpolated CSS flicker. */
.lamp-patch{animation:none}

.magic-interior{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;filter:brightness(1.15) saturate(1.08);mask-image:radial-gradient(ellipse 32% 43% at 51% 51%,#000 12%,#000c 55%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 32% 43% at 51% 51%,#000 12%,#000c 55%,transparent 100%)}

.vine-source,.vine-mesh{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.vine-mesh{display:none}.mesh-ready .vine-mesh{display:block}.mesh-ready .vine-source{opacity:0}

.treasures{aspect-ratio:1.5}.props-base,.props-warm{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.props-warm{opacity:.55;filter:brightness(1.12) saturate(1.1);mask-image:radial-gradient(ellipse 29% 47% at 35% 64%,#000 7%,#000c 35%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 29% 47% at 35% 64%,#000 7%,#000c 35%,transparent 100%)}
.dragon-body{position:absolute;width:60%;height:60%;left:28%;top:-3.5%;object-fit:contain}
.dragon-wings{position:absolute;width:48%;height:48%;left:30.8%;top:-7.6%;}
.dragon-wings img,.dragon-wings canvas{position:absolute;inset:0;width:100%;height:100%}.dragon-wings canvas{display:none}.dragon-wings.ready canvas{display:block}.dragon-wings.ready img{opacity:0}

.dragon-wings{z-index:1}.dragon-body{z-index:2}.dragon-wings.near-wing{z-index:3}
.body-rig img,.body-rig canvas{position:absolute;inset:0;width:100%;height:100%}.body-rig canvas{display:none}.body-rig.mesh-ready canvas{display:block}.body-rig.mesh-ready img{opacity:0}

.landscape .water-source,.landscape canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.landscape canvas{display:none}.landscape.water-ready canvas{display:block}.landscape.water-ready .water-source{opacity:0}

.copy{transition:opacity .25s steps(6,end),filter .25s steps(6,end)}
.hero.background-focus .copy{opacity:.2;filter:blur(8px);pointer-events:none;user-select:none}
@media(prefers-reduced-motion:reduce){.copy{transition:none}}

/* Glass shells contain their simulation; labels remain above the liquid. */
.actions a{position:relative;isolation:isolate;overflow:hidden;border-radius:16px;border:1px solid rgba(230,255,210,.55);color:#f6ffe8;background:linear-gradient(135deg,rgba(192,248,102,.28),rgba(62,111,64,.2) 48%,rgba(200,255,154,.12));backdrop-filter:blur(14px) saturate(1.5);-webkit-backdrop-filter:blur(14px) saturate(1.5);box-shadow:inset 0 1px 0 #ffffff80,inset 0 -1px 0 #d6ffba30,0 5px 20px #0005;text-shadow:0 1px 3px #001300;min-height:48px}
.actions a.secondary{background:linear-gradient(135deg,#d5edff24,#12223666 55%,#c8f1ff1a);border-color:#d8eaff66}
.actions a::before{content:"";position:absolute;inset:1px;border-radius:14px;pointer-events:none;background:linear-gradient(165deg,#fff3,transparent 38%,transparent 80%,#e7ffcb18);box-shadow:inset 1px 0 0 #fff2;z-index:1}
.glass-bubbles{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.glass-label{position:relative;z-index:2;display:flex;gap:20px;align-items:center}
.actions a:hover{filter:none;box-shadow:inset 0 1px 0 #ffffffaa,inset 0 -1px 0 #d6ffba60,0 5px 24px #8ade3026;background-color:#b4f67b16}
.actions a:focus-visible{outline:3px solid #caff72;outline-offset:5px}
@supports not (backdrop-filter:blur(1px)){.actions a{background-color:#24462b}.actions a.secondary{background-color:#1d3040}}

.landscape canvas.shooting-stars{display:block;pointer-events:none;z-index:1}

/* Room transitions also advance at the scene cadence: 15 frames / 24fps. */
.room,.firelight{transition:opacity .625s steps(15,end)}
@media(prefers-reduced-motion:reduce){.room,.firelight{transition:none}}
