@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-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;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 6px calc(10px + 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:4px;padding:6px 0;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:11px;font-weight:var(--fw-medium);letter-spacing:0}.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:34px;height:34px;padding:0}.sheet-body{padding:var(--space-4);gap:var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom));flex-direction:column;flex:1;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%;transition:width var(--dur-slow) var(--ease-out);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)}.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}.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:var(--space-4)}.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{gap:var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--divider);display:flex;overflow-x:auto}.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:10px;height:10px}.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:all 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}.period-tabs{margin-top:calc(-1 * var(--space-1))}.report-tabs{margin-bottom:var(--space-1)}.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:var(--surface-inverse);color:var(--text-on-inverse);align-items:flex-start;gap:var(--space-2);border:none}.balance-card .note{color:#fff9}.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:var(--expense)}.balance-big.ok{color:var(--white)}.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)}.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)}.page.emp .kanban-col{padding:var(--space-2)}.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:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);min-height:100px}.kanban-col.done-col{border-color:var(--income)}.kanban-head{font-weight:var(--fw-semibold);font-size:var(--text-sm);margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.kanban-head .count{font-size:var(--text-xs);color:var(--text-muted);background:var(--surface);border-radius:var(--radius-pill);padding:1px var(--space-2);font-family:var(--font-mono)}.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-cards{grid-template-columns:repeat(3,1fr);gap:14px 6px;padding:6px 2px 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-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:all 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{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-1);border-radius:var(--radius-sm);border-bottom:1px solid var(--divider);transition:background var(--dur) var(--ease-out);display:flex}.txn-row:last-child{border-bottom:none}.txn-chip{border-radius:var(--radius);flex:none;justify-content:center;align-items:center;width:40px;height:40px;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-base);font-weight:var(--fw-medium);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.txn-meta{font-size:var(--text-sm);color:var(--text-muted);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-base);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{width:52px;height:52px}.txn-detail-amount{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-bold);font-size:var(--text-2xl)}.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:12px 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{align-items:center;gap:var(--space-2);font-weight:var(--fw-medium);display:inline-flex}.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)}
