﻿:root{--bg: #fff;--bg-surface: #f8f8f8;--sidebar-top: #ede8f9;--bg-elevated: #efefef;--bg-input: #fff;--border: #ddd;--border-subtle: #eee;--text: #333;--text-muted: #888;--text-subtle: #555;--accent: #333;--accent-fg: #fff;--input-border: #ccc;--link: #c2478a;--error: #c00;--error-bg: #fff0f0;--error-border: #f5c6cb;--sav-dep-bg: #cce5ff;--sav-dep-fg: #004085;--sav-wit-bg: #fff3cd;--sav-wit-fg: #856404;--sidebar-bg: var(--sidebar-top);--sidebar-border: rgba(0, 0, 0, .08);--sidebar-link: rgba(0, 0, 0, .45);--sidebar-link-hover: rgba(0, 0, 0, .85);--sidebar-hover-bg: rgba(0, 0, 0, .05);--sidebar-active-fg: #1a1a1a;--sidebar-label: rgba(0, 0, 0, .3)}@media(prefers-color-scheme: dark){:root{--bg: #141414;--bg-surface: #1c1c1c;--sidebar-top: #170d28;--bg-elevated: #272727;--bg-input: #202020;--border: #333;--border-subtle: #282828;--text: #e0e0e0;--text-muted: #666;--text-subtle: #aaa;--accent: #e0e0e0;--accent-fg: #141414;--input-border: #3a3a3a;--link: #e06aaa;--error: #ff6b6b;--error-bg: #2a1515;--error-border: #4a2020;--sav-dep-bg: #0d2a4a;--sav-dep-fg: #7ec8f7;--sav-wit-bg: #3a2e00;--sav-wit-fg: #ffd966;--sidebar-bg: #0f0f1a;--sidebar-border: rgba(255, 255, 255, .06);--sidebar-link: rgba(255, 255, 255, .45);--sidebar-link-hover: rgba(255, 255, 255, .85);--sidebar-hover-bg: rgba(255, 255, 255, .05);--sidebar-active-fg: #fff;--sidebar-label: rgba(255, 255, 255, .22)}}*,*::before,*::after{box-sizing:border-box}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}body{margin:0;font-family:sans-serif;color:var(--text);background:var(--bg)}header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:56px;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:200}header .brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:1.1rem;text-decoration:none;color:var(--text)}header nav{display:flex;align-items:center;gap:16px}header nav a{text-decoration:none;color:var(--text);font-size:.95rem}header nav a:hover{text-decoration:underline}header nav .user-name{font-size:.95rem;font-weight:600;color:var(--text-subtle)}header nav button{background:none;border:1px solid var(--border);border-radius:4px;padding:5px 12px;cursor:pointer;font-size:.9rem;color:var(--text)}header nav button:hover{background:var(--bg-elevated)}.header-left{display:flex;align-items:center}.header-user-actions{display:inline-flex;align-items:center;gap:16px}.brand-logo{width:28px;height:28px;border-radius:7px;display:block;flex-shrink:0}.hamburger{display:none;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:6px 8px 6px 0;color:var(--text);flex-direction:column;gap:5px;margin-right:10px}.hamburger span{display:block;width:20px;height:2px;background:currentColor;border-radius:2px;transition:transform .2s,opacity .2s}body.nav-open .hamburger span:nth-child(1){transform:translateY(7px) rotate(45deg)}body.nav-open .hamburger span:nth-child(2){opacity:0}body.nav-open .hamburger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.app-layout{display:flex;min-height:calc(100vh - 56px - 45px)}.sidebar-overlay{display:none;position:fixed;inset:56px 0 0 0;background:rgba(0,0,0,.45);z-index:149}body.nav-open .sidebar-overlay{display:block}.sidebar{width:180px;flex-shrink:0;background:var(--sidebar-bg, #0f0f1a);border-right:1px solid var(--sidebar-border, rgba(255, 255, 255, 0.06));padding:20px 0 20px 12px}.sidebar ul{list-style:none;margin:0;padding:0}.sidebar ul li a{display:block;padding:10px 24px;text-decoration:none;color:var(--sidebar-link, rgba(255, 255, 255, 0.45));font-size:.92rem;border-left:3px solid rgba(0,0,0,0)}.sidebar ul li a:hover{color:var(--sidebar-link-hover, rgba(255, 255, 255, 0.85));background:var(--sidebar-hover-bg, rgba(255, 255, 255, 0.05))}.sidebar ul li.active a{color:var(--sidebar-active-fg, #fff);border-left-color:#c2478a;background:rgba(194,71,138,.14)}.sidebar ul li:first-child .sidebar-section-label{padding-top:4px}.sidebar-section-label{display:block;padding:16px 24px 4px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--sidebar-label, rgba(255, 255, 255, 0.22))}.app-main{flex:1;padding:24px 28px;min-width:0;overflow-x:hidden;background:rgba(0,0,0,0)}.app-content{max-width:1400px}.app-content>h1{font-size:1.85rem;font-weight:800;letter-spacing:-0.025em;margin-bottom:20px}main{max-width:860px;margin:40px auto;padding:0 24px}footer{border-top:1px solid var(--border);padding:14px 24px;font-size:.85rem;color:var(--text-muted);background:var(--bg);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px}footer a{color:var(--text);opacity:.5;transition:opacity .2s;text-decoration:none !important}footer a:hover{opacity:1}@media(prefers-color-scheme: dark){footer a{color:#fff}}.footer-left{display:flex;flex-direction:row-reverse;align-items:center;gap:12px}.footer-copy{color:var(--text-muted)}.footer-version{color:var(--text-muted);font-size:.75em}.footer-github{display:inline-flex;align-items:center;gap:5px}.footer-right{display:flex;align-items:center;gap:16px}@media(max-width: 600px){footer{flex-direction:column-reverse;align-items:flex-start}.footer-left{flex-direction:column;align-items:flex-start;gap:4px}.footer-right{flex-direction:column;align-items:flex-start;gap:4px}}label{display:block;margin-top:16px;font-weight:600;font-size:.95rem;color:var(--text)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],textarea,select{width:100%;padding:8px 10px;margin-top:4px;border:1px solid var(--input-border);border-radius:4px;font-size:1rem;font-family:inherit;background:var(--bg-input);color:var(--text)}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px}textarea{resize:vertical}select[multiple]{height:auto}.error-msg{color:var(--error);font-size:.875rem;margin-top:4px}.form-wrap{max-width:600px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media(max-width: 500px){.form-row{grid-template-columns:1fr;gap:0}}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}@media(max-width: 500px){.form-row-3{grid-template-columns:1fr;gap:0}.form-row-3 div[style*=grid-column]{grid-column:1}}.form-actions{display:flex;gap:12px;margin-top:28px}.btn{display:inline-block;padding:8px 18px;margin-top:0;background:#c2478a;color:#fff;border:1px solid rgba(0,0,0,0);border-radius:6px;font-size:.95rem;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,opacity .15s}.btn:hover{background:#d4569b;opacity:1}.btn-sm{padding:4px 12px;font-size:.85rem}.btn-danger{background:#c00;color:#fff}.btn-danger:hover{background:#a00;opacity:1}.btn-secondary{background:var(--bg-input);color:var(--text);border-color:var(--input-border)}.btn-secondary:hover{background:var(--bg-elevated);opacity:1}.btn-full{width:100%;text-align:center;display:block}.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:.78rem;font-weight:600;white-space:nowrap}.badge-income{background:#d4edda;color:#155724}.badge-expense{background:#f8d7da;color:#721c24}.badge-savings_dep{background:var(--sav-dep-bg);color:var(--sav-dep-fg)}.badge-savings_wit{background:var(--sav-wit-bg);color:var(--sav-wit-fg)}.badge-carry_over{background:#e8e0f7;color:#4a2d8a}.badge-tag{background:var(--bg-elevated);color:var(--text-subtle);margin:1px}.badge-deactivated{background:var(--bg-elevated);color:var(--text-muted)}@media(prefers-color-scheme: dark){.badge-income{background:#1a3326;color:#6ecf8a}.badge-expense{background:#331a1d;color:#cf7075}.badge-carry_over{background:#2a1a4a;color:#b89fe8}}.tag-cb-wrap{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.tag-cb-wrap ul,.tag-cb-wrap>div{display:contents}.tag-cb-wrap li,.tag-cb-wrap ul li,.tag-cb-wrap>div>div{display:contents}.tag-cb-wrap input[type=checkbox]{display:none}.tag-cb-wrap label{display:inline-flex;align-items:center;padding:4px 12px;border-radius:20px;background:var(--bg-elevated);border:1px solid var(--border);font-size:.82rem;color:var(--text-subtle);cursor:pointer;user-select:none;margin-top:0;transition:background .12s,border-color .12s,color .12s}.tag-cb-wrap label:hover{border-color:var(--text-muted);color:var(--text)}.tag-cb-wrap label:has(input:checked){background:var(--accent);color:var(--accent-fg);border-color:rgba(0,0,0,0)}.exp-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}.exp-card{background:var(--bg-surface);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:10px;padding:12px 16px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto auto auto;row-gap:5px;column-gap:16px}.exp-card.unsettled{border-left-color:#c2478a}.exp-card--deactivated{opacity:.45}.exp-date-label{font-size:.78rem;color:var(--text-muted);grid-column:1;grid-row:1}.exp-row1{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;grid-column:1;grid-row:2}.exp-title{font-weight:600;font-size:1rem;color:var(--text)}.exp-payee{font-size:.88rem;color:var(--text-muted)}.exp-amount{margin-left:auto;font-weight:700;font-size:1rem;white-space:nowrap}.exp-amount.type-income{color:#155724}.exp-amount.type-expense{color:#721c24}.exp-amount.type-savings_dep{color:var(--sav-dep-fg)}.exp-amount.type-savings_wit{color:var(--sav-wit-fg)}.exp-amount.type-carry_over{color:#5a9e6f}@media(prefers-color-scheme: dark){.exp-amount.type-income{color:#6ecf8a}.exp-amount.type-expense{color:#cf7075}.exp-amount.type-carry_over{color:#7dbf94}}.exp-actions{grid-column:2;grid-row:1/-1;display:flex;flex-direction:column;gap:6px;align-items:stretch;justify-content:flex-start}.exp-actions .btn,.exp-actions form{width:100%}.exp-actions .btn,.exp-actions form .btn{width:100%;box-sizing:border-box;text-align:center}.exp-row2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;grid-column:1;grid-row:3}.exp-row2 .sep{color:var(--border)}.exp-settled{font-size:.85rem;color:var(--text-muted)}.exp-settled.yes{color:var(--text-subtle)}.exp-category{font-size:.85rem;color:var(--text-subtle)}.exp-due{font-size:.85rem;color:var(--text-muted);white-space:nowrap}.exp-row3{grid-column:1;grid-row:4;font-size:.82rem;color:var(--text-muted);font-style:italic}.exp-controls{margin-top:12px}.exp-controls .exp-search{width:100%;max-width:400px;padding:7px 12px;border:1px solid var(--input-border);border-radius:6px;background:var(--bg-input);color:var(--text);font-size:.9rem;box-sizing:border-box}.exp-controls .exp-search:focus{outline:2px solid var(--accent);outline-offset:1px}.exp-controls .exp-search::placeholder{color:var(--text-muted)}.exp-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px}@media(max-width: 600px){.exp-toolbar{flex-wrap:wrap}}.exp-toolbar-left{display:flex;align-items:center;gap:6px}@media(max-width: 600px){.exp-toolbar-left{flex-wrap:wrap}}.exp-toolbar-left #exp-bulk-form{display:flex;align-items:center;gap:6px;margin:0}.exp-toolbar-left #exp-bulk-form #exp-bulk-uids{display:none}.exp-toolbar-right{font-size:.88rem;color:var(--text-muted);white-space:nowrap}.exp-toolbar-right span{font-weight:600;color:var(--text)}.exp-bulk-select{margin-top:0;padding:6px 10px;border:1px solid var(--input-border);border-radius:6px;background:var(--bg-input);color:var(--text);font-size:.85rem;cursor:pointer}.exp-checkbox-wrap{cursor:pointer;line-height:0;display:block;padding-top:6px}.exp-checkbox{width:15px;height:15px;cursor:pointer;accent-color:var(--link)}.month-nav{display:flex;align-items:center;gap:16px;margin-bottom:20px}@media(max-width: 600px){.month-nav{flex-direction:column;align-items:stretch;width:fit-content;gap:10px}}.month-nav__controls{display:flex;align-items:center;gap:16px;order:-1}@media(max-width: 600px){.month-nav__controls{order:1;margin-top:4px}}.period-toggle{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}@media(max-width: 600px){.period-toggle{width:100%}.period-toggle__opt{flex:1;text-align:center}}.period-toggle__opt{padding:5px 13px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);text-decoration:none !important;background:var(--bg-surface);transition:background .12s,color .12s}.period-toggle__opt:hover{color:var(--text);background:var(--bg-elevated)}.period-toggle__opt.active{background:#c2478a;color:#fff}.month-nav__label{font-size:1.35rem;font-weight:700;color:var(--text);min-width:160px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px}.month-nav__range{font-size:.72rem;font-weight:400;color:var(--text-muted);letter-spacing:.01em}.month-nav__arrow{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--bg-surface);color:var(--text);text-decoration:none;font-size:1.4rem;line-height:1;transition:background .15s}.month-nav__arrow:hover{background:var(--bg-elevated)}.month-nav__arrow--disabled{opacity:.35;pointer-events:none}table{width:100%;border-collapse:collapse;margin-top:20px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border-subtle);word-break:break-word;overflow-wrap:break-word}th{background:var(--bg-surface);font-weight:600;font-size:.9rem;color:var(--text-subtle);white-space:nowrap}tr:hover td{background:var(--bg-surface)}.empty{color:var(--text-muted);font-style:italic;margin-top:20px}.expenses-export-link{display:inline-block;margin-top:12px;font-size:.78rem;color:var(--text-muted);text-decoration:none}.expenses-export-link:hover{color:var(--text);text-decoration:underline}.nowrap{white-space:nowrap}@media(max-width: 1200px){.col-hide-md{display:none}}@media(max-width: 640px){.resp-table,.resp-table tbody,.resp-table tr{display:block}.resp-table thead{display:none}.resp-table tr{background:var(--bg-surface);border:1px solid var(--border);border-radius:10px;margin-bottom:12px;padding:4px 0}.resp-table tr:hover td{background:rgba(0,0,0,0)}.resp-table td{display:flex;align-items:flex-start;gap:12px;padding:8px 14px;border-bottom:1px solid var(--border-subtle)}.resp-table td:last-child{border-bottom:none}.resp-table td::before{content:attr(data-label);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);min-width:80px;flex-shrink:0;padding-top:2px}.resp-table td[data-label=""]{padding-top:6px}.resp-table td[data-label=""]::before{display:none;min-width:0}.resp-table .tag-list{flex-wrap:wrap}.resp-table .actions{flex-wrap:wrap}}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.exp-repeat{font-size:.85rem;color:var(--text-subtle)}.dash-heading{margin:0 0 24px;font-size:1rem;color:var(--text-muted);font-weight:500}.panels{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:14px}.panel{border-radius:14px;padding:22px 20px 18px;box-shadow:0 2px 16px rgba(0,0,0,.07)}.panel .label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;margin-bottom:10px;opacity:.75}.panel .amount{font-size:1.7rem;font-weight:800;letter-spacing:-0.025em;line-height:1.15;word-break:break-all}.panel .amount .currency{font-size:1.05rem;font-weight:700;margin-left:3px;opacity:.75}.panel-income{background:#d4edda;color:#155724}.panel-paid{background:#f8d7da;color:#721c24}.panel-outstanding{background:rgba(220,53,69,.12);color:#a0303a}.panel-savings{background:var(--sav-dep-bg);color:var(--sav-dep-fg)}.panel-savings-neg{background:var(--sav-wit-bg);color:var(--sav-wit-fg)}.panel-left{background:rgba(40,167,69,.12);color:#1a6b30}.panel-left-warn{background:#fff3cd;color:#856404}.panel-left-danger{background:#f8d7da;color:#721c24}@media(prefers-color-scheme: dark){.panel-income{background:#1a3326;color:#6ecf8a}.panel-paid{background:#331a1d;color:#cf7075}.panel-outstanding{background:#2b1a1c;color:#c97078}.panel-savings{background:var(--sav-dep-bg);color:var(--sav-dep-fg)}.panel-left{background:#182b1f;color:#6ecf8a}.panel-left-warn{background:var(--sav-wit-bg);color:var(--sav-wit-fg)}.panel-left-danger{background:#331a1d;color:#cf7075}}.charts{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:28px}.chart-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:24px;box-shadow:0 2px 12px rgba(0,0,0,.05)}.chart-card h2{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#c2478a;margin:0 0 20px}.chart-empty{color:var(--text-muted);font-size:.9rem;font-style:italic;padding:20px 0}@media(prefers-color-scheme: dark){.chart-card h2{color:#e06aaa}}@media(max-width: 900px){.panels{grid-template-columns:1fr 1fr}.charts{grid-template-columns:1fr}}@media(max-width: 480px){.panels{grid-template-columns:1fr 1fr;gap:10px}.panel{padding:16px 14px}.panel .amount{font-size:1.5rem}}.ct-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:8px}@media(max-width: 600px){.ct-grid{grid-template-columns:1fr;gap:28px}}.ct-panel h2{font-size:1rem;font-weight:700;margin:0 0 12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle)}.ct-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:6px;overflow:hidden;min-height:48px;background:var(--bg)}.ct-item{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;border-bottom:1px solid var(--border-subtle);font-size:.95rem;gap:8px}.ct-item:last-child{border-bottom:none}.ct-item:hover{background:var(--bg-surface)}.ct-name{flex:1;cursor:text;border-radius:3px;padding:1px 3px;margin:-1px -3px}.ct-name:hover{background:var(--bg-elevated)}.ct-name-input{flex:1;border:1px solid var(--input-border);border-radius:3px;padding:2px 6px;font-size:inherit;font-family:inherit;background:var(--bg-input);color:var(--text);outline:none}.ct-name-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(128,128,128,.15)}.ct-delete{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:1.1rem;line-height:1;padding:0 4px;flex-shrink:0}.ct-delete:hover{color:var(--error)}.ct-add{margin-top:8px}.ct-add input{margin-top:0;border-radius:6px}.ct-empty{padding:12px 14px;color:var(--text-muted);font-style:italic;font-size:.9rem}.express-creation-wrap{max-width:100%}.smart-input{width:100%;padding:12px 14px;font-size:1rem;font-family:inherit;border:1px solid var(--input-border);border-radius:6px;resize:vertical;min-height:72px;background:var(--bg-input);color:var(--text)}.smart-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(128,128,128,.12)}.image-zone{margin-top:12px;border:2px dashed var(--border);border-radius:8px;transition:border-color .15s,background .15s;cursor:pointer;overflow:hidden}.image-zone:hover,.image-zone.drag-over{border-color:var(--text-subtle);background:var(--bg-surface)}.image-zone-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:22px 16px;color:var(--text-muted);font-size:.9rem;text-align:center}.image-zone-placeholder .icon{font-size:1.6rem;line-height:1}.image-zone-placeholder strong{color:var(--text-subtle)}.image-zone-placeholder small{font-size:.78rem}.image-preview-wrap{position:relative;display:none}.image-preview-wrap img{display:block;width:100%;max-height:340px;object-fit:contain;background:var(--bg-elevated)}.image-remove{position:absolute;top:8px;right:8px;padding:4px 10px;background:rgba(0,0,0,.55);color:#fff;border:none;border-radius:4px;font-size:.82rem;cursor:pointer;line-height:1.4}.image-remove:hover{background:rgba(0,0,0,.75)}.parse-actions{display:flex;align-items:center;gap:12px;margin-top:14px}.spinner{display:none;width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--text-subtle);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.usage-pill{display:inline-flex;align-items:center;gap:10px;margin-top:14px;padding:6px 12px;background:var(--bg-surface);border:1px solid var(--border);border-radius:20px;font-size:.82rem;color:var(--text-subtle)}.usage-pill .cost{font-weight:700;color:var(--text)}.usage-pill .tokens{color:var(--text-muted)}.ai-error{color:var(--error);background:var(--error-bg);border:1px solid var(--error-border);border-radius:4px;padding:10px 14px;margin-top:14px;font-size:.9rem}.preview-section{margin-top:32px}.preview-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border-subtle)}.preview-header h2{font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle);margin:0}.select-toggle{font-size:.82rem;color:var(--text-muted);cursor:pointer;user-select:none}.select-toggle:hover{color:var(--text)}.preview-hint{font-size:.82rem;color:var(--text-muted);margin:0 0 12px}.preview-cards{display:flex;flex-direction:column;gap:12px}.preview-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:0;transition:opacity .15s}.preview-card.deselected{opacity:.35}.preview-card.deselected .pcard-body{pointer-events:none}.pcard-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;margin-bottom:14px;border-bottom:1px solid var(--border-subtle)}.pcard-include{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--text-muted);cursor:pointer;user-select:none}.pcard-include input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.pcard-body{display:flex;flex-direction:column;gap:0}.pcard-body>.pcard-field{margin-bottom:16px}.pcard-body>.pcard-field:last-child{margin-bottom:0}.pcard-row1,.pcard-row2{display:grid;gap:10px}.pcard-row1{grid-template-columns:1fr 1fr auto;margin-bottom:8px}.pcard-row2{grid-template-columns:auto 1fr auto;margin-bottom:20px}.pcard-field{display:flex;flex-direction:column;gap:3px;min-width:0}.pcard-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.pcard-value{min-width:100px}.val-wrap{display:flex;align-items:center;gap:6px}.val-wrap span{white-space:nowrap;color:var(--text-muted);font-size:.85rem}.val-wrap .edit-input{min-width:0}.pcard-type-wrap.type-income .edit-type{color:#155724;font-weight:600}.pcard-type-wrap.type-expense .edit-type{color:#721c24}.pcard-type-wrap.type-savings_dep .edit-type{color:var(--sav-dep-fg)}.pcard-type-wrap.type-savings_wit .edit-type{color:var(--sav-wit-fg)}@media(prefers-color-scheme: dark){.pcard-type-wrap.type-income .edit-type{color:#6ecf8a}.pcard-type-wrap.type-expense .edit-type{color:#cf7075}}.edit-input,.edit-select,.edit-textarea{border:1px solid rgba(0,0,0,0);border-radius:3px;background:rgba(0,0,0,0);padding:4px 6px;width:100%;font-size:.88rem;font-family:inherit;color:inherit;box-sizing:border-box;margin-top:0}.edit-input:hover,.edit-select:hover,.edit-textarea:hover{border-color:var(--border);background:var(--bg-elevated)}.edit-input:focus,.edit-select:focus,.edit-textarea:focus{border-color:var(--input-border);background:var(--bg-input);outline:none}.edit-textarea{resize:vertical;min-height:40px;line-height:1.4}.confirm-actions{display:flex;align-items:center;gap:12px;margin-top:18px;flex-wrap:wrap}.success-banner{background:#d4edda;color:#155724;border-radius:6px;padding:14px 18px;margin-top:20px;font-size:.95rem}.success-banner a{color:#155724;font-weight:600}@media(prefers-color-scheme: dark){.success-banner{background:#1a3326;color:#6ecf8a}.success-banner a{color:#6ecf8a}}.trial-banner{background:var(--bg-surface);border:1px solid var(--border);border-left:3px solid var(--link);border-radius:6px;padding:10px 14px;margin-bottom:18px;font-size:.88rem;color:var(--text-subtle);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.trial-banner .trial-meter{font-weight:600;color:var(--text)}.trial-blocked{background:#fff0f0;border:1px solid #f5c6cb;border-radius:6px;padding:20px;margin:20px 0;font-size:.95rem;color:#7a1a1a;line-height:1.6}.trial-blocked a{color:#7a1a1a;font-weight:600}@media(prefers-color-scheme: dark){.trial-blocked{background:#2a1515;border-color:#4a2020;color:#f5a0a0}.trial-blocked a{color:#f5a0a0}}@media(max-width: 600px){.pcard-row1{grid-template-columns:1fr}.pcard-row2{grid-template-columns:1fr}}main.page-narrow{max-width:480px}main.page-centered{text-align:center}.pow-status{font-size:.82rem;color:var(--text-muted);margin:4px 0 0}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;max-width:900px}@media(max-width: 700px){.profile-grid{grid-template-columns:1fr;gap:28px}}.profile-section--stacked{display:flex;flex-direction:column;gap:32px}.profile-section h2{font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle);margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid var(--border-subtle)}.pw-wrap{position:relative;display:flex;align-items:center}.pw-wrap input{padding-right:40px}.pw-eye{position:absolute;right:8px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:4px;display:flex;align-items:center;flex-shrink:0}.pw-eye:hover{color:var(--text)}.totp-qr-wrap{margin:20px 0 16px;display:flex;justify-content:center}.totp-qr{width:200px;height:200px;border-radius:8px;border:1px solid var(--border)}.totp-secret-details{margin-bottom:20px;font-size:.88rem;color:var(--text-subtle)}.totp-secret-details summary{cursor:pointer}.totp-secret{display:block;margin-top:8px;padding:8px 12px;background:var(--bg-elevated);border-radius:4px;font-size:.85rem;letter-spacing:.08em;word-break:break-all}.totp-recovery-box{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:6px;margin-bottom:8px}.totp-recovery-box code{flex:1;font-size:1.1rem;letter-spacing:.12em}.totp-status{font-weight:600;margin:0 0 8px}.totp-status--on{color:#2a7a3b}.totp-status--off{color:var(--text-muted)}@media(prefers-color-scheme: dark){.totp-status--on{color:#6ecf8a}}.month-offset-preview{margin:4px 0 0;font-size:.78rem;color:var(--text-muted);white-space:pre;line-height:1.6}.success-msg{color:#155724;background:#d4edda;border-radius:4px;padding:8px 12px;font-size:.9rem;margin-bottom:12px}@media(prefers-color-scheme: dark){.success-msg{color:#6ecf8a;background:#1a3326}}.cdialog-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;align-items:center;justify-content:center}.cdialog-backdrop.cdialog-visible{display:flex}.cdialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;padding:28px 28px 20px;max-width:360px;width:calc(100% - 40px);box-shadow:0 8px 32px rgba(0,0,0,.18)}.cdialog-msg{margin:0 0 20px;font-size:.95rem;line-height:1.5;color:var(--text)}.cdialog-actions{display:flex;gap:10px;justify-content:flex-end}.sidebar-user-actions{display:none}@media(max-width: 768px){header{padding:0 16px}.hamburger{display:flex}.header-user-actions{display:none}.sidebar{position:fixed;top:56px;left:0;height:calc(100vh - 56px);width:240px;z-index:150;transform:translateX(-110%);transition:transform .25s ease;overflow-y:auto}body.nav-open .sidebar{transform:translateX(0)}.sidebar-user-actions{display:flex;flex-direction:column;gap:8px;padding:16px 24px;border-top:1px solid hsla(0,0%,100%,.08);margin-top:8px}.sidebar-user-name{font-size:.85rem;color:hsla(0,0%,100%,.4)}.sidebar-logout-btn{background:none;border:1px solid hsla(0,0%,100%,.15);border-radius:4px;padding:5px 12px;cursor:pointer;font-size:.9rem;color:hsla(0,0%,100%,.6);text-align:left}.sidebar-logout-btn:hover{background:hsla(0,0%,100%,.07);color:#fff}.app-main{padding:20px 16px}main{padding:0 16px;margin:24px auto}}.bodytext{line-height:1.7;color:var(--text)}.bodytext h1,.bodytext h2,.bodytext h3,.bodytext h4,.bodytext h5,.bodytext h6{margin-top:2em;margin-bottom:.4em;line-height:1.25;color:var(--text)}.bodytext h1:first-child,.bodytext h2:first-child,.bodytext h3:first-child,.bodytext h4:first-child,.bodytext h5:first-child,.bodytext h6:first-child{margin-top:0}.bodytext h1{font-size:1.75rem}.bodytext h2{font-size:1.35rem}.bodytext h3{font-size:1.1rem}.bodytext p{margin-top:0;margin-bottom:1em}.bodytext ul,.bodytext ol{margin:0 0 1em 0;padding-left:1.5em}.bodytext ul li,.bodytext ol li{margin-bottom:.3em}.bodytext a{color:var(--accent)}.bodytext a:hover{text-decoration:underline}.bodytext strong{font-weight:600}.bodytext hr{border:none;border-top:1px solid var(--border);margin:2em 0}.bodytext blockquote{margin:1em 0;padding-left:1em;border-left:3px solid var(--border);color:var(--text-muted)}.page-tip{margin-bottom:3em;opacity:.5}.in-page-tip{font-size:.9rem;color:var(--text-subtle);margin:0 0 24px}.l-landingpage{overflow-x:hidden}.l-landingpage .lp-hero{position:relative;min-height:calc(100vh - 56px);background:linear-gradient(140deg, #0d0d1c 0%, #1a0b2e 55%, #0a1a2e 100%);display:flex;align-items:center;padding:80px 80px 80px 80px;gap:72px;overflow:hidden}@media(max-width: 1024px){.l-landingpage .lp-hero{padding:60px 48px;gap:48px}}.l-landingpage .lp-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 28% 55%, rgba(194, 71, 138, 0.22) 0%, transparent 55%),radial-gradient(ellipse at 82% 20%, rgba(60, 120, 220, 0.12) 0%, transparent 45%);pointer-events:none}.l-landingpage .lp-hero::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle, rgba(255, 255, 255, 0.045) 1px, transparent 1px);background-size:30px 30px;pointer-events:none}.l-landingpage .lp-hero-copy{position:relative;z-index:1;flex:0 0 auto;max-width:500px}.l-landingpage .lp-hero-title{font-size:clamp(2.8rem,5vw,4.4rem);font-weight:800;line-height:1.08;color:#fff;margin:0 0 26px;letter-spacing:-0.025em}.l-landingpage .lp-hero-visual{position:relative;z-index:1;flex:1;min-width:0;display:flex;justify-content:center;align-items:center;align-self:center}.l-landingpage .lp-hero-img{width:100%;height:auto;max-width:660px;border-radius:16px;box-shadow:0 40px 100px rgba(0,0,0,.55),0 0 0 1px hsla(0,0%,100%,.07);transform:rotate(2.5deg);transition:transform .5s cubic-bezier(0.25, 0.46, 0.45, 0.94);display:block}.l-landingpage .lp-hero-img:hover{transform:rotate(0) scale(1.015)}@media(max-width: 1024px){.l-landingpage .lp-hero-img{transform:rotate(0);max-width:100%}}.l-landingpage .lp-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:.78rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#c2478a;background:rgba(194,71,138,.12);border:1px solid rgba(194,71,138,.28);border-radius:100px;padding:5px 14px;margin-bottom:32px}.l-landingpage .lp-eyebrow-dot{width:6px;height:6px;border-radius:50%;background:#c2478a;animation:lp-pulse 2s ease-in-out infinite}.l-landingpage .lp-eyebrow-sub{font-size:1.12rem;line-height:1.72;color:hsla(0,0%,100%,.58);margin:0 0 44px}@keyframes lp-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(0.7)}}.l-landingpage .lp-accent{color:#c2478a}.l-landingpage .lp-cta-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.l-landingpage .lp-cta-row--center{justify-content:center}.l-landingpage .lp-btn{display:inline-block;padding:13px 26px;border-radius:8px;font-size:1rem;font-weight:600;text-decoration:none !important;white-space:nowrap;transition:transform .18s,box-shadow .18s,background .18s,border-color .18s}.l-landingpage .lp-btn-primary{background:#c2478a;color:#fff !important;box-shadow:0 4px 22px rgba(194,71,138,.38)}.l-landingpage .lp-btn-primary:hover{background:#d4569b;transform:translateY(-2px);box-shadow:0 10px 36px rgba(194,71,138,.48)}.l-landingpage .lp-btn-primary--lg{font-size:1.08rem;padding:16px 36px}.l-landingpage .lp-btn-ghost{color:hsla(0,0%,100%,.7) !important;border:1px solid hsla(0,0%,100%,.2)}.l-landingpage .lp-btn-ghost:hover{color:#fff !important;border-color:hsla(0,0%,100%,.5);background:hsla(0,0%,100%,.06)}.l-landingpage .lp-features{padding:0}.l-landingpage .lp-feature{display:flex;align-items:center;gap:90px;padding:110px 100px;max-width:1350px;margin:0 auto}@media(max-width: 1024px){.l-landingpage .lp-feature{padding:80px 48px;gap:60px}}.l-landingpage .lp-feature.lp-rev{flex-direction:row-reverse}.l-landingpage .lp-feature-copy{flex:1;min-width:0}.l-landingpage .lp-feature-num{display:inline-block;font-size:.73rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:#c2478a;margin-bottom:18px}.l-landingpage .lp-feature-title{font-size:clamp(1.9rem,3vw,2.9rem);font-weight:800;line-height:1.12;color:var(--text);margin:0 0 18px;letter-spacing:-0.022em}.l-landingpage .lp-feature-body{font-size:1.05rem;line-height:1.76;color:var(--text-subtle);margin:0 0 30px}.l-landingpage .lp-feature-visual{flex:1;min-width:0;display:flex;justify-content:center}.l-landingpage .lp-feature-img{width:100%;max-width:600px;height:auto;border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.14);display:block}.l-landingpage .lp-feature:not(.lp-rev) .lp-feature-img{transform:rotate(-2.5deg)}.l-landingpage .lp-feature.lp-rev .lp-feature-img{transform:rotate(2deg)}@media(max-width: 1024px){.l-landingpage .lp-feature:not(.lp-rev) .lp-feature-img,.l-landingpage .lp-feature.lp-rev .lp-feature-img{transform:rotate(0);max-width:100%}}.l-landingpage .lp-checklist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:11px}.l-landingpage .lp-checklist li{display:flex;align-items:center;gap:11px;font-size:.96rem;color:var(--text-subtle)}.l-landingpage .lp-checklist li::before{content:"✓";display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;min-width:22px;border-radius:50%;background:rgba(194,71,138,.14);color:#c2478a;font-size:.72rem;font-weight:900}.l-landingpage .lp-stripe{background:var(--bg-surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.l-landingpage .lp-stats{display:flex;justify-content:center;gap:0;background:var(--bg-surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.l-landingpage .lp-stat{flex:1;max-width:260px;padding:48px 32px;text-align:center;border-right:1px solid var(--border)}.l-landingpage .lp-stat:last-child{border-right:none}.l-landingpage .lp-stat-value{font-size:2.8rem;font-weight:800;color:#c2478a;line-height:1;margin-bottom:8px;letter-spacing:-0.03em}.l-landingpage .lp-stat-label{font-size:.88rem;color:var(--text-muted);font-weight:500}.l-landingpage .lp-faq-section{padding:100px 40px;background:var(--bg)}.l-landingpage .lp-faq-inner{max-width:760px;margin:0 auto}.l-landingpage .lp-faq-title{font-size:clamp(1.6rem,2.4vw,2.2rem);font-weight:800;letter-spacing:-0.025em;color:var(--text);margin:0 0 48px;text-align:center}.l-landingpage .lp-faq-list{display:flex;flex-direction:column}.l-landingpage .lp-faq-item{border-bottom:1px solid var(--border)}.l-landingpage .lp-faq-item:first-child{border-top:1px solid var(--border)}.l-landingpage .lp-faq-item[open] .lp-faq-q::after{transform:rotate(45deg)}.l-landingpage .lp-faq-q{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 4px;font-size:1rem;font-weight:600;color:var(--text);cursor:pointer;list-style:none;user-select:none}.l-landingpage .lp-faq-q::-webkit-details-marker{display:none}.l-landingpage .lp-faq-q::after{content:"+";flex-shrink:0;font-size:1.4rem;font-weight:300;color:#c2478a;line-height:1;transition:transform .2s ease}.l-landingpage .lp-faq-a{margin:0;padding:0 4px 20px;font-size:.93rem;line-height:1.75;color:var(--text-muted)}.l-landingpage .lp-cta-section{background:linear-gradient(140deg, #0d0d1c 0%, #1a0b2e 100%);padding:130px 40px;text-align:center;position:relative;overflow:hidden}.l-landingpage .lp-cta-section::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 60%, rgba(194, 71, 138, 0.22) 0%, transparent 60%);pointer-events:none}.l-landingpage .lp-cta-section::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle, rgba(255, 255, 255, 0.04) 1px, transparent 1px);background-size:30px 30px;pointer-events:none}.l-landingpage .lp-cta-section-inner{position:relative;z-index:1;max-width:620px;margin:0 auto}.l-landingpage .lp-cta-section-title{font-size:clamp(2.2rem,4.5vw,3.4rem);font-weight:800;color:#fff;margin:0 0 18px;letter-spacing:-0.025em;line-height:1.1}.l-landingpage .lp-cta-section-sub{font-size:1.08rem;color:hsla(0,0%,100%,.52);margin:0 0 44px;line-height:1.65}.l-landingpage .small-hint-text{font-size:6pt;transform:rotate(-2deg);margin-top:1em;padding-left:2em;opacity:.5}@media(max-width: 1024px){.l-landingpage .small-hint-text{transform:rotate(0);padding-left:0}}@media(max-width: 1000px){.l-landingpage .lp-hero{flex-direction:column;padding:56px 24px 64px;min-height:auto;text-align:center}.l-landingpage .lp-hero-copy{max-width:100%}.l-landingpage .lp-cta-row{justify-content:center}.l-landingpage .lp-feature,.l-landingpage .lp-feature.lp-rev{flex-direction:column !important;padding:64px 24px;gap:36px;text-align:center}.l-landingpage .lp-checklist{align-items:center}.l-landingpage .lp-feature:not(.lp-rev) .lp-feature-img,.l-landingpage .lp-stats{flex-wrap:wrap}.l-landingpage .lp-stat{border-right:none;border-bottom:1px solid var(--border);flex:0 0 50%;max-width:50%}.l-landingpage .lp-stat:nth-child(odd){border-right:1px solid var(--border)}.l-landingpage .lp-cta-section{padding:80px 24px}}@media(max-width: 480px){.l-landingpage .lp-stat{flex:0 0 100%;max-width:100%;border-right:none}.l-landingpage .lp-stat:nth-child(odd){border-right:none}}.error-page{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:80px 24px;min-height:calc(100vh - 57px)}.error-page .error-page-code{font-size:clamp(6rem,20vw,10rem);font-weight:700;line-height:1;color:var(--border);letter-spacing:-4px;margin-bottom:16px;user-select:none}.error-page .error-page-title{font-size:clamp(1.4rem,4vw,2rem);font-weight:600;color:var(--text);margin:0 0 12px}.error-page .error-page-message{font-size:1rem;color:var(--text-muted);max-width:380px;margin:0 0 32px;line-height:1.6}
