:root{--bg:#0b1020;--grid:#8a94b30d;--panel:#131a2e;--panel-2:#1a2340;--panel-3:#0e1426;--line:#8a94b333;--line-strong:#8a94b361;--text:#e8ecf7;--muted:#8a94b3;--amber:#f5b544;--amber-soft:#f5b54424;--teal:#3dd6c6;--teal-soft:#3dd6c624;--danger:#ff5d6c;--danger-soft:#ff5d6c29;--team-1:#ff7a6b;--team-2:#5aa9ff;--team-3:#4fd18b;--team-4:#b48cff;--font-ui:-apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Roboto Mono", monospace;--radius-lg:16px;--radius:12px;--radius-sm:8px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--touch:44px;--shadow:inset 0 1px 0 #ffffff0a, 0 10px 28px #00000059;--glow-amber:0 0 0 1px #f5b54459, 0 0 22px #f5b5442e;--ease:cubic-bezier(.2, .7, .2, 1)}*,:before,:after{box-sizing:border-box}html,body,#app{margin:0}html{-webkit-text-size-adjust:100%;background:var(--bg)}body{min-height:100vh;background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);min-height:100dvh;color:var(--text);font:15px/1.5 var(--font-ui);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;background-size:24px 24px;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background:repeating-linear-gradient(0deg,#ffffff05 0 1px,#0000 1px 3px);position:fixed;inset:0}#app{z-index:1;min-height:100vh;min-height:100dvh;position:relative}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}.page{max-width:480px;padding:calc(var(--s4) + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(var(--s8) + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));gap:var(--s4);flex-direction:column;margin:0 auto;display:flex}.panel{background:linear-gradient(180deg, var(--panel-2), var(--panel));border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--s4)}.eyebrow{font:600 11px/1.2 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.muted{color:var(--muted)}.hint{color:var(--muted);font-size:13px}.mono{font-family:var(--font-mono)}.row{justify-content:space-between;align-items:center;gap:var(--s3);display:flex}.btn{min-height:var(--touch);padding:0 var(--s4);border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--panel-2);letter-spacing:.02em;justify-content:center;align-items:center;gap:var(--s2);transition:transform .12s var(--ease), background-color .2s, border-color .2s, opacity .2s;font-weight:600;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)scale(.99)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{color:#1a1407;background:linear-gradient(#ffc65e,#f5b544);border-color:#0000;box-shadow:0 6px 18px #f5b54440}.btn-ghost{background:0 0}.btn-danger{color:var(--danger);background:var(--danger-soft);border-color:#ff5d6c80}.btn-teal{color:#052320;background:linear-gradient(#5fe3d5,#3dd6c6);border-color:#0000}.btn-block{width:100%}.btn-sm{padding:0 var(--s3);font-size:14px}.icon-btn{width:var(--touch);height:var(--touch);border:1px solid var(--line);background:var(--panel-2);color:var(--text);border-radius:50%;flex:none;place-items:center;font-size:20px;line-height:1;display:inline-grid}.input{width:100%;min-height:var(--touch);padding:0 var(--s3);border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--panel-3);color:var(--text);outline:none;font-size:16px;transition:border-color .2s,box-shadow .2s}.input:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}.input::placeholder{color:#5d6786}.sep{background:var(--line);height:1px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}@keyframes flip{0%{opacity:0;transform:rotateX(-90deg)}to{opacity:1;transform:rotateX(0)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes flash-red{0%{background-color:#ff5d6c73}to{background-color:#0000}}@keyframes dot-blink{0%,20%{opacity:.2}50%{opacity:1}to{opacity:.2}}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
