:root{--ink-900:#0d1726;--ink-800:#1b2940;--ink-700:#2e3e58;--ink-600:#475569;--ink-500:#64748b;--ink-400:#94a3b8;--ink-300:#cbd5e1;--ink-200:#e2e8f0;--ink-150:#eaeef4;--ink-100:#f1f5f9;--ink-50:#f7f9fc;--paper:#ffffff;--navy-900:#0b2545;--navy-800:#103258;--navy-700:#16456f;--brand-600:#1f6fb2;--brand-500:#2b86cf;--brand-100:#dbecf8;--brand-50:#eef6fc;--ok-700:#15683f;--ok-600:#1c8a52;--ok-100:#dcf3e7;--ok-50:#eefaf3;--bad-700:#9f1f2e;--bad-600:#c5283b;--bad-100:#fbe1e4;--bad-50:#fdf0f1;--star-600:#cc8410;--star-500:#e6a428;--star-100:#fcefd2;--r-xs:6px;--r-sm:9px;--r-md:13px;--r-lg:18px;--r-xl:26px;--gap:24px;--maxw:1180px;--sh-1:0 1px 2px rgba(13,23,38,.05), 0 1px 1px rgba(13,23,38,.04);--sh-2:0 2px 6px rgba(13,23,38,.06), 0 1px 2px rgba(13,23,38,.05);--sh-3:0 12px 30px -12px rgba(13,23,38,.22), 0 4px 10px -6px rgba(13,23,38,.12);--sh-pop:0 24px 60px -20px rgba(11,37,69,.4);--font:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;--mono:"DM Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);color:var(--ink-800);background:var(--ink-100);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.6}#root{min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea{font-family:inherit}::selection{background:var(--brand-100)}.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.mono{font-family:var(--mono)}:focus-visible{outline:3px solid color-mix(in oklab,var(--brand-500),white 35%);outline-offset:2px}*::-webkit-scrollbar{width:11px;height:11px}*::-webkit-scrollbar-thumb{background:var(--ink-300);border-radius:99px;border:3px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:var(--ink-400);background-clip:content-box}.shell{max-width:var(--maxw);margin:0 auto;padding:0 28px}.card{background:var(--paper);border:1px solid var(--ink-200);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.fade-in{animation:slidein .35s cubic-bezier(.2,.7,.3,1) both}@keyframes slidein{0%{transform:translateY(9px)}to{transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.tag{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;padding:4px 10px;border-radius:999px;line-height:1;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:700;font-size:15px;border-radius:var(--r-sm);padding:12px 20px;transition:transform .08s ease,background .15s ease,box-shadow .15s ease,border-color .15s;border:1px solid transparent;white-space:nowrap}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--brand-600);color:#fff;box-shadow:var(--sh-2)}.btn-primary:hover{background:var(--brand-500)}.btn-dark{background:var(--navy-800);color:#fff}.btn-dark:hover{background:var(--navy-700)}.btn-ghost{background:var(--paper);color:var(--ink-700);border-color:var(--ink-200);box-shadow:var(--sh-1)}.btn-ghost:hover{border-color:var(--ink-300);background:var(--ink-50)}.btn-quiet{background:transparent;color:var(--ink-600);padding:10px 14px}.btn-quiet:hover{background:var(--ink-100);color:var(--ink-800)}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn-lg{padding:15px 26px;font-size:16px}
