:root{color-scheme:dark;--bg:#0c1628;--panel:#122039;--border:#2c4362;--fg:#f1f6ff;--muted:#b2c6e2;--accent:#7ce4d7;--gold:#ffc36d}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;width:100%;background:var(--bg);color:var(--fg)}body{font-family:system-ui,-apple-system,'Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif}button,select,input{font:inherit}button{cursor:pointer;touch-action:manipulation;color:inherit}button:focus-visible,canvas:focus-visible{outline:3px solid #fff6b6;outline-offset:3px}[hidden]{display:none!important}.screen{min-height:100dvh}
.landing,.subpage{background:radial-gradient(ellipse 72% 38% at 53% 7%,#24466a 0%,#132843 49%,#0a1425 100%);overflow-y:auto}.shell{width:min(100%,800px);padding:24px 22px max(32px,env(safe-area-inset-bottom));margin:auto}.topline,.pageTop{display:flex;align-items:center;justify-content:space-between;gap:14px}.topline{font-size:10px;font-weight:850;letter-spacing:.12em;color:#a5d5e1;flex-wrap:wrap}.languageControl{display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:0;color:#d5e5ff}select{font-size:13px;color:#ecf5ff;background:#162e4b;border:1px solid #53718d;border-radius:9px;padding:9px 10px}
.hero{text-align:center;padding:31px 8px 23px}.kicker{font-size:11px;letter-spacing:.25em;color:#9bddd8;font-weight:850}.hero h1{font-size:clamp(32px,6.5vw,53px);letter-spacing:-.06em;margin:10px 0 3px;line-height:1.24}.hero h1 span{font-size:.65em;color:#7ce4d7;white-space:nowrap}.heroSubtitle{font-size:clamp(15px,2.5vw,21px);font-weight:800;color:#ecfcff;margin-top:9px}.hero p{max-width:580px;margin:13px auto 0;color:#cfdef2;font-size:13px;line-height:1.85}.orb{width:130px;height:80px;position:relative;margin:0 auto 15px;perspective:400px}.orb div{width:75px;height:60px;position:absolute;top:6px;border:3px solid #83eee7;border-radius:50%;box-shadow:0 0 25px #4bdcce77;transform:rotateX(60deg) rotate(-19deg)}.orb div:first-child{left:10px}.orb div:last-child{right:8px;top:19px;border-color:#d8b1f2;transform:rotateX(62deg) rotate(35deg)}
.setupCard{border:1px solid #496382;background:#10223ade;border-radius:20px;padding:19px;box-shadow:0 20px 38px #0107114d}.sectionTitle{font-size:13px;font-weight:800;color:#e3efff;margin:0 0 11px}.levelGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.pick{cursor:pointer;position:relative}.pick input{position:absolute;opacity:0}.radioPanel{display:flex;flex-direction:column;justify-content:center;gap:7px;min-height:76px;padding:12px 10px;border-radius:13px;border:1px solid #48617e;background:#182c45;text-align:center}.radioPanel strong{font-size:15px}.radioPanel small{color:#b7cbe1;font-size:11px}.pick input:checked+.radioPanel{border-color:#76e5d8;background:#1c4555;box-shadow:inset 0 0 0 1px #76e5d870}.pick input:focus-visible+.radioPanel{outline:3px solid #fff6b6}.setupFooter{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:19px}.smallMuted{color:#bfd0e6;font-size:12px;line-height:1.7}.primary{background:#81e5d8;border:0;color:#0b2b32;border-radius:12px;padding:12px 24px;font-weight:850;min-height:47px}.primary:hover{background:#a0f5eb}.homeLinks{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:13px}.tileBtn{min-height:60px;border:1px solid #3b597a;background:#172a43;border-radius:13px;font-size:13px;font-weight:700}.tileBtn:hover,.secondary:hover{border-color:#8dc4df;background:#24425b}.countChip{background:#29556a;border-radius:999px;padding:3px 6px;font-size:10px;margin-left:3px}.homeFooter{margin:25px 0 0;text-align:center;font-size:11px;color:#8dafcc}.pageTop{margin-bottom:20px}.pageTop h2{font-size:21px}.backBtn{border:1px solid #527091;background:#192b42;border-radius:10px;padding:9px 12px}.rules{max-width:800px}.rules h3{color:#95ecdd;font-size:17px;margin:26px 0 9px}.rules p,.subpage p{color:#d1e0f1;line-height:1.9;font-size:14px}.rules .source{font-size:12px;color:#aac5dc}.rules .source a{color:#b6eae6;text-decoration:underline;text-underline-offset:3px}.rules .source a:hover{color:#eafffc}.rules .source a:focus-visible{outline:2px solid #fff6b6;outline-offset:3px}.filterRow{display:flex;gap:14px;margin:18px 0}.filterRow label{font-size:12px;color:#b7cbe1;display:flex;align-items:center;gap:9px}.progressMeta{color:#9bdbd8;font-size:13px;padding:10px 0}.galleryGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.galleryItem{min-height:102px;border:1px solid #4a6686;border-radius:14px;background:#182c44;text-align:left;padding:12px;display:flex;flex-direction:column;gap:8px}.galleryItem.locked{opacity:.42}.galleryItem .smallMuted{font-size:11px}.saveBox{border:1px solid #426282;background:#12233a;border-radius:13px;padding:16px;display:flex;flex-direction:column;gap:13px}.uploadLabel{font-size:13px;font-weight:750}
#gameScreen{height:100dvh;min-height:0;overflow:hidden}#app{display:flex;height:100%;width:100%}#viewer{position:relative;flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;background:radial-gradient(ellipse at 48% 40%,#233d60 0%,#12243b 44%,#080f1c 100%);padding:80px 12px 10px}#brand{position:absolute;left:17px;top:max(13px,env(safe-area-inset-top));pointer-events:none;right:90px}#brand .eyebrow{color:#91c7de;font-weight:850;letter-spacing:.15em;font-size:10px}#brand h1{font-size:clamp(19px,3.5vw,26px);letter-spacing:-.05em;margin:5px 0 4px;line-height:1.25}#brand h1 span{font-size:.72em;color:#7ce4d7}#gameSubtitle{color:#b7cfe8;font-size:11px}.viewButtons{position:absolute;top:14px;right:14px;display:flex;gap:7px}.viewButtons button{width:36px;height:36px;border:1px solid #63738a;background:#132238e8;color:#e6f5ff;border-radius:11px;font-size:21px}
#dualView{flex:1;min-height:0;min-width:0;display:grid;grid-template-columns:1fr 1fr;gap:9px}.planeCard{display:flex;flex-direction:column;min-width:0;min-height:0;border:1px solid #45627e;border-radius:17px;overflow:hidden;background:linear-gradient(150deg,#142b44,#0e1b2f);position:relative}.planeLabel{padding:9px 11px 5px;display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:12px;font-weight:800;color:#c7e9ef;white-space:nowrap}.planeLabel .coord{font-size:10px;font-weight:600;color:#a6c6dc;overflow:hidden;text-overflow:ellipsis}.planeCard canvas{width:100%;flex:1;min-height:0;touch-action:none;cursor:crosshair;display:block}.planeCard #wCanvas.metricMode{cursor:grab}.approxBadge{position:absolute;bottom:29px;left:10px;background:#372c49e3;border:1px solid #a894ba;color:#e6d6f0;font-size:10px;border-radius:8px;padding:5px 7px;pointer-events:none}#viewerFoot{display:flex;justify-content:space-between;gap:10px;align-items:center;min-height:30px;font-size:11px;color:#b8d0e9;padding:8px 4px 0}#scanStatus{color:#ffc36d}
#panel{width:355px;flex-shrink:0;border-left:1px solid var(--border);padding:23px 20px;display:flex;flex-direction:column;gap:13px;overflow-y:auto;overscroll-behavior:contain;background:linear-gradient(160deg,#172944 0%,#111d33 100%)}#progress{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#b4c9e1;font-size:12px;font-variant-numeric:tabular-nums}#round{font-weight:850;color:var(--accent);letter-spacing:.06em}.prompt{font-size:21px;line-height:1.3;margin:0 0 6px}.note{font-size:12px;color:var(--muted);line-height:1.6;margin:0}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.answerBtn{border:1px solid #64bfc6;background:linear-gradient(180deg,#20415a,#1a364e);color:#eaffff;border-radius:15px;min-height:56px;font-size:16px;font-weight:800}.answerBtn:hover{background:#28586c}.secondary{border:1px solid #536d8a;background:#1b2b43;border-radius:11px;color:#daeaff;font-size:12px;font-weight:700;padding:10px 12px;min-height:38px}.secondary.active,.secondary[aria-pressed=true]{border-color:#7ce4d7;background:#214856}.compact{padding:8px 7px;min-height:37px}.tiny{padding:5px 8px;min-height:28px;font-size:11px}.exploreBar{display:grid;grid-template-columns:1fr 1fr;gap:8px}.scanTools{background:#152a41;border:1px solid #385875;border-radius:12px;padding:9px 12px}.scanTools label{display:flex;justify-content:space-between;font-size:12px}.scanTools input{width:100%;accent-color:#ffc36d;margin-top:4px}#hintBtn{min-height:42px;width:100%;border:1px solid #667d9b;border-radius:12px;background:#232c4b;color:#f2e2ff;font-size:13px;font-weight:800}#hintBtn[aria-expanded=true]{background:#392a55;border-color:#c9a4f1}#hintTools{background:#172a42;border:1px solid #4b6582;border-radius:15px;padding:12px;display:flex;flex-direction:column;gap:10px}.hintTabs{display:grid;grid-template-columns:1fr 1fr;gap:7px}.hintTabs button{font-size:12px;min-height:35px;background:#182c45;border:1px solid #536c89;border-radius:9px}.hintTabs button.active{background:#364367;border-color:#d3a9f5;color:#fff1ff;font-weight:800}.hintNote{font-size:11px;line-height:1.6;color:#b8cde4;margin:0}.hintRow{display:flex;gap:10px;align-items:center}.hintPicker{width:46%;flex-shrink:0;min-width:0}.pickerLabel{font-size:11px;font-weight:750;color:#d8e9f5;text-align:center;margin-bottom:3px}#pickCanvas{display:block;width:100%;aspect-ratio:1;border:1px solid #4b6886;border-radius:11px;touch-action:none;cursor:crosshair}.hintSide{flex:1;min-width:0;display:flex;flex-direction:column;gap:9px;font-size:12px}#metricValue{font-family:Georgia,serif;font-size:15px;color:#fce0a3;font-weight:700}#w0Value{color:#f3f7fc}.trackHeading{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11px;color:#e7edf9}#trackCanvas{width:100%;height:85px;display:block;border:1px solid #455f7e;border-radius:8px;background:#111f33}.mathCard{border:1px solid #405674;background:#101b30;border-radius:14px;padding:13px;display:flex;flex-direction:column;gap:7px}.mathLabel{font-size:11px;font-weight:800;letter-spacing:.04em;color:#acc4df}.mathFormula{font-family:Georgia,'Times New Roman',serif;font-size:17px;line-height:1.5;color:#fff;overflow-wrap:anywhere}#why{font-size:12px;color:#d1e0ef;line-height:1.75;margin:0}.witnessBox{padding:9px;border-left:3px solid #efad67;color:#ffdaad;background:#45332233;font-size:12px;line-height:1.6}#answerBanner{border-top:1px solid #455a75;padding-top:8px}#status{font-size:20px;font-weight:850}#status.right{color:#8ef0c7}#status.wrong{color:#ffb3ab}#verdict{font-size:13px;color:#dbe8f9;margin-top:4px}#nextBtn{width:100%}#panelFoot{font-size:11px;line-height:1.6;color:#a9bfda;margin:auto 0 0;padding-top:8px;border-top:1px solid #364b66}
@media(max-width:900px){#panel{width:330px;padding:18px 15px}#viewer{padding-top:83px}}
@media(max-width:760px){#app{flex-direction:column}#viewer{min-height:0;padding:70px 8px 5px;flex:1}#brand{left:11px;top:max(8px,env(safe-area-inset-top))}#brand .eyebrow{font-size:8px}#brand h1{font-size:18px;margin:3px 0}#gameSubtitle{font-size:10px}.viewButtons{top:10px;right:10px}.viewButtons button{height:30px;width:30px;font-size:18px}#dualView{gap:5px}.planeCard{border-radius:11px}.planeLabel{flex-direction:column;align-items:flex-start;font-size:10px;gap:0;padding:6px 6px 3px}.planeLabel .coord{font-size:9px}.planeCard canvas{min-height:0}#viewerFoot{font-size:9px;min-height:23px;padding:4px 4px 0}#panel{width:100%;max-height:49dvh;flex-shrink:0;border-left:0;border-top:1px solid var(--border);padding:12px max(13px,env(safe-area-inset-right)) max(13px,env(safe-area-inset-bottom)) max(13px,env(safe-area-inset-left));gap:10px}.prompt{font-size:18px}.answerBtn{min-height:48px;font-size:15px}#hintBtn{min-height:36px}#hintTools{padding:9px;gap:8px}#panelFoot{display:none}.homeLinks{grid-template-columns:1fr 1fr}.homeLinks .tileBtn:last-child{grid-column:1/-1}.shell{padding:18px 15px 28px}.hero{padding:25px 0 20px}.hero h1{font-size:34px}.hero h1 span{display:block;margin-top:4px;font-size:23px}.levelGrid{gap:6px}.radioPanel{padding:11px 6px}.radioPanel strong{font-size:13px}.radioPanel small{font-size:10px}}
@media(max-width:390px){.planeLabel .coord{font-size:8px}#panel{max-height:50dvh}}@media(max-height:500px) and (orientation:landscape){#app{flex-direction:row}#panel{width:min(45vw,340px);max-height:none;border-top:0;border-left:1px solid var(--border)}#viewer{padding-top:51px}#brand .eyebrow,#gameSubtitle{display:none}}@media(prefers-reduced-motion:reduce){.orb *{animation:none}}

/* v0.2.0: unsupported analysis stays visible as an ordinary fiber */
.metricUnavailable:not([hidden]){position:absolute;left:50%;bottom:20px;transform:translateX(-50%);padding:12px 17px;background:#10233beF;color:#f8d199;border:1px solid #e9b76d;border-radius:9px;text-align:center;font-size:13px;font-weight:700;line-height:1.5;pointer-events:none;max-width:85%;box-shadow:0 6px 18px #08111c66;}

.radioPanel small:empty{display:none}
