:root{--ink:#23262f;--ink-2:#5d6170;--ink-3:#8d90a0;--glass:#ffffffa8;--glass-strong:#ffffffdb;--edge:#ffffffd9;--shadow:0 10px 30px -12px #3c281447, 0 2px 6px -2px #3c28141f;--mint:#22c58b;--mint-soft:#c9f5e3;--coral:#ef5b52;--sun:#ffc93c;--r:18px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Outfit,ui-rounded,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#efe4d7;height:100%;margin:0;overflow:hidden}#scene{touch-action:none;outline:none;width:100vw;height:100dvh;display:block;position:fixed;inset:0}#ui{pointer-events:none;z-index:2;position:fixed;inset:0}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0}svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}kbd{color:var(--ink-2);background:#23262f12;border:1px solid #23262f1f;border-bottom-width:2px;border-radius:6px;margin:0 2px;padding:4px 6px;font:600 11px/1 Outfit,sans-serif;display:inline-block}#boot{z-index:5;background:#efe4d7;place-items:center;transition:opacity .6s;display:grid;position:fixed;inset:0}body.ready #boot{opacity:0;pointer-events:none}.boot-cube{background:conic-gradient(from 210deg, #ffd166 0 33%, #ef5b52 0 66%, #2fd49a 0);border-radius:12px;width:46px;height:46px;animation:1.1s cubic-bezier(.6,0,.3,1) infinite boot-spin}@keyframes boot-spin{to{transform:rotate(360deg)}}.boot-error{color:var(--coral);text-align:center;padding:24px;font-weight:600}.card{background:var(--glass-strong);-webkit-backdrop-filter:blur(22px)saturate(1.4);backdrop-filter:blur(22px)saturate(1.4);border:1px solid var(--edge);box-shadow:var(--shadow);border-radius:26px;padding:28px}.card h2{letter-spacing:-.02em;margin:0 0 8px;font-size:28px;font-weight:800}.small{color:var(--ink-2);font-size:13px;line-height:1.45}.mint{color:var(--mint)}.primary-btn,.ghost-btn{border-radius:999px;justify-content:center;align-items:center;gap:8px;height:48px;padding:0 22px;font-size:16px;font-weight:700;transition:transform .15s,box-shadow .15s,background .15s;display:inline-flex}.primary-btn{background:var(--ink);color:#fff;box-shadow:0 8px 18px -8px #14141e99}.primary-btn:hover{transform:translateY(-1px);box-shadow:0 12px 24px -10px #14141eb3}.primary-btn:active,.ghost-btn:active,.icon-btn:active{transform:scale(.96)}.ghost-btn{background:var(--glass);border:1px solid var(--edge);color:var(--ink);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.ghost-btn:hover{background:var(--glass-strong)}.menu{padding:calc(48px + var(--safe-t)) 20px calc(28px + var(--safe-b));scrollbar-width:none;opacity:0;visibility:hidden;background:radial-gradient(120% 80% at 50% 0,#ffffff8c,#fff0 60%),linear-gradient(#fffaf459,#fffaf41a 50%,#fffaf480);flex-direction:column;align-items:center;gap:22px;transition:opacity .45s,visibility .45s;display:flex;position:absolute;inset:0;overflow-y:auto}.menu.show{opacity:1;visibility:visible;pointer-events:auto}.brand{text-align:center}.brand h1{letter-spacing:-.045em;background:linear-gradient(#2a2d38,#4a4e5f);color:#0000;-webkit-background-clip:text;background-clip:text;margin:10px 0 4px;font-size:clamp(44px,9vw,84px);font-weight:800;line-height:.95}.brand p{color:var(--ink-2);margin:0;font-size:16px;font-weight:500}.logo{place-items:center;width:64px;height:64px;animation:5s ease-in-out infinite float;display:inline-grid}.logo-cube{filter:drop-shadow(0 10px 12px #50321440);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath d='M32 6 56 19v26L32 58 8 45V19Z' fill='%23ffd166'/%3E%3Cpath d='M32 32 56 19v26L32 58Z' fill='%23ef5b52'/%3E%3Cpath d='M32 32 8 19v26l24 13Z' fill='%232fd49a'/%3E%3C/svg%3E") 50%/contain no-repeat;width:54px;height:54px}@keyframes float{50%{transform:translateY(-6px)rotate(-4deg)}}.level-grid{grid-template-columns:repeat(4,minmax(0,220px));justify-content:center;gap:14px;width:100%;display:grid}@media (max-width:1000px){.level-grid{grid-template-columns:repeat(3,minmax(0,220px))}}@media (max-width:680px){.level-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}.chapter-head{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);grid-column:1/-1;align-items:center;gap:12px;margin:14px 4px 0;font-size:15px;font-weight:800;display:flex}.chapter-head:first-child{margin-top:0}.chapter-head i{background:#23262f1f;flex:1;height:1px}.chapter-head b{letter-spacing:0;color:var(--ink-3);align-items:center;gap:5px;font-size:13px;font-weight:700;display:flex}.chapter-head svg{width:14px;height:14px;fill:var(--sun);stroke:none}.level-card{text-align:left;background:var(--glass);border:1px solid var(--edge);-webkit-backdrop-filter:blur(16px)saturate(1.3);backdrop-filter:blur(16px)saturate(1.3);min-height:150px;box-shadow:var(--shadow);opacity:0;animation:.5s cubic-bezier(.2,1.2,.4,1) forwards card-in;animation-delay:calc(var(--i) * 45ms + .12s);border-radius:22px;flex-direction:column;gap:2px;padding:16px 16px 14px;transition:transform .2s cubic-bezier(.3,1.4,.5,1),background .2s;display:flex;position:relative}@keyframes card-in{0%{opacity:0;transform:translateY(14px)scale(.97)}to{opacity:1;transform:none}}.level-card:hover:not(.locked){background:var(--glass-strong);transform:translateY(-3px)}.level-card.locked{cursor:default;filter:saturate(.4)}.level-card.locked .lc-name,.level-card.locked .lc-tag{opacity:.45}.lc-num{color:var(--ink-3);letter-spacing:.08em;font-size:13px;font-weight:700}.level-card.done .lc-num{color:var(--mint)}.lc-name{letter-spacing:-.02em;font-size:21px;font-weight:800;line-height:1.1}.lc-tag{color:var(--ink-2);font-size:13px;line-height:1.3}.lc-foot{justify-content:space-between;align-items:center;margin-top:auto;padding-top:12px;display:flex}.lc-pips{gap:3px;display:flex}.lc-pips b{background:#23262f1f;border-radius:3px;width:14px;height:5px}.lc-pips b.on{background:linear-gradient(90deg, #ff9f68, var(--coral))}.lc-stars{gap:1px;display:flex}.lc-stars i svg,.win-stars i svg{fill:#23262f1a;stroke:none}.lc-stars i svg{width:17px;height:17px}.lc-stars i.on svg,.win-stars i.on svg{fill:var(--sun);filter:drop-shadow(0 1px 1px #a0640059)}.lc-lock{color:var(--ink-3)}.lc-lock svg{width:17px;height:17px}.lc-best{color:var(--ink-3);font-size:12px;font-weight:600;position:absolute;top:14px;right:16px}.menu-foot{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.hud{top:calc(14px + var(--safe-t));opacity:0;grid-template-columns:1fr auto 1fr;align-items:start;gap:10px;transition:opacity .35s,transform .35s;display:grid;position:absolute;left:14px;right:14px;transform:translateY(-12px)}.hud.show{opacity:1;transform:none}.hud.show>*{pointer-events:auto}.hud-left,.hud-right{align-items:center;gap:8px;display:flex}.hud-right{justify-content:flex-end}.hud-center{background:var(--glass);border:1px solid var(--edge);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);height:44px;box-shadow:var(--shadow);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:10px;padding:0 18px;font-weight:600;display:flex;pointer-events:none!important}.hud-dot{background:var(--ink-3);border-radius:50%;width:4px;height:4px}.hud-stat:last-child{color:var(--ink-2);font-weight:500}.hud-title{align-items:baseline;gap:8px;min-width:0;padding:0 4px;display:flex}.hud-num{color:var(--ink-3);font-size:14px;font-weight:700}.hud-name{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px #fff9;font-size:19px;font-weight:800;overflow:hidden}.icon-btn{background:var(--glass);border:1px solid var(--edge);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);width:44px;height:44px;box-shadow:var(--shadow);color:var(--ink);border-radius:14px;place-items:center;transition:transform .15s,background .15s,color .15s;display:grid}.icon-btn:hover{background:var(--glass-strong)}.icon-btn.active{background:var(--sun);color:#4a3200}@media (max-width:680px){.hud{grid-template-columns:1fr auto;grid-template-areas:"l r""c c";left:10px;right:10px}.hud-left{grid-area:l}.hud-right{grid-area:r;gap:6px}.hud-center{grid-area:c;justify-self:center;height:34px;padding:0 14px;font-size:14px}.icon-btn{width:42px;height:42px}.hud-name{font-size:17px}.hud-num,.hud-right .icon-btn:nth-child(4){display:none}}.goal-meter{left:50%;bottom:calc(22px + var(--safe-b));opacity:0;background:#23262f1a;border-radius:6px;width:min(220px,50vw);height:6px;transition:opacity .4s;position:absolute;overflow:hidden;transform:translate(-50%)}.goal-meter.show{opacity:1}.goal-meter-fill{transform-origin:0;background:linear-gradient(90deg, #6ff0bf, var(--mint));border-radius:6px;width:100%;height:100%;transition:transform .2s;transform:scaleX(0)}.goal-meter.full .goal-meter-fill{box-shadow:0 0 12px var(--mint)}.tip{left:50%;bottom:calc(44px + var(--safe-b));color:#fff;text-align:center;max-width:min(520px,100vw - 32px);box-shadow:var(--shadow);opacity:0;background:#23262fdb;border-radius:999px;padding:12px 20px;font-size:15px;font-weight:600;transition:opacity .35s,transform .35s;position:absolute;transform:translate(-50%,12px)}.tip.show{opacity:1;transform:translate(-50%)}.toast{color:#fff;opacity:0;background:#23262fcc;border-radius:14px;padding:10px 18px;font-weight:600;transition:opacity .2s,transform .2s;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)scale(.95)}.toast.show{opacity:1;transform:translate(-50%,-50%)scale(1)}.title-card{text-align:center;opacity:0;pointer-events:none;position:absolute;top:18%;left:0;right:0}.title-card.show{animation:2.6s cubic-bezier(.2,.9,.3,1) forwards title}@keyframes title{0%{opacity:0;filter:blur(6px);transform:translateY(16px)}18%,70%{opacity:1;filter:none;transform:none}to{opacity:0;filter:blur(4px);transform:translateY(-10px)}}.tc-num{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);font-size:14px;font-weight:700}.tc-name{letter-spacing:-.04em;text-shadow:0 2px 30px #ffffffe6;margin:6px 0;font-size:clamp(40px,8vw,72px);font-weight:800;line-height:1}.tc-tag{color:var(--ink-2);font-size:17px;font-weight:500}.angle-label{z-index:3;pointer-events:none;font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-shadow:0 1px #fff,0 0 12px #ffffffe6,0 0 2px #00000059;opacity:0;font:800 20px/1 Outfit,sans-serif;transition:opacity .15s;position:fixed;top:0;left:0}.win,.help,.settings{opacity:0;visibility:hidden;background:#281e1429;place-items:center;padding:20px;transition:opacity .35s,visibility .35s;display:grid;position:absolute;inset:0}.win.show,.help.show,.settings.show{opacity:1;visibility:visible;pointer-events:auto}.win.show .card,.help.show .card,.settings.show .card{animation:.5s cubic-bezier(.2,1.3,.4,1) both pop}@keyframes pop{0%{opacity:0;transform:translateY(24px)scale(.94)}}.win{padding-bottom:calc(40px + var(--safe-b));background:linear-gradient(#281e1400 40%,#281e1424);align-items:end}.win-card{text-align:center;width:min(400px,100%)}.win-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--mint);font-size:13px;font-weight:700}.win-card h2{margin-top:4px;font-size:34px}.win-stars{justify-content:center;gap:6px;margin:8px 0 18px;display:flex}.win-stars i svg{width:52px;height:52px}.win-stars i{animation:.6s cubic-bezier(.2,1.8,.4,1) both star;animation-delay:var(--d)}.win-stars i:nth-child(2) svg{width:62px;height:62px;margin-top:-8px}@keyframes star{0%{opacity:0;transform:scale(0)rotate(-40deg)}}.win-stats{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px;display:grid}.win-stats div{background:#23262f0d;border-radius:14px;flex-direction:column;padding:10px 6px;display:flex}.win-stats b{font-variant-numeric:tabular-nums;font-size:22px;font-weight:800}.win-stats span{color:var(--ink-2);font-size:12px;font-weight:500}.win-actions{justify-content:center;gap:10px;display:flex}.win-actions>*{flex:1}.help-card{width:min(560px,100%);max-height:calc(100dvh - 40px);overflow-y:auto}.help-card .lead{color:var(--ink-2);margin:0 0 18px;line-height:1.5}.help-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;display:grid}@media (max-width:520px){.help-grid{grid-template-columns:1fr}}.help-item{background:#23262f0a;border-radius:16px;align-items:flex-start;gap:12px;padding:12px;display:flex}.help-item b{font-size:15px;display:block}.help-item span{color:var(--ink-2);margin-top:2px;font-size:13px;line-height:1.4;display:block}.glyph{background:#fff 50%/26px no-repeat;border-radius:12px;flex:none;width:42px;height:42px;box-shadow:inset 0 0 0 1px #23262f14}.glyph-move{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2323262f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2v20M2 12h20M12 2l-3 3M12 2l3 3M12 22l-3-3M12 22l3-3M2 12l3-3M2 12l3 3M22 12l-3-3M22 12l-3 3'/%3E%3C/svg%3E")}.glyph-rotate{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ff6b6b' stroke-width='2.2' stroke-linecap='round'%3E%3Cellipse cx='12' cy='12' rx='9' ry='4'/%3E%3Cellipse cx='12' cy='12' rx='4' ry='9' stroke='%232fd49a'/%3E%3Ccircle cx='12' cy='12' r='9' stroke='%234f9dff'/%3E%3C/svg%3E")}.glyph-arrows{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 13h10M18 10l3 3-3 3' stroke='%23ff6b6b'/%3E%3Cpath d='M11 13V3M8 6l3-3 3 3' stroke='%232fd49a'/%3E%3Cpath d='M11 13l-7 7M4 15.5V20h4.5' stroke='%234f9dff'/%3E%3C/svg%3E")}.glyph-orbit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2323262f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12a9 9 0 1 1-3-6.7'/%3E%3Cpath d='M21 3v5h-5'/%3E%3C/svg%3E")}.glyph-zoom{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2323262f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4M11 8v6M8 11h6'/%3E%3C/svg%3E")}.help-card .row{color:var(--ink-2);margin:4px 0 18px;font-size:13px;line-height:2}.help-card .primary-btn,.settings-card .primary-btn{width:100%}.settings-card{width:min(420px,100%)}.toggle-row{cursor:pointer;border-bottom:1px solid #23262f14;align-items:center;gap:14px;padding:14px 0;display:flex}.toggle-row:last-of-type{margin-bottom:18px}.toggle-row>div{flex:1}.toggle-row b{display:block}.toggle-row span{color:var(--ink-2);font-size:13px}.toggle-row input{opacity:0;pointer-events:none;position:absolute}.switch{background:#23262f2e;border-radius:999px;flex:none;width:48px;height:28px;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .25s cubic-bezier(.3,1.5,.5,1);position:absolute;top:3px;left:3px;box-shadow:0 2px 4px #0003}.toggle-row input:checked+.switch{background:var(--mint)}.toggle-row input:checked+.switch:after{transform:translate(20px)}.sound-pop{top:calc(66px + var(--safe-t));opacity:0;transform-origin:100% 0;pointer-events:none;z-index:20;border-radius:20px;width:min(300px,100vw - 28px);padding:6px 18px 12px;transition:opacity .18s,transform .18s;position:absolute;right:14px;transform:translateY(-8px)scale(.98)}.sound-pop.show{opacity:1;pointer-events:auto;transform:none}.sound-pop .toggle-row:last-of-type{margin-bottom:0}.icon-btn.open{background:var(--glass-strong)}.sound-controls{margin-bottom:6px}.sound-controls.muted .slider-row{opacity:.45}.slider-row{border-bottom:1px solid #23262f14;grid-template-columns:96px 1fr;align-items:center;gap:12px;padding:12px 0 10px;transition:opacity .2s;display:grid}.sound-pop .slider-row:last-child{border-bottom:0}.slider-row b{font-size:14px}.slider-row input[type=range]{appearance:none;cursor:pointer;background:0 0;width:100%;height:28px;margin:0}.slider-row input[type=range]::-webkit-slider-runnable-track{background:#23262f24;border-radius:999px;height:6px}.slider-row input[type=range]::-moz-range-track{background:#23262f24;border-radius:999px;height:6px}.slider-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;box-shadow:0 2px 6px #00000040, 0 0 0 3px var(--mint) inset;background:#fff;border:0;border-radius:50%;margin-top:-8px}.slider-row input[type=range]::-moz-range-thumb{width:22px;height:22px;box-shadow:0 2px 6px #00000040, 0 0 0 3px var(--mint) inset;background:#fff;border:0;border-radius:50%}@media (max-width:680px){.sound-pop{top:calc(62px + var(--safe-t));right:10px}}:root[data-look=vector]{--ink:#e6f7ff;--ink-2:#93c2d8;--ink-3:#5f8399;--glass:#08101eb3;--glass-strong:#08101ee6;--edge:#3ad7ff59;--shadow:0 0 18px -6px #3ad7ff59}:root[data-look=vector] body{background:#04050c}:root[data-look=vector] .primary-btn{color:#04050c}:root[data-look=vector] .angle-label{text-shadow:0 0 10px #000000e6}.choice-row{cursor:default;flex-wrap:wrap}.segmented{background:#23262f14;border-radius:999px;gap:2px;padding:3px;display:flex}.segmented button{color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:8px 12px;font:600 13px/1 Outfit,sans-serif}.segmented button.on{background:var(--ink);color:#fff}:root[data-look=vector] .segmented{background:#3ad7ff1f}:root[data-look=vector] .segmented button.on{color:#04050c}:root[data-look=vector] .menu{background:radial-gradient(120% 80% at 50% 0,#3ad7ff1a,#04050c00 60%),linear-gradient(#04050c8c,#04050c40 50%,#04050cb3)}:root[data-look=vector] .brand h1{background:linear-gradient(#e6f7ff,#3ad7ff);-webkit-background-clip:text;background-clip:text}:root[data-look=vector] .tc-name{text-shadow:0 0 24px #3ad7ff73}:root[data-look=vector] .hud-name{text-shadow:none}
