:root{color-scheme:dark;--bg:#080f17;--ink:#e1eaf0;--muted:#a2b5c3;--line:#3c5262;--accent:#adcddd;--px:0px;--py:0px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:var(--bg);color:var(--ink)}
*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(ellipse at 50% 0%,#142b39 0,transparent 65%);transition:background 1.8s}button{font:inherit;color:inherit;background:#12212b;border:1px solid var(--line);border-radius:3px;min-height:46px;padding:10px 16px;cursor:pointer;touch-action:manipulation}button:hover{background:#213746}button:focus-visible,:focus-visible{outline:2px solid #e5dbbb;outline-offset:3px}button:disabled{cursor:default;opacity:.65}.primary{background:#c0d5df;color:#08121a;border-color:#c0d5df}.primary:hover{background:#e0edf2}.muted{color:var(--muted)}.small{font-size:.76rem;line-height:1.6}.eyebrow,.status{font-size:.69rem;letter-spacing:.13em;line-height:1.7}.status{color:#b3d0cf}h1{font-weight:400;line-height:1.18;margin:15px 0 23px}p{line-height:1.7}#main{position:relative;z-index:1;width:min(100%,580px);margin:auto;padding: max(24px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.panel{margin:8vh 0 4vh;border:1px solid var(--line);padding:clamp(22px,6vw,46px);background:#080f17c9}.panel h1{font-size:clamp(2.2rem,9vw,3.6rem);letter-spacing:-.04em}.panel .primary{margin-top:22px;width:100%}.scan{height:2px;background:linear-gradient(90deg,transparent,#9bc4d1,transparent);animation:scan 2s ease-in-out 2}.metrics{display:flex;justify-content:space-between;margin:14px 0;font-size:.88rem}#sudoku h1{font-family:Georgia,serif;font-size:1.9rem}#board{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));width:100%;aspect-ratio:1;border:2px solid #b3c8d1;background:#111f29;transition:opacity 1.2s}#board button{padding:0;min-height:0;border:0;border-right:1px solid #42535f;border-bottom:1px solid #42535f;border-radius:0;font-size:clamp(16px,5vw,25px);background:#101d27;line-height:1;color:#b5d6e8}#board button:nth-child(3n){border-right:2px solid #a9c0ce}#board button:nth-child(n+19):nth-child(-n+27),#board button:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid #a9c0ce}#board button.given{font-weight:700;color:#f1f3ec;background:#192832}#board button.selected{background:#365262;box-shadow:inset 0 0 0 2px #d4e5ef}#board button.wrong{color:#ffb8b8;background:#512730;text-decoration:underline wavy;text-underline-offset:5px}#board button.special{background:#415361;color:#fff;box-shadow:inset 0 0 20px #b9d4e62c}.digits{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:3px;margin-top:18px}.digits button{padding:0;font-size:1.1rem}.actions{display:flex;gap:10px;margin-top:12px}.actions button{flex:1;font-size:.8rem}#feedback{min-height:1.5em}.demo{border-top:1px solid #39444e;color:#c2bca9;font-size:.68rem;padding-top:12px;margin-top:26px}.quiet{background:transparent;border-color:#465769;color:#c6d5df;font-size:.75rem}.reflection{font-family:Georgia,serif;font-weight:400;text-align:center;line-height:1.7;font-size:clamp(1.1rem,4.5vw,1.5rem)}#sky{min-height:83svh;padding-top:3vh}#constellation{position:relative;width:100%;aspect-ratio:1;margin:2vh auto 0;will-change:transform;transform:translate(calc(var(--px)*.35),calc(var(--py)*.35))}.star{position:absolute;display:grid;place-items:center;transform:translate(-50%,-50%);width:48px;height:48px;color:#f4f0de;text-shadow:0 0 9px #d5e9ff80;font-family:Georgia,serif;z-index:2}.star::before{content:'';position:absolute;width:4px;height:4px;border-radius:50%;background:#f8f6e8;box-shadow:0 0 15px 4px #a7c9f64a;z-index:-1}.star .number{display:block;transition:opacity .8s}.star.departed .number{opacity:0}.star.active::before{box-shadow:0 0 22px 9px #c6d9ff90}.links{position:absolute;inset:0;width:100%;height:100%;overflow:visible;opacity:.4;transition:opacity 2s}.links line{stroke:#c3d6eb;stroke-width:.18}.raining .links{opacity:.15}#sky-tools{text-align:center}#sky-tools button{margin:6px}#hold-help{margin:4px auto 0;max-width:320px}#outside{margin-top:20px}.celestial{background:#050c1b}.celestial #ambience{opacity:1}#ambience{position:fixed;inset:0;pointer-events:none;overflow:hidden;opacity:0;transition:opacity 2s}.layer{position:absolute;inset:-25px;transform:translate(calc(var(--px)*var(--depth)),calc(var(--py)*var(--depth)));will-change:transform}.dust{position:absolute;border-radius:50%;background:#dbe6f8}.meteor{position:absolute;pointer-events:none;width:3px;height:3px;border-radius:50%;background:#d4eaff;box-shadow:0 0 12px 3px #9ab8dc88;animation:meteor var(--duration,1700ms) ease-in forwards;opacity:var(--opacity,.55)}.meteor::after{content:'';position:absolute;width:1px;height:70px;background:linear-gradient(transparent,#d5eaff80);bottom:50%;left:50%;transform:rotate(-23.2deg);transform-origin:bottom}.flying{position:fixed;z-index:5;pointer-events:none;display:grid;place-items:center;transform:translate(-50%,-50%);font-family:Georgia,serif;color:#f1eddf}body.transforming #sudoku{transition:opacity 2s}.holding{box-shadow:0 0 0 2px #d2dfeb,0 0 28px #789ec64a}dialog{width:min(90vw,480px);border:1px solid #8fa4b3;border-radius:4px;background:#101b27;color:var(--ink);padding:28px;text-align:center;max-height:85svh;overflow:auto}dialog::backdrop{background:#000b}#penalty-message{font-family:Georgia,serif;font-size:1.2rem;line-height:1.7}#ending{padding-top:10vh;text-align:center}#ending h1{font-family:Georgia,serif;letter-spacing:.22em;font-size:2.5rem}#final-message{white-space:pre-wrap;font-family:Georgia,serif;font-size:1.18rem;line-height:1.9}#final-sky{position:relative;width:100%;aspect-ratio:1;margin-top:-4vh;margin-bottom:-5vh}#final-sky .star{font-size:0}#final-sky .featured::before{width:7px;height:7px;box-shadow:0 0 30px 10px #c6d9ff90}[hidden]{display:none!important}@keyframes scan{50%{opacity:.3;transform:scaleX(.3)}}@keyframes meteor{from{transform:translate(0,0) scale(.2);opacity:0}30%{opacity:var(--opacity,.55)}to{transform:translate(60px,140px) scale(2.5);opacity:0}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.layer,#constellation{transform:none!important}.meteor{display:none}}@media(min-width:700px){#main{padding-top:40px}.panel{margin-top:10vh}}

/* Fixed square sky coordinates preserve the bowl and curved handle at every width. */
#constellation,#final-sky{width:min(100%,58svh);aspect-ratio:1}
.links{overflow:visible}
#perspective{max-width:25em;margin:18px auto 8px;text-wrap:balance;line-height:1.65;letter-spacing:.025em;color:#dce6f3}
#hold-help{font-size:.72rem;color:#9aafc2}
.orientation-progress{width:72px;height:1px;background:#bcd4ef25;margin:0 auto 16px;overflow:hidden}
.orientation-progress i{display:block;width:100%;height:100%;background:#d3e5ff;transform:scaleX(0);transform-origin:left;transition:transform .15s linear}
#meteor-field{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:3;contain:strict}
#meteor-field .meteor{position:absolute;height:2px;width:2px;border-radius:100%;background:linear-gradient(90deg,transparent,#789fc52b 20%,#a8cbf3aa 72%,#f4faff);box-shadow:0 0 10px #a7cfff60;transform-origin:right center;animation:none;will-change:transform,opacity}
#meteor-field .meteor::after{content:'';position:absolute;right:0;left:auto;bottom:auto;top:0;width:4px;height:100%;border-radius:50%;background:#f3f8ff;box-shadow:0 0 9px 2px #adcfff90;transform:none}
#constellation .star[data-star=Merak]::before{box-shadow:0 0 18px 5px #a7c9f660}
#constellation .star[data-star=Merak].departed::before{opacity:.65;width:4px;height:4px;box-shadow:0 0 16px 4px #a7c9f650}
.star::before{opacity:var(--strength,1);width:calc(3px + 3px * var(--strength,1));height:calc(3px + 3px * var(--strength,1))}
.star.active{filter:brightness(calc(.65 + var(--strength,1)))}
.star.departed{color:transparent;filter:none}
.star.departed::before{opacity:.22;box-shadow:0 0 6px 1px #a7c9f630;width:3px;height:3px}
.star[role=button]{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:default}
.star.secret-hold::after{content:'';position:absolute;inset:8px;border:1px solid #cbdfff50;border-radius:50%;animation:secret-progress 4s linear forwards}
@keyframes secret-progress{from{opacity:0;transform:scale(.6)}to{opacity:.6;transform:scale(1)}}
#ending{padding-top:clamp(24px,6svh,60px)}
#ending .eyebrow{letter-spacing:.25em;color:#b9cadc}
#ending h1{margin-bottom:0;font-size:clamp(2.4rem,10vw,3.6rem)}
#final-sky{margin:12px auto 18px;aspect-ratio:1}
#final-message{max-width:32em;margin:0 auto 32px;text-align:left;font-size:clamp(1.1rem,4.5vw,1.3rem);line-height:1.9;color:#e0e7ef}
.digits{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.digits button{min-height:48px;font-size:1.25rem}
@media(min-width:420px){.digits{grid-template-columns:repeat(9,minmax(0,1fr))}}
