@font-face{font-family:Fredoka;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/fredoka-latin.woff2) format("woff2")}:root{--bg: #1a1336;--surface: #271d4d;--surface-2: #322561;--border: #463877;--fg: #f4f1ff;--muted: #b6a9e0;--primary: #8b5cff;--primary-strong: #6f3df0;--on-primary: #ffffff;--secondary: #ff5d9e;--secondary-strong: #e83d83;--on-secondary: #ffffff;--success: #2fd6a6;--success-strong: #15b387;--on-success: #06251c;--warning: #ffcf3f;--warning-strong: #f0b400;--on-warning: #2a1c00;--danger: #ff5a6a;--danger-strong: #e8394e;--on-danger: #ffffff;--info: #45c2ff;--info-strong: #1ea3e6;--on-info: #04222e;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-sm: .625rem;--radius-md: 1rem;--radius-lg: 1.5rem;--radius-pill: 999px;--radius: var(--radius-md);--shadow-sm: 0 2px 6px rgba(0, 0, 0, .25);--shadow-md: 0 8px 20px rgba(0, 0, 0, .32);--shadow-lg: 0 18px 44px rgba(0, 0, 0, .42);--font-display: "Fredoka", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body: system-ui, -apple-system, "Segoe UI", "Noto Sans TC", Roboto, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-md: 1rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 2rem;--text-3xl: 2.75rem;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.22, 1, .36, 1);--dur-fast: .12s;--dur: .2s;--dur-slow: .36s;--max-width: 34rem;--z-overlay: 900;--z-modal: 1000;color-scheme:dark;font-family:var(--font-body);font-size:var(--text-md);line-height:1.5}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{margin:0;color:var(--fg);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:radial-gradient(1200px 620px at 50% -12%,rgba(139,92,255,.28),transparent 62%),radial-gradient(900px 520px at 100% 0%,rgba(255,93,158,.16),transparent 60%),var(--bg);background-attachment:fixed;-webkit-text-size-adjust:100%}.app{max-width:var(--max-width);margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-7)}.app>h1{font-family:var(--font-display);font-weight:700;font-size:var(--text-3xl);letter-spacing:.5px;margin:0 0 var(--space-5);text-align:center;background:linear-gradient(135deg,#ffd23f,#ff5d9e 45%,#8b5cff);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 0 rgba(0,0,0,.25))}h1,h2,h3{font-family:var(--font-display);line-height:1.2}h1{font-size:var(--text-2xl);margin:0 0 var(--space-4)}a{color:var(--info)}button{font:inherit;font-weight:600;min-height:2.75rem;padding:var(--space-3) var(--space-5);border:none;border-radius:var(--radius-md);background:var(--primary);color:var(--on-primary);box-shadow:0 4px 0 var(--primary-strong);cursor:pointer;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),filter var(--dur-fast) var(--ease-out)}button:hover:not(:disabled){filter:brightness(1.06)}button:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--primary-strong)}button:focus-visible{outline:3px solid var(--info);outline-offset:2px}button:disabled{opacity:.45;box-shadow:none;cursor:not-allowed}input:not([type=checkbox]):not([type=radio]),select,textarea{font:inherit;min-height:2.75rem;padding:var(--space-2) var(--space-3);border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--fg);font-size:16px}input[type=checkbox],input[type=radio]{accent-color:var(--primary);width:1.15rem;height:1.15rem;cursor:pointer}input,textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);text-align:center}.btn--sm{min-height:2rem;padding:var(--space-1) var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-md)}.btn--lg{min-height:3.25rem;padding:var(--space-4) var(--space-6);font-size:var(--text-lg);border-radius:var(--radius-lg)}.btn--block{display:flex;width:100%}.btn--primary{background:var(--primary);color:var(--on-primary);box-shadow:0 4px 0 var(--primary-strong)}.btn--primary:active:not(:disabled){box-shadow:0 1px 0 var(--primary-strong)}.btn--secondary{background:var(--secondary);color:var(--on-secondary);box-shadow:0 4px 0 var(--secondary-strong)}.btn--secondary:active:not(:disabled){box-shadow:0 1px 0 var(--secondary-strong)}.btn--danger{background:var(--danger);color:var(--on-danger);box-shadow:0 4px 0 var(--danger-strong)}.btn--danger:active:not(:disabled){box-shadow:0 1px 0 var(--danger-strong)}.btn--ghost{background:transparent;color:var(--fg);border:2px solid var(--border);box-shadow:none}.btn--ghost:hover:not(:disabled){border-color:var(--primary);filter:none}.btn--ghost:active:not(:disabled){transform:translateY(1px);box-shadow:none}.card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);padding:var(--space-4) var(--space-5);box-shadow:var(--shadow-sm)}.card--elevated{background:var(--surface-2);box-shadow:var(--shadow-md)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:.15rem var(--space-3);border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:600;line-height:1.6;background:var(--surface-2);color:var(--fg)}.badge--primary{background:var(--primary);color:var(--on-primary)}.badge--secondary{background:var(--secondary);color:var(--on-secondary)}.badge--success{background:var(--success);color:var(--on-success)}.badge--warning{background:var(--warning);color:var(--on-warning)}.badge--danger{background:var(--danger);color:var(--on-danger)}.badge--muted{background:var(--surface-2);color:var(--muted)}.banner{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border-left:4px solid var(--primary);background:color-mix(in srgb,var(--primary) 14%,var(--surface))}.banner--info{border-left-color:var(--info);background:color-mix(in srgb,var(--info) 14%,var(--surface))}.banner--success{border-left-color:var(--success);background:color-mix(in srgb,var(--success) 14%,var(--surface))}.banner--warning{border-left-color:var(--warning);background:color-mix(in srgb,var(--warning) 16%,var(--surface))}.banner--danger{border-left-color:var(--danger);background:color-mix(in srgb,var(--danger) 16%,var(--surface))}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:#00000080}.modal-card{display:flex;flex-direction:column;width:100%;max-width:26rem;max-height:85vh;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.modal-body{padding:var(--space-4) var(--space-5);overflow-y:auto}.modal-footer{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-top:1px solid var(--border)}.modal-close{min-height:auto;padding:var(--space-1) var(--space-2);background:transparent;color:var(--muted);border:none;box-shadow:none;font-size:var(--text-lg);line-height:1}.modal-close:hover:not(:disabled){color:var(--fg);filter:none}.modal-close:active:not(:disabled){transform:none;box-shadow:none}.setting-section+.setting-section{margin-top:var(--space-5)}.setting-section>h4{margin:0 0 var(--space-1);font-family:var(--font-display);font-size:var(--text-sm);color:var(--muted)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-width:0;padding:var(--space-2) 0}.setting-row>.setting-label{flex:1 1 auto;min-width:0}.setting-row>.setting-control{display:flex;flex:0 0 auto;align-items:center;gap:var(--space-2);min-width:0}.setting-control select,.setting-control input[type=number]{min-height:2.25rem;min-width:0}.setting-control select{max-width:10rem}.setting-control input[type=number]{width:4.5rem}.setting-desc{margin:0 0 var(--space-1);font-size:var(--text-xs)}.muted{color:var(--muted)}.danger{color:var(--danger)}.masked-input{-webkit-text-security:disc;text-security:disc}@media(prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
