:root{--ink:#073d50;--light:#fff9df;--glass:#d7f2db;--accent:#ec6939;font-family:Arial,Helvetica,sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,#landscape:focus-visible{outline:3px solid #fffbe6;outline-offset:4px;box-shadow:0 0 0 6px #074c67}button:disabled{cursor:default}button{min-height:44px}#app{height:100%;height:100svh;min-height:540px;position:relative;isolation:isolate;overflow:hidden;background:#8ed9d7}#landscape{position:absolute;inset:0;touch-action:none;cursor:grab;outline-offset:-6px!important}#landscape.dragging{cursor:grabbing}#art{display:block;width:100%;height:100%}#far-plane,#near-plane{will-change:transform}.solved #far-plane,.solved #near-plane{transition:transform 1.2s cubic-bezier(.2,.7,.1,1)}header{position:absolute;top:32px;left:38px;right:38px;display:flex;justify-content:space-between;pointer-events:none}.wordmark{color:var(--ink);font-size:23px;line-height:.87;letter-spacing:-1.5px;font-weight:900;text-decoration:none;pointer-events:auto}.wordmark span{display:block;font-size:8px;letter-spacing:1.5px;line-height:1;margin-top:12px;font-weight:600}.edition{text-align:right;font-size:10px;letter-spacing:1.5px;line-height:1.7}.edition span{display:block;font-size:8px;letter-spacing:1px;opacity:.65}.scene-caption{position:absolute;left:38px;top:27%;pointer-events:none;max-width:300px}.chapter{display:flex;align-items:center;gap:12px;font-size:9px;font-weight:700;letter-spacing:1.5px}.hairline{height:1px;width:28px;background:currentColor;opacity:.6}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(32px,3.3vw,54px);line-height:1.05;font-weight:400;letter-spacing:-2px;margin:18px 0 14px}#scene-note{font-size:12px;line-height:1.6;max-width:210px}.progress{position:absolute;right:40px;top:45%;display:flex;flex-direction:column;gap:12px}.progress i{height:7px;width:7px;border:1px solid var(--ink);border-radius:50%}.progress i.active{background:var(--ink)}.progress i.done{background:#fff7da;border-color:#fff7da}.controls{position:absolute;bottom:54px;left:50%;transform:translateX(-50%);width:382px;max-width:calc(100% - 32px);color:var(--light);text-shadow:0 1px 8px #66352940}.feedback{display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:.3px;gap:8px}.feedback #warmth{font-variant-numeric:tabular-nums;font-size:10px}.meter{height:2px;margin:10px 0;background:#ffeed850}.meter span{display:block;height:100%;width:0;background:#fff8dc;transition:width .15s}#instruction{font-family:Georgia,serif;font-size:20px;letter-spacing:-.4px;margin:13px 0}.control-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.plane-picker{display:flex;flex-direction:column;gap:5px}.plane-picker button{display:flex;align-items:center;gap:9px;min-width:136px;min-height:44px;text-align:left;padding:0 12px;background:#572d2228;border:1px solid #fff5dc50;border-radius:3px;color:var(--light);font-size:11px}.plane-picker button[aria-pressed=true]{color:#143e47;background:#fff3d7;border-color:#fff3d7;text-shadow:none}.swatch{width:13px;height:13px;border-radius:50%;border:1px solid #ffffff70}.far{background:#087dad}.near{background:#e96938}.dpad{display:flex;align-items:center;gap:5px}.dpad div{display:flex;flex-direction:column;gap:5px}.dpad button{display:block;width:48px;height:44px;border:1px solid #fff5dc70;border-radius:3px;background:#5d2c2726;color:var(--light);font-size:22px}.dpad button:hover,.plane-picker button:hover{background:#ffedc830}.plane-picker button[aria-pressed=true]:hover{background:#fff3d7}.dpad button:active{background:#fff3d7;color:var(--ink)}.control-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:6px;font-size:9px;letter-spacing:.1px}.control-footer button{font-size:10px;color:var(--light);background:none;border:0;padding:0 2px;white-space:nowrap}.folio{position:absolute;bottom:20px;left:38px;right:38px;display:flex;justify-content:space-between;font-size:8px;letter-spacing:1.5px;color:#ffe7bd;pointer-events:none}#reveal{position:absolute;bottom:66px;left:50%;transform:translateX(-50%);width:calc(100% - 40px);text-align:center;color:#fff5dd}#reveal-kicker{font-size:9px;letter-spacing:2px}#reveal h2{font:400 clamp(30px,4vw,47px)/1.05 Georgia,serif;letter-spacing:-1.3px;margin:12px 0}#reveal p{font-size:12px;margin:12px 0 18px}#continue{border:1px solid #fff6da90;background:#fff1d9;color:var(--ink);min-width:175px;padding:0 21px;border-radius:2px;font-size:11px;letter-spacing:.4px}#continue:disabled{background:transparent;color:#ffeacb;border-color:#ffebcb40}.solved .controls{visibility:hidden}.solved #alignment-marks{opacity:0}.solved .scene-caption{opacity:.55;transition:opacity 1s}.sun{animation:breathe 9s ease-in-out infinite;transform-origin:690px 220px}.sky-marks{animation:drift 18s ease-in-out infinite alternate}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.no-script{position:absolute;inset:30% 20px auto;padding:24px;background:#fff9df;color:#073d50;max-width:480px;margin:auto}.no-script p{line-height:1.6}[hidden]{display:none!important}@keyframes breathe{50%{opacity:.73;transform:scale(1.04)}}@keyframes drift{to{transform:translateX(12px)}}
@media(min-width:1100px){.controls{left:auto;right:38px;transform:none;width:326px;bottom:72px}.scene-caption{top:32%}#reveal{bottom:60px}.folio{bottom:28px}}
@media(max-width:700px){header{top:24px;left:22px;right:22px}.wordmark{font-size:21px}.edition{font-size:9px}.edition span{font-size:7px}.scene-caption{top:130px;left:22px;max-width:275px}.chapter{font-size:8px;gap:9px}h1{font-size:33px;line-height:1.03;letter-spacing:-1.2px;margin:12px 0 8px}h1 br{display:none}#scene-note{font-size:11px;max-width:none;margin:0}.progress{right:23px;top:255px;gap:9px}.progress i{height:5px;width:5px}.controls{bottom:max(34px,env(safe-area-inset-bottom));width:350px}.folio{bottom:12px;left:22px;right:22px;font-size:7px}#instruction{font-size:19px;margin:11px 0}.control-footer{font-size:8px}.control-row{gap:6px}.plane-picker button{min-width:128px}.dpad{gap:4px}.dpad button{width:46px}#reveal{bottom:62px}.solved .scene-caption{opacity:.7}}
@media(max-width:350px){header{left:16px;right:16px}.scene-caption{left:16px;top:126px;max-width:258px}h1{font-size:29px}.controls{max-width:calc(100% - 28px)}.plane-picker button{min-width:122px;padding:0 8px}.dpad button{width:44px}.dpad{gap:3px}.control-footer{gap:3px}#axis-hint{max-width:170px;line-height:1.6}.edition{letter-spacing:.5px}}
@media(max-height:700px){.scene-caption{top:102px}h1{font-size:27px}.controls{bottom:26px}#scene-note{display:none}#instruction{margin:6px 0}.feedback{font-size:10px}.meter{margin:6px 0}.folio{bottom:8px}header{top:18px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
#sky stop,#blue stop,#red stop{transition:stop-color 2s}#app[data-stage="1"] #sky stop:first-child{stop-color:#63c9dc}#app[data-stage="1"] #sky stop:nth-child(2){stop-color:#d8eee2}#app[data-stage="1"] #blue stop:first-child{stop-color:#1a93bb}#app[data-stage="1"] #red stop:first-child{stop-color:#dd8050}#app[data-stage="2"] #sky stop:first-child{stop-color:#89ccd9}#app[data-stage="2"] #sky stop:nth-child(2){stop-color:#fff0c6}#app[data-stage="2"] #blue stop:first-child{stop-color:#157db6}#app[data-stage="2"] #red stop:first-child{stop-color:#eb5936}
/* The caption is printed on a fading bank of sea mist, not a floating UI card. */
.scene-caption{z-index:1;isolation:isolate}
.scene-caption::before{content:"";position:absolute;z-index:-1;inset:-34px -50px -36px -38px;background:radial-gradient(ellipse at 24% 42%,#e0f5def5 0%,#e0f5dee8 30%,#e0f5de91 59%,transparent 84%);pointer-events:none}
#scene-note{font-weight:600;text-shadow:0 1px 5px #dff5df}
.solved .scene-caption{opacity:.85}
#far-texture,#near-texture{opacity:.7}
#alignment-marks{opacity:.9;filter:drop-shadow(0 0 4px #fffad3)}
@media(max-width:700px){.scene-caption::before{inset:-36px -50px -25px -22px;background:radial-gradient(ellipse at 22% 36%,#e0f5defa 0%,#e0f5dedc 41%,#e0f5de88 69%,transparent 92%)}}


/* The discovered silhouette owns the field; the reveal carries the scene title. */
.solved .scene-caption{visibility:hidden;opacity:0}
