:root{--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-8: 48px;--radius: 8px;--radius-sm: 5px;--fs-xs: .78rem;--fs-sm: .86rem;--fs-md: .95rem;--fs-lg: 1.15rem;--fs-xl: 1.5rem;--font-weight-medium: 550;--font-weight-bold: 680;--c-bg: #f5f6f8;--c-surface: #ffffff;--c-surface-2: #f0f2f5;--c-border: #d5d9e0;--c-border-strong: #b7bec9;--c-text: #1a2230;--c-text-muted: #5a6472;--c-text-faint: #7a8494;--c-accent: #1f5fbf;--c-accent-hover: #1a4f9e;--c-accent-contrast: #ffffff;--c-focus: #1f5fbf;--c-warn-bg: #fdf3e0;--c-warn-fg: #8a5a00;--c-warn-border: #e6b769;--c-danger-bg: #fdeaea;--c-danger-fg: #a11b1b;--c-danger-border: #e8a3a3;--c-ok-bg: #e6f4ea;--c-ok-fg: #1c6b34;--c-ok-border: #93cba7;--c-info-bg: #e8eefb;--c-info-fg: #2151a6;--c-info-border: #a9c1ee;--c-neutral-bg: #eceef2;--c-neutral-fg: #495260;--c-neutral-border: #cdd3dc;--shadow-1: 0 1px 2px rgba(20, 28, 45, .08), 0 1px 3px rgba(20, 28, 45, .06);--shadow-2: 0 6px 24px rgba(20, 28, 45, .16);--skeleton: linear-gradient(90deg, #e8eaee 25%, #f2f3f6 37%, #e8eaee 63%)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--c-bg: #10141b;--c-surface: #1a1f29;--c-surface-2: #222833;--c-border: #2f3743;--c-border-strong: #414b59;--c-text: #e7ebf1;--c-text-muted: #a3adbb;--c-text-faint: #7e8896;--c-accent: #6ba1f0;--c-accent-hover: #86b4f4;--c-accent-contrast: #0c1017;--c-focus: #86b4f4;--c-warn-bg: #3a2c12;--c-warn-fg: #f2c579;--c-warn-border: #6b5015;--c-danger-bg: #3a1c1c;--c-danger-fg: #f19a9a;--c-danger-border: #6e2b2b;--c-ok-bg: #16311f;--c-ok-fg: #8ed6a4;--c-ok-border: #2c5c3b;--c-info-bg: #17273f;--c-info-fg: #9dc0f2;--c-info-border: #2c456b;--c-neutral-bg: #262c37;--c-neutral-fg: #b7c0cd;--c-neutral-border: #3a4350;--shadow-1: 0 1px 2px rgba(0, 0, 0, .4);--shadow-2: 0 8px 30px rgba(0, 0, 0, .55);--skeleton: linear-gradient(90deg, #232a35 25%, #2c333f 37%, #232a35 63%)}}:root[data-theme=dark]{--c-bg: #10141b;--c-surface: #1a1f29;--c-surface-2: #222833;--c-border: #2f3743;--c-border-strong: #414b59;--c-text: #e7ebf1;--c-text-muted: #a3adbb;--c-text-faint: #7e8896;--c-accent: #6ba1f0;--c-accent-hover: #86b4f4;--c-accent-contrast: #0c1017;--c-focus: #86b4f4;--c-warn-bg: #3a2c12;--c-warn-fg: #f2c579;--c-warn-border: #6b5015;--c-danger-bg: #3a1c1c;--c-danger-fg: #f19a9a;--c-danger-border: #6e2b2b;--c-ok-bg: #16311f;--c-ok-fg: #8ed6a4;--c-ok-border: #2c5c3b;--c-info-bg: #17273f;--c-info-fg: #9dc0f2;--c-info-border: #2c456b;--c-neutral-bg: #262c37;--c-neutral-fg: #b7c0cd;--c-neutral-border: #3a4350;--shadow-1: 0 1px 2px rgba(0, 0, 0, .4);--shadow-2: 0 8px 30px rgba(0, 0, 0, .55);--skeleton: linear-gradient(90deg, #232a35 25%, #2c333f 37%, #232a35 63%)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-md);line-height:1.5;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,p,ul{margin:0}a{color:var(--c-accent)}:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px;border-radius:3px}button{font:inherit;cursor:pointer}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap}.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}@media (max-width: 720px){.app-shell{grid-template-columns:1fr}}.sidebar{background:var(--c-surface);border-right:1px solid var(--c-border);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.brand{font-weight:var(--font-weight-bold);font-size:var(--fs-sm);color:var(--c-text-muted);padding:var(--space-2) var(--space-2) var(--space-3);line-height:1.3}.brand strong{display:block;color:var(--c-text);font-size:var(--fs-md)}.nav{display:flex;flex-direction:column;gap:2px}.nav-sep{height:1px;background:var(--c-border);margin:var(--space-2) var(--space-1)}.nav a{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--c-text);text-decoration:none;font-weight:var(--font-weight-medium)}.nav a:hover{background:var(--c-surface-2)}.nav a.active{background:var(--c-info-bg);color:var(--c-info-fg)}.nav a .nav-label{display:flex;align-items:center;gap:var(--space-2)}.sidebar-footer{margin-top:auto;padding-top:var(--space-3);border-top:1px solid var(--c-border);font-size:var(--fs-xs);color:var(--c-text-muted);display:flex;flex-direction:column;gap:var(--space-2)}.sidebar-footer .signed-in{word-break:break-all}.main{padding:var(--space-6);max-width:960px;width:100%}@media (max-width: 720px){.main{padding:var(--space-4)}}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-header h1{font-size:var(--fs-xl)}.page-header .sub{color:var(--c-text-muted);font-size:var(--fs-sm);margin-top:var(--space-1)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--c-border-strong);background:var(--c-surface);color:var(--c-text);font-weight:var(--font-weight-medium);font-size:var(--fs-sm);white-space:nowrap}.btn:hover:not(:disabled){background:var(--c-surface-2)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-accent-contrast)}.btn-primary:hover:not(:disabled){background:var(--c-accent-hover)}.btn-danger{background:var(--c-danger-bg);border-color:var(--c-danger-border);color:var(--c-danger-fg)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--fs-xs)}.btn-link{border:none;background:none;color:var(--c-accent);padding:var(--space-1) var(--space-2);text-decoration:underline}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:var(--space-4)}.card+.card{margin-top:var(--space-3)}.section{margin-bottom:var(--space-6)}.section-title{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--c-text-muted);font-weight:var(--font-weight-bold);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.stack{display:flex;flex-direction:column;gap:var(--space-3)}.row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--c-text-muted)}.faint{color:var(--c-text-faint);font-size:var(--fs-xs)}.mono{font-family:var(--font-mono);font-size:.9em}.item-card{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface)}.item-card+.item-card{margin-top:var(--space-2)}.item-card .icon{flex-shrink:0;margin-top:2px}.item-card .body{flex:1;min-width:0}.item-card .title{font-weight:var(--font-weight-medium)}.item-card .meta{color:var(--c-text-muted);font-size:var(--fs-sm);margin-top:2px}.item-card .actions{display:flex;gap:var(--space-2);align-items:center;flex-shrink:0;flex-wrap:wrap}.blocker-line{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-sm);margin-top:var(--space-2)}.chip{display:inline-flex;align-items:center;gap:5px;padding:2px var(--space-2);border-radius:999px;font-size:var(--fs-xs);font-weight:var(--font-weight-medium);border:1px solid transparent;white-space:nowrap}.chip-warn{background:var(--c-warn-bg);color:var(--c-warn-fg);border-color:var(--c-warn-border)}.chip-danger{background:var(--c-danger-bg);color:var(--c-danger-fg);border-color:var(--c-danger-border)}.chip-ok{background:var(--c-ok-bg);color:var(--c-ok-fg);border-color:var(--c-ok-border)}.chip-info{background:var(--c-info-bg);color:var(--c-info-fg);border-color:var(--c-info-border)}.chip-neutral{background:var(--c-neutral-bg);color:var(--c-neutral-fg);border-color:var(--c-neutral-border)}.count-badge{display:inline-flex;min-width:20px;height:20px;padding:0 6px;align-items:center;justify-content:center;border-radius:999px;background:var(--c-neutral-bg);color:var(--c-neutral-fg);font-size:var(--fs-xs);font-weight:var(--font-weight-bold)}.count-badge.alert{background:var(--c-warn-bg);color:var(--c-warn-fg)}.count-badge.bang{background:var(--c-danger-bg);color:var(--c-danger-fg)}label{font-weight:var(--font-weight-medium);font-size:var(--fs-sm)}.field{display:flex;flex-direction:column;gap:var(--space-1)}.input,select{font:inherit;font-size:var(--fs-sm);padding:var(--space-2) var(--space-3);border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text)}.field-error{color:var(--c-danger-fg);font-size:var(--fs-xs);display:flex;align-items:center;gap:4px}.field-hint{color:var(--c-text-muted);font-size:var(--fs-xs)}.money-input{display:inline-flex;align-items:stretch;border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);overflow:hidden;max-width:140px}.money-input:focus-within{outline:2px solid var(--c-focus);outline-offset:1px}.money-input .adornment{display:flex;align-items:center;padding:0 var(--space-2);background:var(--c-surface-2);border-right:1px solid var(--c-border);color:var(--c-text-muted);font-weight:var(--font-weight-medium);-webkit-user-select:none;user-select:none}.money-input input{border:none;outline:none;background:transparent;color:var(--c-text);font:inherit;font-size:var(--fs-sm);padding:var(--space-2) var(--space-3);width:100%;text-align:right}.money-input.invalid{border-color:var(--c-danger-border)}.combobox{position:relative}.combobox .cb-input{width:100%;font:inherit;font-size:var(--fs-sm);padding:var(--space-2) var(--space-3);border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text)}.combobox .cb-list{position:absolute;z-index:20;top:calc(100% + 2px);left:0;right:0;max-height:260px;overflow-y:auto;background:var(--c-surface);border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-2);padding:var(--space-1);margin:0;list-style:none}.combobox .cb-option{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-sm)}.combobox .cb-option[aria-selected=true],.combobox .cb-option.active{background:var(--c-info-bg);color:var(--c-info-fg)}.combobox .cb-option[aria-disabled=true]{color:var(--c-text-muted);cursor:not-allowed;opacity:.6}.combobox .cb-empty{padding:var(--space-3);color:var(--c-text-muted);font-size:var(--fs-sm)}.type-badge{font-size:.7rem;padding:1px 5px;border-radius:4px;background:var(--c-neutral-bg);color:var(--c-neutral-fg);font-weight:var(--font-weight-bold);letter-spacing:.03em}.cb-code{color:var(--c-text-muted);font-family:var(--font-mono);font-size:.85em}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}table.data th,table.data td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--c-border)}table.data th{color:var(--c-text-muted);font-weight:var(--font-weight-bold);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}.skeleton-row{height:44px;border-radius:var(--radius-sm);background:var(--skeleton);background-size:400% 100%;animation:shimmer 1.4s ease infinite;margin-bottom:var(--space-2)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spin,.skeleton-row{animation:none}}.error-card{border:1px solid var(--c-danger-border);background:var(--c-danger-bg);color:var(--c-danger-fg);border-radius:var(--radius);padding:var(--space-4);display:flex;gap:var(--space-3);align-items:flex-start}.error-card .body{flex:1}.empty-state{text-align:center;padding:var(--space-8) var(--space-4);color:var(--c-text-muted)}.empty-state .big{font-size:2rem;margin-bottom:var(--space-2)}.all-clear{border:1px solid var(--c-ok-border);background:var(--c-ok-bg);color:var(--c-ok-fg);border-radius:var(--radius);padding:var(--space-4);display:flex;gap:var(--space-3);align-items:flex-start}.toast-line{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--c-ok-fg);font-size:var(--fs-sm)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e1480;display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:100}.dialog{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-2);max-width:520px;width:100%;padding:var(--space-5)}.dialog h2{font-size:var(--fs-lg);margin-bottom:var(--space-3)}.dialog .dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5)}.dialog .change-row{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--c-border);font-size:var(--fs-sm);flex-wrap:wrap}.callout{border-left:3px solid var(--c-warn-border);background:var(--c-warn-bg);color:var(--c-warn-fg);padding:var(--space-3);border-radius:var(--radius-sm);font-size:var(--fs-sm);margin:var(--space-3) 0}.callout.info{border-left-color:var(--c-info-border);background:var(--c-info-bg);color:var(--c-info-fg)}.split-preview{background:var(--c-surface-2);border-radius:var(--radius-sm);padding:var(--space-3);font-size:var(--fs-sm)}.split-preview .slice{display:inline-flex;gap:6px;margin-right:var(--space-3)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.login-card{max-width:380px;text-align:center}.login-card h1{font-size:var(--fs-lg);margin-bottom:var(--space-2)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e1466;z-index:90;display:flex;justify-content:flex-end}.drawer{width:min(460px,100%);height:100%;background:var(--c-surface);border-left:1px solid var(--c-border);box-shadow:var(--shadow-2);padding:var(--space-5);overflow-y:auto}.drawer dl{margin:0;display:grid;grid-template-columns:max-content 1fr;gap:var(--space-2) var(--space-4);font-size:var(--fs-sm)}.drawer dt{color:var(--c-text-muted)}.drawer dd{margin:0}
