:root{--color-bg:#f6f5f1;--color-surface:#fff;--color-surface-alt:#f2f2f0;--color-cream:#f7ecc9;--color-cream-border:#e9d48f;--color-blue-soft:#cfe3fa;--color-blue-border:#a3c7ef;--color-turquoise-soft:#bfe9e2;--color-turquoise-border:#86cfc2;--color-border:#e6e3da;--color-border-strong:#d8d4c7;--color-text:#1c1a16;--color-text-muted:#6b685f;--color-text-faint:#918e82;--color-accent:#a9842f;--color-accent-hover:#93711f;--color-accent-soft:#f6ecd4;--color-success:#1b7a3d;--color-success-soft:#e5f5ea;--color-danger:#c0392b;--color-danger-soft:#fbe9e7;--color-warning:#8a6d00;--color-warning-soft:#fff4d9;--color-attention:#b0631a;--color-attention-soft:#fde6d5;--color-info:#1573b0;--color-info-soft:#e4f1fa;--font-family:"Assistant",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;--fs-h1:20px;--fs-h2:18px;--fs-body:16px;--fs-small:14px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 1px 2px rgba(20,18,10,.06);--shadow-md:0 4px 16px rgba(20,18,10,.07);--sidebar-width:240px;--sidebar-width-collapsed:72px;--content-max-width:920px}*{box-sizing:border-box}body{margin:0;font-family:var(--font-family);background:var(--color-bg);color:var(--color-text);font-size:var(--fs-body);font-weight:var(--fw-regular);line-height:1.55}main{max-width:var(--content-max-width);margin:0 auto;padding:var(--space-6) var(--space-5) var(--space-7)}h1{font-size:var(--fs-h1);font-weight:var(--fw-bold);margin:0 0 4px;color:var(--color-text)}h2{font-size:var(--fs-h2);font-weight:var(--fw-medium);color:var(--color-text-muted);margin:0 0 var(--space-4)}p{margin:0 0 var(--space-3)}a{color:inherit}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.card-flat{background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-4)}.numbers-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:var(--space-3);gap:var(--space-3)}.number-tile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-4);box-shadow:var(--shadow-sm)}.number-tile.highlight{border-color:var(--color-accent-soft);box-shadow:var(--shadow-md)}.number-tile .label{font-size:var(--fs-small);font-weight:var(--fw-medium);color:var(--color-text-muted);margin-bottom:6px}.number-tile .value{font-size:22px;font-weight:var(--fw-semibold);letter-spacing:-.2px}.amount-negative,.value.negative{color:var(--color-danger)}.amount-positive,.value.positive{color:var(--color-success)}.amount-done-income{color:var(--color-info)}.amount-done-expense{color:var(--color-attention)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 11px;border-radius:999px;font-size:13px;font-weight:var(--fw-semibold);white-space:nowrap}.badge.success,.risk-badge.safe,.type-badge.income{background:var(--color-success-soft);color:var(--color-success)}.badge.danger,.risk-badge.breach,.type-badge.expense{background:var(--color-danger-soft);color:var(--color-danger)}.badge.warning,.risk-badge.warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge.attention,.risk-badge.danger{background:var(--color-attention-soft);color:var(--color-attention)}.badge.info{background:var(--color-info-soft);color:var(--color-info)}.badge.neutral{background:var(--color-surface-alt);color:var(--color-text-muted)}.type-badge{padding:3px 10px}.risk-badge,.type-badge{display:inline-block;border-radius:999px;font-size:13px;font-weight:var(--fw-semibold)}.risk-badge{padding:4px 11px}form{gap:var(--space-3)}form,label{display:flex;flex-direction:column}label{font-weight:var(--fw-medium);gap:6px}input,label,select,textarea{font-size:var(--fs-body);color:var(--color-text)}input,select,textarea{padding:11px 13px;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);font-family:inherit;background:var(--color-surface);min-height:44px}button:focus-visible,input:focus,select:focus,textarea:focus{outline:2px solid var(--color-accent);outline-offset:1px}.form-group{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4) 0;border-top:1px solid var(--color-border)}.form-group:first-child{border-top:none;padding-top:0}.form-group-title{font-size:var(--fs-small);color:var(--color-text-faint);text-transform:uppercase;letter-spacing:.04em}.form-group-title,button{font-weight:var(--fw-semibold)}button{padding:11px 20px;border-radius:var(--radius-sm);border:none;font-size:var(--fs-body);font-family:inherit;cursor:pointer;min-height:44px;transition:background .15s ease,border-color .15s ease,opacity .15s ease}.btn-primary,button{background:var(--color-text);color:#fff;border:1px solid var(--color-text)}.btn-primary:hover:not(:disabled),button:hover:not(:disabled){background:#000}.btn-primary.accent{background:var(--color-accent);border-color:var(--color-accent)}.btn-primary.accent:hover:not(:disabled){background:var(--color-accent-hover)}.btn-secondary{background:transparent;color:var(--color-text);border:1px solid var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-alt)}.btn-danger{background:var(--color-danger-soft);color:var(--color-danger);border:1px solid transparent}.btn-danger:hover:not(:disabled){background:#f6d2cc}.btn-sm{padding:7px 14px;min-height:34px;font-size:var(--fs-small)}button:disabled{opacity:.5;cursor:default}table{width:100%;border-collapse:collapse;font-size:var(--fs-body)}td,th{text-align:right;padding:12px 10px;border-bottom:1px solid var(--color-border)}th{font-weight:var(--fw-semibold);font-size:var(--fs-small);color:var(--color-text-muted);white-space:nowrap}tbody tr{transition:background .1s ease}tbody tr:hover{background:var(--color-surface-alt)}.table-nums{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.overdue{color:var(--color-danger);font-weight:var(--fw-semibold)}.empty-state{text-align:center;padding:var(--space-7) var(--space-5);color:var(--color-text-muted)}.empty-state .empty-icon{font-size:34px;margin-bottom:var(--space-3);opacity:.6}.alert,.empty-state p{margin-bottom:var(--space-4)}.alert{border-radius:var(--radius-md);padding:var(--space-4);border:1px solid transparent}.alert.danger{background:var(--color-danger-soft);border-color:#f3c6bd;color:var(--color-danger)}.alert.warning{background:var(--color-warning-soft);border-color:#f0dd9e;color:var(--color-warning)}.error{color:var(--color-danger);font-size:var(--fs-body);font-weight:var(--fw-medium)}.date-input-group{display:inline-flex;align-items:center;gap:4px;padding:0 10px;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);min-height:44px;width:-moz-fit-content;width:fit-content}.date-input-group:focus-within{outline:2px solid var(--color-accent);outline-offset:1px}.date-input-segment{border:none;padding:0;margin:0;min-height:auto;text-align:center;font-size:var(--fs-body);font-family:inherit;color:var(--color-text);background:transparent;width:2.1ch}.date-input-segment-year{width:4.2ch}.date-input-segment:focus{outline:none}.date-input-sep{color:var(--color-text-faint);font-size:var(--fs-body)}.period-bar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.period-bar-label{font-size:var(--fs-small);font-weight:var(--fw-medium);color:var(--color-text-muted)}.dashboard-hero{text-align:center;padding:var(--space-5) var(--space-3) var(--space-6);margin-bottom:var(--space-2);display:flex;flex-direction:column;align-items:center}.dashboard-hero-logo{width:92px;height:92px;object-fit:contain;margin-bottom:var(--space-3)}.dashboard-tagline{font-size:18px;font-weight:var(--fw-bold);color:var(--color-text);line-height:1.9;letter-spacing:.01em;margin:0}@media (max-width:600px){.dashboard-hero-logo{width:72px;height:72px}}.login-hero{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-5) 0;margin-bottom:var(--space-3);flex-wrap:wrap;justify-content:center;text-align:right}.login-hero-logo{width:92px;height:92px;object-fit:contain;flex-shrink:0}.login-hero-tagline{font-size:20px;font-weight:var(--fw-bold);color:var(--color-text);line-height:1.8;margin:0}@media (max-width:600px){.login-hero{flex-direction:column;text-align:center}.login-hero-tagline{font-size:18px}}.section{border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-5);border:1px solid var(--color-border)}.section-header{display:flex;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4)}.section-icon{font-size:22px;line-height:1}.section-title{font-size:var(--fs-h2);font-weight:var(--fw-bold);color:var(--color-text);margin:0 0 2px}.section-desc{font-size:var(--fs-small);color:var(--color-text-muted);margin:0}.section-neutral{background:var(--color-surface-alt)}.section-blue{background:var(--color-blue-soft);border-color:var(--color-blue-border)}.section-cream{background:var(--color-cream);border-color:var(--color-cream-border)}.section-turquoise{background:var(--color-turquoise-soft);border-color:var(--color-turquoise-border)}.app-shell{min-height:100vh;display:flex}.app-topbar{display:none}.app-sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--color-surface);border-left:1px solid var(--color-border);padding:var(--space-5) var(--space-4);position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column}.sidebar-logo{display:flex;align-items:center;gap:10px;padding:var(--space-2) var(--space-2) var(--space-5);margin-bottom:var(--space-3);border-bottom:1px solid var(--color-border)}.sidebar-logo-mark{border-radius:10px;background:#fff;border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;padding:2px}.sidebar-logo-mark img{width:100%;height:100%;object-fit:contain;display:block}.sidebar-logo-text{display:flex;flex-direction:column;line-height:1.25}.sidebar-logo-name{font-weight:var(--fw-bold);font-size:16px;color:var(--color-text)}.sidebar-logo-sub{font-size:12px;color:var(--color-text-faint)}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--color-text-muted);text-decoration:none;font-size:var(--fs-body);font-weight:var(--fw-medium)}.sidebar-link:hover{background:var(--color-surface-alt);color:var(--color-text)}.sidebar-link.active{background:var(--color-accent-soft);color:var(--color-accent-hover);font-weight:var(--fw-semibold)}.sidebar-link-icon{font-size:18px;width:22px;text-align:center;flex-shrink:0}.sidebar-spacer{flex:1 1}.sidebar-logout{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border-strong);padding:9px 12px;font-size:var(--fs-small);font-weight:var(--fw-medium);border-radius:var(--radius-sm);min-height:38px;width:100%}.sidebar-logout:hover:not(:disabled){background:var(--color-surface-alt)}.app-content{flex:1 1;min-width:0}.app-drawer-overlay{display:none}@media (max-width:860px){.app-sidebar{position:fixed;inset-inline-end:0;top:0;height:100vh;width:240px;max-width:78vw;z-index:50;transform:translateX(100%);transition:transform .2s ease;box-shadow:var(--shadow-md)}.app-sidebar.open{transform:translateX(0)}.app-topbar{justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);position:-webkit-sticky;position:sticky;top:0;z-index:30}.app-topbar,.app-topbar-logo{display:flex;align-items:center}.app-topbar-logo{gap:8px;font-weight:var(--fw-bold);font-size:15px}.app-hamburger{background:transparent;border:1px solid var(--color-border-strong);color:var(--color-text);min-height:38px;padding:6px 12px;border-radius:var(--radius-sm);font-size:18px}.app-drawer-overlay.open{display:block;position:fixed;inset:0;background:rgba(20,18,10,.35);z-index:40}main{padding:var(--space-4) var(--space-4) var(--space-6)}.numbers-grid{grid-template-columns:1fr}}@media (min-width:861px){main{padding-top:var(--space-6)}}