:root{--canvas: #0b0c11;--surface: #12141c;--surface-2: #171a24;--ink: #ecebe4;--ink-dim: #8f92a0;--ink-faint: #565a68;--line: rgba(236, 235, 228, .08);--gold: #f7d447;--gold-deep: #d4a017;--gold-pale: #ffe28a;--gold-soft: rgba(247, 212, 71, .14);--red: #ff6b6b;--font-display: "Outfit", "Geist", "Satoshi", ui-sans-serif, system-ui, "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei", sans-serif;--font-body: ui-sans-serif, system-ui, "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", "Geist Mono", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--spring: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.22, 1, .36, 1);--radius-lg: 16px;--radius-md: 12px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--canvas);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}input,button{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}::selection{background:#f7d4474d}.app{position:relative;min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:clamp(16px,4vw,40px) clamp(12px,4vw,24px) 20px}.bg-canvas{position:fixed;inset:0;z-index:0;opacity:.75}.bg-vignette{position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(120% 90% at 50% 0%,rgba(247,212,71,.05),transparent 55%),radial-gradient(140% 120% at 50% 120%,rgba(247,212,71,.04),transparent 60%)}.scanlines{position:fixed;inset:0;z-index:3;pointer-events:none;opacity:.05;mix-blend-mode:overlay;background:repeating-linear-gradient(to bottom,transparent 0 2px,rgba(236,235,228,.5) 2px 3px)}.confetti-canvas{position:fixed;inset:0;z-index:2;pointer-events:none}.term{position:relative;z-index:1;width:100%;max-width:620px;margin:auto 0;background:#12141cdb;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:0 30px 80px #00000080,0 8px 40px #f7d4470f;overflow:hidden;animation:termIn .7s var(--ease-out) both}@keyframes termIn{0%{opacity:0;transform:translateY(18px) scale(.985)}}.term-bar{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);background:#171a24b3}.dots{display:flex;gap:7px}.dot{width:11px;height:11px;border-radius:50%}.dot-r{background:#ff5f57}.dot-y{background:#febc2e}.dot-g{background:#28c840}.term-title{flex:1;text-align:center;font-family:var(--font-mono);font-size:12.5px;color:var(--ink-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.term-timer{font-family:var(--font-mono);font-size:12px;color:var(--gold);min-width:58px;text-align:right;font-variant-numeric:tabular-nums}.term-body{padding:clamp(24px,5vw,44px) clamp(18px,5vw,44px) clamp(28px,6vw,48px)}.stage{display:flex;flex-direction:column;align-items:center;text-align:center;animation:stageIn .5s var(--ease-out) both}@keyframes stageIn{0%{opacity:0;transform:translateY(14px)}}.kicker{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.14em;color:var(--gold)}.kicker:before{content:"$ ";color:var(--ink-faint)}.kicker:after{content:"▊";margin-left:3px;animation:blink 1.1s steps(1) infinite}.cpu-title{position:relative;margin-top:10px;font-family:var(--font-display);font-size:clamp(84px,24vw,148px);font-weight:800;line-height:.95;letter-spacing:.02em;color:var(--gold);text-shadow:0 0 24px rgba(247,212,71,.28),0 0 90px rgba(247,212,71,.12);-webkit-user-select:none;user-select:none}.cpu-title:before,.cpu-title:after{content:attr(data-text);position:absolute;inset:0;opacity:0;pointer-events:none}.cpu-title:before{color:var(--gold-pale);animation:glitchA 4s steps(1) infinite}.cpu-title:after{color:var(--red);animation:glitchB 4s steps(1) infinite .12s}@keyframes glitchA{0%,88%,96%,to{opacity:0;transform:none}89%{opacity:.55;transform:translate(-4px,1px);clip-path:inset(12% 0 58% 0)}92%{opacity:.55;transform:translate(3px,-1px);clip-path:inset(62% 0 8% 0)}94%{opacity:.55;transform:translate(-2px);clip-path:inset(38% 0 42% 0)}}@keyframes glitchB{0%,88%,96%,to{opacity:0;transform:none}90%{opacity:.4;transform:translate(4px,-1px);clip-path:inset(55% 0 22% 0)}93%{opacity:.4;transform:translate(-3px,1px);clip-path:inset(8% 0 78% 0)}95%{opacity:.4;transform:translate(2px);clip-path:inset(30% 0 55% 0)}}.cpu-sub{margin-top:8px;font-family:var(--font-mono);font-size:clamp(13px,3.4vw,15px);letter-spacing:.42em;text-indent:.42em;color:var(--ink-dim)}.q-card{width:100%;margin-top:clamp(26px,5vw,36px);padding:clamp(18px,4.5vw,26px) clamp(14px,4vw,26px) clamp(20px,5vw,30px);border:1px solid rgba(247,212,71,.18);border-radius:var(--radius-md);background:#f7d44708}.q-tag{font-family:var(--font-mono);font-size:12px;letter-spacing:.18em;color:var(--gold)}.q-title{margin-top:10px;font-size:clamp(19px,5vw,23px);font-weight:650;color:var(--ink)}.q-hint{margin-top:8px;font-size:13.5px;color:var(--ink-dim)}.boxes{position:relative}.ghost-input{position:absolute;top:0;left:0;width:1px;height:1px;padding:0;border:0;opacity:0;font-size:16px;background:transparent;pointer-events:none}.words{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;column-gap:clamp(16px,5vw,30px);row-gap:14px;margin-top:clamp(20px,4vw,28px);cursor:text}.word{display:flex;gap:clamp(4px,1.5vw,8px)}.box{display:flex;align-items:center;justify-content:center;width:clamp(26px,7.4vw,42px);height:clamp(40px,10.5vw,54px);border-radius:10px;border:1.5px solid rgba(247,212,71,.28);background:#0b0c11a6;color:var(--gold);font-family:var(--font-mono);font-size:clamp(17px,4.6vw,23px);font-weight:700;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:border-color .16s ease,box-shadow .16s ease,transform .16s var(--spring),background-color .16s ease}.box.active{border-color:var(--gold);box-shadow:0 0 0 3px #f7d44729,0 4px 18px #f7d4471f;transform:translateY(-3px)}.box.active:not(.filled):after{content:"";width:2px;height:52%;background:var(--gold);animation:blink 1s steps(1) infinite}.box.filled{border-color:#f7d44780;background:#f7d4470f;animation:boxPop .28s var(--spring)}@keyframes boxPop{40%{transform:scale(1.12)}}.boxes.solved .box{pointer-events:none;border-color:var(--gold);background:#f7d44729;animation:solvePop .55s var(--spring) both;animation-delay:calc(var(--i) * 45ms)}@keyframes solvePop{40%{transform:translateY(-8px) scale(1.12);background:#f7d4474d}}.boxes.wrong .word{animation:shake .55s both}.boxes.wrong .box{pointer-events:none;border-color:#ff6b6bb3;color:var(--red)}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}.equation{font-family:var(--font-mono);font-weight:700;font-size:clamp(58px,17vw,96px);line-height:1;margin:clamp(18px,4vw,28px) 0 6px}.equation .base{color:var(--gold);text-shadow:0 0 30px rgba(247,212,71,.25)}.equation sup{font-size:.5em;line-height:0;color:var(--gold-pale)}.equation .qmark{color:var(--ink-dim);animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.party-1024{font-family:var(--font-display);font-weight:800;font-size:clamp(96px,26vw,160px);line-height:1;letter-spacing:.01em;background:linear-gradient(180deg,#fff3bf 0%,var(--gold) 45%,var(--gold-deep) 100%);background-clip:text;-webkit-background-clip:text;color:transparent;filter:drop-shadow(0 6px 30px rgba(247,212,71,.3));animation:heroBounce .8s var(--spring) both}@keyframes heroBounce{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.06)}}.party-title{margin-top:10px;font-size:clamp(18px,5.2vw,26px);font-weight:700;letter-spacing:.14em;text-indent:.14em;text-wrap:balance;animation:fadeUp .6s .25s var(--ease-out) both}.party-sub{margin-top:12px;font-family:var(--font-mono);font-size:13px;color:var(--ink-dim);animation:fadeUp .6s .4s var(--ease-out) both}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}}.stats{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:22px}.chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12.5px;color:var(--ink);border:1px solid var(--line);background:var(--surface-2);padding:8px 14px;border-radius:999px;animation:fadeUp .5s .55s var(--ease-out) both}.chip b{color:var(--gold);font-weight:700}.chip-gold{border-color:#f7d44773;color:var(--gold);background:var(--gold-soft)}.terminal{width:100%;margin-top:24px;text-align:left;background:#0d0e14;border:1px solid var(--line);border-radius:var(--radius-md);padding:16px 18px;font-family:var(--font-mono);font-size:13px;line-height:1.85;min-height:200px}.t-line{white-space:pre-wrap;word-break:break-word}.t-cmd{color:var(--ink)}.t-cmd:before{content:"$ ";color:var(--gold)}.t-out{color:var(--ink-dim)}.t-ok:before{content:"[OK] ";color:var(--gold)}.t-caret{display:inline-block;width:8px;height:15px;background:var(--gold);vertical-align:-2px;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.actions{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:26px}.btn{font-weight:700;font-size:15px;padding:13px 30px;min-height:48px;border-radius:11px;transition:transform .12s var(--spring),box-shadow .15s ease,background-color .15s ease}.btn-primary{background:var(--gold);color:#171409;box-shadow:0 8px 28px #f7d44740,inset 0 1px #ffffff59}.btn-primary:hover{box-shadow:0 10px 34px #f7d44759,inset 0 1px #ffffff59}.btn-primary:active{transform:translateY(1px) scale(.97);box-shadow:0 4px 16px #f7d44733}.btn-ghost{color:var(--gold);border:1px solid rgba(247,212,71,.4)}.btn-ghost:hover{background:#f7d44714}.btn-ghost:active{transform:scale(.97)}.footer{position:relative;z-index:1;margin-top:22px;font-family:var(--font-mono);font-size:11.5px;color:var(--ink-faint);text-align:center;letter-spacing:.06em}.footer b{color:var(--ink-dim);font-weight:500}.toast{position:fixed;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translate(-50%);z-index:10;font-family:var(--font-mono);font-size:13.5px;color:var(--ink);background:#171a24f2;border:1px solid rgba(247,212,71,.4);border-radius:10px;padding:11px 18px;box-shadow:0 12px 40px #00000073;max-width:min(88vw,480px);text-align:center;animation:toastIn .35s var(--spring) both}.toast.warn{border-color:#ff6b6b80}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,12px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
