:root,[data-theme=light]{--bg:#eef2f7;--bg-accent:#e3ebf5;--surface:#fff;--surface-muted:#f4f7fb;--text:#102033;--text-muted:#4a5d75;--border:#cfd9e6;--primary:#0a628a;--primary-strong:#084e6e;--primary-fg:#fff;--teal:#0c7a6c;--success:#1a6b42;--warning:#a85a10;--danger:#b13227;--shadow:0 1px 2px #10203314;--nav:#0f2942;--nav-text:#f2f6fb;--nav-muted:#b7c6d8;--nav-hover:#ffffff1a;--nav-border:#f2f6fb47;--badge-bg:#fff4e5;--badge-text:#8a4b00;--badge-border:#f0d2a0;--radius:12px;--font:"Manrope", "Segoe UI", sans-serif}[data-theme=dark]{--bg:#0d1522;--bg-accent:#121c2c;--surface:#162235;--surface-muted:#1b2a40;--text:#eef3f9;--text-muted:#a8b8cb;--border:#334861;--primary:#157ea8;--primary-strong:#1f94c2;--primary-fg:#fff;--teal:#2ea897;--success:#4caf7a;--warning:#e0a04a;--danger:#ef857a;--shadow:none;--nav:#0a121d;--nav-text:#eef3f9;--nav-muted:#9eb0c5;--nav-hover:#ffffff1a;--nav-border:#eef3f947;--badge-bg:#3a2a12;--badge-text:#f0c888;--badge-border:#6a5124;--radius:12px;--font:"Manrope", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font);color:var(--text);background:radial-gradient(1200px 500px at 10% -10%, var(--bg-accent), transparent 55%), linear-gradient(180deg, var(--bg), var(--bg-accent));margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}button:disabled{cursor:not-allowed}.app-shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}@media (width<=900px){.app-shell{grid-template-columns:1fr}}.sidebar{background:var(--nav);color:var(--nav-text);flex-direction:column;gap:1.5rem;padding:1.25rem 1rem;display:flex}.brand{flex-direction:column;gap:.2rem;display:flex}.brand strong{letter-spacing:.02em;color:var(--nav-text);font-size:1.25rem}.brand span{color:var(--nav-muted);font-size:.85rem}.nav-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.nav-item{width:100%;color:var(--nav-muted);text-align:left;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;gap:.5rem;padding:.55rem .75rem;display:flex}a.nav-item{color:var(--nav-text);cursor:pointer}a.nav-item:hover,a.nav-item.active{background:var(--nav-hover);color:#fff}.nav-item--soon{opacity:1;border:1px dashed var(--nav-border);color:var(--nav-muted);background:#ffffff08}.nav-item--soon .nav-item-label{color:var(--nav-muted)}.nav-badge{letter-spacing:.01em;background:var(--badge-bg);color:var(--badge-text);border:1px solid var(--badge-border);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:.2rem .4rem;font-size:.68rem;font-weight:600;line-height:1.2}.sidebar-actions{gap:.5rem;margin-top:auto;display:grid}.main{color:var(--text);padding:1.25rem 1.5rem 2rem}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text)}.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;display:grid}@media (width<=900px){.kpi-grid{grid-template-columns:1fr 1fr}.sidebar{padding:.85rem 1rem 1rem}.nav-list{flex-direction:row;gap:.5rem;padding-bottom:.15rem;overflow-x:auto}.nav-item{min-width:max-content}.nav-item--soon{flex-direction:column;align-items:flex-start;gap:.35rem}.sidebar-actions{grid-template-columns:1fr 1fr;margin-top:.5rem}}@media (width<=560px){.kpi-grid{grid-template-columns:1fr}.main{padding:1rem 1rem 1.5rem}.sidebar-actions{grid-template-columns:1fr}.fines-dash-split{grid-template-columns:1fr!important}}.kpi-card{cursor:pointer;text-align:left;width:100%;color:var(--text);background:var(--surface);padding:1rem;transition:transform .16s,border-color .16s}.kpi-card:hover{border-color:var(--primary);transform:translateY(-2px)}.kpi-card .label{color:var(--text-muted);margin-bottom:.35rem;font-size:.85rem}.kpi-card .value{color:var(--text);font-size:1.45rem;font-weight:700}.kpi-card .hint{color:var(--text-muted);margin-top:.35rem;font-size:.8rem}.section-title{color:var(--text);margin:1.5rem 0 .75rem;font-size:1.05rem}.alerts{flex-direction:column;gap:.6rem;display:flex}.alert{border-left:3px solid var(--primary);color:var(--text);padding:.85rem 1rem}.alert.warning{border-left-color:var(--warning)}.alert.info{border-left-color:var(--teal)}.btn{background:var(--primary);color:var(--primary-fg);cursor:pointer;border:0;border-radius:8px;padding:.65rem 1rem;font-weight:600}.btn:hover{background:var(--primary-strong);color:var(--primary-fg)}.btn:focus-visible,.nav-item:focus-visible,.kpi-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn.ghost{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn.ghost:hover{background:var(--surface-muted);color:var(--text)}.sidebar .btn.ghost{color:var(--nav-text);border:1px solid var(--nav-border);background:#ffffff14}.sidebar .btn.ghost:hover{color:#fff;background:#ffffff29}.login-page{place-items:center;min-height:100vh;padding:1rem;display:grid}.login-card{flex-direction:column;gap:.85rem;width:min(420px,100%);padding:1.5rem;display:flex}.login-card h1{color:var(--text);margin:0;font-size:1.6rem}.login-card p{color:var(--text-muted);margin:0}.login-card-header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.field{color:var(--text);flex-direction:column;gap:.35rem;display:flex}.field input{border:1px solid var(--border);background:var(--surface-muted);color:var(--text);border-radius:8px;padding:.7rem .8rem}.field input::placeholder{color:var(--text-muted)}.error{color:var(--danger);font-size:.9rem}.muted{color:var(--text-muted)}.chart-placeholder{min-height:180px;color:var(--text-muted);text-align:center;background:repeating-linear-gradient(-45deg, transparent, transparent 8px, color-mix(in srgb, var(--primary) 8%, transparent) 8px, color-mix(in srgb, var(--primary) 8%, transparent) 16px);place-items:center;padding:1rem;display:grid}@media (prefers-reduced-motion:reduce){.kpi-card{transition:none}.kpi-card:hover{transform:none}}.import-grid{grid-template-columns:1.1fr .9fr;gap:1rem;display:grid}@media (width<=900px){.import-grid{grid-template-columns:1fr}}.import-card{padding:1rem 1.1rem 1.2rem}.import-form{gap:.75rem;display:grid}.import-form select,.import-form input[type=file]{border:1px solid var(--border);background:var(--surface-muted);color:var(--text);border-radius:8px;padding:.65rem .75rem}.demo-list{gap:.35rem;margin:0;padding-left:1.1rem;display:grid}.linkish{color:var(--primary);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.table-wrap{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.9rem}.data-table th,.data-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;color:var(--text);padding:.55rem .45rem}.data-table th{color:var(--text-muted);font-size:.8rem;font-weight:600}.cell-clamp{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.import-preview-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.import-actions{flex-wrap:wrap;gap:.5rem;display:flex}.status-pill{border:1px solid var(--border);border-radius:999px;padding:.15rem .45rem;font-size:.75rem;font-weight:600;display:inline-block}.status-ready,.status-imported{background:color-mix(in srgb, var(--success) 16%, transparent);color:var(--success);border-color:color-mix(in srgb, var(--success) 40%, transparent)}.status-duplicate{background:color-mix(in srgb, var(--text-muted) 16%, transparent);color:var(--text-muted)}.status-needs_review{background:var(--badge-bg);color:var(--badge-text);border-color:var(--badge-border)}.status-error{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger)}.check-inline{color:var(--text);align-items:center;gap:.35rem;font-size:.85rem;display:inline-flex}.demo-check-card{margin-bottom:1rem}.demo-check-result{gap:.85rem;margin-top:1rem;display:grid}.demo-overall{border:1px solid var(--border);border-radius:8px;padding:.75rem 1rem;font-weight:700}.demo-overall.ok{background:color-mix(in srgb, var(--success) 14%, transparent);color:var(--success);border-color:color-mix(in srgb, var(--success) 35%, transparent)}.demo-overall.bad{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 35%, transparent)}.demo-summary-grid{grid-template-columns:1fr 1fr;gap:.85rem;display:grid}.cf-week-chart{align-items:flex-end;gap:.25rem;min-height:140px;padding:.5rem .15rem .25rem;display:flex;overflow-x:auto}.cf-week-col{min-width:2.1rem;color:var(--text);cursor:pointer;border-radius:var(--radius);background:0 0;border:1px solid #0000;flex-direction:column;flex:1 0 2.1rem;align-items:center;gap:.35rem;padding:.15rem;display:flex}.cf-week-col:hover,.cf-week-col--active{border-color:var(--border);background:color-mix(in srgb, var(--primary) 8%, transparent)}.cf-week-bars{justify-content:center;align-items:flex-end;gap:2px;width:100%;height:96px;display:flex}.cf-bar{border-radius:2px 2px 0 0;width:.45rem;min-height:3px}.cf-bar--in{background:color-mix(in srgb, var(--primary) 75%, #2f9e44)}.cf-bar--out{background:color-mix(in srgb, var(--primary) 35%, #c92a2a)}.cf-week-bal{color:var(--text-muted);font-size:.7rem}.cf-week-bal--neg{color:#c92a2a;font-weight:600}.cf-legend{vertical-align:middle;border-radius:2px;width:.65rem;height:.65rem;margin:0 .25rem 0 .5rem;display:inline-block}.cf-legend--in{background:color-mix(in srgb, var(--primary) 75%, #2f9e44)}.cf-legend--out{background:color-mix(in srgb, var(--primary) 35%, #c92a2a)}@media (width<=900px){.demo-summary-grid{grid-template-columns:1fr}}.demo-kpi-list{color:var(--text);gap:.35rem;margin:0;padding-left:1.1rem;display:grid}.demo-checks{gap:.65rem;display:grid}.demo-check-item{padding:.85rem 1rem}.demo-check-item.ok{border-left:3px solid var(--success)}.demo-check-item.bad{border-left:3px solid var(--danger)}.demo-check-item-head{color:var(--text);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.35rem;display:flex}.demo-check-item p{color:var(--text);margin:.25rem 0}.finance-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.finance-presets,.finance-tabs{flex-wrap:wrap;gap:.4rem;display:flex}.finance-tabs{margin-bottom:.85rem}.active-preset{border-color:var(--primary)!important;color:var(--primary)!important;background:color-mix(in srgb, var(--primary) 12%, var(--surface))!important}.finance-custom-dates{flex-wrap:wrap;gap:.65rem;display:flex}.finance-filters{grid-template-columns:1.4fr repeat(4,minmax(0,1fr));gap:.55rem;margin-bottom:.85rem;display:grid}.finance-filters input,.finance-filters select,.opening-edit input{border:1px solid var(--border);background:var(--surface-muted);color:var(--text);border-radius:8px;width:100%;padding:.55rem .65rem}.finance-chart{background:var(--surface-muted);border-radius:8px;grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;align-items:end;gap:.2rem;min-height:160px;padding:.5rem .25rem;display:grid}.finance-chart-col{flex-direction:column;justify-content:flex-end;height:140px;display:flex}.finance-chart-bars{align-items:flex-end;gap:2px;height:100%;display:flex}.finance-chart-bars .bar{border-radius:3px 3px 0 0;flex:1;min-height:2px}.finance-chart-bars .bar.in{background:var(--teal)}.finance-chart-bars .bar.out{background:var(--danger)}.click-row{cursor:pointer}.click-row:hover{background:color-mix(in srgb, var(--primary) 8%, transparent)}.demo-tag{letter-spacing:.02em;background:var(--badge-bg);color:var(--badge-text);border:1px solid var(--badge-border);border-radius:6px;margin-right:.35rem;padding:.1rem .4rem;font-size:.7rem;font-weight:700;display:inline-block}.opening-edit{gap:.35rem;min-width:140px;display:grid}.drawer-backdrop{z-index:40;background:#0a121d73;justify-content:flex-end;animation:.18s finance-fade-in;display:flex;position:fixed;inset:0}.drawer{border-left:1px solid var(--border);border-radius:0;width:min(420px,100%);height:100%;padding:1.1rem 1.15rem 1.5rem;animation:.22s finance-slide-in;overflow:auto}@keyframes finance-fade-in{0%{opacity:0}to{opacity:1}}@keyframes finance-slide-in{0%{opacity:.6;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@media (width<=900px){.finance-filters{grid-template-columns:1fr 1fr}}@media (width<=560px){.finance-filters{grid-template-columns:1fr}.drawer{width:100%}}@media (prefers-reduced-motion:reduce){.drawer-backdrop,.drawer{animation:none}}
