:root{color-scheme:light;--page: #f9f9f7;--surface: #fcfcfb;--surface-2: #f3f3f0;--ink: #0b0b0b;--ink-2: #52514e;--muted: #898781;--border: rgba(11, 11, 11, .1);--brand: #1c5cab;--brand-ink: #ffffff;--text-good: #006300;--text-bad: #b02a2a;--tone-good: rgba(12, 163, 12, .13);--tone-bad: rgba(208, 59, 59, .16);--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 8px 24px rgba(0, 0, 0, .05);--radius: 14px;--c-income: #2a78d6;--c-expense: #eb6834;--c-cash: #1baf7a;--c-good: #0ca30c;--c-critical: #d03b3b;--c-grid: #e1e0d9;--c-axis: #c3c2b7;--c-muted: #898781;--c-surface: #fcfcfb;--c-ink: #0b0b0b;--c-ink2: #52514e;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45;color:var(--ink)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--page: #0d0d0d;--surface: #1a1a19;--surface-2: #232321;--ink: #f0efec;--ink-2: #c3c2b7;--muted: #898781;--border: rgba(255, 255, 255, .1);--brand: #3987e5;--text-good: #0ca30c;--text-bad: #e66767;--tone-good: rgba(12, 163, 12, .16);--tone-bad: rgba(208, 59, 59, .2);--shadow: 0 1px 2px rgba(0, 0, 0, .4);--c-income: #3987e5;--c-expense: #d95926;--c-cash: #199e70;--c-grid: #2c2c2a;--c-axis: #383835;--c-surface: #1a1a19;--c-ink: #f0efec;--c-ink2: #c3c2b7}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--page);min-height:100vh;transition:background-color .6s ease}body[data-tone=good]{background:linear-gradient(180deg,var(--tone-good),transparent 520px) var(--page)}body[data-tone=bad]{background:linear-gradient(180deg,var(--tone-bad),transparent 520px) var(--page)}h1,h2,h3,p{margin:0}button,input,select{font:inherit;color:inherit}.muted{color:var(--muted)}.text-good{color:var(--text-good)}.text-bad{color:var(--text-bad)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:10px;padding:10px 16px;cursor:pointer;text-decoration:none;font-weight:600;white-space:nowrap;transition:background .15s,transform .1s,opacity .15s}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:progress}.btn--primary{background:var(--brand);color:var(--brand-ink)}.btn--primary:hover{filter:brightness(1.08)}.btn--ghost{background:transparent;border-color:var(--border);color:var(--ink-2)}.btn--ghost:hover{background:var(--surface-2)}.btn--small{padding:6px 10px;font-size:13px}.btn--block{width:100%}.segmented{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:3px;gap:2px}.segmented button{border:0;background:transparent;padding:7px 12px;border-radius:8px;cursor:pointer;color:var(--ink-2);font-weight:500;font-size:14px}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow);font-weight:600}.segmented--small button{padding:4px 9px;font-size:12px}.field{display:grid;gap:6px}.field span{font-size:13px;color:var(--ink-2);font-weight:500}.field input,.select,.range input{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:10px 12px;outline:none;min-width:0}.field input:focus,.select:focus,.range input:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 25%,transparent)}.check{display:flex;gap:8px;align-items:center;font-size:14px;color:var(--ink-2);cursor:pointer}.swatch{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--accent);flex:none}.swatch--line{height:3px;border-radius:2px}.splash{display:grid;place-items:center;min-height:100vh}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--brand);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login{min-height:100vh;display:grid;place-items:center;padding:24px 16px;position:relative;overflow:hidden}.login__bg span{position:absolute;border-radius:50%;filter:blur(60px);opacity:.35;animation:drift 18s ease-in-out infinite alternate}.login__bg span:nth-child(1){width:420px;height:420px;background:var(--c-income);top:-120px;left:-100px}.login__bg span:nth-child(2){width:360px;height:360px;background:var(--c-cash);bottom:-120px;right:-80px;animation-delay:-6s}.login__bg span:nth-child(3){width:260px;height:260px;background:var(--c-expense);top:40%;left:55%;opacity:.2;animation-delay:-12s}@keyframes drift{to{transform:translate(60px,40px) scale(1.1)}}.login__panel{position:relative;width:100%;max-width:420px;display:grid;gap:18px;background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:20px;padding:24px;box-shadow:var(--shadow);animation:rise .5s ease both}.login__top{display:flex;justify-content:flex-end}.login__brand{display:flex;gap:14px;align-items:center}.login__brand img{border-radius:14px}.login__brand h1{font-size:24px;letter-spacing:.02em}.login__brand p{color:var(--ink-2);font-size:14px}.login__form{display:grid;gap:14px}.login__form h2{font-size:18px}.form-error{color:var(--text-bad);font-size:14px;background:var(--tone-bad);padding:8px 12px;border-radius:8px}.install-card{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:14px;border:1px dashed color-mix(in srgb,var(--brand) 50%,transparent);background:color-mix(in srgb,var(--brand) 8%,var(--surface));animation:rise .5s .15s ease both}.install-card img{border-radius:10px}.install-card h2{font-size:15px;margin-bottom:2px}.install-card p{font-size:13px;color:var(--ink-2)}.install-card__body{display:grid;gap:8px}.install-card__actions{display:flex;gap:8px;flex-wrap:wrap}.dash .install-card{margin:0 0 16px}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.dash{max-width:1440px;margin:0 auto;padding:0 16px 32px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;flex-wrap:wrap}.topbar__brand{display:flex;gap:10px;align-items:center}.topbar__brand img{border-radius:8px}.topbar__brand strong{display:block;font-size:16px}.topbar__brand span{display:block;font-size:12px;color:var(--ink-2)}.topbar__actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.topbar__user{font-size:13px;color:var(--ink-2);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filters{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:10px 0 14px;background:linear-gradient(var(--page) 75%,transparent)}.range{display:flex;align-items:center;gap:6px}.range label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}.range input{padding:7px 10px}.select{padding:8px 10px;max-width:260px}.loading-dot{font-size:13px;color:var(--muted);animation:pulse 1s ease-in-out infinite alternate}@keyframes pulse{0%{opacity:.4}to{opacity:1}}.banner{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:12px;border-radius:10px;background:var(--surface);border:1px solid var(--border);font-size:14px}.banner--warn{background:color-mix(in srgb,#fab219 18%,var(--surface))}.chip-close{border:0;background:var(--surface-2);border-radius:50%;width:22px;height:22px;cursor:pointer;margin-left:auto}.grid{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr));transition:opacity .2s}.grid.is-stale{opacity:.65}.kpis,.panel--wide{grid-column:1 / -1}.kpis{display:grid;gap:16px;grid-template-columns:repeat(4,minmax(0,1fr))}.kpi,.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);animation:rise .55s ease both}.kpi{padding:16px;display:grid;gap:4px;position:relative;overflow:hidden;transition:background .5s,border-color .5s}.kpi:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent, transparent)}.kpi__label{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--ink-2);font-weight:600}.kpi__value{font-size:28px;font-weight:700;letter-spacing:-.01em;line-height:1.15}.kpi__exact{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.kpi__meta{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin-top:6px;font-size:12px}.kpi__count{color:var(--muted)}.kpi--good{background:color-mix(in srgb,var(--c-good) 10%,var(--surface));border-color:color-mix(in srgb,var(--c-good) 35%,transparent)}.kpi--bad{background:color-mix(in srgb,var(--c-critical) 10%,var(--surface));border-color:color-mix(in srgb,var(--c-critical) 35%,transparent)}.kpi--good:before{background:var(--c-good)}.kpi--bad:before{background:var(--c-critical)}.status-pill{display:inline-flex;gap:4px;align-items:center;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--surface)}.kpi--good .status-pill{color:var(--text-good)}.kpi--bad .status-pill{color:var(--text-bad)}.delta{font-weight:600}.delta--good{color:var(--text-good)}.delta--bad{color:var(--text-bad)}.delta__ref{color:var(--muted);font-weight:400}.panel{padding:16px;display:grid;gap:12px;align-content:start;min-width:0}.panel__head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.panel__head h2{font-size:16px}.panel__head p{font-size:13px;color:var(--ink-2)}.panel h3{font-size:13px;color:var(--ink-2);margin-bottom:8px}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--ink-2)}.legend__item{display:inline-flex;gap:6px;align-items:center}.chart{height:260px;min-width:0}.chart--tall{height:320px}.chart--short{height:180px}.tooltip{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:10px 12px;font-size:13px;min-width:200px}.tooltip__title{font-weight:600;margin-bottom:6px}.tooltip__row{display:flex;gap:8px;align-items:center;justify-content:space-between}.tooltip__row span{color:var(--ink-2);flex:1}.tooltip__row b,.tooltip__net b{font-variant-numeric:tabular-nums}.tooltip__net{margin-top:6px;padding-top:6px;border-top:1px solid var(--border)}.tooltip__net.is-good b{color:var(--text-good)}.tooltip__net.is-bad b{color:var(--text-bad)}.table-wrap{overflow:auto;max-height:420px}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;color:var(--ink-2);font-weight:600;position:sticky;top:0;background:var(--surface)}.data-table th,.data-table td{padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.cash-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.cash-stats>div{background:var(--surface-2);border-radius:10px;padding:10px 12px;display:grid;gap:2px;min-width:0}.cash-stats span{font-size:12px;color:var(--ink-2)}.cash-stats b{font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cash-stats .is-good{background:var(--tone-good)}.cash-stats .is-good b{color:var(--text-good)}.cash-stats .is-bad{background:var(--tone-bad)}.cash-stats .is-bad b{color:var(--text-bad)}.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.rank{list-style:none;margin:0;padding:0;display:grid;gap:10px}.rank li{animation:rise .45s ease both;animation-delay:calc(var(--i) * 50ms)}.rank__row{display:flex;justify-content:space-between;gap:8px;font-size:13px}.rank__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank__value{font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}.rank__track{height:8px;background:var(--surface-2);border-radius:4px;margin-top:4px;overflow:hidden}.rank__fill{height:100%;width:var(--w);background:var(--accent);border-radius:4px;animation:grow .9s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i) * 50ms)}.rank__share{font-size:11px;color:var(--muted)}@keyframes grow{0%{width:0}}.objects{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.object{text-align:left;cursor:pointer;display:grid;gap:10px;padding:14px;border-radius:12px;border:1px solid var(--border);background:var(--surface);animation:rise .5s ease both;animation-delay:calc(var(--i) * 60ms);transition:transform .15s,box-shadow .15s,background .5s}.object:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.object--good{background:color-mix(in srgb,var(--c-good) 9%,var(--surface));border-color:color-mix(in srgb,var(--c-good) 30%,transparent)}.object--bad{background:color-mix(in srgb,var(--c-critical) 10%,var(--surface));border-color:color-mix(in srgb,var(--c-critical) 32%,transparent)}.object.is-selected{outline:2px solid var(--brand);outline-offset:2px}.object__head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.object__name{font-weight:600}.object__code{font-size:11px;color:var(--muted)}.object__net{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}.object__net b{font-size:20px}.object__net small{font-size:12px;color:var(--ink-2)}.object--good .object__net{color:var(--text-good)}.object--bad .object__net{color:var(--text-bad)}.object__bars{margin:0;display:grid;gap:6px}.object__bars dt{font-size:11px;color:var(--ink-2)}.object__bars dd{margin:0;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;font-size:12px;font-weight:600}.bar{display:block;height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}.bar>span{display:block;height:100%;width:var(--w);background:var(--accent);border-radius:3px;animation:grow 1s cubic-bezier(.2,.8,.2,1) both}.object__cash{font-size:12px;color:var(--ink-2)}.empty{color:var(--muted);font-size:14px;padding:12px 0}.error-box{justify-items:start}.foot{text-align:center;color:var(--muted);font-size:12px;margin-top:24px}@media (max-width: 1100px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 820px){.grid,.split{grid-template-columns:minmax(0,1fr)}.filters{position:static}.select{max-width:none;flex:1 1 100%}.range{flex:1 1 100%}.range label{flex:1}.range input{width:100%}}@media (max-width: 520px){.kpis{grid-template-columns:minmax(0,1fr)}.kpi__value{font-size:24px}.cash-stats{grid-template-columns:minmax(0,1fr)}.segmented button{padding:7px 9px;font-size:13px}.topbar__user{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
