:root{--bg:#05060d;--ink:#eef0ff;--ink-dim:#9aa0c8;--glass:#0e1126b8;--line:#8c96ff2e;--accent:#b07cff;color:var(--ink);-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;height:100%;margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0}button:disabled{opacity:.3;cursor:default}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.boot{background:var(--bg);position:fixed;inset:0}.app{position:fixed;inset:0}.stage{touch-action:none;inset:0;position:absolute!important}.topbar{padding:calc(env(safe-area-inset-top) + 14px) calc(env(safe-area-inset-right) + 16px) 0 calc(env(safe-area-inset-left) + 16px);pointer-events:none;justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:absolute;top:0;left:0;right:0}.topbar>*{pointer-events:auto}.brand{flex-direction:column;gap:2px;display:flex}.brand strong{letter-spacing:.14em;text-transform:uppercase;font-size:20px;font-weight:600}.brand span{color:var(--ink-dim);font-size:13px}.icon{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);border-radius:14px;width:44px;height:44px;font-size:20px}.panel{left:calc(env(safe-area-inset-left) + 16px);bottom:calc(env(safe-area-inset-bottom) + 16px);background:var(--glass);border:1px solid var(--line);border-top-color:color-mix(in srgb, var(--accent) 55%, transparent);-webkit-backdrop-filter:blur(18px);border-radius:22px;width:min(400px,100% - 32px);padding:16px;position:absolute}@media (orientation:portrait){.panel{width:auto;right:calc(env(safe-area-inset-right) + 16px)}}.panel-head{align-items:center;gap:12px;display:flex}.panel-title{flex:1;min-width:0}.panel-index{color:var(--accent);letter-spacing:.08em;font-variant-numeric:tabular-nums;font-size:12px}.panel h2{margin:2px 0 0;font-size:22px;font-weight:600;line-height:1.15}.panel-desc{color:var(--ink-dim);min-height:4.35em;margin:12px 0 14px;font-size:15px;line-height:1.45}.panel-foot{justify-content:space-between;align-items:center;gap:12px;min-height:48px;display:flex}.stars{font-variant-numeric:tabular-nums;color:var(--accent)}.note{color:var(--ink-dim);font-size:14px}.step{border:1px solid var(--line);border-radius:14px;width:44px;height:44px;font-size:18px}.primary{background:var(--accent);color:#0a0b18;border-radius:14px;min-height:48px;margin-left:auto;padding:0 28px;font-weight:600}.primary.wide{width:100%;margin-top:22px}.tower-label{white-space:nowrap;color:var(--ink-dim);opacity:.75;align-items:baseline;gap:8px;font-size:14px;transition:opacity .2s,color .2s;display:flex}.tower-label.is-selected{color:var(--ink);opacity:1;font-weight:600}.tower-label.is-locked{opacity:.4}.tower-label-index{font-variant-numeric:tabular-nums;font-weight:600}.sheet-backdrop{padding:16px;padding-bottom:calc(env(safe-area-inset-bottom) + 16px);z-index:20;background:#03040a99;justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}@media (width>=640px){.sheet-backdrop{align-items:center}}.sheet{border:1px solid var(--line);background:#0d1024;border-radius:24px;width:min(420px,100%);padding:20px}.sheet h2{margin:0 0 6px;font-size:20px}.sheet label{color:var(--ink-dim);margin:16px 0 8px;font-size:13px;display:block}.segmented{background:#ffffff0d;border-radius:14px;gap:6px;padding:4px;display:flex}.segmented button{min-height:40px;color:var(--ink-dim);border-radius:10px;flex:1;font-size:14px}.segmented button[aria-pressed=true]{color:var(--ink);background:#ffffff24;font-weight:600}@media (orientation:portrait) and (width<=640px){.tower-label-name{display:none}}.level-list{gap:6px;margin:12px 0 0;padding:0;list-style:none;display:grid}.level-list button{border:1px solid var(--line);text-align:left;border-radius:14px;align-items:center;gap:12px;width:100%;min-height:52px;padding:0 14px;display:flex}.level-number{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:600}.level-name{flex:1;font-size:16px}.star-row{letter-spacing:2px;color:#ffffff2e}.star-row .is-on{color:#ffe45c}.level{position:fixed;inset:0}.level-top{padding:calc(env(safe-area-inset-top) + 12px) calc(env(safe-area-inset-right) + 16px) 0 calc(env(safe-area-inset-left) + 16px);pointer-events:none;z-index:6;position:absolute;top:0;left:0;right:0}.level-top>*{pointer-events:auto}.level-bar{align-items:center;gap:8px;display:flex}.level-heading{flex:1;min-width:0}.level-heading h1{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:18px;font-weight:600;overflow:hidden}.level-heading span{color:var(--ink-dim);font-variant-numeric:tabular-nums;font-size:13px}.chip{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);border-radius:14px;min-height:44px;padding:0 14px;font-size:14px}.chip[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.level-goal{max-width:640px;margin:12px 0 0;font-size:15px;line-height:1.4}.level-hint{max-width:640px;color:var(--ink);background:color-mix(in srgb, var(--accent) 16%, #0d1024);border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);border-radius:12px;margin:8px 0 0;padding:10px 12px;font-size:14px;line-height:1.4}.controls{left:calc(env(safe-area-inset-left) + 16px);right:calc(env(safe-area-inset-right) + 16px);bottom:calc(env(safe-area-inset-bottom) + 16px);background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);z-index:6;border-radius:22px;gap:10px;max-width:520px;margin:0 auto;padding:14px;display:grid;position:absolute}.controls-row{align-items:center;gap:12px;min-height:48px;display:flex}.feedback{color:var(--ink-dim);flex:1;font-size:14px;line-height:1.35}.feedback.is-bad{color:#ff9bb0}.feedback.is-good{color:#8dffc4}.ghost{border:1px solid var(--line);border-radius:14px;min-height:48px;padding:0 18px}.slider{color:var(--ink-dim);grid-template-columns:96px 1fr 44px;align-items:center;gap:10px;font-size:14px;display:grid}.slider input{width:100%;height:32px;accent-color:var(--accent)}.slider-value{text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}.scores{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:14px}.scores th{color:var(--ink-dim);text-align:right;padding:2px 0;font-weight:400}.scores td{text-align:right;padding:3px 0}.scores td:first-child{text-align:left;font-family:ui-monospace,SF Mono,Menlo,monospace}.scores .is-target td{color:#8dffc4;font-weight:600}.head-grid{gap:6px;display:grid}.head-grid button{border:1px solid var(--line);min-height:40px;color:var(--ink-dim);border-radius:10px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px}.head-grid button[aria-pressed=true]{background:var(--accent);color:#0a0b18;border-color:#0000;font-weight:600}.next-tokens{font-variant-numeric:tabular-nums;color:var(--ink-dim);flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:14px;display:flex}.next-title{width:100%;font-size:12px}.next-token b{font-family:ui-monospace,SF Mono,Menlo,monospace;font-weight:500}.next-token.is-top{color:var(--ink)}.next-token.is-top b{font-weight:700}.labels{pointer-events:none;z-index:3;position:absolute;inset:0;overflow:hidden}.label{transform-origin:0 0;visibility:hidden;pointer-events:auto;will-change:transform;position:absolute;top:0;left:0}.label.is-point{transition:opacity .25s}.label.is-left>*{transform:translate(50%)}.tile{width:166px;height:96px;color:var(--ink);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-family:ui-monospace,SF Mono,Menlo,monospace;animation:.35s ease-out both label-in;display:flex;position:relative}.tile:disabled{opacity:1;cursor:default}.tile:not(:disabled):after,.gap:not(:disabled):after,.point:not(:disabled):after{content:"";width:max(100%, calc(44px * var(--inv,1)));height:max(100%, calc(44px * var(--inv,1)));position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tile-text,.tile-note{transition:color .25s}@keyframes label-in{0%{opacity:0}to{opacity:1}}.tile-text{white-space:pre;text-shadow:0 0 10px #05060de6;font-size:32px;font-weight:600}.tile-note{color:#cfd4ff;font-variant-numeric:tabular-nums;font-size:22px;line-height:1}.tile-masked .tile-text{color:#4a5080}.arrow-label{white-space:nowrap;color:var(--ink);text-shadow:0 0 12px #05060d,0 0 4px #05060d;pointer-events:none;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:14px}.arrow-label.is-target{color:#8dffc4;font-weight:600}.arrow-label.is-query{color:var(--accent);font-size:17px;font-weight:700}.result{left:calc(env(safe-area-inset-left) + 16px);right:calc(env(safe-area-inset-right) + 16px);bottom:calc(env(safe-area-inset-bottom) + 16px);border:1px solid color-mix(in srgb, var(--accent) 55%, transparent);z-index:10;background:#0d1024;border-radius:22px;max-width:520px;max-height:calc(100% - 200px);margin:0 auto;padding:18px;position:absolute;overflow-y:auto}.result-head{justify-content:space-between;align-items:center;display:flex}.result h2{margin:0;font-size:22px}.result .star-row{font-size:26px}.result-stars{color:var(--ink-dim);flex-wrap:wrap;gap:4px 14px;margin:10px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.result-stars li:before{content:"☆ "}.result-stars li.is-on{color:var(--ink)}.result-stars li.is-on:before{content:"★ ";color:#ffe45c}.result h3{color:var(--accent);margin:14px 0 4px;font-size:13px;font-weight:400}.result p{-webkit-user-select:text;user-select:text;margin:0;font-size:15px;line-height:1.45}.result-actions{gap:10px;margin-top:16px;display:flex}.result-actions .primary{flex:1;margin-left:0}.code-sheet{width:min(640px,100%)}.code-sheet pre{border:1px solid var(--line);-webkit-user-select:text;user-select:text;background:#070817;border-radius:12px;margin:10px 0 0;padding:12px;font:13px/1.5 ui-monospace,SF Mono,Menlo,monospace;overflow-x:auto}.row-note{color:var(--accent);white-space:nowrap;pointer-events:none;font:600 30px ui-monospace,SF Mono,Menlo,monospace}.gap{border:3px solid color-mix(in srgb, var(--accent) 55%, transparent);min-width:108px;height:78px;color:var(--ink);background:#0d1024;border-radius:39px;padding:0 10px;font:600 30px ui-monospace,SF Mono,Menlo,monospace;transition:background .15s,border-color .15s,transform .15s;animation:.3s ease-out both label-in;position:relative}.gap:active{transform:scale(.92)}.gap.is-raised:before{content:"";background:color-mix(in srgb, var(--accent) 45%, transparent);pointer-events:none;width:3px;height:62px;margin-left:-1.5px;position:absolute;top:100%;left:50%}.gap.is-cut{color:#ffffff47;border-color:var(--line);border-radius:48px;min-width:96px;height:96px;font-size:38px}.gap.gap-on{background:var(--accent);color:#0a0b18;border-color:#0000}.pair-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.pair-grid button,.option-list button{border:1px solid var(--line);border-radius:12px;min-height:44px;font:15px ui-monospace,SF Mono,Menlo,monospace}.option-list{gap:6px;display:grid}.option-list button{text-align:left;justify-content:space-between;align-items:center;gap:10px;padding:0 12px;display:flex}.option-list small{color:var(--ink-dim);white-space:nowrap;font-family:inherit}.option-list .is-right{color:#8dffc4;opacity:1;border-color:#5cffa8}.option-list .is-wrong{border-color:#ff6f91}.point{transform:translateY(var(--dy,-16px));color:#6b74b8;white-space:nowrap;text-shadow:0 0 6px #05060d,0 0 2px #05060d;border-radius:8px;padding:2px 6px;font:12px ui-monospace,SF Mono,Menlo,monospace;position:relative}.point:disabled{opacity:1;cursor:default}.point-idle{color:#b9c0ee}.point-target{color:#fff;font-size:16px;font-weight:700}.point-option{color:#5ce1ff;font-size:15px;font-weight:600}.point-right{color:#8dffc4;font-size:16px;font-weight:700}.point-wrong{color:#ff9bb0;font-size:15px;font-weight:600}.option-list.is-row{grid-template-columns:repeat(2,1fr)}.equation{text-align:center;padding:2px 0;font:600 17px ui-monospace,SF Mono,Menlo,monospace}@media (width<=640px){.point-dim{font-size:10px}}.bar-label,.bar-note{white-space:nowrap;pointer-events:none;color:var(--ink);text-shadow:0 0 10px #05060d;font:600 30px ui-monospace,SF Mono,Menlo,monospace}.bar-note{color:#cfd4ff;font-variant-numeric:tabular-nums;font-size:26px;font-weight:500}.bar-cut{color:#4a5080}.bar-rest{color:var(--ink-dim)}.bar-right{color:#8dffc4}.option-list.is-four{grid-template-columns:repeat(4,1fr)}.option-list.is-four button{justify-content:center}.depth-list{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.depth-list button{border:1px solid var(--line);min-height:56px;color:var(--ink-dim);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 2px;font:13px ui-monospace,SF Mono,Menlo,monospace;display:flex}.depth-list button b{color:var(--ink)}.depth-list button[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 18%, transparent)}.part-grid{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.part-grid.is-four{grid-template-columns:repeat(4,1fr)}.part-grid button{border:1px solid var(--line);min-height:44px;color:var(--ink);border-radius:10px;font:13px ui-monospace,SF Mono,Menlo,monospace}.part-grid button[aria-pressed=true]{background:var(--accent);color:#0a0b18;border-color:#0000;font-weight:600}.option-list.is-three{grid-template-columns:repeat(3,1fr)}.option-list.is-three button{text-align:center;justify-content:center}.scene-note{white-space:nowrap;color:var(--ink);text-shadow:0 0 8px #05060d,0 0 3px #05060d;pointer-events:none;font:600 13px ui-monospace,SF Mono,Menlo,monospace;display:block}.scene-note.is-above{transform:translateY(-22px)}.scene-note.is-below{color:#8dffc4;transform:translateY(18px)}.stage{animation:.6s ease-out both fade-in}.panel,.controls{animation:.4s cubic-bezier(.2,.8,.2,1) both rise-in}.level-top{animation:.4s ease-out both fade-in}.result{animation:.5s cubic-bezier(.2,.9,.2,1.05) both rise-in;overflow:hidden auto}.result .star-row .is-on{animation:.5s cubic-bezier(.3,1.6,.5,1) both star-pop;display:inline-block}.result .star-row .is-on:nth-child(2){animation-delay:.15s}.result .star-row .is-on:nth-child(3){animation-delay:.3s}.sheet{animation:.3s cubic-bezier(.2,.8,.2,1) both rise-in}.sheet-backdrop{animation:.2s ease-out both fade-in}.primary,.ghost,.chip,.icon,.step,.head-grid button,.option-list button,.pair-grid button,.depth-list button,.level-list button{transition:transform .12s,background .15s,border-color .15s,color .15s,opacity .15s}.primary:active,.ghost:active,.chip:active,.icon:active,.step:active,.head-grid button:active,.option-list button:active,.pair-grid button:active,.depth-list button:active,.level-list button:active{transform:scale(.96)}.primary{box-shadow:0 6px 24px -8px var(--accent)}.feedback.is-bad:not(:empty){animation:.3s ease-out nudge}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;translate:0 18px}to{opacity:1;translate:0}}@keyframes star-pop{0%{opacity:0;rotate:-40deg;scale:.2}to{opacity:1;rotate:0deg;scale:1}}@keyframes nudge{0%{translate:-6px}40%{translate:5px}70%{translate:-3px}to{translate:0}}.confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti i{opacity:0;border-radius:2px;width:8px;height:13px;animation:1.4s cubic-bezier(.3,.6,.6,1) both confetti-fall;position:absolute;top:-14px}.confetti-0{background:var(--accent)}.confetti-1{background:#ffe45c}.confetti-2{background:#5ce1ff}@keyframes confetti-fall{0%{opacity:1;translate:0;rotate:0deg}to{opacity:0;translate:var(--drift) 230px;rotate:var(--turn)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}.confetti{display:none}}.meter{background:#ffffff14;border-radius:3px;height:6px;overflow:hidden}.meter i{background:#5cffa8;height:100%;transition:width .2s;display:block}.meter.is-over i{background:#ff6f91}.lab-prompt{gap:8px;display:flex}.lab-prompt input{border:1px solid var(--line);min-width:0;min-height:48px;color:var(--ink);-webkit-user-select:text;user-select:text;background:#ffffff0f;border-radius:14px;flex:1;padding:0 12px;font:16px ui-monospace,SF Mono,Menlo,monospace}.lab-prompt input:focus{outline:2px solid var(--accent);outline-offset:1px}.lab-prompt .primary{margin-left:0;padding:0 18px}.check{align-items:center;gap:10px;min-height:44px;font-size:14px;display:flex}.check input{accent-color:#ff6f91;width:22px;height:22px}.check small{color:var(--ink-dim);margin-left:auto;font:13px ui-monospace,SF Mono,Menlo,monospace}.lab-text{border:1px solid var(--line);white-space:pre-wrap;-webkit-user-select:text;user-select:text;background:#070817;border-radius:12px;max-height:96px;margin:0;padding:10px 12px;font:14px/1.45 ui-monospace,SF Mono,Menlo,monospace;overflow-y:auto}.lab-text span{color:var(--ink-dim)}.lab-done{color:var(--ink-dim);flex-wrap:wrap;gap:4px 14px;font-size:12px;display:flex}.lab-done span:before{content:"○ "}.lab-done .is-on{color:#8dffc4}.lab-done .is-on:before{content:"● "}.panel,.topbar{z-index:5}.tower-label{pointer-events:none}.label:has(>.tower-label){pointer-events:none}.intro-backdrop{z-index:30;background:#03040ab8}.intro{width:min(460px,100%);padding:22px}.intro h2{margin:14px 0 8px;font-size:22px;line-height:1.2}.intro p{color:var(--ink-dim);min-height:9em;margin:0;font-size:16px;line-height:1.5}.intro-lang{margin-bottom:14px}.intro-step{gap:6px;display:flex}.intro-step i{background:#ffffff24;border-radius:2px;width:22px;height:4px}.intro-step i.is-on{background:var(--accent)}.intro-actions{gap:10px;margin-top:18px;display:flex}.intro-actions .primary{flex:1;margin-left:0}.ghost.wide{width:100%;margin-top:22px}.ghost.wide+.primary.wide{margin-top:10px}.brief-backdrop{z-index:25}.brief{width:min(520px,100%);max-height:calc(100% - 32px);padding:22px;overflow-y:auto}.brief h2{color:var(--accent);margin:0 0 4px;font-size:22px}.brief p{-webkit-user-select:text;user-select:text;margin:12px 0 0;font-size:16px;line-height:1.55}.brief p+p{color:var(--ink);background:color-mix(in srgb, var(--accent) 12%, transparent);border-radius:12px;padding:12px}.link{color:var(--accent);text-underline-offset:3px;margin-left:8px;padding:6px 2px;font-size:14px;text-decoration:underline}.chip.reveal{color:#ffe45c;border-color:#ffe45c;margin-top:8px}.result p.plain{font-size:16px;font-weight:600}.is-answer,.gap.gap-answer{outline-offset:2px;outline:3px solid #ffe45c;animation:1s ease-in-out infinite alternate answer-pulse}@keyframes answer-pulse{0%{outline-color:#ffe45c}to{outline-color:#ffe45c40}}.gap.gap-right{color:#8dffc4;background:#103a2a;border-color:#5cffa8}.gap.gap-wrong{color:#ff9bb0;background:#3a1220;border-color:#ff6f91}.pair-grid small{color:var(--ink-dim);margin-left:6px;font-family:inherit}.brief .primary.wide{position:sticky;bottom:0;box-shadow:0 -14px 14px 2px #0d1024}.head-grid button small{color:var(--ink-dim);font-family:inherit;font-size:11px;display:block}.head-grid button[aria-pressed=true] small{color:#0a0b18}.head-grid button:has(small){min-height:48px;line-height:1.15}.feedback.is-shown{color:#ffe45c}.feedback.marker.is-in{color:#8dffc4}.feedback.marker.is-out{color:#ff9bb0}
