:root{color-scheme:dark;--bg:#0c131d;--panel:#151f2c;--line:#2b394a;--muted:#a0b0c2;--text:#f3f6f8;--mint:#baf87e;--pip:#6ee7e0;--accent:#6ee7e0;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 16% 10%,#1a303b66,transparent 45%),var(--bg);color:var(--text);font-size:15px;line-height:1.5}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;min-height:44px;border-radius:9px;border:1px solid var(--line);padding:10px 16px;background:#202e3e;color:var(--text);font-weight:600}button:hover{background:#2d4054;border-color:#75899c}button:disabled{cursor:default;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #ceff97;outline-offset:4px}button.primary{background:var(--mint);color:#162413;border-color:var(--mint);box-shadow:0 4px 18px #baf87e10}button.primary:hover{background:#d3ffaa}button.primary span{float:right}.quiet{background:#182331}.icon-button{font-size:21px;padding:6px 12px}.text-button{border:0;background:none;color:var(--muted);padding:8px;min-height:44px}.wide{width:100%}.muted,.fine{color:var(--muted)}.fine{font-size:12px;line-height:1.6}.topbar{height:88px;max-width:1440px;margin:auto;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff0f}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:#fff;font-weight:750;font-size:18px;letter-spacing:-.5px}.brand small{display:block;letter-spacing:2.1px;font-size:8px;color:#a5b5c9;margin-top:2px}.brand-icon{display:grid;place-items:center;width:38px;height:38px;border:1px solid #baf87e90;color:var(--mint);font-size:24px;border-radius:10px;position:relative}.brand-icon span{position:absolute;right:-5px;top:-11px;font-size:22px;background:var(--bg)}nav{display:flex;gap:9px}nav .quiet{border:0;background:transparent;font-size:12px}main{max-width:1440px;margin:auto;padding:34px 5% 16px}.hero{display:flex;justify-content:space-between;align-items:center;gap:32px;margin-bottom:30px}.eyebrow{font:600 10px/1.4 ui-monospace,SFMono-Regular,monospace;letter-spacing:1.8px;color:var(--muted);margin:0 0 10px}.live-dot{display:inline-block;width:7px;height:7px;background:var(--mint);border-radius:50%;margin-right:8px;box-shadow:0 0 13px #baf87e55}.divider{padding:0 9px;color:#516277}h1{font-size:clamp(28px,3.4vw,49px);line-height:1.08;letter-spacing:-2px;margin:13px 0 14px;font-weight:900}h1 span{color:var(--mint)}.intro{color:var(--muted);font-size:13px;margin:0}.intro strong{color:#e6edf7;font-weight:500}.score-card{width:230px;flex-shrink:0;background:#17212e;border:1px solid #344353;border-radius:14px;padding:16px 20px}.score-card>span{font:10px ui-monospace,monospace;letter-spacing:1.5px;color:var(--muted)}.score-card strong{display:block;font-size:29px;line-height:1.3;font-weight:700}.score-card strong small{font-size:13px;color:var(--mint)}.score-card>div{display:flex;justify-content:space-between;gap:12px;font:9px ui-monospace,monospace;color:var(--muted);margin-top:9px}progress{appearance:none;width:100%;height:5px;display:block;margin-top:9px;border:0;border-radius:5px;overflow:hidden;background:#314154}progress::-webkit-progress-bar{background:#314154}progress::-webkit-progress-value{background:var(--mint)}progress::-moz-progress-bar{background:var(--mint)}.stage-map{display:grid;grid-template-columns:repeat(6,1fr);padding:0;list-style:none;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:0 0 24px;background:#111d2a}.stage-map li{display:flex;align-items:center;gap:10px;padding:14px 12px;border-right:1px solid var(--line);color:#94a5b8;font-size:11px;line-height:1.3}.stage-map li:last-child{border:0}.stage-map li.active{background:#27372a;color:#d6ffb0}.stage-map li.done{color:var(--pip)}.stage-map b{font:12px ui-monospace,monospace;display:grid;place-items:center;width:27px;height:27px;border:1px solid currentColor;border-radius:8px;flex-shrink:0}.stage-map small{display:block;color:#a0aec0;font-size:9px;margin-top:4px}.game-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:22px;align-items:start}.world-card,.puzzle-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;overflow:hidden}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:22px 24px 16px}.panel-heading .eyebrow{font-size:9px;margin-bottom:3px}.panel-heading h2{font-size:21px;margin:0;letter-spacing:-.5px}.status-pill{font:8px ui-monospace,monospace;color:var(--accent);border:1px solid #ffffff25;background:#0d1725;padding:7px 9px;border-radius:20px;white-space:nowrap}.scene{width:100%;aspect-ratio:1.66;background:#101c2a;position:relative;overflow:hidden}.scene svg{width:100%;height:100%;display:block}.companion{display:flex;align-items:center;gap:13px;padding:21px 24px;background:#1b2938}.companion strong{font:600 11px ui-monospace,monospace;color:var(--pip)}.companion strong span{font:8px ui-monospace,monospace;color:#9baabd;letter-spacing:1px;margin-left:8px}.companion p{color:#d0dce9;font-size:12px;line-height:1.65;margin:6px 0 0}.pip-avatar{width:40px;height:35px;border-radius:11px;background:var(--pip);display:flex;gap:6px;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 0 20px #6ee7e015}.pip-avatar i{height:8px;width:6px;background:#182d39;border-radius:3px}.world-footer{display:flex;justify-content:space-between;gap:10px;padding:14px 24px;color:#9eaec0;font:9px/1.7 ui-monospace,monospace}.world-footer span:last-child{white-space:nowrap;color:var(--mint)}.puzzle-card{padding-bottom:22px}.puzzle-card .panel-heading{padding-bottom:14px}.small-tag{border:1px solid #49605b;border-radius:5px;padding:4px 7px;color:#a8e4ce;font-size:9px}.challenge-body{padding:0 24px}h3{font-size:20px;margin:0 0 8px;letter-spacing:-.5px}.prompt{font-size:13px;color:#c2cddd;min-height:39px;margin:0 0 16px}.signal{background:#0d1723;border:1px solid #36485c;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 15px;border-radius:10px;margin-bottom:19px}.signal span{font:9px ui-monospace,monospace;color:var(--muted);letter-spacing:1px}.signal strong{font:600 22px ui-monospace,monospace;color:#f0f7ff}.signal sub{font-size:12px;color:var(--accent)}.signal .arrow{font-size:20px;color:#a4b4c8}.board-label{display:flex;justify-content:space-between;gap:6px;font:9px ui-monospace,monospace;letter-spacing:1px;margin:12px 0;color:#b0bdd0}.chips{display:flex;gap:8px}.chip{flex:1;min-width:0;background:#0f1926;border:1px solid #3b4c62;border-radius:10px;overflow:hidden;display:flex;flex-direction:column;text-align:center}.chip .weight{font:9px ui-monospace,monospace;color:#b2c0d3;padding:8px 2px 4px}.chip button{border:0;border-radius:0;font-size:21px;background:transparent;min-height:44px;padding:0;color:#9dafc5}.chip button:hover{background:#294254;color:#e5ffff}.chip .digit{font:700 30px/1 ui-monospace,monospace;color:#e2fbff;padding:3px 0}.chip .contribution{font:9px ui-monospace,monospace;padding:6px 0;background:#1d2b3c;color:#abc0d7}.power-preview{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;color:#acbed1;font-size:11px}.power-preview strong{color:var(--pip);font:600 13px ui-monospace,monospace}.equation{color:#9fb4ca;min-height:18px;font:10px/1.7 ui-monospace,monospace;text-align:center;margin:8px 0 0;overflow-wrap:anywhere}.type-code{margin:14px 0;color:#a9b9ce;font-size:11px}.type-code summary{cursor:pointer;min-height:32px;padding:7px 0}.type-code label{display:flex;align-items:center;gap:12px;margin:4px 0 12px}.type-code input{min-width:0;flex:1}.actions{display:flex;gap:9px;margin-top:14px}.actions .primary{flex:1}.actions .quiet{padding:10px 13px;font-size:12px}.feedback{border:1px solid #687048;padding:12px;border-radius:9px;background:#323321;margin:12px 0 0;color:#f5e7ae;font-size:12px;line-height:1.6}.feedback.correct{border-color:#5d8156;background:#23372b;color:#d4fbc3}.hint-box{border-left:2px solid var(--pip);padding:4px 12px;color:#c7d9e6;font-size:12px;line-height:1.7;margin-top:12px}.next{margin-top:12px}.choices{display:flex;gap:8px;margin-bottom:15px}.choices button{font-size:11px;flex:1}.choices button[aria-pressed=true]{border-color:var(--pip);background:#263d46}.bottom-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:10px;color:#9dafc3;margin:12px 0 0}.bottom-strip .live-dot{width:5px;height:5px}.bottom-strip button{font-size:10px}.completion{margin-top:24px;padding:30px;border:1px solid #a8d57c;border-radius:18px;background:linear-gradient(120deg,#24392d,#172435);text-align:center}.completion h2{font-size:34px;letter-spacing:-1px;margin:8px 0}.completion p{color:#cbdaca}.completion .badges{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:22px 0}.badges span{border:1px solid #607957;border-radius:8px;padding:8px 12px;color:#d2efbd;font-size:11px}footer{display:flex;justify-content:space-between;gap:20px;margin-top:30px;padding-top:14px;border-top:1px solid #ffffff0e;font:8px/1.5 ui-monospace,monospace;letter-spacing:1px;color:#9ba8b8}footer span{font:9px/1.5 inherit;letter-spacing:0}dialog{width:min(560px,calc(100% - 24px));max-height:90dvh;border:1px solid #53677b;border-radius:20px;padding:30px;color:var(--text);background:#172432;box-shadow:0 25px 90px #0009}dialog::backdrop{background:#040a12d9;backdrop-filter:blur(7px)}dialog h2{font-size:32px;letter-spacing:-1px;line-height:1.12;margin:10px 0 18px}dialog p,dialog li{font-size:13px;color:#c4d0df;line-height:1.7}dialog ol{padding-left:20px}label{display:block;color:#d8e1ed;font-size:12px;margin:13px 0}label small{font-size:9px;color:var(--muted)}input,select{display:block;width:100%;background:#0e1926;border:1px solid #455970;border-radius:8px;padding:11px;color:#f5f9ff;margin-top:6px;min-height:44px}input[type=checkbox]{width:20px;min-height:20px;margin:0}.check{display:flex;gap:10px;align-items:center}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.welcome-pip{float:right;position:relative;width:80px;height:70px;background:var(--pip);color:#13283a;font-size:0;border-radius:22px;transform:rotate(7deg);box-shadow:0 0 60px #6ee7e020}.welcome-pip span{position:absolute;top:12px;left:13px;right:13px;background:#163047;border-radius:12px;color:var(--pip);font:35px ui-monospace,monospace;text-align:center}.example{background:#0d1825;padding:16px;border-radius:10px;color:#cfff9d;font:14px/1.8 ui-monospace,monospace}.notice{border:1px solid #d8b367;background:#3a3020;color:#f6ddb3;border-radius:8px;padding:12px;margin-bottom:18px;font-size:13px}.notice button{margin-left:10px;font-size:11px}#report-dialog{width:min(850px,calc(100% - 24px))}.report-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:11px}td,th{text-align:left;padding:9px;border-bottom:1px solid #405065}th{color:var(--mint)}details{margin:12px 0}summary{cursor:pointer}#question-review details{background:#0d1927;padding:10px}.file-label input{font-size:11px}hr{border:0;border-top:1px solid #405266;margin:20px 0}.skip{opacity:0;pointer-events:none;position:fixed;top:-70px;padding:12px;background:#d2ffab;color:#142719;z-index:10}.skip:focus{opacity:1;pointer-events:auto;top:10px}.float-pip{animation:bob 3s ease-in-out infinite}.pulse{animation:pulse 3s ease-in-out infinite}@keyframes bob{50%{translate:0 -6px}}@keyframes pulse{50%{opacity:.5}}.reduce-motion *{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}[hidden]{display:none!important}
@media(min-width:1500px){main{padding-top:45px}.scene{aspect-ratio:1.6}.game-layout{gap:28px}}
@media(max-width:900px){main{padding:24px 4%}.hero{gap:20px}.score-card{width:190px}h1{font-size:34px}.stage-map li{padding:12px 8px;gap:7px}.stage-map small{display:none}.stage-map li span{font-size:10px}.game-layout{gap:16px}.panel-heading{padding:18px}.challenge-body{padding:0 18px}.companion{padding:18px}.world-footer{padding:12px 18px}.bottom-strip>span:nth-child(2){display:none}}
@media(max-width:700px){.topbar{height:72px;padding:0 5%}.brand{font-size:15px;gap:8px}.brand-icon{width:30px;height:30px;font-size:20px}.brand small{font-size:6px;letter-spacing:1.7px}nav{gap:3px}nav .quiet{font-size:0;padding:7px;min-width:40px}#help-button:after{content:'?';font-size:18px}#teacher-button:after{content:'↗';font-size:19px}.hero{display:block;margin-bottom:20px}h1{font-size:clamp(27px,6.5vw,40px);letter-spacing:-1.4px}.hero .eyebrow{font-size:8px;letter-spacing:1px}.intro{font-size:11px}.score-card{width:100%;margin-top:20px;padding:12px 15px;display:grid;grid-template-columns:1fr auto;gap:4px 18px}.score-card strong{grid-column:2;grid-row:1/3;font-size:25px;align-self:center}.score-card>div{margin:0;max-width:200px}progress{grid-column:1/-1;margin-top:4px}.stage-map{margin-bottom:16px}.stage-map li{flex-direction:column;padding:10px 2px;gap:6px;text-align:center}.stage-map b{width:23px;height:23px;font-size:10px}.stage-map li span{font-size:9px}.game-layout{grid-template-columns:1fr}.scene{aspect-ratio:1.9}.panel-heading{padding:17px 18px 12px}.world-card .panel-heading h2{font-size:19px}.world-footer{display:none}.companion{padding:12px 16px}.companion p{font-size:11px;line-height:1.5}.companion strong span{font-size:7px}.challenge-body{padding:0 18px}.chips{gap:6px}.chip .digit{font-size:29px}.chip .weight{font-size:8px}.prompt{min-height:0}.puzzle-card .panel-heading{padding-top:20px}.puzzle-card{scroll-margin-top:12px}.bottom-strip{font-size:9px}footer{display:block;line-height:2.2}footer span{display:block}.completion{padding:22px 16px}.completion h2{font-size:27px}dialog{padding:23px}.profile-grid{gap:8px}dialog h2{font-size:28px}.report-actions>*{flex:1;font-size:11px}}
