@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--ink-950:#141414;--ink-900:#1a1a1a;--ink-800:#2b2b2b;--ink-700:#404040;--ink-500:#6b6b6b;--ink-400:#8f8f8f;--ink-300:#cfcfcf;--ink-200:#e6e6e6;--ink-100:#efefef;--ink-50:#fafafa;--white:#fff;--navy-900:#16213d;--blue-700:#24409c;--blue-600:#2a4fc4;--blue-500:#315ae6;--blue-400:#5b7cff;--blue-200:#bcccff;--blue-100:#ecf0fe;--green-700:#0b6b41;--green-600:#0f7d4d;--green-500:#159a5c;--green-100:#e6f4ec;--red-700:#b02a30;--red-600:#cc3339;--red-500:#dd4147;--red-100:#fbeaeb;--amber-600:#b9720f;--amber-500:#d98a2b;--amber-100:#f8eddb;--bg:var(--ink-50);--bg-app:#fafafa;--surface:var(--white);--surface-2:#f4f4f4;--surface-sunken:#f4f4f4;--surface-inverse:var(--ink-900);--border:#0000000f;--border-strong:#0000001a;--divider:#0000000d;--text:var(--ink-900);--text-muted:var(--ink-500);--text-subtle:var(--ink-400);--text-on-accent:var(--white);--text-on-inverse:#f4f4f4;--accent:var(--blue-500);--accent-hover:var(--blue-600);--accent-press:var(--blue-700);--accent-tint:var(--blue-100);--accent-ring:#315ae647;--income:var(--green-500);--income-strong:var(--green-600);--income-tint:var(--green-100);--expense:var(--red-500);--expense-strong:var(--red-600);--expense-tint:var(--red-100);--warning:var(--amber-500);--warning-strong:var(--amber-600);--warning-tint:var(--amber-100);--nav-bg:var(--ink-900);--nav-text:#b8b8b8;--nav-text-active:var(--white);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#0e0e10;--bg-app:#0e0e10;--surface:#1a1a1c;--surface-2:#242426;--surface-sunken:#161618;--surface-inverse:#050506;--border:#ffffff14;--border-strong:#ffffff24;--divider:#ffffff0f;--text:#f2f2f2;--text-muted:#a0a0a3;--text-subtle:#6f6f73;--text-on-accent:#fff;--text-on-inverse:#f2f2f2;--accent:#5b7cff;--accent-hover:#7089ff;--accent-press:#93a6ff;--accent-tint:#1c2440;--accent-ring:#5b7cff57;--income:#34c98a;--income-strong:#47d69a;--income-tint:#12241c;--expense:#ff6b70;--expense-strong:#ff8488;--expense-tint:#2a1517;--warning:#e6a94f;--warning-strong:#f0be74;--warning-tint:#241c10;--nav-bg:#050506;--nav-text:#9a9a9d;--nav-text-active:var(--white);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", "Cascadia Code", monospace;--text-2xs:11px;--text-xs:12px;--text-sm:13px;--text-base:15px;--text-md:16px;--text-lg:18px;--text-xl:22px;--text-2xl:28px;--text-3xl:34px;--text-4xl:44px;--text-display:56px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--lh-tight:1.15;--lh-snug:1.3;--lh-normal:1.5;--lh-relaxed:1.65;--ls-tight:-.02em;--ls-snug:-.01em;--ls-normal:0;--ls-wide:.02em;--ls-caps:.06em;--font-display:var(--font-sans);--font-body:var(--font-sans);--font-numeric:var(--font-mono)}.aibol-num,[data-money]{font-family:var(--font-numeric);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:var(--ls-snug)}:root{--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-xs:8px;--radius-sm:8px;--radius:12px;--radius-md:12px;--radius-lg:12px;--radius-xl:12px;--radius-2xl:12px;--radius-pill:999px;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 3px #00000014;--shadow:0 1px 3px #00000014, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001a;--shadow-accent:0 1px 3px #00000014;--ring:0 0 0 3px var(--accent-ring);--w-miniapp:390px;--w-admin:1120px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.22, 1, .36, 1);--dur-fast:.2s;--dur:.26s;--dur-slow:.34s}[data-theme=dark]{--shadow-xs:0 1px 2px #0006;--shadow-sm:0 1px 3px #00000080;--shadow:0 1px 3px #00000080, 0 1px 2px #00000059;--shadow-md:0 4px 14px #0000008c;--shadow-lg:0 8px 26px #0009;--shadow-accent:0 1px 3px #00000080}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--lh-normal);color:var(--text);background:var(--bg-app);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,h3,h4,h5{font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:var(--ls-tight);color:var(--text);margin:0}p{margin:0}a{color:var(--accent);text-decoration:none}button{font-family:inherit}::selection{background:var(--accent-tint);color:var(--text)}.money-pos{color:var(--income-strong)}.money-neg{color:var(--expense-strong)}.eyebrow{font-size:var(--text-xs);font-weight:var(--fw-semibold);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-subtle)}:where(button,a,input,select,textarea,[tabindex]):focus-visible{box-shadow:var(--ring);border-radius:var(--radius-sm);outline:none}body{background:var(--bg-app);color:var(--text);font-family:var(--font-sans)}.hello{justify-content:center;align-items:center;gap:var(--space-4);min-height:100svh;padding:calc(var(--space-6) + env(safe-area-inset-top)) calc(var(--space-6) + env(safe-area-inset-right)) calc(var(--space-6) + env(safe-area-inset-bottom)) calc(var(--space-6) + env(safe-area-inset-left));text-align:center;box-sizing:border-box;flex-direction:column;display:flex}.hello h1{font-size:var(--text-3xl);letter-spacing:var(--ls-tight);margin:0}.page{max-width:var(--w-miniapp);padding:calc(var(--space-4) + env(safe-area-inset-top)) calc(var(--space-4) + env(safe-area-inset-right)) calc(var(--space-4) + env(safe-area-inset-bottom)) calc(var(--space-4) + env(safe-area-inset-left));gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.page.wide{max-width:var(--w-admin)}@media (width>=1000px){.page.wide{padding:var(--space-6) var(--space-8)}}.page.emp{min-height:100svh;padding:0;padding-bottom:calc(64px + env(safe-area-inset-bottom));gap:0}.app-header{z-index:20;justify-content:space-between;align-items:center;gap:var(--space-2);padding:calc(var(--space-3) + env(safe-area-inset-top)) var(--space-4) var(--space-3);background:var(--surface);border-bottom:1px solid var(--border);display:flex;position:sticky;top:0}.app-header .brand{align-items:center;gap:var(--space-2);min-width:0;display:flex}.app-header .brand .mark{border-radius:6px;flex:none;width:24px;height:24px}.app-header .brand .word{font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);font-size:18px}.app-header .brand .word b{color:var(--accent);font-weight:var(--fw-bold)}.app-header .brand .title{font-weight:var(--fw-medium);font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-header .head-actions{align-items:center;gap:var(--space-2);flex:none;display:flex}.dir-header{flex-direction:column;align-items:stretch;gap:6px}.dir-header .brand .mark{border-radius:0;width:22px;height:22px}.dir-header .brand .word{font-size:17px}.dir-head-row1{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.dir-head-row1 .head-actions{gap:3px}.hdr-ai{width:32px;height:32px;box-shadow:none;color:#fff;background:linear-gradient(135deg,#5b7cff,#7c5cff);border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.hdr-ai:hover{filter:brightness(1.06);box-shadow:none;transform:none}.hdr-icon-btn{width:34px;height:34px;box-shadow:none;color:var(--text-muted);background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.hdr-icon-btn:hover{filter:none;box-shadow:none;background:var(--surface-2);transform:none}.dir-head-row2{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.dir-role{font-size:var(--text-2xs);font-weight:var(--fw-semibold);letter-spacing:.05em;text-transform:uppercase;color:var(--text-subtle)}.dir-r2-actions{flex:none;align-items:center;gap:6px;display:flex}.dir-chip{border-radius:var(--radius-pill);border:1px solid var(--border);height:auto;color:var(--text-subtle);font-size:var(--text-2xs);font-weight:var(--fw-semibold);box-shadow:none;background:0 0;align-items:center;gap:5px;padding:3px 9px;display:inline-flex}.dir-chip:hover{filter:none;box-shadow:none;background:var(--surface-2);transform:none}.dir-online{border-radius:var(--radius-pill);color:var(--text-subtle);font-size:var(--text-2xs);font-weight:var(--fw-semibold);align-items:center;gap:5px;padding:3px 9px;display:inline-flex}.dir-online .dot{background:var(--income);border-radius:50%;width:6px;height:6px}.nav-avatar{background:var(--accent-tint);width:32px;height:32px;color:var(--accent);font-size:11px;font-weight:var(--fw-bold);cursor:pointer;box-shadow:none;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.nav-avatar.active{background:var(--accent);color:#fff}.nav-avatar:hover{filter:none;box-shadow:none;transform:none}.app-body{gap:var(--space-4);padding:var(--space-4);flex-direction:column;flex:1 0 auto;min-height:0;display:flex}.bottom-nav{z-index:30;width:100%;max-width:var(--w-miniapp);background:var(--surface);border-top:1px solid var(--border);padding:8px 4px calc(12px + env(safe-area-inset-bottom));display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav button{min-width:0;height:auto;box-shadow:none;color:var(--text-subtle);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:6px 2px;display:flex}.bottom-nav button:hover{filter:none;box-shadow:none;background:0 0;transform:none}.bottom-nav button.active{color:var(--accent)}.bottom-nav button span{font-size:10px;font-weight:var(--fw-medium);letter-spacing:0;white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.bottom-nav button.active span{font-weight:var(--fw-semibold)}.fab{z-index:25;margin-left:calc(var(--w-miniapp) / 2 - 74px);left:50%;bottom:calc(76px + env(safe-area-inset-bottom));background:var(--accent);color:#fff;border-radius:50%;width:56px;height:56px;padding:0;position:fixed;box-shadow:0 4px 12px #0000002e}@media (width<=430px){.fab{margin-left:0;left:auto;right:18px}}.proj-card{gap:var(--space-3);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.proj-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.proj-name{font-weight:var(--fw-semibold);letter-spacing:var(--ls-snug);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.proj-budget{flex-direction:column;gap:2px;display:flex}.proj-budget .label{font-size:var(--text-xs);color:var(--text-subtle)}.proj-budget .val{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-semibold)}.segmented{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:2px;height:40px;padding:3px;display:inline-flex}.segmented.sm{height:32px}.segmented button{border-radius:calc(var(--radius) - 3px);cursor:pointer;height:100%;font-size:var(--text-base);font-weight:var(--fw-semibold);letter-spacing:var(--ls-snug);white-space:nowrap;color:var(--text-muted);box-shadow:none;transition:background var(--dur) var(--ease-out), color var(--dur) var(--ease-out);background:0 0;border:none;justify-content:center;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.segmented.sm button{font-size:var(--text-sm);padding:0 10px}.segmented button:hover{filter:none;background:0 0;transform:none}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs)}.success-overlay{z-index:60;animation:sheetFade var(--dur) var(--ease-out);background:#090c1480;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.success-box{background:var(--surface);box-shadow:var(--shadow-lg);border-radius:20px;flex-direction:column;align-items:center;gap:14px;padding:32px 40px;display:flex}.success-pop{background:var(--income);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:66px;height:66px;animation:.34s cubic-bezier(.22,1,.36,1) both successPop;display:flex}.success-label{font-size:var(--text-lg);font-weight:var(--fw-semibold)}@keyframes successPop{0%{opacity:0;transform:translateY(8px)scale(.8)}to{opacity:1;transform:none}}.app-toast{left:50%;bottom:calc(84px + env(safe-area-inset-bottom));z-index:70;background:var(--ink-900,#0b0f1a);color:#fff;border-radius:var(--radius-pill);max-width:90vw;font-size:var(--text-sm);font-weight:var(--fw-medium);box-shadow:var(--shadow-lg);white-space:nowrap;align-items:center;gap:8px;padding:10px 16px;animation:.26s cubic-bezier(.22,1,.36,1) both toastIn;display:inline-flex;position:fixed;transform:translate(-50%)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.success-pop,.app-toast,.success-overlay{animation:none}}.sheet-backdrop{z-index:50;animation:sheetFade var(--dur) var(--ease-out);background:#090c146b;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:var(--w-miniapp);background:var(--bg-app);max-height:92vh;box-shadow:var(--shadow-lg);animation:sheetUp var(--dur-slow,.32s) var(--ease-out);border-radius:22px 22px 0 0;flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.sheet-head{border-bottom:1px solid var(--border);background:var(--surface);flex:none;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.sheet-title{font-size:var(--text-md);font-weight:var(--fw-semibold)}.sheet-x{width:40px;height:40px;padding:0}.sheet-body{padding:var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom));flex-direction:column;flex:1;gap:14px;display:flex;overflow-y:auto}@keyframes sheetFade{0%{opacity:0}to{opacity:1}}@keyframes sheetUp{0%{opacity:.5;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.sheet-backdrop,.sheet{animation:none}}.range-row{gap:var(--space-3);flex-wrap:wrap;display:flex}.range-row label{font-size:var(--text-sm);color:var(--text-muted);flex-direction:column;gap:4px;display:flex}.range-row input{font-family:var(--font-sans);font-size:var(--text-base);height:40px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}.inline-select{font-family:var(--font-sans);font-size:var(--text-sm);height:36px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}.day-nav{align-items:center;gap:var(--space-2);display:flex}.day-nav .day-label{font-family:var(--font-mono);font-weight:var(--fw-semibold);font-size:var(--text-sm)}.check-del{box-shadow:none;height:auto;color:var(--text-subtle);cursor:pointer;background:0 0;border:none;flex:none;align-items:center;padding:6px;display:inline-flex}.check-del:hover{filter:none;box-shadow:none;color:var(--expense);background:0 0;transform:none}.stat-card.grad-income{background:linear-gradient(150deg, color-mix(in oklab, var(--income) 22%, var(--surface)) 0%, color-mix(in oklab, var(--income) 6%, var(--surface)) 100%);border-color:color-mix(in oklab, var(--income) 16%, transparent)}.stat-card.grad-expense{background:linear-gradient(150deg, color-mix(in oklab, var(--expense) 22%, var(--surface)) 0%, color-mix(in oklab, var(--expense) 6%, var(--surface)) 100%);border-color:color-mix(in oklab, var(--expense) 16%, transparent)}.stat-card.grad-accent{background:linear-gradient(150deg, color-mix(in oklab, var(--accent) 22%, var(--surface)) 0%, color-mix(in oklab, var(--accent) 6%, var(--surface)) 100%);border-color:color-mix(in oklab, var(--accent) 16%, transparent)}.stat-card.grad-warning{background:linear-gradient(150deg, color-mix(in oklab, var(--warning) 24%, var(--surface)) 0%, color-mix(in oklab, var(--warning) 7%, var(--surface)) 100%);border-color:color-mix(in oklab, var(--warning) 18%, transparent)}.ovr-pct{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-bold);font-size:var(--text-lg)}.ovr-bar{border-radius:var(--radius-pill);background:var(--surface-sunken);height:9px;overflow:hidden}.ovr-bar span{border-radius:var(--radius-pill);height:100%;display:block}.proj-budget-row{align-items:center;gap:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:11px 13px;display:flex}.proj-ring{flex:none;width:36px;height:36px;display:inline-flex;position:relative}.proj-ring-num{font-size:10px;font-weight:var(--fw-bold);font-family:var(--font-mono);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.pbr-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.pbr-name{font-size:var(--text-sm);font-weight:var(--fw-semibold);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pbr-sub{font-size:var(--text-2xs);color:var(--text-subtle)}.proj-budget-row>svg:last-child{color:var(--text-subtle);flex:none}.pbr-head{justify-content:space-between;align-items:center;gap:var(--space-2);margin-top:2px;display:flex}.pbr-head-title{font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--text-muted)}.pbr-head-actions{flex:none;gap:4px;display:flex}.pbr-head-actions button{padding:4px 8px}.pbr-more{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--accent);font-size:var(--text-sm);font-weight:var(--fw-semibold);box-shadow:none;justify-content:center;align-items:center;gap:6px;padding:9px;display:flex}.pbr-more:hover{filter:none;box-shadow:none;background:var(--surface-2);transform:none}.attn-banner{border-radius:var(--radius);border:1px solid var(--expense);background:var(--expense-tint);overflow:hidden}.attn-head{color:var(--expense-strong);font-weight:var(--fw-bold);font-size:var(--text-sm);align-items:center;gap:8px;padding:10px 13px;display:flex}.attn-head .cnt{font-family:var(--font-mono);margin-left:auto}.attn-row{background:var(--surface);font-size:var(--text-sm);border-top:1px solid #dd414733;align-items:center;gap:8px;padding:9px 13px;display:flex}.attn-row .name{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:var(--fw-medium);flex:1;overflow:hidden}.attn-over{font-size:var(--text-2xs);color:var(--expense-strong);font-weight:var(--fw-semibold);white-space:nowrap}.cell-actions{align-items:center;gap:var(--space-2);display:flex}.row-editing>td{background:var(--accent-tint)}.sheet-menu{gap:var(--space-1);flex-direction:column;display:flex}.sheet-menu button{justify-content:flex-start;gap:var(--space-3);background:var(--surface);height:46px;color:var(--text);border:1px solid var(--border);box-shadow:none}.sheet-menu button:hover{filter:none;box-shadow:none;background:var(--surface-2);transform:none}.sheet-menu button.active{background:var(--accent-tint);color:var(--accent);border-color:#0000}.profile-card{align-items:center;gap:var(--space-3);flex-direction:row}.nav-avatar.big{width:48px;height:48px;font-size:16px}.profile-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--divider);display:flex}.profile-row:last-of-type{border-bottom:none}.tabel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:14px}.tabel-head{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.tabel-head .title{font-size:var(--text-md);font-weight:var(--fw-semibold)}.tabel-head .month{font-size:var(--text-sm);color:var(--text-muted);text-transform:capitalize}.tabel-wd,.tabel-grid{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.tabel-wd{margin-bottom:6px}.tabel-wd span{text-align:center;font-size:var(--text-2xs);font-weight:var(--fw-semibold);color:var(--text-muted)}.tabel-wd span.we{color:var(--text-subtle)}.tabel-day{aspect-ratio:1;border-radius:var(--radius-sm);font-size:var(--text-2xs);font-weight:var(--fw-semibold);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.tabel-day.off{background:var(--surface-sunken);color:var(--text-subtle)}.tabel-day.future{border:1px solid var(--border);color:var(--text-subtle);opacity:.5;background:0 0}.tabel-day.present{background:var(--income);color:#fff}.tabel-day.late{background:var(--warning);color:#fff}.tabel-day.today{outline:1.5px solid var(--text);outline-offset:-1.5px}.tabel-day .late-badge{opacity:.95;font-size:8px;line-height:1}.tabel-legend{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--divider);flex-wrap:wrap;gap:8px 14px;display:flex}.tabel-legend span{font-size:var(--text-2xs);color:var(--text-muted);white-space:nowrap;flex:none;align-items:center;gap:5px;display:inline-flex}.tabel-legend .dot{border-radius:3px;flex:none;width:11px;height:11px}.topbar{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.topbar h2{font-size:var(--text-lg)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5);gap:var(--space-3);box-shadow:var(--shadow-sm);flex-direction:column;display:flex;overflow-x:auto}.card h2{font-size:var(--text-lg);font-weight:var(--fw-semibold);margin:0}.card h3{font-size:var(--text-base);font-weight:var(--fw-semibold)}.error-card{border-color:var(--expense)}button{font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--fw-semibold);letter-spacing:var(--ls-snug);border-radius:var(--radius-sm);height:42px;padding:0 var(--space-4);background:var(--accent);color:var(--text-on-accent);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform var(--dur) var(--ease-out), filter var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out), background-color var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out);justify-content:center;align-items:center;gap:var(--space-2);white-space:nowrap;border:1px solid #0000;line-height:1;display:inline-flex}button:hover:not(:disabled){filter:brightness(1.05);box-shadow:var(--shadow-md);transform:translateY(-1px)}button:active:not(:disabled){transform:scale(.98)}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{color:var(--accent);border:1px solid var(--border-strong);box-shadow:none;background:0 0}button.ghost:hover:not(:disabled){background:var(--accent-tint);filter:none;box-shadow:none;transform:none}button.danger{background:var(--expense);color:#fff}button.small{height:34px;padding:0 var(--space-3);font-size:var(--text-sm)}button.linklike{color:var(--accent);height:auto;box-shadow:none;font-weight:var(--fw-medium);background:0 0;border:none;padding:0;text-decoration:none}button.linklike:hover{filter:none;box-shadow:none;text-decoration:underline;transform:none}button.lang-toggle{background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);box-shadow:none;height:34px;font-size:var(--text-sm);font-weight:var(--fw-semibold)}button.lang-toggle:hover{filter:none;box-shadow:none;background:var(--surface);transform:none}.tabs{gap:var(--space-2);flex-wrap:wrap;display:flex}.tab{background:var(--surface-2);color:var(--text-muted);height:38px;font-size:var(--text-sm);font-weight:var(--fw-medium);box-shadow:none;border:1px solid #0000}.tab:hover:not(:disabled){filter:none;box-shadow:none;background:var(--surface);color:var(--text);transform:none}.tab.active{background:var(--accent);color:var(--text-on-accent);border-color:#0000}.rep-controls{align-items:stretch;gap:8px;display:flex}.period-btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);height:auto;box-shadow:var(--shadow-xs);color:var(--text);cursor:pointer;flex:1;align-items:center;gap:9px;padding:11px 14px;display:flex}.period-btn:hover{filter:none;box-shadow:var(--shadow-xs);background:var(--surface);transform:none}.period-ic{background:var(--accent-tint);width:28px;height:28px;color:var(--accent);border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.period-lbl{text-align:left;font-size:var(--text-base);font-weight:var(--fw-semibold);flex:1}.period-btn>svg:last-child{color:var(--text-subtle)}.rep-type-btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);height:auto;color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--fw-semibold);box-shadow:var(--shadow-xs);cursor:pointer;white-space:nowrap;align-items:center;gap:5px;padding:0 13px;display:inline-flex}.rep-type-btn:hover{filter:none;box-shadow:var(--shadow-xs);background:var(--surface-2);transform:none}.sheet-opts{gap:var(--space-2);flex-direction:column;display:flex}.sheet-opts button{text-align:left;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font-size:var(--text-base);font-weight:var(--fw-medium);box-shadow:none;cursor:pointer;padding:12px 14px}.sheet-opts button.active{border-color:var(--accent);background:var(--accent-tint);color:var(--accent)}.sheet-opts button:hover{filter:none;box-shadow:none;background:var(--surface-2);transform:none}.notif-list,.audit-list{gap:var(--space-2);flex-direction:column;display:flex}.notif-row{border-bottom:1px solid var(--divider);align-items:center;gap:11px;padding:11px 0;display:flex}.notif-row:last-child{border-bottom:none}.notif-ic{border-radius:10px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.notif-ic.expense{background:var(--expense-tint);color:var(--expense-strong)}.notif-ic.warning{background:var(--warning-tint);color:var(--warning-strong)}.notif-main{flex:1;min-width:0}.notif-title{font-size:var(--text-sm);font-weight:var(--fw-medium)}.notif-sub{font-size:var(--text-2xs);color:var(--text-subtle)}.agent-hero{text-align:center;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;flex-direction:column;display:flex}.agent-ic{color:#fff;background:linear-gradient(135deg,#5b7cff,#7c5cff);border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;display:inline-flex}.agent-lead{font-size:var(--text-base);font-weight:var(--fw-semibold)}.agent-examples{gap:var(--space-2);flex-direction:column;width:100%;display:flex}.agent-ex{border-radius:var(--radius);background:var(--surface-sunken);font-size:var(--text-sm);color:var(--text-muted);text-align:left;padding:10px 12px}.prof-head{padding-bottom:var(--space-2);align-items:center;gap:12px;display:flex}.prof-avatar{background:var(--accent-tint);width:48px;height:48px;color:var(--accent);font-size:16px;font-weight:var(--fw-bold);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.prof-info{flex:1;min-width:0}.prof-name{font-size:var(--text-base);font-weight:var(--fw-semibold)}.prof-bal-lbl{font-size:var(--text-2xs);color:var(--text-subtle)}.prof-bal{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-lg);font-weight:var(--fw-bold)}.proj-figs{gap:8px;display:flex}.proj-fig{border-radius:var(--radius);background:var(--surface-sunken);flex-direction:column;flex:1;gap:3px;padding:10px 12px;display:flex}.proj-fig .label{font-size:var(--text-2xs);color:var(--text-subtle)}.proj-fig .val{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-sm);font-weight:var(--fw-semibold)}.bal-row.clickable,.proj-budget-row.clickable,.attn-row.clickable{cursor:pointer}.bal-row.clickable:hover,.proj-budget-row.clickable:hover{background:var(--surface-2)}.attn-row.clickable:hover{filter:brightness(1.04)}.attn-row>svg:last-child{color:var(--text-subtle);flex:none}.kpi-card{cursor:pointer;text-align:left;box-shadow:none;border:1px solid #0000}.kpi-card.static{cursor:default}.kpi-card:not(.static):hover{filter:brightness(1.03);box-shadow:none;transform:none}.per-quick{gap:10px;display:flex}.per-quick button{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--text);box-shadow:none;flex:1;padding:11px}.per-quick button.active{border-color:var(--accent);background:var(--accent-tint);color:var(--accent)}.per-year{justify-content:space-between;align-items:center;padding:2px;display:flex}.per-yr{font-size:var(--text-md);font-weight:var(--fw-bold);font-family:var(--font-mono)}.per-nav{width:34px;height:34px;color:var(--text-muted);box-shadow:none;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.per-nav:hover{filter:none;box-shadow:none;background:var(--surface-2);transform:none}.per-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.per-grid button{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--text);box-shadow:none;padding:12px 0}.per-grid button.active{border-color:var(--accent);background:var(--accent-tint);color:var(--accent)}.per-grid button:disabled{color:var(--text-subtle);opacity:.45;cursor:not-allowed}.per-grid button:not(:disabled):hover{filter:none;box-shadow:none;background:var(--surface-2);transform:none}.table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.table th,.table td{text-align:left;padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--divider)}.table th{color:var(--text-subtle);font-weight:var(--fw-semibold);font-size:var(--text-xs);letter-spacing:var(--ls-wide);text-transform:uppercase}tr.inactive td{color:var(--text-subtle);text-decoration:line-through}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--surface-2)}.form{gap:var(--space-3);flex-direction:column;display:flex}.form label{gap:var(--space-1);font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--text-muted);flex-direction:column;display:flex}.form input,.form select,.form textarea{font-family:var(--font-sans);font-size:var(--text-base);height:44px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out)}.form textarea{height:auto;min-height:76px;padding:var(--space-3);resize:vertical;line-height:var(--lh-normal)}.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--accent);box-shadow:var(--ring);outline:none}.row{gap:var(--space-3);flex-wrap:wrap;display:flex}.row label{flex:1;min-width:140px}.inline{align-items:center;gap:var(--space-2);display:inline-flex}.actions{gap:var(--space-3);display:flex}.actions button{height:48px;font-size:var(--text-md);flex:1}.actions-inline{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.ok{color:var(--income-strong);font-weight:var(--fw-semibold)}.err{color:var(--expense-strong);font-weight:var(--fw-semibold)}.note{color:var(--text-muted);font-size:var(--text-sm)}[data-money],.money{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:var(--ls-snug)}.balance-card{background:linear-gradient(150deg, #1e2e63 0%, var(--navy-900) 55%, #0e1428 100%);color:var(--text-on-inverse);align-items:flex-start;gap:var(--space-2);box-shadow:var(--shadow-md);border:none}.balance-card .note,.balance-card .bc-label{color:#ffffffb3}.balance-big{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-3xl);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:var(--white)}.balance-big.err{color:#ff8a8a}.balance-big.ok{color:var(--white)}.bc-actions{margin-top:var(--space-3);gap:8px;width:100%;display:flex}.bc-btn{color:var(--navy-900);box-shadow:none;background:#fff;border:none;flex:1;justify-content:center;gap:6px}.bc-btn.on-dark{color:#fff;background:#ffffff1f}.bc-btn:hover{filter:brightness(1.04);box-shadow:none;transform:translateY(-1px)}.bc-btn.on-dark:hover{filter:none;background:#ffffff2e}.work-banner{margin-top:var(--space-2);border-radius:var(--radius);background:var(--income-tint);color:var(--income-strong);font-weight:var(--fw-semibold);font-size:var(--text-sm);align-items:center;gap:8px;padding:10px 14px;display:flex}.work-banner .dot{background:var(--income);border-radius:50%;flex:none;width:8px;height:8px}.loc-line{font-size:var(--text-2xs);color:var(--text-subtle);align-items:center;gap:6px;display:flex}.loc-line.ok{color:var(--income-strong)}.stat-grid{gap:var(--space-3);margin-bottom:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(170px,1fr));display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5);box-shadow:var(--shadow-sm);gap:var(--space-3);flex-direction:column;display:flex}.stat-card .note{font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--text-muted)}.stat-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.stat-chip{border-radius:var(--radius-sm);background:var(--surface-2);width:34px;height:34px;color:var(--text-muted);flex:none;justify-content:center;align-items:center;display:inline-flex}.stat-chip.income{background:var(--income-tint);color:var(--income-strong)}.stat-chip.expense{background:var(--expense-tint);color:var(--expense-strong)}.stat-chip.accent{background:var(--accent-tint);color:var(--accent)}.stat-chip.warning{background:var(--warning-tint);color:var(--warning-strong)}.stat-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-xl);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);margin-top:var(--space-1)}.kpi-grid{margin-bottom:var(--space-3);grid-template-columns:1fr 1fr;gap:10px;display:grid}.kpi-card{border-radius:var(--radius);white-space:normal;height:auto;box-shadow:none;border:1px solid #0000;flex-direction:column;align-items:stretch;gap:5px;padding:11px 12px;display:flex}.kpi-head{justify-content:space-between;align-items:center;display:flex}.kpi-label{font-size:var(--text-2xs);font-weight:var(--fw-semibold)}.kpi-chip{background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;display:inline-flex}.kpi-val{white-space:nowrap;align-items:baseline;gap:3px;display:flex}.kpi-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-base);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:var(--text);white-space:nowrap}.kpi-unit{font-size:var(--text-2xs);color:var(--text-subtle)}.kpi-delta{font-size:var(--text-2xs);font-weight:var(--fw-semibold)}.kpi-delta.up{color:var(--income-strong)}.kpi-delta.down{color:var(--expense-strong)}.kpi-card.income{border-color:color-mix(in oklab, var(--income) 14%, transparent);background:linear-gradient(150deg, color-mix(in oklab, var(--income) 26%, var(--surface)) 0%, color-mix(in oklab, var(--income) 7%, var(--surface)) 100%)}.kpi-card.income .kpi-label,.kpi-card.income .kpi-chip{color:var(--income-strong)}.kpi-card.expense{border-color:color-mix(in oklab, var(--expense) 14%, transparent);background:linear-gradient(150deg, color-mix(in oklab, var(--expense) 26%, var(--surface)) 0%, color-mix(in oklab, var(--expense) 7%, var(--surface)) 100%)}.kpi-card.expense .kpi-label,.kpi-card.expense .kpi-chip{color:var(--expense-strong)}.kpi-card.accent{border-color:color-mix(in oklab, var(--accent) 14%, transparent);background:linear-gradient(150deg, color-mix(in oklab, var(--accent) 26%, var(--surface)) 0%, color-mix(in oklab, var(--accent) 7%, var(--surface)) 100%)}.kpi-card.accent .kpi-label,.kpi-card.accent .kpi-chip{color:var(--accent)}.kpi-card.warning{border-color:color-mix(in oklab, var(--warning) 14%, transparent);background:linear-gradient(150deg, color-mix(in oklab, var(--warning) 26%, var(--surface)) 0%, color-mix(in oklab, var(--warning) 7%, var(--surface)) 100%)}.kpi-card.warning .kpi-label,.kpi-card.warning .kpi-chip{color:var(--warning-strong)}.kpi-foot{margin-top:var(--space-2)}.geo-banner{border-radius:var(--radius-lg);border:1px solid var(--border);color:#fff;background:linear-gradient(135deg,#1f6f4a,#144d34);min-height:120px;padding:14px;position:relative;overflow:hidden}.geo-deco{opacity:.5;background-image:radial-gradient(circle at 30% 40%,#ffffff24 0,#0000 42%),radial-gradient(circle at 72% 68%,#ffffff1a 0,#0000 40%);position:absolute;inset:0}.geo-ring{border-radius:50%;position:absolute}.geo-ring-1{border:1.5px dashed #ffffff73;width:96px;height:96px;top:12px;right:14px}.geo-ring-2{background:#ffffff1f;border:1.5px solid #ffffffb3;width:52px;height:52px;top:34px;right:36px}.geo-dot{background:#fff;border-radius:50%;width:9px;height:9px;position:absolute;box-shadow:0 0 0 3px #ffffff4d}.geo-dot-1{top:58%;right:30%}.geo-dot-2{top:44%;right:33%}.geo-dot-3{top:72%;right:36%}.geo-dot-4{top:66%;right:39%}.geo-body{position:relative}.geo-top{align-items:center;gap:7px;display:flex}.geo-title{font-size:var(--text-sm);font-weight:var(--fw-bold)}.geo-gps{font-size:var(--text-2xs);font-weight:var(--fw-semibold);border-radius:var(--radius-pill);background:#ffffff2e;align-items:center;gap:4px;margin-left:auto;padding:3px 8px;display:inline-flex}.geo-gps .dot{background:#4ade80;border-radius:50%;width:6px;height:6px}.geo-count{align-items:baseline;gap:6px;margin-top:12px;display:flex}.geo-num{font-family:var(--font-mono);font-size:32px;font-weight:var(--fw-bold);line-height:1}.geo-sub{font-size:var(--text-xs);opacity:.85}.geo-meta{font-size:var(--text-2xs);opacity:.9;gap:16px;margin-top:12px;display:flex}.att-stats{grid-template-columns:1fr 1fr 1fr;gap:8px;display:grid}.att-stat-card{border-radius:var(--radius);border:1px solid #0000;flex-direction:column;gap:6px;padding:12px;display:flex}.att-stat-chip{color:#fff;border-radius:7px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.att-stat-num{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:var(--fw-bold);line-height:1}.att-stat-lbl{font-size:var(--text-2xs);color:var(--text-muted)}.att-stat-card.income{background:linear-gradient(158deg, color-mix(in srgb, var(--income) 34%, var(--surface)) 0%, color-mix(in srgb, var(--income) 15%, var(--bg-app)) 100%);border-color:color-mix(in srgb, var(--income) 30%, transparent)}.att-stat-card.income .att-stat-chip{background:var(--income)}.att-stat-card.income .att-stat-num{color:var(--income-strong)}.att-stat-card.expense{background:linear-gradient(158deg, color-mix(in srgb, var(--expense) 34%, var(--surface)) 0%, color-mix(in srgb, var(--expense) 15%, var(--bg-app)) 100%);border-color:color-mix(in srgb, var(--expense) 30%, transparent)}.att-stat-card.expense .att-stat-chip{background:var(--expense)}.att-stat-card.expense .att-stat-num{color:var(--expense-strong)}.att-stat-card.warning{background:linear-gradient(158deg, color-mix(in srgb, var(--warning) 34%, var(--surface)) 0%, color-mix(in srgb, var(--warning) 15%, var(--bg-app)) 100%);border-color:color-mix(in srgb, var(--warning) 30%, transparent)}.att-stat-card.warning .att-stat-chip{background:var(--warning)}.att-stat-card.warning .att-stat-num{color:var(--warning-strong)}.ts-head{align-items:center;gap:11px;display:flex}.ts-avatar{width:40px;height:40px;font-size:14px}.tabel-stats{margin-bottom:var(--space-3);grid-template-columns:1fr 1fr;gap:8px;display:grid}.tabel-stat{border-radius:var(--radius-sm);background:var(--surface-sunken);flex-direction:column;gap:3px;padding:10px 12px;display:flex}.tabel-stat-num{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:var(--fw-bold);line-height:1}.tabel-stat.income .tabel-stat-num{color:var(--income-strong)}.tabel-stat.warning .tabel-stat-num{color:var(--warning-strong)}.tabel-stat.expense .tabel-stat-num{color:var(--expense-strong)}.tabel-stat.accent .tabel-stat-num{color:var(--accent)}.tabel-stat-lbl{font-size:var(--text-2xs);color:var(--text-muted)}.kassa-title{margin-bottom:var(--space-3)}.kassa-actions{margin-bottom:var(--space-3);flex-direction:column;gap:8px;display:flex}.kassa-btn-row{gap:8px;display:flex}.kassa-btn{flex:1;justify-content:center;gap:6px}.kassa-btn-row .kassa-btn{min-width:0}.kassa-btn.danger{background:var(--expense);color:#fff;border-color:#0000}.kassa-btn.danger:hover{background:var(--expense);filter:brightness(1.05);box-shadow:none}.kassa-btn.full{flex:none;width:100%}.emp-sheet-extra{margin-top:var(--space-2)}.hist-label{font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--text-muted);margin-bottom:var(--space-2);display:block}.hist-label+.segmented{margin-bottom:var(--space-3)}.bal-list{flex-direction:column;display:flex}.bal-row{border-bottom:1px solid var(--divider);align-items:center;gap:10px;padding:11px 0;display:flex}.bal-row:last-child{border-bottom:none}.bal-avatar{background:var(--accent-tint);width:30px;height:30px;color:var(--accent);font-size:11px;font-weight:var(--fw-bold);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.bal-name{min-width:0;font-size:var(--text-sm);font-weight:var(--fw-medium);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.bal-amt{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-base);font-weight:var(--fw-semibold)}.bal-row>svg{color:var(--text-subtle);flex:none}.emp-list{flex-direction:column;display:flex}.emp-row{border-bottom:1px solid var(--divider);flex-wrap:wrap;align-items:center;gap:11px;padding:12px 0;display:flex}.emp-row:last-child{border-bottom:none}.emp-row.inactive{opacity:.55}.emp-avatar{background:var(--accent-tint);width:30px;height:30px;color:var(--accent);font-size:11px;font-weight:var(--fw-bold);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.emp-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.emp-name{font-size:var(--text-sm);font-weight:var(--fw-medium);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.emp-sub{font-size:var(--text-2xs);color:var(--text-subtle)}.emp-code{font-family:var(--font-mono);color:var(--accent);font-weight:var(--fw-bold);letter-spacing:.05em}.emp-actions{align-items:center;gap:var(--space-1);flex-basis:100%;justify-content:flex-end;display:flex}.page.wide .emp-actions{flex-basis:auto}.code-popup-backdrop{z-index:60;padding:var(--space-4);background:#090c1480;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.code-popup{background:var(--surface);width:100%;max-width:340px;box-shadow:var(--shadow-lg);border-radius:20px;flex-direction:column;align-items:center;gap:12px;padding:28px 30px;display:flex}.code-popup-icon{background:var(--income);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:60px;height:60px;display:inline-flex}.code-popup-name{font-size:var(--text-md);font-weight:var(--fw-semibold);text-align:center}.code-popup-hint{font-size:var(--text-2xs);color:var(--text-muted);text-align:center;line-height:var(--lh-normal)}.code-popup-code{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:var(--fw-bold);letter-spacing:.08em;color:var(--accent)}.proj-cards{gap:var(--space-3);flex-direction:column;display:flex}.proj-figures{gap:var(--space-4);display:flex}.proj-figures .proj-budget{flex:1}.proj-bar{border-radius:var(--radius-pill);background:var(--surface-sunken);height:8px;overflow:hidden}.proj-bar>span{border-radius:var(--radius-pill);height:100%;display:block}.proj-dates{font-size:var(--text-2xs);color:var(--text-subtle);font-family:var(--font-mono)}.proj-actions{align-items:center;gap:var(--space-2);display:flex}.proj-actions select{flex:1}.barchart{gap:var(--space-2);flex-direction:column;display:flex}.bar-row{gap:var(--space-3);font-size:var(--text-sm);grid-template-columns:140px 1fr auto;align-items:center;display:grid}.bar-label{text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);overflow:hidden}.bar-track{background:var(--surface-sunken);border-radius:var(--radius-pill);height:8px;overflow:hidden}.bar-fill{border-radius:var(--radius-pill);background:var(--accent);min-width:2px;height:100%}.bar-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:var(--text-sm)}@media (width<=560px){.bar-row{grid-template-columns:110px 1fr}.bar-value{text-align:right;grid-column:2}}.detail-grid{gap:var(--space-4);padding:var(--space-2) 0;grid-template-columns:1fr 1fr;display:grid}@media (width<=640px){.detail-grid{grid-template-columns:1fr}}.attend-status{gap:var(--space-4);font-weight:var(--fw-semibold);padding:var(--space-2) 0;justify-content:center;display:flex}.kanban{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.page.emp .kanban{gap:var(--space-2);flex:1;grid-template-rows:1fr 1fr;min-height:0}.page.emp .kanban-col{padding:var(--space-2);flex-direction:column;min-height:0;display:flex}.page.emp .kanban-col .kanban-cards{flex:1;min-height:0;overflow:auto}.page.emp .kanban-col .kanban-empty{flex:1}.page.emp .kanban-card{padding:10px 10px 10px 13px}@media (width<=560px){.page.wide .kanban{grid-template-columns:1fr}}.kanban-fab{display:none}.page.emp .kanban-fab{display:inline-flex}.page.emp .kanban-h2,.page.emp .kanban-add-btn{display:none}.kanban-col{background:var(--surface-sunken);border:1.5px solid var(--border);border-radius:var(--radius);padding:var(--space-2);min-height:100px;transition:border-color .18s var(--ease-out)}.kanban-col.done-col{border-color:var(--income)}.kanban-col.drag-over{border-style:dashed;border-color:var(--accent)}.kanban-head{font-weight:var(--fw-bold);font-size:var(--text-xs);margin-bottom:var(--space-2);justify-content:space-between;align-items:center;padding:2px 4px;display:flex}.kh-title{align-items:center;gap:6px;display:inline-flex}.kh-dot{background:var(--text-subtle);border-radius:50%;flex:none;width:7px;height:7px}.kh-dot.today{background:var(--accent)}.kh-dot.month{background:var(--warning)}.kh-dot.done{background:var(--income)}.done-col .kanban-head{color:var(--income-strong)}.kanban-head .count{font-size:var(--text-2xs);font-weight:var(--fw-bold);color:var(--text-subtle);background:var(--surface-2);border-radius:var(--radius-pill);justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;display:inline-flex}.kanban-empty{min-height:40px;color:var(--text-subtle);font-size:var(--text-2xs);justify-content:center;align-items:center;display:flex}.kanban-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--space-2);cursor:grab;box-shadow:var(--shadow-xs);padding:13px 14px 13px 16px;position:relative}.kanban-card.overdue{border-color:var(--expense)}.kanban-card.archived{opacity:.6}.kanban-bar{border-radius:var(--radius-pill);width:3px;position:absolute;top:10px;bottom:10px;left:0}.kanban-bar.week{background:var(--text-subtle)}.kanban-bar.today{background:var(--accent)}.kanban-bar.month{background:var(--warning)}.kanban-bar.done{background:var(--income)}.kanban-avatar{background:var(--accent-tint);width:18px;height:18px;color:var(--accent);font-size:9px;font-weight:var(--fw-bold);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.kanban-assignee{font-size:var(--text-xs);color:var(--text-muted);align-items:center;gap:6px;display:inline-flex}.kanban-title{font-weight:var(--fw-semibold);margin-bottom:var(--space-1);line-height:var(--lh-snug)}.kanban-card{cursor:pointer}.kanban-hint{font-size:var(--text-2xs);color:var(--text-subtle);margin-bottom:var(--space-1)}.kanban-cards{grid-template-columns:repeat(3,1fr);gap:12px 6px;padding:4px 2px;display:grid}.task-circle{cursor:grab;min-width:0;transition:transform var(--dur) var(--ease-out);flex-direction:column;align-items:center;gap:5px;display:flex}.task-circle:hover{transform:translateY(-2px)}.task-circle.archived{opacity:.5}.tc-avatar-wrap{flex:none;width:46px;height:46px;position:relative}.tc-ring{border:2px solid var(--border-strong);box-sizing:border-box;border-radius:50%;position:absolute;inset:-3px}.tc-ring.today{border-color:var(--accent)}.tc-ring.month{border-color:var(--warning)}.tc-ring.done{border-color:var(--income)}.tc-ring.overdue{border-color:var(--expense)}.tc-avatar{color:#fff;width:46px;height:46px;font-weight:var(--fw-bold);border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:flex}.tc-overlay{color:#fff;background:#dd414799;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.tc-done{background:var(--income);border:2px solid var(--surface-sunken);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:17px;height:17px;display:flex;position:absolute;bottom:-2px;right:-2px}.tc-comments{border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);min-width:18px;height:18px;color:var(--text-muted);justify-content:center;align-items:center;padding:0 3px;display:inline-flex;position:absolute;top:-4px;right:-6px}.tc-label{font-size:var(--text-2xs);font-weight:var(--fw-medium);color:var(--text);white-space:nowrap;text-overflow:ellipsis;text-align:center;max-width:100%;overflow:hidden}.checklist{gap:var(--space-2);flex-direction:column;display:flex}.check-item{align-items:center;gap:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3) 14px;background:var(--surface);box-shadow:var(--shadow-xs);display:flex}.check-main{gap:var(--space-3);cursor:pointer;flex:1;align-items:center;min-width:0;display:flex}.check-box{border-radius:var(--radius-xs);border:1.5px solid var(--border-strong);background:var(--surface);cursor:pointer;width:26px;height:26px;transition:background-color var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out);color:#0000;box-shadow:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.check-item.done .check-box{border-color:var(--income);background:var(--income);color:#fff}.check-box:hover{filter:none;box-shadow:none;transform:none}.check-body{flex-direction:column;gap:2px;min-width:0;display:flex}.check-title{font-weight:var(--fw-medium)}.check-item.done .check-title{color:var(--text-muted);text-decoration:line-through}.check-time{font-size:var(--text-sm);color:var(--text-muted);align-items:center;gap:5px;display:inline-flex}.status-badge{font-size:var(--text-xs);font-weight:var(--fw-semibold);border-radius:var(--radius-pill);white-space:nowrap;flex:none;align-items:center;gap:5px;padding:3px 9px;display:inline-flex}.status-badge .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.status-badge.income{background:var(--income-tint);color:var(--income-strong)}.status-badge.warning{background:var(--warning-tint);color:var(--warning-strong)}.status-badge.expense{background:var(--expense-tint);color:var(--expense-strong)}.status-badge.neutral{background:var(--surface-2);color:var(--text-muted)}.status-badge.accent{background:var(--accent-tint);color:var(--accent)}.photo-upload{gap:var(--space-2);flex-direction:column;display:flex}.photo-btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3);border:1px dashed var(--accent);border-radius:var(--radius-sm);text-align:center;cursor:pointer;color:var(--accent);font-weight:var(--fw-medium);display:inline-flex}.photo-preview{border-radius:var(--radius-sm);object-fit:contain;max-width:100%;max-height:200px}.code-box{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:var(--fw-bold);letter-spacing:6px;text-align:center;padding:var(--space-3);background:var(--surface-sunken);border:2px dashed var(--accent);border-radius:var(--radius);-webkit-user-select:all;user-select:all}.cat-group h3{font-size:var(--text-sm);margin:var(--space-4) 0 var(--space-2);align-items:center;gap:var(--space-2);display:flex}.badge{font-size:var(--text-xs);font-weight:var(--fw-semibold);padding:2px var(--space-2);border-radius:var(--radius-pill);color:#fff}.badge.income{background:var(--income)}.badge.expense{background:var(--accent)}.cat-list{margin:0;padding:0;list-style:none}.cat-list li{padding:var(--space-2) 0;border-bottom:1px solid var(--divider);font-size:var(--text-sm);justify-content:space-between;align-items:center;display:flex}.cat-list li.inactive span{color:var(--text-muted);text-decoration:line-through}.cat-list li.editing{background:var(--accent-tint);border-radius:var(--radius-sm);margin:0 calc(-1 * var(--space-2));padding-left:var(--space-2);padding-right:var(--space-2)}button.dev-user{background:var(--surface);color:var(--text);border:1px solid var(--border-strong);box-shadow:var(--shadow-xs);text-align:left;justify-content:flex-start}button.dev-user:hover{filter:none;background:var(--surface-2);box-shadow:none;transform:none}optgroup{color:var(--text)}.txn-list{flex-direction:column;display:flex}.txn-row{border-radius:var(--radius-sm);border-bottom:1px solid var(--divider);transition:background var(--dur) var(--ease-out);align-items:center;gap:11px;padding:11px 13px;display:flex}.txn-row:last-child{border-bottom:none}.txn-chip{border-radius:10px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.txn-chip.income{background:var(--income-tint);color:var(--income-strong)}.txn-chip.expense{background:var(--expense-tint);color:var(--expense-strong)}.txn-chip.transfer{background:var(--accent-tint);color:var(--accent)}.txn-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.txn-title{font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.txn-meta{font-size:var(--text-2xs);color:var(--text-subtle);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.txn-right{flex-direction:column;flex:none;align-items:flex-end;gap:3px;display:flex}.txn-amount{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-semibold);font-size:var(--text-sm);letter-spacing:var(--ls-snug)}.txn-amount.income{color:var(--income-strong)}.txn-amount.expense{color:var(--expense-strong)}.txn-amount.transfer{color:var(--accent)}.txn-sub{align-items:center;gap:var(--space-1);display:flex}.txn-clip{height:auto;color:var(--text-subtle);box-shadow:none;cursor:pointer;background:0 0;border:none;align-items:center;padding:2px;display:inline-flex}.txn-clip:hover{filter:none;box-shadow:none;color:var(--accent);background:0 0;transform:none}.txn-row.clickable{cursor:pointer}.txn-row.clickable:hover{background:var(--surface-2)}.txn-detail-head{align-items:center;gap:var(--space-2);padding:var(--space-1) 0 var(--space-2);flex-direction:column;display:flex}.txn-detail-head .txn-chip{border-radius:15px;width:52px;height:52px}.txn-detail-amount{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-semibold);font-size:var(--text-xl)}.txn-detail-amount.income{color:var(--income-strong)}.txn-detail-amount.expense{color:var(--expense-strong)}.txn-detail-amount.transfer{color:var(--accent)}.txn-detail-title{font-size:var(--text-base);font-weight:var(--fw-medium);text-align:center}.txn-detail-rows{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.txn-detail-row{justify-content:space-between;gap:var(--space-3);border-bottom:1px solid var(--divider);font-size:var(--text-sm);padding:11px 14px;display:flex}.txn-detail-row:last-child{border-bottom:none}.txn-detail-row>span:last-child{font-weight:var(--fw-medium);text-align:right}.txn-detail-note{font-size:var(--text-sm);color:var(--text-muted);padding:0 2px;font-style:italic}.ktask-head{align-items:flex-start;gap:var(--space-3);display:flex}.ktask-bar{border-radius:var(--radius-pill);flex:none;align-self:stretch;width:4px;min-height:40px}.ktask-bar.week{background:var(--text-subtle)}.ktask-bar.today{background:var(--accent)}.ktask-bar.month{background:var(--warning)}.ktask-bar.done{background:var(--income)}.ktask-title{font-size:var(--text-lg);font-weight:var(--fw-semibold);line-height:var(--lh-snug);margin-bottom:var(--space-2)}.ktask-assignee-row{font-weight:var(--fw-medium);align-items:center;gap:7px;display:inline-flex}.ktask-assignee-row .kanban-avatar{width:24px;height:24px;font-size:11px}.ktask-collabel{font-size:var(--text-sm);color:var(--text-muted);font-weight:var(--fw-medium)}.ktask-cols{gap:8px;display:flex}.ktask-cols button{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);height:auto;color:var(--text);font-size:var(--text-2xs);font-weight:var(--fw-semibold);box-shadow:none;flex:1;padding:9px 4px}.ktask-cols button.active{border-color:var(--accent);background:var(--accent-tint);color:var(--accent)}.ktask-cols button:hover{filter:none;box-shadow:none;background:var(--surface-2);transform:none}.form-field{gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--text-muted);flex-direction:column;display:flex}.form-field select{color:var(--text)}
