:root{
  --bg:#f6f4f0; --panel:#fffdf9; --panel2:#f0ece5; --text:#2c2926; --muted:#746d66;
  --line:#ddd7cf; --accent:#7f9b86; --accent2:#d6b77c; --danger:#b96060; --good:#62866d;
  --sidebar:#262a27; --sidebarText:#f7f2e9; --sidebarMuted:#c9c6c0; --navActive:#3b443e; --input:#ffffff; --notice:#f4f0e8;
  --shadow:0 12px 30px rgba(55,45,35,.08); --radius:18px;
}
*{box-sizing:border-box} body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
button,input,select,textarea{font:inherit} button{cursor:pointer}
.app{min-height:100vh;display:grid;grid-template-columns:250px 1fr}
.sidebar{background:var(--sidebar);color:var(--sidebarText);padding:22px 16px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:20px}
.brand{padding:6px 8px 14px}.brand h1{font-size:19px;margin:0 0 4px}.brand small{color:var(--sidebarMuted)}
.nav{display:grid;gap:7px}.nav button{width:100%;border:0;background:transparent;color:var(--sidebarMuted);text-align:left;padding:12px 13px;border-radius:12px;font-weight:700;cursor:pointer}.nav button:hover,.nav button.active{background:var(--navActive);color:var(--sidebarText)}
.nav-group{display:grid;gap:3px;border-radius:14px}.nav-parent{display:flex!important;align-items:center;justify-content:space-between}.nav-chevron{font-size:14px;opacity:.7}.nav-children{display:grid;gap:2px;margin:1px 0 4px 12px;padding-left:10px;border-left:1px solid color-mix(in srgb,var(--sidebarMuted) 35%,transparent)}.nav-children button{padding:8px 10px!important;border-radius:9px!important;font-size:12px!important;font-weight:650!important}.nav-group.group-active>.nav-parent{color:var(--sidebarText);background:color-mix(in srgb,var(--navActive) 65%,transparent)}.nav-children button.active{background:var(--navActive);color:var(--sidebarText)}
.context-nav{display:none}
.sidebar .footer{margin-top:auto;color:var(--sidebarMuted);font-size:12px;padding:8px}
.main{padding:26px 28px 50px;min-width:0}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.topbar h2{margin:0;font-size:28px}.topbar p{margin:5px 0 0;color:var(--muted)}
.btn{border:1px solid var(--line);background:var(--panel);color:var(--text);padding:10px 14px;border-radius:11px;font-weight:750;box-shadow:0 2px 8px rgba(0,0,0,.03)}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{background:#fff5f4;border-color:#ecc9c5;color:#9a4141}.btn.small{padding:7px 10px;font-size:13px}.btn.ghost{box-shadow:none;background:transparent}
.grid{display:grid;gap:16px}.grid.cards{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);min-width:0}.metric .label{color:var(--muted);font-size:13px;font-weight:700}.metric .value{font-size:27px;font-weight:850;margin-top:8px;letter-spacing:-.02em}.metric .sub{color:var(--muted);font-size:12px;margin-top:4px}.positive{color:var(--good)!important}.negative{color:var(--danger)!important}.warning{color:#9b6f25!important}
.two-col{grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr)}.two-pay-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.pay-period-card{height:100%}.budget-breakdown{display:grid;grid-template-columns:minmax(0,1fr) repeat(3,minmax(90px,.42fr));gap:8px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.budget-breakdown:last-child{border-bottom:0}.budget-breakdown .muted{color:var(--muted);font-size:11px}.budget-breakdown .num{text-align:right;font-weight:800;font-variant-numeric:tabular-nums}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-title h3{margin:0;font-size:17px}.section-title span{color:var(--muted);font-size:12px}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.table{width:100%;border-collapse:collapse;min-width:720px}.table th,.table td{padding:12px 13px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}.table th{background:var(--panel2);font-size:12px;color:var(--muted);position:sticky;top:0;z-index:1}.table tr:last-child td{border-bottom:0}.amount{font-variant-numeric:tabular-nums;font-weight:800}.tag{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800;background:#edf2ee;color:#567362}.tag.gold{background:#f6eddc;color:#876b37}.tag.red{background:#fae9e7;color:#9c4c4c}.tag.gray{background:#efeeeb;color:#6e6a66}.tag.blue{background:#e8f0f7;color:#47677e}.action-stack{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.subcard-note{color:var(--muted);font-size:12px;line-height:1.45;margin:0 0 12px}.linked-note{display:block;color:var(--good);font-size:11px;font-weight:800;margin-top:4px}
.empty{padding:28px 14px;text-align:center;color:var(--muted)}
.progress{height:9px;background:#ebe7e1;border-radius:999px;overflow:hidden}.progress>span{height:100%;display:block;background:var(--accent);border-radius:999px;transition:width .25s}.budget-row{padding:13px 0;border-bottom:1px solid var(--line)}.budget-row:last-child{border-bottom:0}.budget-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:7px}.budget-head strong{font-size:14px}.budget-head span{font-size:12px;color:var(--muted)}
.screen{display:none}.screen.active{display:block}.toolbar{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.filter{padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.proj-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.chart{width:100%;height:250px;display:block;border-radius:12px;background:linear-gradient(to bottom,var(--panel),var(--panel2))}.legend{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:12px;margin-top:9px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:5px;background:var(--accent)}.dot.gold{background:var(--accent2)}
.timeline{display:grid;gap:8px;max-height:520px;overflow:auto;padding-right:3px}.event{display:grid;grid-template-columns:92px 1fr auto;gap:11px;align-items:center;border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:10px}.event .date{font-size:12px;color:var(--muted);font-weight:700}.event .name{font-weight:800;font-size:13px}.event .bal{font-size:12px;color:var(--muted);margin-top:2px}.event.income{border-left:4px solid var(--good)}.event.bill,.event.expense{border-left:4px solid var(--danger)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.field{display:grid;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:12px;color:var(--muted);font-weight:800}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:11px;background:var(--input);padding:11px 12px;color:var(--text);width:100%}.field textarea{min-height:80px;resize:vertical}.check{display:flex;gap:8px;align-items:center;font-size:13px}.check input{width:auto}.modal-backdrop{position:fixed;inset:0;background:rgba(30,29,27,.45);display:none;align-items:center;justify-content:center;padding:18px;z-index:100}.modal-backdrop.open{display:flex}.modal{background:var(--panel);width:min(620px,100%);max-height:92vh;overflow:auto;border-radius:20px;border:1px solid var(--line);box-shadow:0 28px 90px rgba(0,0,0,.25)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}.modal-head h3{margin:0}.modal-body{padding:20px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;padding:0 20px 20px}.icon-btn{border:0;background:transparent;font-size:20px;padding:6px;color:var(--muted)}
.month-banner{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;margin-bottom:16px}.month-banner strong{font-size:16px}.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mini{padding:12px;border-radius:12px;background:var(--panel2);border:1px solid var(--line)}.mini small{display:block;color:var(--muted);font-weight:750}.mini strong{display:block;margin-top:5px;font-size:18px}
.settings-list{display:grid;gap:14px}.setting-row{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.setting-row:last-child{border-bottom:0}.setting-row h4{margin:0 0 4px}.setting-row p{margin:0;color:var(--muted);font-size:12px}.color-input{width:54px;height:36px;padding:3px;border:1px solid var(--line);border-radius:9px;background:var(--input)}
.mobile-nav{display:none}.hidden{display:none!important}

.statement-drop{border:2px dashed var(--line);border-radius:16px;padding:22px;text-align:center;background:var(--panel2);transition:.2s}.statement-drop.drag{border-color:var(--accent);background:var(--notice)}.statement-drop strong{display:block;font-size:16px;margin-bottom:5px}.statement-drop p{margin:0;color:var(--muted);font-size:12px}.insights{display:grid;gap:10px}.insight{border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;padding:12px 13px;background:var(--panel)}.insight.warn{border-left-color:var(--accent2)}.insight.bad{border-left-color:var(--danger)}.insight.good{border-left-color:var(--good)}.insight strong{display:block;font-size:13px;margin-bottom:3px}.insight p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.source-pill{font-size:10px;padding:3px 6px;border-radius:999px;background:#eeeae4;color:#6c665f;font-weight:800;white-space:nowrap}.tx-desc{max-width:340px}.tx-desc strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-desc small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.mapping-preview{overflow:auto;border:1px solid var(--line);border-radius:12px;margin-top:14px}.mapping-preview table{border-collapse:collapse;width:100%;min-width:560px;font-size:11px}.mapping-preview th,.mapping-preview td{border-bottom:1px solid var(--line);padding:8px 9px;text-align:left;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mapping-preview th{background:var(--panel2)}
.pdf-review{max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:12px;margin-top:12px}.pdf-review table{border-collapse:collapse;width:100%;min-width:850px;font-size:11px}.pdf-review th,.pdf-review td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.pdf-review th{position:sticky;top:0;background:var(--panel2);z-index:2}.pdf-review input[type="text"],.pdf-review input[type="date"],.pdf-review input[type="number"]{width:100%;min-width:105px;border:1px solid var(--line);border-radius:8px;background:var(--input);color:var(--text);padding:7px}.pdf-review .desc-input{min-width:280px}.pdf-review .amount-input{min-width:110px;text-align:right}.pdf-page{font-size:10px;color:var(--muted);white-space:nowrap}.pdf-stats{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.pdf-stats span{font-size:11px;font-weight:800;border:1px solid var(--line);background:var(--panel2);border-radius:999px;padding:5px 8px}.pdf-loading{display:flex;align-items:center;gap:10px;padding:18px 0;color:var(--muted)}.pdf-spinner{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.split-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.notice{padding:12px 13px;border-radius:12px;background:var(--notice);border:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.45}.notice strong{color:var(--text)}.recurring-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.recurring-row:last-child{border-bottom:0}.recurring-row small{display:block;color:var(--muted);margin-top:2px}.toast{position:fixed;right:18px;bottom:18px;z-index:300;background:var(--sidebar);color:var(--sidebarText);padding:11px 14px;border-radius:11px;box-shadow:0 12px 35px rgba(0,0,0,.22);font-size:13px;font-weight:700;opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}
@media(max-width:1050px){.grid.cards{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.two-pay-grid{grid-template-columns:1fr}.app{grid-template-columns:210px 1fr}.main{padding:22px 20px}}
@media(max-width:760px){.split-3{grid-template-columns:1fr}.tx-desc{max-width:210px}.app{display:block}.sidebar{display:none}.main{padding:18px 13px 88px}.topbar{align-items:center}.topbar h2{font-size:23px}.topbar p{font-size:12px}.grid.cards{grid-template-columns:1fr 1fr;gap:10px}.card{padding:14px;border-radius:15px}.metric .value{font-size:21px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.kpis{grid-template-columns:1fr}.context-nav{display:flex;gap:7px;overflow-x:auto;margin:0 0 14px;padding:2px 0 7px;scrollbar-width:none}.context-nav.hidden{display:none!important}.context-nav::-webkit-scrollbar{display:none}.context-nav button{white-space:nowrap;border:1px solid var(--line);background:var(--card);color:var(--text);padding:8px 11px;border-radius:999px;font-weight:750;font-size:12px}.context-nav button.active{background:var(--accent);border-color:var(--accent);color:var(--accentText,#fff)}.mobile-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;background:var(--sidebar);border-top:1px solid var(--line);z-index:70}.mobile-nav button{border:0;background:transparent;color:var(--sidebarMuted);padding:10px 3px 9px;font-size:10px;font-weight:800}.mobile-nav button.active{background:var(--navActive);color:var(--sidebarText)}.mobile-nav .ico{display:block;font-size:17px;margin-bottom:2px}.event{grid-template-columns:74px 1fr}.event>strong{grid-column:2}.month-banner{align-items:flex-start;flex-direction:column}}
@media(max-width:560px){.budget-breakdown{grid-template-columns:1fr 1fr}.budget-breakdown .num{text-align:left}.budget-breakdown .muted{grid-column:1/-1}}
@media(max-width:430px){.grid.cards{grid-template-columns:1fr}.topbar .btn{padding:9px 10px}.topbar p{display:none}}

.week-slice{border:1px solid var(--line);border-radius:14px;background:var(--panel);margin-top:12px;overflow:hidden}
.week-slice-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:12px 13px;background:var(--panel2);border-bottom:1px solid var(--line)}
.week-slice-head h4{margin:0;font-size:15px}.week-slice-head small{display:block;color:var(--muted);margin-top:3px}.week-slice-total{text-align:right}.week-slice-total strong{display:block;font-size:16px}.week-slice-total span{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.week-slice-body{padding:0 13px 12px}.week-part{padding:11px 0;border-bottom:1px solid var(--line)}.week-part:last-child{border-bottom:0}.week-part-title{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:6px}.week-part-title strong{font-size:12px}.week-part-title span{font-size:11px;color:var(--muted)}
.week-money-grid{display:grid;grid-template-columns:minmax(0,1.2fr) repeat(3,minmax(68px,.55fr));gap:8px;align-items:center;font-size:11px}.week-money-grid .num{text-align:right;font-weight:800;font-variant-numeric:tabular-nums}.week-money-grid .muted{color:var(--muted)}
.week-item{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:start;padding:7px 0}.week-item+.week-item{border-top:1px dashed var(--line)}.week-item small{display:block;color:var(--muted);margin-top:2px}.week-item strong{font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:560px){.week-money-grid{grid-template-columns:1fr 1fr}.week-money-grid .num{text-align:left}.week-money-grid .muted{grid-column:1/-1}.week-slice-head{align-items:flex-start}}

/* Shared workspace / authentication */
.auth-overlay{position:fixed;inset:0;z-index:9999;background:rgba(26,30,27,.72);display:flex;align-items:center;justify-content:center;padding:22px;backdrop-filter:blur(8px)}
.auth-overlay.hidden{display:none}.auth-card{width:min(430px,100%);background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:26px;box-shadow:var(--shadow)}
.auth-card h2{margin:8px 0 4px}.auth-card p{margin:0 0 18px;color:var(--muted)}.brand-mark{font-size:13px;font-weight:800;letter-spacing:.03em;color:var(--accent)}
.auth-message{min-height:20px;margin:10px 0;color:var(--danger);font-size:13px}.auth-button{width:100%;justify-content:center}
.sync-bar{position:fixed;right:14px;top:12px;z-index:9000;display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:7px 9px 7px 12px;box-shadow:var(--shadow);font-size:12px}
.sync-bar.hidden{display:none}.sync-bar #syncUser{font-weight:700}.sync-bar #syncState{color:var(--muted)}
@media(max-width:760px){.sync-bar{left:10px;right:10px;top:8px;justify-content:space-between;border-radius:14px}.main{padding-top:64px}}


/* Bloom Balance appearance picker */
.bloom-mark{color:var(--accent2);font-weight:900;display:inline-block;transform:translateY(-1px)}
.brand-mark{font-weight:900;letter-spacing:.02em;color:var(--text);margin-bottom:6px}.brand-mark .bloom-mark{font-size:21px;margin-right:3px}
.appearance-picker{padding:4px 0 10px}.appearance-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:13px}.appearance-heading h4{margin:0 0 4px}.appearance-heading p{margin:0;color:var(--muted);font-size:12px;line-height:1.4}
.theme-preset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.theme-choice{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:13px;padding:10px;display:flex;gap:10px;align-items:center;text-align:left;font-size:12px;font-weight:800}.theme-choice:hover{border-color:var(--accent);transform:translateY(-1px)}.theme-choice.active{border:2px solid var(--accent);padding:9px;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent)}
.theme-swatch{display:flex;width:42px;height:28px;border-radius:9px;overflow:hidden;border:1px solid color-mix(in srgb,var(--line) 80%,#777);flex:0 0 auto}.theme-swatch i{display:block;width:50%;height:100%}.custom-swatch i:first-child{background:#e98ab9}.custom-swatch i:last-child{background:#8f63bd}
.custom-theme-controls{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:10px;align-items:end;margin-top:12px;padding:12px;border-radius:13px;background:var(--panel2);border:1px solid var(--line)}.custom-theme-controls .color-input{width:100%;height:42px}.custom-theme-controls .filter{width:100%;background:var(--input);color:var(--text)}
[data-theme="black-red"] .btn:not(.primary):not(.danger),[data-theme="black-red"] .filter{background:var(--panel2);color:var(--text)}
[data-theme="black-red"] .tag.gray{background:#383438;color:#ddd4d7}[data-theme="black-red"] .tag.gold{background:#44252b;color:#ffc7ce}[data-theme="black-red"] .tag.blue{background:#25373b;color:#b8e4ea}
@media(max-width:700px){.theme-preset-grid{grid-template-columns:1fr}.custom-theme-controls{grid-template-columns:1fr 1fr}.custom-theme-controls .field:last-child{grid-column:1/-1}}

[data-theme="black-red"] .btn.danger{background:#3a2025;border-color:#65323b;color:#ffb8c0}[data-theme="black-red"] .progress{background:#3a363a}[data-theme="black-red"] .source-pill{background:#373237;color:#ddd2d5}


/* Bloom Balance dashboard + Cash Flow navigation */
.dashboard-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}
.dashboard-hero-metric{min-height:132px;display:flex;flex-direction:column;justify-content:center}
.dashboard-date-value{font-size:28px!important;line-height:1.08}
.dashboard-week-card{margin-bottom:16px}
.dashboard-week-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.dashboard-week-metric{border:1px solid var(--line);background:var(--panel2);border-radius:14px;padding:13px;min-width:0}
.dashboard-week-metric small{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}
.dashboard-week-metric strong{display:block;font-size:18px;line-height:1.15;font-variant-numeric:tabular-nums}
.dashboard-week-metric span{display:block;color:var(--muted);font-size:10px;margin-top:5px;line-height:1.35}
.dashboard-middle-grid{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);align-items:start;margin-bottom:20px}
.dashboard-track-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.dashboard-track-grid .mini{min-height:88px}
.dashboard-two-pay-section{margin-top:8px;padding-top:4px}
.dashboard-pay-title{margin-bottom:14px}
.dashboard-two-pay-section .pay-period-card{min-width:0}
.dashboard-timeline .event{grid-template-columns:55px minmax(0,1fr) auto}
@media(max-width:1180px){.dashboard-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-week-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-middle-grid{grid-template-columns:1fr}.two-pay-grid{grid-template-columns:1fr}}
@media(max-width:760px){.dashboard-summary-grid{grid-template-columns:1fr 1fr}.dashboard-week-grid{grid-template-columns:1fr 1fr}.dashboard-track-grid{grid-template-columns:1fr 1fr}.dashboard-date-value{font-size:23px!important}.mobile-nav{grid-template-columns:repeat(3,1fr)!important}}
@media(max-width:520px){.dashboard-summary-grid,.dashboard-week-grid,.dashboard-track-grid{grid-template-columns:1fr}.dashboard-pay-title{align-items:flex-start;flex-direction:column}.dashboard-pay-title .btn{width:100%}.dashboard-hero-metric{min-height:112px}}
