:root{--ds-neutral-0: #ffffff;--ds-neutral-10: #f2f1ec;--ds-neutral-50: #f6f5f1;--ds-neutral-100: #f0efeb;--ds-neutral-200: #e4e2da;--ds-neutral-300: #b9b8b0;--ds-neutral-400: #8a8880;--ds-neutral-450: #85847d;--ds-neutral-500: #5f5e5a;--ds-neutral-600: #4a4945;--ds-neutral-700: #2a2a28;--ds-neutral-800: #1f1f1e;--ds-neutral-900: #1a1a19;--ds-neutral-950: #161615;--ds-blue-100: #e6f1fb;--ds-blue-400: #5b9be0;--ds-blue-500: #2a78d6;--ds-blue-900: #12304f;--ds-green-100: #e4f4ea;--ds-green-400: #3fbf7f;--ds-green-500: #0f8a4c;--ds-green-900: #10321f;--ds-red-100: #fceaea;--ds-red-400: #e57373;--ds-red-500: #cf3535;--ds-red-900: #3a1717;--ds-amber-100: #faf0d8;--ds-amber-400: #d9a94a;--ds-amber-500: #9a6a08;--ds-amber-900: #3a2d0e;--ds-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ds-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;--ds-text-xs: 12px;--ds-text-sm: 13px;--ds-text-base: 15px;--ds-text-lg: 17px;--ds-text-xl: 21px;--ds-space-1: 4px;--ds-space-2: 8px;--ds-space-3: 12px;--ds-space-4: 16px;--ds-space-5: 24px;--ds-space-6: 32px;--ds-radius-sm: 8px;--ds-radius: 10px;--ds-radius-lg: 12px;--ds-radius-pill: 999px;--bg: var(--ds-neutral-50);--surface: var(--ds-neutral-0);--surface-2: var(--ds-neutral-100);--text: var(--ds-neutral-900);--text-2: var(--ds-neutral-500);--text-3: var(--ds-neutral-400);--border: rgba(20, 20, 18, .12);--accent: var(--ds-blue-500);--accent-bg: var(--ds-blue-100);--green: var(--ds-green-500);--green-bg: var(--ds-green-100);--red: var(--ds-red-500);--red-bg: var(--ds-red-100);--amber: var(--ds-amber-500);--amber-bg: var(--ds-amber-100);--radius: var(--ds-radius);--font-sans: var(--ds-font-sans);--font-mono: var(--ds-font-mono)}[data-theme=dark]{--bg: var(--ds-neutral-950);--surface: var(--ds-neutral-800);--surface-2: var(--ds-neutral-700);--text: var(--ds-neutral-10);--text-2: var(--ds-neutral-300);--text-3: var(--ds-neutral-450);--border: rgba(255, 255, 255, .12);--accent: var(--ds-blue-400);--accent-bg: var(--ds-blue-900);--green: var(--ds-green-400);--green-bg: var(--ds-green-900);--red: var(--ds-red-400);--red-bg: var(--ds-red-900);--amber: var(--ds-amber-400);--amber-bg: var(--ds-amber-900)}@media (prefers-color-scheme: dark){:root:not([data-theme]){--bg: var(--ds-neutral-950);--surface: var(--ds-neutral-800);--surface-2: var(--ds-neutral-700);--text: var(--ds-neutral-10);--text-2: var(--ds-neutral-300);--text-3: var(--ds-neutral-450);--border: rgba(255, 255, 255, .12);--accent: var(--ds-blue-400);--accent-bg: var(--ds-blue-900);--green: var(--ds-green-400);--green-bg: var(--ds-green-900);--red: var(--ds-red-400);--red-bg: var(--ds-red-900);--amber: var(--ds-amber-400);--amber-bg: var(--ds-amber-900)}}.ds-root{font-family:var(--font-sans);color:var(--text);background:var(--bg);font-size:var(--ds-text-base);line-height:1.5}.ds-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--ds-radius-lg);padding:var(--ds-space-4) var(--ds-space-5)}.ds-btn{font:inherit;font-size:var(--ds-text-sm);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--ds-radius-sm);padding:var(--ds-space-2) var(--ds-space-4);cursor:pointer;transition:background .12s ease,transform .05s ease}.ds-btn:hover{background:var(--surface-2)}.ds-btn:active{transform:scale(.98)}.ds-btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.ds-btn--primary:hover{filter:brightness(1.08);background:var(--accent)}.ds-btn--danger{color:var(--red);border-color:var(--red)}.ds-btn--danger:hover{background:var(--red-bg)}.ds-badge{display:inline-block;padding:2px var(--ds-space-2);border-radius:var(--ds-radius-pill);font-size:11px;font-weight:600;background:var(--surface-2);color:var(--text-2)}.ds-badge--accent{background:var(--accent-bg);color:var(--accent)}.ds-badge--success{background:var(--green-bg);color:var(--green)}.ds-badge--danger{background:var(--red-bg);color:var(--red)}.ds-badge--warning{background:var(--amber-bg);color:var(--amber)}.ds-metric{background:var(--surface);border:1px solid var(--border);border-radius:var(--ds-radius-lg);padding:var(--ds-space-3) var(--ds-space-4)}.ds-metric__label{font-size:var(--ds-text-xs);color:var(--text-3)}.ds-metric__value{font-size:var(--ds-text-xl);font-weight:650;font-variant-numeric:tabular-nums;margin-top:2px}.ds-metric__sub{font-size:var(--ds-text-xs);color:var(--text-2)}.ds-metric__value.is-pos{color:var(--green)}.ds-metric__value.is-neg{color:var(--red)}.ds-input,.ds-select,.ds-textarea{font:inherit;font-size:var(--ds-text-sm);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--ds-radius-sm);padding:var(--ds-space-2) var(--ds-space-3);outline:none}.ds-input:focus,.ds-select:focus,.ds-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.ds-table{width:100%;border-collapse:collapse;font-size:var(--ds-text-sm)}.ds-table th{font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);text-align:left;padding:var(--ds-space-2) var(--ds-space-3);border-bottom:1px solid var(--border)}.ds-table td{padding:var(--ds-space-2) var(--ds-space-3);border-bottom:1px solid var(--border)}.ds-table tbody tr:last-child td{border-bottom:none}.ds-table tbody tr:hover{background:var(--surface-2)}.ds-table .is-num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.ds-theme-switch{display:inline-flex;gap:2px;padding:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--ds-radius-pill)}.ds-theme-switch button{margin:0;padding:4px 10px;font:inherit;font-size:12.5px;line-height:1;border:none;border-radius:var(--ds-radius-pill);background:transparent;color:var(--text-2);cursor:pointer}.ds-theme-switch button:hover{color:var(--text)}.ds-theme-switch button.is-active{background:var(--surface);color:var(--accent);font-weight:600}.ds-text-pos{color:var(--green)}.ds-text-neg{color:var(--red)}.ds-text-muted{color:var(--text-2)}.ds-text-hint{color:var(--text-3);font-size:var(--ds-text-xs)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}#root{min-height:100dvh}button{font:inherit}.app-shell{display:flex;flex-direction:column;min-height:100dvh}.app-topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);padding:calc(var(--ds-space-3) + env(safe-area-inset-top)) var(--ds-space-4) var(--ds-space-3);background:var(--surface);border-bottom:1px solid var(--border)}.app-topbar h1{font-size:var(--ds-text-lg);margin:0}.app-topbar__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--ds-radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer}.app-main{flex:1;overflow-y:auto;padding:var(--ds-space-4);padding-bottom:calc(88px + env(safe-area-inset-bottom));max-width:640px;width:100%;margin:0 auto}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--ds-space-2) var(--ds-space-1);min-height:56px;border:none;background:transparent;color:var(--text-3);cursor:pointer}.bottom-nav__tab.is-active{color:var(--accent)}.bottom-nav__icon{font-size:20px;line-height:1}.bottom-nav__label{font-size:11px;font-weight:600}.stack{display:flex;flex-direction:column;gap:var(--ds-space-3)}.chip-row{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text-2);border-radius:var(--ds-radius-pill);padding:4px var(--ds-space-3);font-size:var(--ds-text-sm);cursor:pointer}.chip.is-active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent);font-weight:600}.rule-text p{margin:0 0 var(--ds-space-2);color:var(--text-2);line-height:1.5}.rule-text p:last-child{margin-bottom:0}.page-title{font-size:var(--ds-text-xl);margin:0 0 var(--ds-space-4)}.empty-state{color:var(--text-3);text-align:center;padding:var(--ds-space-6) 0}
