
/* CALHGH-UI r5 */
:root{
 --bg:#f6f4ef;--surf:#ffffff;--surf2:#efece4;--line:#d8d1c1;--paper:#f6f4ef;
 --ink:#1e1a15;--dim:#6f6960;--gold:#b08a2e;--gold-soft:#d3b568;--gold-deep:#8f6f1f;
 --good:#2e7d46;--warn:#845f0e;--bad:#a83226;
 --shadow:0 1px 2px rgba(30,26,21,.05);--shadow-lift:0 10px 28px rgba(30,26,21,.14);
 --r-lg:14px;--r-md:10px;--r-sm:8px}
[data-theme="dark"]{
 --bg:#1c1c1f;--surf:#26262a;--surf2:#302f34;--line:#45444a;--paper:#1c1c1f;
 --ink:#f2f1ed;--dim:#9b9992;--gold:#c9a227;--gold-soft:#e2ba3a;--gold-deep:#e2ba3a;
 --good:#5fae76;--warn:#c9a84c;--bad:#dc7468;
 --shadow:0 1px 2px rgba(0,0,0,.4);--shadow-lift:0 10px 28px rgba(0,0,0,.5)}
*{box-sizing:border-box}
body{font-family:"Inter Tight",Inter,-apple-system,system-ui,Arial,sans-serif;margin:0;background:var(--bg);color:var(--ink);
 padding-bottom:76px;font-size:14px;line-height:1.45;transition:background .2s,color .2s}
h1,h2,h3{font-family:"Inter Tight",Inter,Arial,sans-serif;font-weight:600;letter-spacing:-.01em}
h1{font-size:22px;margin:4px 0 10px}h2{font-size:17px;margin:0 0 10px}h3{font-size:15px;margin:0 0 8px}
.klabel{font-size:10.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.08em;font-weight:600}
@keyframes pagefade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
/* reduced-motion honored via no-motion class (user Motion toggle can override) */
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
header{background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);
 padding:8px 16px;display:flex;justify-content:space-between;align-items:center;gap:14px;
 position:sticky;top:0;z-index:30}
html[data-theme="dark"] header{background:color-mix(in srgb,var(--bg) 88%,transparent)}
header b{font-family:"Inter Tight",Inter,sans-serif;font-size:16px;font-weight:600;color:var(--ink);letter-spacing:.08em;text-transform:uppercase}
header b em{color:var(--gold-text);font-style:normal}
header .brand{display:flex;align-items:center;gap:10px}
a.brand{padding:0;border:0;background:none;text-decoration:none;color:inherit}
a.brand:hover{background:none;color:inherit}
header .brand-copy{display:flex;flex-direction:column;gap:1px}
header .brand .klabel{letter-spacing:.1em;font-size:9.5px}
.brand-mark{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.brand-mark img{max-width:100%;max-height:100%;display:block}
.brand-mark .logo-dark{display:none}
html[data-theme="dark"] .brand-mark .logo-light{display:none}
html[data-theme="dark"] .brand-mark .logo-dark{display:block}
header nav{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end;flex:1}
.navlinks{display:flex;flex-wrap:wrap;gap:2px;align-items:center;justify-content:flex-end;
 padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--surf)}
html[data-theme="dark"] .navlinks{background:var(--surf)}
header a{color:var(--dim);text-decoration:none;padding:7px 12px;border-radius:999px;
 font-size:12.5px;font-weight:500;letter-spacing:0;text-transform:none;border:1px solid transparent;transition:background .14s,color .14s}
header a:hover{color:var(--ink);background:var(--surf2)}
header a.nav-on{color:var(--surf);background:var(--ink);font-weight:600}
html[data-theme="dark"] header a.nav-on{color:#161513;background:var(--ink)}
.userchip{display:inline-flex;align-items:center;padding:5px 10px;border:1px solid var(--line);
 border-radius:999px;color:var(--dim);font-size:11px;font-weight:600;letter-spacing:.02em}
.sectionchip{display:inline-flex;align-items:center;padding:5px 10px;border:1px solid var(--line);
 border-radius:999px;background:var(--surf);color:var(--ink);font-size:11px;font-weight:600;letter-spacing:.02em}
#themebtn,#displaybtn{background:transparent;border:1px solid var(--line);color:var(--dim);width:auto;
 padding:6px 11px;border-radius:999px;font-size:11px;cursor:pointer;font-weight:600;
 text-transform:none;letter-spacing:.02em;box-shadow:none}
#themebtn{margin-left:0}
#themebtn:hover,#displaybtn:hover{color:var(--ink);border-color:var(--dim);box-shadow:none}
.header-tools{display:flex;align-items:center;gap:6px;justify-content:flex-end}
.wrap{max-width:1240px;margin:18px auto;padding:0 20px;animation:pagefade .2s ease-out}
.card{background:var(--surf);border:1px solid var(--line);border-radius:var(--r-lg);
 padding:14px 16px;margin-bottom:12px;box-shadow:var(--shadow)}
.hero h1{margin-bottom:6px}
.hero p{max-width:720px;color:var(--dim);line-height:1.55;margin:0}
.hero-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.metric h2{font-size:26px;margin:6px 0 4px;font-variant-numeric:tabular-nums}
.metric p{margin:0;color:var(--dim)}
.metric-note{color:var(--dim);line-height:1.5;font-size:13px}
.empty-state{color:var(--dim);line-height:1.5}
.field-hint{margin:-2px 0 10px;color:var(--dim);font-size:12.5px;line-height:1.45}
.guided-only{}
html[data-display="compact"] .guided-only{display:none!important}
.step-title{margin:14px 0 6px;font-size:10.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.warn-card{border-color:color-mix(in srgb,var(--warn) 40%,transparent);background:color-mix(in srgb,var(--warn) 7%,var(--surf))}
.bad-card{border-color:color-mix(in srgb,var(--bad) 40%,transparent);background:color-mix(in srgb,var(--bad) 7%,var(--surf))}
.cta-button{display:inline-flex;align-items:center;justify-content:center;min-width:150px;
 padding:11px 18px;border-radius:var(--r-md);background:var(--ink);color:var(--surf);
 text-decoration:none;font-size:13.5px;font-weight:600;letter-spacing:0;text-transform:none;transition:opacity .14s}
html[data-theme="dark"] .cta-button{color:#161513}
.cta-button:hover{opacity:.85;filter:none;transform:none;box-shadow:none}
.status-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;
 border-radius:6px;font-size:11.5px;font-weight:600;letter-spacing:.01em;background:var(--surf2);color:var(--ink)}
.status-badge.good{background:color-mix(in srgb,var(--good) 12%,transparent);color:var(--good)}
.status-badge.warn{background:color-mix(in srgb,var(--warn) 13%,transparent);color:var(--warn)}
.status-badge.bad{background:color-mix(in srgb,var(--bad) 12%,transparent);color:var(--bad)}
.status-badge.mute{background:var(--surf2);color:var(--dim)}
.dot{display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--line);flex:0 0 auto}
.dot.good{background:var(--good)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}.dot.mute{background:var(--dim)}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}
.stat-tile{display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-height:92px}
.stat-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.stat-value{font-family:Inter,sans-serif;font-size:24px;line-height:1.05;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.stat-value.mono{font-family:'JetBrains Mono',monospace;font-size:27px;line-height:1.02;font-weight:650;letter-spacing:-.01em}
.stat-label{font-size:10.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.07em;font-weight:600}
.stat-subvalue{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--dim)}
.stat-note{font-size:12px;color:var(--dim);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.compact-list{display:flex;flex-direction:column;gap:8px}
.compact-item{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf);overflow:hidden}
.compact-item summary{list-style:none;cursor:pointer;padding:11px 14px;display:flex;align-items:center;gap:10px}
.compact-item summary::-webkit-details-marker{display:none}
.compact-item[open] summary{border-bottom:1px solid var(--line)}
.compact-main{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.compact-title{font-size:13.5px;font-weight:600;white-space:nowrap}
.compact-meta{font-size:12px;color:var(--dim);margin-top:2px}
.compact-values{display:flex;align-items:center;gap:8px;justify-content:flex-end;flex-wrap:wrap;font-family:'JetBrains Mono',monospace;font-size:12.5px;text-align:right}
.compact-variance{font-weight:600}
.compact-detail{padding:11px 14px}
.compact-detail p{margin:0;color:var(--dim);line-height:1.5}
.compact-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
.compact-detail-grid .card{margin:0;padding:10px 12px}
.compact-detail-grid h3{margin:0 0 4px;font-size:14px}
.compact-link-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.compact-link-grid a{display:block;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf);color:var(--ink);text-decoration:none;font-size:13.5px;font-weight:500}
.compact-link-grid a:hover{border-color:var(--gold);color:var(--gold-text)}
.sync-amount{font-family:'JetBrains Mono',monospace;font-size:27px;font-weight:650;margin:8px 0 0;color:var(--ink);letter-spacing:-.01em}
.drop-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.drop-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 14px;
 border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf)}
.drop-row strong{display:block;margin-bottom:2px}
.drop-meta{color:var(--dim);font-size:12.5px;line-height:1.4}
.badge-stack{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.quicklinks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
.quicklinks a{display:block;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-md);
 background:var(--surf);color:var(--ink);text-decoration:none;font-size:13.5px;font-weight:500}
.quicklinks a:hover{border-color:var(--gold);color:var(--gold-text)}
.portal-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(240px,.8fr);gap:16px;
 border-color:var(--line);background:var(--ink);color:var(--bg);box-shadow:var(--shadow)}
html[data-theme="dark"] .portal-hero{background:#0f0e0c;color:var(--ink)}
.portal-hero::after{display:none}
.portal-hero .klabel,.portal-hero p,.portal-hero h1,.portal-hero h2{color:inherit}
.portal-hero .klabel{color:var(--gold-soft)}
.portal-hero h1{margin:6px 0 8px;font-size:30px;line-height:1.05;letter-spacing:-.02em}
.portal-hero p{margin:0;max-width:680px;opacity:.75;line-height:1.55}
.portal-hero-copy,.portal-hero-side{position:relative;z-index:1}
.portal-hero-side{display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:6px;padding:14px;border-radius:var(--r-md);
 border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05)}
.portal-mark{font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;font-weight:700;letter-spacing:.4px}
.portal-hero-side p{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--gold-soft)}
.portal-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.portal-pill{display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;border-radius:6px;
 border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:none}
.portal-section{display:grid;gap:10px;margin-top:14px}
.portal-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px}
.portal-section-head h2{margin:4px 0 0}
.portal-section-head p{margin:0;max-width:430px;text-align:right;color:var(--dim);font-size:13px}
.portal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.portal-grid-external{grid-template-columns:repeat(2,minmax(0,1fr))}
.portal-tile{position:relative;display:flex;flex-direction:column;min-height:148px;padding:14px 16px;border-radius:var(--r-lg);text-decoration:none;
 color:var(--ink);border:1px solid var(--line);background:var(--surf);
 box-shadow:var(--shadow);overflow:hidden;transition:border-color .14s}
html[data-theme="dark"] .portal-tile{background:var(--surf)}
.portal-tile::after{display:none}
.portal-tile:hover{transform:none;border-color:var(--gold);box-shadow:var(--shadow);color:var(--ink)}
.portal-tile.external{background:var(--surf2)}
html[data-theme="dark"] .portal-tile.external{background:var(--surf2)}
.portal-tile-top,.portal-tile-foot{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:10px}
.portal-tile-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:6px;background:color-mix(in srgb,var(--gold) 12%,transparent);
 color:var(--gold-text);font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.portal-tile h3{position:relative;z-index:1;margin:12px 0 6px;font-size:17px;line-height:1.1}
.portal-tile p{position:relative;z-index:1;margin:0;color:var(--dim);line-height:1.5;font-size:13px}
.portal-tile-foot{margin-top:auto;padding-top:14px}
.portal-tile-note{font-size:12px;font-weight:600;letter-spacing:0;color:var(--dim)}
.portal-arrow{font-size:18px;line-height:1;color:var(--gold-text)}
table{width:100%;border-collapse:collapse;background:var(--surf);border-radius:var(--r-md);
 overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line)}
th{background:var(--surf);color:var(--dim);padding:8px 10px;text-align:left;border-bottom:1px solid var(--line);
 font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;font-weight:600}
td{padding:8px 10px;border-bottom:1px solid var(--line);font-size:13px;
 font-family:'JetBrains Mono',monospace;font-variant-numeric:tabular-nums}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--surf2)}
.in{color:var(--good)}.out{color:var(--bad)}
.bal{font-weight:600;color:var(--ink)}
.tabs{margin-bottom:12px}
.tabs a{display:inline-block;padding:7px 14px;background:var(--surf);color:var(--dim);
 margin:0 4px 4px 0;text-decoration:none;border-radius:var(--r-sm);border:1px solid var(--line);
 font-size:12.5px;font-weight:500;text-transform:none;letter-spacing:0}
.tabs a.on{background:var(--ink);color:var(--surf);border-color:var(--ink);font-weight:600}
html[data-theme="dark"] .tabs a.on{color:#161513}
.filter-chips{display:flex;flex-direction:column;gap:8px;margin:0 0 12px}
.filter-chip-group{display:flex;flex-direction:column;gap:5px}
.filter-chip-row{display:flex;flex-wrap:wrap;gap:6px}
.filter-chip-year{font-size:10.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-weight:600;padding:0 2px}
.chip-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;transition:background .12s,color .12s,border-color .12s}
.chip-link:hover{transform:none}
.filter-chips a{padding:7px 12px;border-radius:999px;
 border:1px solid var(--line);background:var(--surf);color:var(--dim);font-size:12.5px;
 text-transform:none;letter-spacing:0;font-weight:500}
.filter-chips a.on{background:var(--ink);color:var(--surf);border-color:var(--ink);box-shadow:none;font-weight:600}
html[data-theme="dark"] .filter-chips a.on{color:#161513}
.ledger-filters{margin:0 0 12px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surf);box-shadow:var(--shadow)}
html[data-theme="dark"] .ledger-filters{background:var(--surf);box-shadow:var(--shadow)}
.ledger-filters summary{list-style:none;cursor:pointer;padding:11px 14px;font-size:12.5px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink);display:flex;align-items:center;justify-content:space-between}
.ledger-filters summary::-webkit-details-marker{display:none}
.ledger-filters summary span{display:inline-flex;align-items:center;justify-content:center;min-width:60px;padding:4px 9px;border-radius:6px;background:color-mix(in srgb,var(--gold) 12%,transparent);color:var(--gold-text);font-size:10.5px;letter-spacing:.03em;font-weight:600}
.ledger-filter-body{display:grid;gap:12px;padding:2px 14px 14px}
.ledger-filter-body > div{display:grid;gap:6px}
.ledger-filter-body .klabel{padding-left:2px}
.filter-option-row{gap:6px}
.filter-option-row a{justify-content:flex-start;padding:8px 12px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surf);color:var(--ink);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;box-shadow:none}
html[data-theme="dark"] .filter-option-row a{background:var(--surf)}
.filter-option-row a.on{background:var(--ink);color:var(--surf);border-color:var(--ink);font-weight:600;box-shadow:none}
html[data-theme="dark"] .filter-option-row a.on{color:#161513}
.ledger-search-form{display:flex;gap:8px;align-items:center}
.ledger-search-form input{margin:0;flex:1}
.ledger-search-form input{border-radius:var(--r-sm);background:var(--surf);border-color:var(--line);box-shadow:none}
html[data-theme="dark"] .ledger-search-form input{background:var(--surf)}
.ledger-filter-apply{min-width:110px;border-radius:var(--r-sm);box-shadow:none}
.active-filter-chips{display:flex;flex-wrap:wrap;gap:6px;padding-top:2px}
.active-filter-chips a{padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:var(--surf);color:var(--ink);font-size:12px;font-weight:500;letter-spacing:0;justify-content:flex-start}
.active-filter-chips .chip-active-filter.on{background:color-mix(in srgb,var(--gold) 10%,transparent);color:var(--ink);border-color:color-mix(in srgb,var(--gold) 35%,transparent);box-shadow:none}
.active-filter-chips .chip-clear{background:transparent;color:var(--dim)}
.ledger-month-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf)}
.ledger-month-summary strong{display:block;margin-top:2px;font-size:16px;font-family:'JetBrains Mono',monospace;font-weight:600}
.ledger-result-summary{margin:0 0 12px;color:var(--dim);font-size:12.5px;font-weight:500}
input,select,textarea{padding:10px 12px;font-size:16px;background:var(--surf);color:var(--ink);
 border:1px solid var(--line);border-radius:var(--r-sm);width:100%;margin-bottom:8px;font-family:Inter,sans-serif}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);
 box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 15%,transparent)}
.field-error{border-color:var(--bad)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 14%,transparent)!important}
.field-error-text{color:var(--bad);font-weight:600}
label{font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
button{background:var(--ink);color:var(--surf);border:0;cursor:pointer;border-radius:var(--r-sm);
 padding:11px 18px;font-size:14px;font-weight:600;width:100%;font-family:Inter,sans-serif;
 text-transform:none;letter-spacing:0;transition:opacity .14s}
html[data-theme="dark"] button{color:#161513}
button:hover{filter:none;opacity:.85;box-shadow:none}button:active{transform:scale(.99)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:5px 0 12px}
.chips input[type=radio]{display:none}
.chips label{display:inline-block;padding:8px 12px;background:var(--surf);color:var(--ink);
 border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;font-size:13px;
 text-transform:none;letter-spacing:0;font-weight:500;margin:0;transition:background .12s,color .12s,border-color .12s}
.chips input[type=radio]:checked+label{background:var(--ink);color:var(--surf);
 border-color:var(--ink);font-weight:600;box-shadow:none;transform:none}
html[data-theme="dark"] .chips input[type=radio]:checked+label{color:#161513}
.report-option-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;margin:8px 0 14px}
.report-option input[type=checkbox]{display:none}
.report-option label{display:flex;align-items:center;justify-content:center;min-height:60px;padding:12px 14px;background:var(--surf);color:var(--ink);
 border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;font-size:13.5px;line-height:1.35;text-align:center;
 text-transform:none;letter-spacing:0;font-weight:500;margin:0;transition:background .12s,color .12s,border-color .12s}
.report-option label:hover{transform:none;border-color:var(--gold)}
.report-option input[type=checkbox]:checked+label{background:var(--ink);color:var(--surf);border-color:var(--ink);box-shadow:none;transform:none;font-weight:600}
html[data-theme="dark"] .report-option input[type=checkbox]:checked+label{color:#161513}
.report-builder-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.report-builder-actions button{width:auto}
.report-secondary-button{background:var(--surf);color:var(--ink);border:1px solid var(--line);box-shadow:none}
.report-secondary-button:hover{border-color:var(--gold);color:var(--gold-text);background:var(--surf);opacity:1}
html[data-theme="dark"] .report-secondary-button{color:var(--ink)}
.register-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:5px 0 12px}
.register-column{display:flex;flex-direction:column;gap:6px}
.register-column .klabel{margin-bottom:1px}
.register-option input[type=radio]{display:none}
.register-option label{display:block;padding:9px 12px;background:var(--surf);color:var(--ink);
 border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;font-size:13px;
 text-transform:none;letter-spacing:0;font-weight:500;margin:0;transition:background .12s,color .12s,border-color .12s}
.register-option input[type=radio]:checked+label{background:var(--ink);color:var(--surf);
 border-color:var(--ink);font-weight:600;box-shadow:none;transform:none}
html[data-theme="dark"] .register-option input[type=radio]:checked+label{color:#161513}
.countup{display:inline-block}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal a{background:var(--surf);padding:10px 4px;text-align:center;text-decoration:none;
 color:var(--ink);border-radius:var(--r-sm);border:1px solid var(--line);
 font-family:'JetBrains Mono',monospace;font-size:12.5px}
.cal a:hover{border-color:var(--gold);color:var(--gold-text)}
.cal .h{font-weight:600;background:none;border:none;color:var(--dim)}
.bottomnav{display:none}
.tabbar{display:flex;align-items:flex-end;justify-content:space-around;gap:2px;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px))}
.tabitem,.tabmenu summary{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:56px;min-height:50px;
 color:var(--dim);text-decoration:none;border-radius:var(--r-md);padding:6px 4px;border:1px solid transparent;background:transparent}
.tabitem .tablabel,.tabmenu summary .tablabel{font-size:10px;letter-spacing:.02em;text-transform:none;font-weight:600}
.tabitem .tabicon,.tabmenu summary .tabicon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center}
.tabitem .tabicon svg,.tabmenu summary .tabicon svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tabitem.on,.tabmenu[open] summary{color:var(--surf);background:var(--ink);border-color:var(--ink);box-shadow:none}
html[data-theme="dark"] .tabitem.on,html[data-theme="dark"] .tabmenu[open] summary{color:#161513}
.tabitem.plus-item{background:var(--surf);border-color:var(--line);color:var(--gold-text)}
.tabitem.plus-item.on{background:var(--ink);color:var(--surf)}
html[data-theme="dark"] .tabitem.plus-item.on{color:#161513}
.tabmenu{position:relative}
.tabmenu summary{list-style:none;cursor:pointer}
.tabmenu summary::-webkit-details-marker{display:none}
.tabpanel{position:absolute;right:0;bottom:calc(100% + 8px);width:min(220px,78vw);padding:8px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf);box-shadow:0 12px 32px rgba(0,0,0,.14)}
.tabpanel a,.tabpanel button{display:flex;align-items:center;justify-content:space-between;width:100%;margin:0 0 4px;padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surf);color:var(--ink);font-size:13px;text-transform:none;letter-spacing:0;text-decoration:none;box-shadow:none}
.tabpanel a:last-child,.tabpanel button:last-child{margin-bottom:0}
.tabpanel button{cursor:pointer}
.tabpanel .tabpanel-meta{color:var(--dim);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em}
.entry-form-card{padding-bottom:14px}
.entry-hero{display:grid;gap:10px}
.entry-refloat{margin:0}
.entry-refloat summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surf);color:var(--ink);font-size:13px;font-weight:600}
.entry-refloat summary::-webkit-details-marker{display:none}
.entry-refloat[open] summary{margin-bottom:10px;border-color:var(--gold)}
.entry-refloat-body{display:grid;gap:10px}
.entry-pill{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;border-radius:6px;background:var(--surf2);color:var(--ink);font-size:11.5px;font-weight:600;letter-spacing:0}
.entry-pill.gold{background:color-mix(in srgb,var(--gold) 15%,transparent);color:var(--gold-text)}
.entry-flow{display:grid;gap:10px}
.entry-block{display:grid;gap:6px}
.entry-inline-card{margin:0;padding:11px 14px;border-radius:var(--r-md);background:var(--surf2)}
.entry-quick-form .chips{display:flex;flex-wrap:wrap;gap:6px;margin:3px 0 6px}
.entry-quick-form .chips label{padding:9px 13px;border-radius:var(--r-sm);font-size:13px;line-height:1.2;text-align:center;font-weight:500}
.entry-quick-form .register-option label{padding:9px 8px;border-radius:var(--r-sm);font-size:13px;line-height:1.2;text-align:center;font-weight:600}
.entry-quick-form label{font-size:10.5px;letter-spacing:.06em}
.entry-quick-form .register-grid{gap:8px;margin:3px 0 6px}
.entry-quick-form .register-column{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;align-content:start}
.entry-quick-form .register-column .klabel{margin-bottom:0;grid-column:1/-1}
.entry-amount-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.entry-amount-grid input{margin-bottom:0}
.entry-quick-form input[type=number]{font-family:'JetBrains Mono',monospace;font-size:22px;font-weight:600;padding:11px 12px}
.entry-action-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.entry-savebar{position:sticky;bottom:10px;z-index:12;margin-top:8px;padding-top:8px;background:linear-gradient(180deg,transparent,var(--surf) 30%)}
html[data-theme="dark"] .entry-savebar{background:linear-gradient(180deg,transparent,var(--surf) 30%)}
.entry-savebar button{box-shadow:0 6px 16px rgba(0,0,0,.14)}
.entry-optional{margin-top:6px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf);padding:10px 12px}
.entry-optional summary{cursor:pointer;font-size:12px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--dim);list-style:none}
.entry-optional[open] summary{color:var(--gold-text)}
.entry-optional summary::-webkit-details-marker{display:none}
.entry-optional-body{padding-top:10px}
.denom-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin:6px 0 10px}
.denom-card{padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf)}
.denom-card .klabel{font-size:17px;font-weight:800;color:var(--ink);text-transform:none;letter-spacing:0}
.denom-box{background:var(--surf);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;box-shadow:var(--shadow)}
.denom-box .denom-grid{margin:0 0 4px}
.denom-box .denom-card{background:var(--surf2);border-color:transparent}
.denom-extra-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0 8px;padding-top:12px;border-top:1px solid var(--line)}
.denom-extra-head button{width:auto;padding:9px 15px;font-size:13px}
.denom-box-foot{display:flex;justify-content:flex-end;margin-top:10px}
.denom-box-foot button{width:auto;padding:9px 15px;font-size:13px;color:var(--dim)}
.denom-row-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.denom-card strong{display:block;font-family:'JetBrains Mono',monospace;font-size:12.5px;font-weight:600;color:var(--dim);margin-top:2px}
.denom-stepper{display:grid;grid-template-columns:42px 1fr 42px;gap:6px;align-items:center}
.denom-stepper input{margin:0;text-align:center;font-family:'JetBrains Mono',monospace;font-size:16px;font-weight:600;min-height:40px}
.denom-stepper button{padding:0;min-height:40px;font-size:18px;font-weight:600;border-radius:var(--r-sm)}
.denom-extra-list{display:grid;gap:8px;margin-top:8px}
.denom-extra-row{display:grid;grid-template-columns:1.2fr .8fr auto;gap:6px;align-items:center}
.denom-extra-row input{margin:0;min-height:44px}
.sticky-total-bar{position:sticky;bottom:10px;z-index:14;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf);box-shadow:0 8px 24px rgba(0,0,0,.12)}
html[data-theme="dark"] .sticky-total-bar{background:var(--surf)}
.sticky-total-bar strong{display:block;font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:600;color:var(--ink)}
.refloat-form .chips{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
.flag-item.resolved-flag{opacity:.68}
.flag-resolve-form{display:grid;gap:6px;margin-top:10px}
.flag-resolve-form textarea{margin:0}
.flag-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.flag-filter-links{display:flex;flex-wrap:wrap;gap:6px}
.flag-bulk-form{display:grid;gap:6px;margin-top:10px}
.flag-bulk-grid{display:grid;grid-template-columns:1fr 1.5fr auto;gap:6px;align-items:end}
.flag-bulk-grid input,.flag-bulk-grid textarea{margin:0}
.flag-bulk-grid button{width:auto}
.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px;margin-top:8px}
.module-grid .report-option label{min-height:56px;font-size:12.5px}
.account-grid,.admin-user-list,.delete-log-list{display:grid;gap:8px}
.admin-user-card{margin:0;padding:11px 14px;border-radius:var(--r-md)}
.admin-user-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;list-style:none}
.admin-user-summary::-webkit-details-marker{display:none}
.admin-user-main{display:flex;align-items:center;gap:10px;min-width:0}
.admin-user-name{font-size:14.5px;font-weight:600}
.admin-user-side{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.role-chip{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;border-radius:6px;background:var(--surf2);font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:capitalize}
.admin-expand{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.admin-inline-actions{display:flex;flex-wrap:wrap;gap:8px}
.admin-inline-actions button{width:auto}
.delete-confirm-shell{display:grid;gap:10px}
.delete-summary-card{margin:0}
.delete-log-row{margin:0;padding:11px 14px;border-radius:var(--r-md)}
.delete-log-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;color:var(--dim);font-size:12px}
.ledger-mobile-only{display:none}
.ledger-mobile-summary{position:sticky;top:52px;z-index:6;display:flex;align-items:flex-end;justify-content:space-between;gap:10px;
 margin:0 0 10px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-md);background:color-mix(in srgb,var(--surf) 94%,transparent);
 backdrop-filter:blur(14px);box-shadow:var(--shadow)}
html[data-theme="dark"] .ledger-mobile-summary{background:color-mix(in srgb,var(--surf) 94%,transparent)}
.ledger-mobile-summary strong{display:block;font-size:12.5px}
.ledger-mobile-balance{font-family:'JetBrains Mono',monospace;font-size:18px;font-weight:600;color:var(--ink);text-align:right}
.ledger-card-list{display:flex;flex-direction:column;gap:8px}
.ledger-card{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surf);overflow:hidden}
.ledger-card summary{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:11px 13px;cursor:pointer;list-style:none}
.ledger-card summary::-webkit-details-marker{display:none}
.ledger-card-static-body{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:11px 13px}
.ledger-card-main{min-width:0;flex:1}
.ledger-card-title{font-size:13.5px;font-weight:600;line-height:1.3}
.ledger-card-meta{margin-top:3px;font-size:11.5px;color:var(--dim);line-height:1.4}
.ledger-card-note{margin-top:4px;font-size:11.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ledger-card-amount{min-width:104px;text-align:right}
.ledger-card-amount .amt{font-family:'JetBrains Mono',monospace;font-size:17px;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums}
.ledger-balance-caption{margin-top:5px;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.ledger-card-detail{display:grid;gap:6px;padding:10px 13px 13px;border-top:1px solid var(--line);background:var(--surf2)}
.ledger-detail-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;font-size:12.5px}
.ledger-detail-row span{color:var(--dim)}
.ledger-detail-row strong{text-align:right}
.ledger-detail-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:2px}
.ledger-detail-actions a{color:var(--gold-text);text-decoration:none;font-weight:600}
@media(max-width:760px){
 header{align-items:center;gap:10px;padding:7px 12px}
 header nav{width:100%;justify-content:space-between}
 .brand-mark{width:30px;height:30px}
 .navlinks{display:none}
 .userchip{display:none}
 .sectionchip{display:inline-flex}
 .hero-grid,.dashboard-grid,.quicklinks,.stats-grid,.compact-link-grid,.entry-action-row,.denom-extra-row,.flag-bulk-grid{grid-template-columns:1fr}
 .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .entry-amount-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .portal-hero,.portal-grid,.portal-grid-external{grid-template-columns:1fr}
 .portal-hero h1{font-size:26px}
 .portal-section-head{align-items:flex-start}
 .portal-section-head p{text-align:left}
 .register-grid{grid-template-columns:1fr;gap:8px}
 .entry-quick-form .register-column{grid-template-columns:repeat(4,minmax(0,1fr))}
 .denom-grid{grid-template-columns:1fr}
 .status-row,.drop-row{align-items:flex-start;flex-direction:column}
 .compact-item summary{align-items:center}
 .header-tools{width:100%;justify-content:space-between}
 body{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
 .bottomnav{display:block;position:fixed;bottom:0;left:0;right:0;background:color-mix(in srgb,var(--surf) 96%,transparent);
  backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:20}
 html[data-theme="dark"] .bottomnav{background:color-mix(in srgb,var(--surf) 97%,transparent)}
 .tabpanel{right:66px;bottom:calc(100% + 10px);width:min(220px,72vw);z-index:24}
 .entry-form-card{padding:12px 12px 84px}
 .entry-savebar{bottom:calc(70px + env(safe-area-inset-bottom,0px))}
 .sticky-total-bar{bottom:calc(70px + env(safe-area-inset-bottom,0px))}
 td,th{font-size:11.5px;padding:7px 6px}
 h1{font-size:20px}
 .stat-value{font-size:22px}
 .stat-value.mono{font-size:19px}
 .ledger-mobile-only{display:block}
 .ledger-desktop-only{display:none}
 .ledger-card-title{font-size:13px}
 .ledger-card-amount{min-width:96px}
 .ledger-card-amount .amt{font-size:16px}
 .month-chip-row{overflow:auto;padding-bottom:2px;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
 .month-chip-row::-webkit-scrollbar{height:5px}
 .filter-option-row{flex-wrap:wrap;overflow:visible;gap:6px}
 .filter-option-row a,.active-filter-chips a{white-space:normal;text-align:left;justify-content:flex-start}
 .month-chip-row a{white-space:nowrap;flex:0 0 auto}
 .ledger-filters{overflow:hidden}
 .ledger-search-form{flex-direction:column;align-items:stretch}
 .ledger-search-form button{width:100%}
 .ledger-filter-body{gap:12px;padding:2px 12px 12px}
 .ledger-filters summary{padding:11px 12px}
 .filter-option-row a{font-size:12.5px;padding:8px 11px}
 .ledger-search-form input{font-size:15px}
 .ledger-month-summary{grid-template-columns:1fr}
 .ledger-mobile-summary{top:48px}
}
.lg-table td{font-family:Inter,sans-serif;vertical-align:top;padding:10px}
.lg-table td.in,.lg-table td.out,.lg-table td.bal,.lg-table td.lg-date{font-family:'JetBrains Mono',monospace;font-variant-numeric:tabular-nums;white-space:nowrap}
.lg-table td.in,.lg-table td.out,.lg-table td.bal{text-align:right}
.lg-table th:nth-last-child(1),.lg-table th:nth-last-child(2),.lg-table th:nth-last-child(3){text-align:right}
.lg-date{color:var(--dim);font-size:12.5px}
.lg-desc{font-weight:600;font-size:13.5px;line-height:1.35}
.lg-desc-meta{margin-top:2px;font-size:11.5px;color:var(--dim);line-height:1.4}
.lg-desc-meta a{color:var(--gold-text);text-decoration:none;font-weight:600}
.lg-cat{color:var(--dim);font-size:12.5px;white-space:nowrap}
.lg-table td.bal{font-weight:600}
.register-column-pm{background:var(--surf2);border:1px solid var(--line);border-radius:var(--r-md);padding:8px}
.register-column-pm .register-option label{background:var(--surf)}
.register-column-am .register-option label::after{content:" AM";color:var(--dim);font-size:10.5px;font-weight:600}
.register-column-pm .register-option label::after{content:" PM";color:var(--dim);font-size:10.5px;font-weight:600}
.register-column-am .register-option input[value=""]+label::after{content:""}
.register-option input[type=radio]:checked+label::after{color:inherit;opacity:.65}
.register-column-am .klabel,.register-column-pm .klabel{font-size:11px;color:var(--ink);font-weight:700}
.register-column-pm .klabel{color:var(--gold-text)}
.lg-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.lg-scroll .lg-table{min-width:680px}
.reg-picker{display:grid;gap:8px}
.reg-none input{display:none}
.reg-none label{display:inline-block;padding:8px 12px;background:var(--surf);color:var(--dim);border:1px dashed var(--line);border-radius:var(--r-sm);cursor:pointer;font-size:12.5px;font-weight:500}
.reg-none input:checked+label{background:var(--surf2);color:var(--ink);border-style:solid;font-weight:600}
.shift-toggle{display:flex;gap:6px}
.shift-btn{width:auto;flex:1;background:var(--surf);color:var(--dim);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 8px;font-size:13px;font-weight:600}
.shift-btn:hover{opacity:1;border-color:var(--gold);color:var(--ink)}
.shift-btn.on{background:var(--ink);color:var(--surf);border-color:var(--ink)}
html[data-theme="dark"] .shift-btn.on{color:#161513}
.shift-btn-pm.on{background:var(--gold);border-color:var(--gold);color:var(--surf)}
.reg-col{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.reg-col input{display:none}
.reg-col label{display:block;padding:11px 8px;background:var(--surf);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;font-size:13px;line-height:1.2;text-align:center;font-weight:600;transition:background .12s,color .12s,border-color .12s}
.reg-col input:checked+label{background:var(--ink);color:var(--surf);border-color:var(--ink)}
html[data-theme="dark"] .reg-col input:checked+label{color:#161513}
#reg_pm input:checked+label{background:var(--gold);border-color:var(--gold);color:var(--surf)}
.reg-2col{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start;max-width:680px}
.reg-shift-col{display:grid;gap:6px;align-content:start;border:1px solid var(--line);border-radius:var(--r-md);padding:10px}
.reg-shift-am{background:var(--surf)}
.reg-shift-pm{background:var(--surf2)}
.reg-shift-head{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:0 2px 4px}
.reg-shift-am .reg-shift-head{color:var(--ink)}
.reg-shift-pm .reg-shift-head{color:var(--gold-text)}
.reg-shift-col input{display:none}
.reg-shift-col label{display:block;padding:9px 12px;background:var(--surf);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;font-size:13px;line-height:1.2;font-weight:600;transition:background .12s,color .12s,border-color .12s}
.reg-shift-col label:hover{border-color:var(--gold)}
.reg-shift-am input:checked+label{background:var(--ink);color:var(--surf);border-color:var(--ink)}
html[data-theme="dark"] .reg-shift-am input:checked+label{color:#161513}
.reg-shift-pm input:checked+label{background:var(--gold);color:var(--surf);border-color:var(--gold)}


@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.card{animation:fadeUp .34s ease both}
.card:nth-child(2){animation-delay:.04s}.card:nth-child(3){animation-delay:.08s}
.card:nth-child(4){animation-delay:.12s}.card:nth-child(5){animation-delay:.16s}
.stats-grid .card{animation-delay:0s}
.stats-grid .card:nth-child(2){animation-delay:.05s}.stats-grid .card:nth-child(3){animation-delay:.1s}
.stats-grid .card:nth-child(4){animation-delay:.15s}
@media(hover:hover){.card{transition:transform .18s ease,box-shadow .18s ease}
.card:hover{transform:translateY(-1px)}}
a,button,.filter-chips a,.tabbar a{transition:background .15s ease,color .15s ease,border-color .15s ease,transform .12s ease}
button:active,.fab-entry:active{transform:scale(.97)}
details .compact-detail{animation:fadeUp .22s ease both}

a.stat-link{text-decoration:none;color:inherit;display:block}
a.stat-link:hover{border-color:var(--gold)}
.void-row{opacity:.62}
.void-row .lg-desc s,.void-row .mled-desc s{color:var(--dim)}
.void-chip{font-size:9.5px;font-weight:800;letter-spacing:.08em;color:var(--bad);
 border:1px solid color-mix(in srgb,var(--bad) 45%,transparent);border-radius:5px;padding:1px 5px;vertical-align:middle}
.msg-composer{display:block;margin-bottom:12px}
.msg-composer textarea{display:block;width:100%;box-sizing:border-box;min-height:60px;margin-bottom:8px}
.msg-composer button{display:inline-block;width:auto;padding:9px 26px;margin-left:auto;float:right}
.msg-composer::after{content:"";display:block;clear:both}
.msg-list{display:flex;flex-direction:column}
.msg-row{padding:11px 2px;border-bottom:1px solid var(--line)}
.msg-row:last-child{border-bottom:0}
.msg-pinned{background:color-mix(in srgb,var(--gold) 5%,transparent);border-radius:8px;padding:11px 10px}
.msg-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px}
.msg-badge{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--gold-deep);
 background:color-mix(in srgb,var(--gold) 14%,transparent);padding:2px 7px;border-radius:999px}
.msg-body{margin-top:4px;font-size:14px}
.msg-body .doc-p{margin:0 0 4px}
.msg-tool{display:inline;margin-left:4px}
.msg-tool button{font-size:11px;padding:3px 9px;background:transparent;color:var(--dim);border:1px solid var(--line);border-radius:999px}
.msg-tool button:hover{color:var(--ink);border-color:var(--dim)}
.lg-time{font-size:11px;color:var(--dim);font-family:var(--mono);margin-top:1px}
.flag-group-head{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--gold-deep);margin:16px 0 6px;padding-top:10px;border-top:1px solid var(--line)}
.flag-group-head:first-of-type{border-top:0;padding-top:0}
.inv-btn{display:inline-block;margin-left:12px;padding:5px 14px;border-radius:999px;
 background:var(--ink);color:var(--paper)!important;font-size:12.5px;font-weight:600;vertical-align:middle}
.inv-btn:hover{background:var(--gold-deep)}
.inv-card{border-left:3px solid var(--line)}
.inv-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:15px}
.inv-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.inv-fix{background:color-mix(in srgb,var(--gold) 6%,var(--surf2));border:1px solid color-mix(in srgb,var(--gold) 25%,var(--line));
 border-radius:var(--r-sm);padding:11px 13px;margin-top:8px;font-size:13.5px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.inv-approve{display:inline;margin-left:auto}
.inv-approve button{width:auto;padding:8px 20px;font-size:13px}
.disc-day{border-bottom:1px solid var(--line);padding:4px 0}
.disc-day:last-child{border-bottom:0}
.disc-day summary{display:flex;align-items:center;gap:12px;padding:9px 2px;cursor:pointer;list-style:none}
.disc-day summary::-webkit-details-marker{display:none}
.disc-date{font-weight:600;font-size:14px;min-width:96px}
.disc-who{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.disc-detail{padding:2px 0 10px}
.disc-line{display:flex;justify-content:space-between;gap:10px;padding:6px 2px;font-size:13px;flex-wrap:wrap}
.mono-sm{font-family:var(--mono);font-size:12.5px}
.disc-pending{font-size:12px;color:var(--dim);font-style:italic}
@media(max-width:760px){.disc-who{display:none}}
.hero-card{background:linear-gradient(135deg,var(--surf) 0%,color-mix(in srgb,var(--gold) 6%,var(--surf)) 100%)}
.hero-card h1{font-family:Georgia,serif;font-size:26px}
.today-strip,.drawer-strip{display:flex;gap:26px;flex-wrap:wrap;align-items:flex-end;margin-top:6px}
.today-num{font-family:var(--mono);font-size:21px;font-weight:600}
.today-lbl{font-size:11.5px;color:var(--dim);letter-spacing:.03em;text-transform:uppercase;margin-top:2px}
.drawer-strip{padding:10px 0 14px;border-bottom:1px solid var(--line);margin-bottom:12px}
.feed-list{display:flex;flex-direction:column}
.feed-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 2px;border-bottom:1px solid var(--line)}
.feed-row:last-child{border-bottom:0}
.feed-title{font-size:14px;font-weight:600}
.feed-meta{font-size:12px;color:var(--dim);margin-top:1px}
.count-now{margin-left:10px;padding:6px 13px;border-radius:999px;background:var(--ink);color:var(--paper)!important;
 font-size:12px;font-weight:600;border:0;flex-shrink:0}
.count-now:hover{background:var(--gold-deep)}
.cnt-list{display:flex;flex-direction:column}
.cnt-row{display:flex;justify-content:space-between;align-items:center;gap:12px;
 padding:12px 2px;border-bottom:1px solid var(--line)}
.cnt-row:last-child{border-bottom:0}
.cnt-line1{display:flex;align-items:baseline;gap:8px;font-size:14.5px}
.cnt-when{color:var(--dim);font-size:12px}
.cnt-line2{color:var(--dim);font-size:12.5px;margin-top:2px}
.cnt-nums{text-align:right;flex-shrink:0}
.cnt-amt{font-family:var(--mono);font-size:14.5px}
.cnt-var{font-family:var(--mono);font-size:12.5px;font-weight:600}
.vtone-good{color:var(--good)}.vtone-warn{color:var(--warn)}.vtone-bad{color:var(--bad)}.vtone-mute{color:var(--dim)}
@media(max-width:760px){
 .cv-desktop{display:none}
 .compact-item summary{gap:6px;flex-wrap:wrap}
 .compact-main{min-width:0;flex:1 1 55%}
 .compact-values{flex:0 0 auto;margin-left:auto;font-size:12.5px;flex-wrap:wrap;justify-content:flex-end;row-gap:2px}
}
.nav-drop{position:relative;display:inline-flex}
.nav-drop::after{content:"";position:absolute;top:100%;left:-10px;right:-10px;height:14px}
.nav-drop .nav-caret{font-size:9px;opacity:.7;margin-left:2px}
.nav-drop-menu{display:none;position:absolute;top:calc(100% + 6px);right:0;min-width:190px;
 background:var(--surf);border:1px solid var(--line);border-radius:12px;padding:6px;
 box-shadow:var(--shadow-lift);z-index:45}
.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu{display:block}
.nav-drop-menu a{display:block;padding:9px 12px;border-radius:8px;font-size:13px;
 color:var(--ink);border:0;text-transform:none;letter-spacing:0}
.nav-drop-menu a:hover{background:var(--surf2);color:var(--ink)}
.tills-check{display:flex;align-items:center;gap:9px;padding:11px 13px;margin:0 0 12px;
 background:color-mix(in srgb,var(--gold) 7%,var(--surf));border:1px solid color-mix(in srgb,var(--gold) 30%,var(--line));
 border-radius:var(--r-sm);font-size:13.5px;cursor:pointer}
.tills-check input{width:18px;height:18px;margin:0;accent-color:var(--gold)}
.denom-sec-head{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
 color:var(--dim);margin:2px 0 8px}
.denom-sec-coins{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.denom-grid-coins .denom-card{background:color-mix(in srgb,var(--gold) 5%,var(--surf2))}
.denom-grid-coins .denom-card .klabel{color:var(--gold-deep);font-size:15px}
.fab-entry{position:fixed;right:28px;bottom:28px;width:58px;height:58px;border-radius:999px;
 background:var(--gold);color:var(--surf);display:flex;align-items:center;justify-content:center;
 font-size:30px;font-weight:600;line-height:1;text-decoration:none;z-index:25;
 box-shadow:0 10px 26px rgba(0,0,0,.24);transition:transform .12s ease,box-shadow .12s ease}
.fab-entry:hover{transform:scale(1.06);box-shadow:0 14px 30px rgba(0,0,0,.28)}
.fab-wrap{position:fixed;right:28px;bottom:28px;z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.fab-wrap .fab-entry{position:static;transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .2s}
.fab-wrap.open .fab-entry{transform:rotate(45deg)}
.fab-menu{display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}
.fab-menu a{background:var(--surf);border:1px solid var(--line);color:var(--ink);text-decoration:none;
 padding:10px 16px;border-radius:999px;font-size:13px;font-weight:500;box-shadow:0 8px 22px rgba(0,0,0,.22);
 opacity:0;transform:translateY(8px) scale(.95);transition:opacity .2s,transform .25s cubic-bezier(.2,.8,.2,1)}
.fab-wrap.open .fab-menu{pointer-events:auto}
.fab-wrap.open .fab-menu a{opacity:1;transform:none}
.fab-wrap.open .fab-menu a:nth-last-child(1){transition-delay:.02s}
.fab-wrap.open .fab-menu a:nth-last-child(2){transition-delay:.06s}
.fab-wrap.open .fab-menu a:nth-last-child(3){transition-delay:.1s}
.fab-wrap.open .fab-menu a:nth-last-child(4){transition-delay:.14s}
.fab-wrap.open .fab-menu a:nth-last-child(5){transition-delay:.18s}
.fab-wrap.open .fab-menu a:nth-last-child(6){transition-delay:.22s}
.fab-wrap.open .fab-menu a:nth-last-child(7){transition-delay:.26s}
.fab-menu a:hover{border-color:var(--gold);color:var(--gold-text)}
@media(max-width:760px){.fab-entry{display:none}}
.mled{background:var(--surf);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.mled-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}
.mled-row:last-child{border-bottom:0}
.mled-main{min-width:0;flex:1}
.mled-desc{font-weight:600;font-size:13.5px;line-height:1.3}
.mled-meta{font-size:11.5px;color:var(--dim);margin-top:2px;line-height:1.4}
.mled-meta a{color:var(--gold-text);text-decoration:none;font-weight:600}
.mled-amt{text-align:right;white-space:nowrap;flex:0 0 auto}
.mled-amt .amt{font-family:'JetBrains Mono',monospace;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.amt-in{color:var(--good)}
.amt-out{color:var(--ink)}
.mled-bal{font-size:10.5px;color:var(--dim);font-family:'JetBrains Mono',monospace;margin-top:2px}
@media(min-width:900px){
 .entry-flow{grid-template-columns:1fr 1fr;gap:12px 24px;align-items:start}
 .entry-flow .entry-savebar,.entry-flow .entry-optional,.entry-flow .entry-block-wide{grid-column:1/-1}
 .entry-block-wide .entry-amount-grid{max-width:560px}
 .denom-box .denom-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
}
.denom-hidden-total{display:none!important}
.denom-controls{display:grid;grid-template-columns:1.1fr 1fr;gap:6px;align-items:center;margin-top:6px}
.denom-controls .denom-stepper{grid-template-columns:36px 1fr 36px;gap:5px}
.denom-controls .denom-stepper input{min-height:40px;font-size:15px}
.denom-controls .denom-stepper button{min-height:40px;font-size:17px}
.denom-amt{margin:0;min-height:40px;font-family:'JetBrains Mono',monospace;font-size:14px;font-weight:600;text-align:right;padding:8px 10px}
.sticky-total-bar{margin-top:10px}
.za-rm .za-rm-cell{text-align:center;width:90px}
.za-rm .za-rm-mod{font-weight:600}
.za-rm input[type=checkbox]{width:18px;height:18px;margin:0;accent-color:var(--gold)}
@media(max-width:760px){
 .brand-copy .klabel{display:none}
 header b{font-size:16px}
 .brand-mark{width:26px;height:26px}
 table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
 th:first-child,td:first-child{position:sticky;left:0;background:var(--surf);z-index:1}
 .filter-chip-group{flex-direction:row;align-items:center;gap:8px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}
 .filter-chip-year{flex:0 0 auto}
 .filter-chip-row{flex-wrap:nowrap}
 .filter-chips a{white-space:nowrap;flex:0 0 auto}
 .ledger-result-summary{font-size:11.5px}
 .tabbar{padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px))}
 .tabitem.plus-item{width:58px;height:58px;min-width:58px;min-height:58px;border-radius:999px;background:var(--gold);border-color:var(--gold);color:var(--surf);transform:translateY(-16px);box-shadow:0 8px 20px rgba(0,0,0,.22);justify-content:center;gap:0}
 .tabitem.plus-item .tablabel{display:none}
 .tabitem.plus-item .tabicon svg{width:24px;height:24px;stroke-width:2.2}
 .tabitem.plus-item.on{background:var(--ink);border-color:var(--ink);color:var(--surf)}
 html[data-theme="dark"] .tabitem.plus-item.on{color:#161513}
}
@media(max-width:760px){
 /* Context bar: tight crumb + swipeable tabs */
 .ctxwrap{padding:14px 12px 0}
 .crumb{margin-bottom:14px;font-size:12px}
 .dtabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:0}
 .dtabs::-webkit-scrollbar{display:none}
 .rtab{padding:11px 13px;font-size:12.5px;white-space:nowrap;flex:0 0 auto}
 .crumb-inline{font-size:11px;padding-right:2px}
 .crumb-here{font-size:11px;padding-right:8px}
 .dtabs-right{margin-left:auto}
 .dropmenu{position:fixed;left:12px;right:12px;top:auto;min-width:0}
 /* Command Center: compact 2-up tiles, phone-scale type */
 .hubwrap{padding:4px 0 16px}
 .hubwrap h1{font-size:26px;margin:0 0 24px}
 .hubwrap .eyebrow{font-size:10.5px}
 .hubgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:28px}
 .hubtile{padding:16px 14px 14px;border-radius:12px}
 .hubtile::before{font-size:16px;margin-bottom:12px}
 .hubtile-name{font-size:16px;margin-bottom:3px}
 .hubtile-val{font-size:16px}
 .hubtile-soon{font-size:14px}
 .hubstrip>div{min-width:46%;padding:13px 15px}
 .hubstrip .hubtile-val{font-size:19px}
 .motionbtn{float:none;margin:0 0 10px}
 /* Page heads + chat on phones */
 .pagehead-h1{font-size:23px}
 .eyebrow-sm{font-size:10px}
 #chatlist{max-height:300px}
 .cbrow{max-width:92%}
 .cbub{font-size:13px;padding:9px 12px}
 .hub-msg{gap:10px}
 .hub-mav{width:28px;height:28px;font-size:10px}
}
@media(min-width:761px){body{padding-bottom:0}}


:root{
 --bg:#f5f4f0;--surf:#ffffff;--surf2:#efede7;--line:#d5d0c4;--paper:#f5f4f0;
 --ink:#1c1b18;--dim:#6b6862;
 --accent:#1f6f4a;--accent-soft:#edf5f0;--accent-deep:#164f35;
 --good:#1f6f4a;--warn:#845f0e;--bad:#b3382c;
 --good-soft:#edf5f0;--warn-soft:#f6efdf;--bad-soft:#f7e6e3;
 /* v3 compatibility: gold is now the accent */
 --gold:var(--accent);--gold-soft:var(--accent-soft);--gold-deep:var(--accent-deep);
 --shadow:none;--shadow-lift:0 10px 28px rgba(28,27,24,.14);
 --r-lg:12px;--r-md:10px;--r-sm:8px;
 --mono:'JetBrains Mono','SF Mono',Menlo,monospace;
 --side:232px}
[data-theme="dark"]{
 --bg:#17181a;--surf:#202225;--surf2:#2a2d31;--line:#3c4046;--paper:#17181a;
 --ink:#f1efe9;--dim:#9a978f;
 --accent:#4fa87a;--accent-soft:#1b3326;--accent-deep:#6cc394;
 --good:#4fa87a;--warn:#d1a24e;--bad:#e0705f;
 --good-soft:#1b3326;--warn-soft:#3a2f18;--bad-soft:#3d2320;
 --shadow-lift:0 10px 28px rgba(0,0,0,.5)}

/* ===== v4 shell ===== */
*{box-sizing:border-box}
html,body{background:var(--bg)}
body{font-family:"Inter Tight",Inter,-apple-system,system-ui,Arial,sans-serif;margin:0;color:var(--ink);font-size:14px;line-height:1.4;padding-bottom:0}
h1{font-size:24px;font-weight:700;letter-spacing:-.02em;margin:0 0 4px}
h2{font-size:16px;font-weight:700;letter-spacing:-.01em}
h3{font-size:14px;font-weight:700}
.num,.stat-value,.sync-amount,.ledger-mobile-balance,.mled-amt .amt,.lg-table td.bal,td{font-variant-numeric:tabular-nums}
body>.app{display:flex;min-height:100vh}
.side{width:var(--side);flex:0 0 var(--side);background:var(--surf);border-right:1px solid var(--line);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:18px 12px;gap:3px;overflow-y:auto}
.side-brand{display:flex;align-items:center;gap:10px;padding:2px 8px 16px;text-decoration:none;color:inherit}
.side-mark{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:var(--ink);overflow:hidden;flex:0 0 auto}
.side-mark img{width:26px;height:26px;object-fit:contain}
.side-brand b{display:block;font-size:14px;font-weight:700}
.side-brand small{display:block;font-size:11px;color:var(--dim)}
.side-lab{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);padding:0 8px 6px}
.side-gap{height:14px}
.side a.it{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:13.5px;font-weight:500}
.side a.it:hover{background:var(--surf2)}
.side a.it.on{background:var(--accent-soft);color:var(--accent);font-weight:600}
.side a.it svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.side a.it .meta{margin-left:auto;font-size:11px;color:var(--dim)}
.side-grp{margin-top:14px}
@media(max-width:760px){
.wrap td a:not(.btn):not(.chip){display:inline-block;padding:7px 4px 7px 0;line-height:1.25}
.wrap td form button,.wrap td .msg-tool button{min-height:34px}
.wrap .pp-chips a,.wrap .chips a,.wrap a.chip{min-height:34px;display:inline-flex;align-items:center}
}
.side a.it{padding:6px 10px}
.side a.it .ic{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;flex:0 0 auto;background:color-mix(in srgb,var(--sc,var(--accent)) 13%,transparent);color:var(--sc,var(--accent))}
.side a.it .ic svg{width:17px;height:17px}
.side a.it:hover .ic{background:color-mix(in srgb,var(--sc,var(--accent)) 22%,transparent)}
.side a.it.on{background:color-mix(in srgb,var(--sc,var(--accent)) 11%,transparent);color:var(--sc,var(--accent));box-shadow:inset 3px 0 0 var(--sc,var(--accent))}
.side a.it.on .ic{background:var(--sc,var(--accent));color:#fff}
.side-foot{margin-top:auto;display:flex;align-items:center;gap:10px;padding:12px 8px 0;border-top:1px solid var(--line)}
.side-foot .who{min-width:0;flex:1}
.side-foot .who small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.side-foot .who b{display:block;font-size:13px;font-weight:600}
.side-foot .who small{font-size:11px;color:var(--dim)}
.side-foot .who small a{color:var(--dim)}
.avatar{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;background:var(--bg);border:1px solid var(--line);font-size:11px;font-weight:700;color:var(--dim);flex:0 0 auto}
.side-foot button{width:auto;margin-left:auto;padding:6px 10px;font-size:11px;background:transparent;color:var(--dim);border:1px solid var(--line)}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.wrap{max-width:1240px;width:100%;margin:0 auto;padding:26px 32px 40px;animation:none}
.card{background:var(--surf);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;margin-bottom:12px;box-shadow:none;animation:none!important;opacity:1!important;transform:none!important}
.card:hover{transform:none}
.wrap>.card,.wrap>a.card,.ctxwrap,.pagehead{opacity:1;animation:none}
.card table tr,.sys-item,.hub-msg,.acttab,.backchip,.deptbadge,.h2-card{animation:none!important;opacity:1!important;transform:none!important}
.stat-link:hover{transform:none}
.klabel,.stat-label,.step-title,label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
button,.cta-button{background:var(--ink);color:var(--surf);border-radius:var(--r-sm)}
html[data-theme="dark"] button,html[data-theme="dark"] .cta-button{color:#111}
button.primary,.btn-primary{background:var(--accent);color:#fff}
.status-badge.good{background:var(--good-soft);color:var(--good)}
.status-badge.warn{background:var(--warn-soft);color:var(--warn)}
.status-badge.bad{background:var(--bad-soft);color:var(--bad)}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tabs a.on,.filter-chips a.on,.chips input[type=radio]:checked+label,.reg-col input:checked+label,.reg-shift-am input:checked+label,.register-option input[type=radio]:checked+label,.report-option input[type=checkbox]:checked+label,.filter-option-row a.on,.shift-btn.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);font-weight:700}
#reg_pm input:checked+label,.reg-shift-pm input:checked+label,.shift-btn-pm.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.sticky-total-bar{background:var(--ink);color:var(--bg)}
.sticky-total-bar strong{color:#fff}
.lg-table td.bal,.mled-bal{color:var(--ink)}
tr:hover td{background:var(--surf2)}
.fab-entry,.fab-wrap,header,.ctxwrap,.bottomnav.v3{display:none!important}
.banner-staging{background:var(--warn);color:#fff;font-size:12.5px;font-weight:600;text-align:center;padding:6px 12px;letter-spacing:.02em}
.sop-banner{display:block;background:var(--warn-soft);border:1px solid var(--warn);border-radius:10px;padding:10px 14px;margin:0 0 14px;color:inherit;text-decoration:none;font-size:13px;font-weight:600}
.flashbar{background:var(--warn-soft);border-bottom:2px solid var(--warn);animation:none}
.flash-ack{background:var(--warn);color:#fff}
/* phone shell */
.tabbar4{display:none}
@media(max-width:760px){
 .side{display:none}
 .wrap{padding:14px 16px calc(96px + env(safe-area-inset-bottom,0px))}
 h1{font-size:20px}
 .tabbar4{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;justify-content:space-around;align-items:flex-start;padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px));background:var(--surf);border-top:1px solid var(--line)}
 .tabbar4 a,.tabbar4 summary{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:60px;min-height:48px;color:var(--dim);text-decoration:none;font-size:11px;font-weight:500;list-style:none;cursor:pointer}
 .tabbar4 summary::-webkit-details-marker{display:none}
 .tabbar4 a.on,.tabbar4 details[open] summary{color:var(--ink);font-weight:700}
 .tabbar4 svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
 .tabbar4 a.plus{width:56px;height:56px;min-width:56px;min-height:56px;border-radius:999px;background:var(--accent);color:#fff;margin-top:-22px;box-shadow:0 8px 20px rgba(31,111,74,.35);gap:0}
 .tabbar4 a.plus svg{width:26px;height:26px;stroke-width:2.2}
 .tabbar4 details{position:relative}
 .tabbar4 details[open]::before{content:'';position:fixed;inset:0;background:rgba(0,0,0,.28);z-index:0} .tabpanel4{position:fixed;left:10px;right:10px;bottom:calc(74px + env(safe-area-inset-bottom,0px));z-index:1;max-height:min(72vh,560px);overflow-y:auto;padding:10px 10px 12px;border:1px solid var(--line);border-radius:16px;background:var(--surf);box-shadow:0 -6px 30px rgba(0,0,0,.18);display:grid;grid-template-columns:1fr 1fr;gap:6px;align-content:start} .tabpanel4 .h{grid-column:1/-1;padding:6px 4px 2px}.tabpanel4 .tp-close{grid-column:1/-1;justify-content:center;min-height:36px;border-style:dashed;color:var(--dim);font-weight:600}
 .tabpanel4 .h{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);padding:8px 10px 3px}
 .tabpanel4 a,.tabpanel4 button{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;margin:0;padding:0 10px;border-radius:10px;border:1px solid var(--line);background:var(--bg,var(--surf));color:var(--ink);font-size:13px;font-weight:600;text-decoration:none;box-shadow:none;flex-direction:row;min-height:42px;white-space:nowrap;overflow:hidden} .tabpanel4 a span:first-child,.tabpanel4 button span:first-child{overflow:hidden;text-overflow:ellipsis}
 .tabpanel4 a .m{color:var(--dim);font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;flex:0 0 auto}
 .entry-savebar{bottom:calc(70px + env(safe-area-inset-bottom,0px))}
 .sticky-total-bar{bottom:calc(70px + env(safe-area-inset-bottom,0px))}
}
@media(min-width:761px){.tabbar4{display:none}}
@media(max-width:760px){
 .tabbar4:has(details[open]){z-index:9500}
 body:has(.tabbar4 details[open]){overflow:hidden}
 body:has(.tabbar4 details[open]) #fb-btn,body:has(.tabbar4 details[open]) #fb-panel{display:none!important}
 .tabbar4 details[open]::before{background:rgba(12,18,14,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
 .tabpanel4{left:0;right:0;bottom:0;display:block;max-height:88vh;border:0;border-top:1px solid var(--line);border-radius:22px 22px 0 0;padding:0 16px calc(18px + env(safe-area-inset-bottom,0px));box-shadow:0 -12px 40px rgba(0,0,0,.28);overscroll-behavior:contain;animation:tpUp .2s ease-out}
 @keyframes tpUp{from{transform:translateY(28px);opacity:.5}to{transform:none;opacity:1}}
 .tabpanel4 .tp-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:12px;padding:20px 0 10px;background:var(--surf)}
 .tabpanel4 .tp-grab{position:absolute;top:8px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:4px;background:var(--line)}
 .tabpanel4 .tp-who{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
 .tabpanel4 .tp-who .av{width:40px;height:40px;flex:0 0 40px;border-radius:999px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:14px}
 .tabpanel4 .tp-who b{display:block;font-size:15px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .tabpanel4 .tp-who small{display:block;color:var(--dim);font-size:12px;text-transform:capitalize}
 .tabpanel4 .tp-close{width:40px;height:40px;min-height:40px;flex:0 0 40px;padding:0;border-radius:999px;border:1px solid var(--line);border-style:solid;background:var(--bg);color:var(--ink);justify-content:center}
 .tabpanel4 .tp-close svg{width:18px;height:18px}
 .tabpanel4 .h{padding:16px 2px 8px;font-size:11px}
 .tabpanel4 .tp-chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px 2px}
 .tabpanel4 .tp-chips::-webkit-scrollbar{display:none}
 .tabpanel4 .tp-chips a{width:auto;flex:0 0 auto;min-height:40px;padding:0 14px 0 11px;gap:7px;border-radius:999px;justify-content:flex-start;background:var(--bg);font-size:13.5px}
 .tabpanel4 .tp-chips a svg{width:17px;height:17px}
 .tabpanel4 .tp-chips a.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}
 .tabpanel4 .tp-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
 .tabpanel4 .tp-grid a{position:relative;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:10px;min-height:78px;padding:12px;border-radius:14px;background:var(--bg);white-space:normal}
 .tabpanel4 .tp-grid .tp-ic{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
 .tabpanel4 .tp-grid .tp-ic svg{width:20px;height:20px}
 .tabpanel4 .tp-grid .l{font-size:14.5px;font-weight:650;line-height:1.2}
 .tabpanel4 .tp-grid .m{position:absolute;top:12px;right:10px;padding:3px 6px;border-radius:6px;background:var(--line);color:var(--dim);font-size:9.5px;font-weight:700}
 .tabpanel4 .tp-grid a.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
 .tabpanel4 .tp-grid a.on .tp-ic{background:var(--accent);color:#fff}
 .tabpanel4 .tp-list{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--bg)}
 .tabpanel4 .tp-list a,.tabpanel4 .tp-list button{color:var(--ink);font-family:inherit;text-align:left;min-height:52px;padding:0 14px;gap:12px;justify-content:flex-start;border:0;border-radius:0;border-bottom:1px solid var(--line);background:transparent;font-weight:550;font-size:14.5px}
 .tabpanel4 .tp-list>:last-child{border-bottom:0}
 .tabpanel4 .tp-list svg{width:20px;height:20px;flex:0 0 20px;color:var(--dim)}
 .tabpanel4 .tp-list .chev{margin-left:auto;color:var(--dim);font-size:20px;font-weight:400}
 .tabpanel4 .tp-list a.out,.tabpanel4 .tp-list a.out svg{color:var(--bad,#b3261e)}
}
html.no-motion *{animation:none!important;transition:none!important}

/* ===== v4 polish for legacy (v3) pages: same chrome as the v2 homes ===== */
.wrap .pagehead{margin:0 0 16px}.wrap .pagehead .eyebrow-sm{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.wrap .pagehead-h1,.wrap h1.pagehead-h1{font-size:24px;font-weight:700;letter-spacing:-.02em;margin:2px 0 0}
.wrap .pagehead~.card:has(>.klabel+h2:last-child){display:none}            /* duplicate title card when a page header exists */
.wrap>.card:has(>.klabel+h2:last-child){background:none;border:0;padding:0;margin:0 0 14px}.wrap>.card:has(>.klabel+h2:last-child) h2{font-size:24px;font-weight:700;letter-spacing:-.02em;margin:2px 0 0}
.wrap td button,.wrap td .cta-button,.wrap td a.button,.wrap .row-actions button,.wrap form.inline button{background:var(--surf);color:var(--ink);border:1px solid var(--line);font-weight:600;min-height:32px;padding:4px 10px;font-size:12.5px;border-radius:8px;width:auto;margin:0 4px 0 0}
.wrap .card{border-radius:12px;border:1px solid var(--line);background:var(--surf);box-shadow:none;animation:none}
.wrap .card h2{font-size:15px}
.wrap button,.wrap .cta-button,.wrap input[type=submit]{background:var(--accent);color:#fff;border:0;border-radius:10px;font-weight:700;box-shadow:none;min-height:44px}
.wrap button:hover{opacity:.92;filter:none}
.wrap .report-secondary-button,.wrap button.secondary,.wrap .btn-secondary{background:var(--surf);color:var(--ink);border:1px solid var(--line);font-weight:600;min-height:38px}
.wrap .tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}.wrap .tabs a{padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surf);color:var(--ink);font-size:13px;font-weight:600;text-decoration:none}
.wrap .tabs a.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.wrap .chips label{padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surf);font-size:13px;font-weight:600;min-height:36px;display:inline-flex;align-items:center}
.wrap .chips input[type=radio]:checked+label,.wrap .chips input[type=checkbox]:checked+label{background:var(--accent);border-color:var(--accent);color:#fff}
.wrap table{font-size:13.5px}.wrap th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--dim);font-weight:600;background:transparent;border-bottom:1px solid var(--line)}
.wrap td{font-family:inherit;background:transparent;border-bottom:1px solid var(--line);padding:10px 8px}
.wrap tr:last-child td{border-bottom:0}
.wrap td.num,.wrap td.in,.wrap td.out,.wrap td.bal,.wrap .mono,.wrap .stat-value{font-family:var(--mono);font-variant-numeric:tabular-nums}
.wrap input[type=text],.wrap input[type=number],.wrap input[type=search],.wrap input[type=date],.wrap input[type=password],.wrap input:not([type]),.wrap select,.wrap textarea{border:1px solid var(--line);border-radius:10px;background:var(--surf);color:var(--ink);font-size:15px;min-height:44px;padding:8px 12px}
.wrap input:focus,.wrap select:focus,.wrap textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.wrap label,.wrap .klabel{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.wrap .field-hint,.wrap .stat-note,.wrap .metric-note{color:var(--dim);font-size:12.5px}
.wrap .entry-amount-grid input{font-family:var(--mono);font-size:22px;min-height:54px;font-weight:600}
.wrap .entry-savebar{bottom:12px;background:linear-gradient(180deg,transparent,var(--bg) 40%)}.wrap .entry-savebar button{width:100%;min-height:50px;font-size:16px}
.wrap .entry-pill.gold{background:var(--accent-soft);color:var(--accent)}
.wrap .stat-tile{border-radius:12px}
.wrap .void-chip{background:var(--bad-soft);color:var(--bad);border-radius:6px;padding:2px 7px;font-size:11px;font-weight:700}
@media(max-width:760px){.wrap .pagehead-h1{font-size:20px}.wrap .entry-savebar{bottom:calc(72px + env(safe-area-inset-bottom,0px))}.wrap .sticky-total-bar{bottom:calc(72px + env(safe-area-inset-bottom,0px))}
.wrap table{display:block;overflow-x:auto;white-space:nowrap}}

/* --- touch: phones and the register's touch monitor. Desktop keeps its density. --- */
@media (pointer: coarse){
  .wrap td button,.wrap td .cta-button,.wrap td a.cta-button,
  .wrap .report-secondary-button,.wrap button.secondary,
  .tabpanel4 a,.tabpanel4 button,.tabpanel4 .tp-close,
  .wrap .chips label,.denom-stepper button,.denom-stepper input,.denom-amt,
  .denom-controls .denom-stepper button,.denom-controls .denom-stepper input,
  .h3-btn,.pp-act,.p5-btn,.chip,.tkt{min-height:44px}
  .wrap td button,.wrap td .cta-button{padding-left:14px;padding-right:14px}
  /* nothing under 11px where a finger and arm's length are involved */
  .pp-sub,.h3-sub,small,.stamp,.k{font-size:11.5px}
}

/* ===== the 760px-to-desktop gap =====
   Breakpoints ran 392 / 420 / 430 / 560 / 680 / 720 / 760 and then nothing
   until 1240, so everything from a tablet up got the full desktop layout with
   mouse-sized chrome. The register at Chronic is a 15.6" touch monitor at
   1366x768, which lands squarely in that gap: a 232px sidebar takes 17% of its
   width, and at 768px tall vertical space is the scarce thing, not horizontal.

   So the sidebar collapses to an icon rail, in two bands:
     761-1000px   always -- at that width the labels genuinely do not fit.
     1001-1400px  only when the pointer is coarse -- that is the register and
                  tablets. A laptop at 1366 with a trackpad keeps its labels,
                  because there the sidebar is a help, not a tax.
   Icons stay, labels go to the title tooltip, and the reclaimed 168px goes to
   the content. */
@media (min-width:761px) and (max-width:1000px),
       (min-width:1001px) and (max-width:1400px) and (pointer:coarse){
  :root{ --side:64px }
  .side{ padding:14px 8px; align-items:center }
  .side a.it{ justify-content:center; padding:11px 0; gap:0; position:relative }
  .side a.it > span:not(.meta){ display:none }
  .side a.it svg{ width:21px; height:21px }
  /* a count still has to be visible with the label gone */
  .side a.it .meta{
    position:absolute; top:4px; right:8px; margin:0;
    min-width:16px; height:16px; line-height:16px; padding:0 4px;
    border-radius:8px; background:var(--accent); color:#fff;
    font-size:10px; font-weight:700; text-align:center }
  .side-lab{ display:none }
  .side-brand{ justify-content:center }
  .side-brand > span:not(.side-mark){ display:none }
  .side-foot{ flex-direction:column; gap:8px; padding:10px 0 }
  .side-foot .who{ display:none }
  .wrap{ padding-left:20px; padding-right:20px }
}

/* Short touch screens -- the register again. At 768px tall, 66px of vertical
   page padding is a card and a half of real estate. */
@media (max-height:820px) and (pointer:coarse){
  .wrap{ padding-top:14px; padding-bottom:20px }
  .side{ padding-top:10px }
}

/* ===== ledger table as cards on a phone =====
   Five pages in app.py render every ledger row TWICE -- once as a desktop
   <table> and once as a .mled card list -- and hide one with CSS. On
   /archive/ledger that is 556 table rows plus 556 card rows in a 330 KB page:
   whichever device you are on, you download the whole of the other one and
   throw it away.

   These rules restyle the table itself into the same card shape, so the page
   can ship one copy. Same technique as the People roster: the implicit <tbody>
   has to be blocked too, or the grid rows lay out in a table context and
   refuse to stretch. */
@media(max-width:760px){
  .lg-cards,.lg-cards tbody{display:block;min-width:0}
  .lg-cards .lg-scroll .lg-table,.lg-cards .lg-table{min-width:0}
  .lg-cards .lg-scroll{overflow:visible}
  .lg-cards tr:first-child{display:none}                /* column headers */
  .lg-cards tr{display:grid;grid-template-columns:1fr auto;gap:2px 10px;
    padding:11px 13px;border-bottom:1px solid var(--line)}
  .lg-cards tr:last-child{border-bottom:0}
  .lg-cards td{display:block;border:0;padding:0}
  .lg-cards td:nth-child(1),.lg-cards td:nth-child(3){display:none}  /* date is in the meta line; category is desktop detail */
  .lg-cards td:nth-child(2){grid-column:1;grid-row:1;min-width:0}
  .lg-cards td:nth-child(4),.lg-cards td:nth-child(5){grid-column:2;grid-row:1;
    text-align:right;font-weight:600;white-space:nowrap}
  .lg-cards td:nth-child(4):empty,.lg-cards td:nth-child(5):empty{display:none}
  .lg-cards td.out{color:var(--bad)}
  .lg-cards td.in{color:var(--good)}
  .lg-cards td:nth-child(6){grid-column:2;grid-row:2;text-align:right;
    font-size:11px;color:var(--dim);font-weight:500}
  .lg-cards td:nth-child(6):before{content:'bal '}
  .lg-cards .lg-time{display:none}
  .lg-cards td .field-hint,.lg-cards td .lg-desc-meta{font-size:11.5px;line-height:1.4;margin-top:2px}
  .lg-cards td.lg-date,.lg-cards td.lg-cat{display:none}
  .lg-cards td.lg-desc-cell{grid-column:1;grid-row:1;min-width:0}
  .lg-cards td.out,.lg-cards td.in{grid-column:2;grid-row:1;text-align:right;
    font-weight:600;white-space:nowrap}
  .lg-cards td.out:empty,.lg-cards td.in:empty{display:none}
  .lg-cards td.bal{grid-column:2;grid-row:2;text-align:right;font-size:11px;
    color:var(--dim);font-weight:500}
  .lg-cards td.bal:before{content:'bal '}
  .lg-cards .lg-desc{font-weight:600;font-size:13.5px;line-height:1.3}
  /* a voided entry still has to read as struck through, not just greyed */
  .lg-cards tr.void-row{opacity:.72}
  .lg-cards tr.void-row td.bal:before{content:''}
  /* the whole-row empty state must not be grid-split */
  .lg-cards tr:has(td[colspan]){display:block;text-align:center}
  .lg-cards td[colspan]{display:block}
}

/* ===== archive flag cards =====
   /archive/flags carried 61,811 bytes of inline style= attributes -- a third of
   the page -- because five identical declarations were repeated on every one of
   269 cards. They cost nothing here: the stylesheet is fetched once and cached
   immutable, while an inline attribute is re-sent on every page load. */
.af-card{margin-bottom:10px}
.af-head{display:flex;justify-content:space-between;gap:10px}
.af-hint{margin:2px 0 0}
.af-form{margin-top:8px}
.af-pill{height:fit-content}
.af-pill.sev-critical{color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,transparent)}
.af-pill.sev-warning{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent)}
.af-pill.sev-other{color:var(--dim);background:color-mix(in srgb,var(--dim) 12%,transparent)}

/* ===== section subnav (.ix-sub) =====
   invtrack.py defined these rules in its own CSS blob, so the five inventory
   pages it renders were styled and the Overview page -- built by inventory2.py
   -- was not. A shared component belongs in the shared sheet; invtrack's local
   copy is removed so there is one definition.

   The active chip was #1e1a15 text on the accent green: 2.83:1, a fail at any
   size. White on the same green is 6.12:1. */
.ix-sub{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.ix-sub a{border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-size:12.5px;
  font-weight:600;text-decoration:none;color:var(--ink);background:var(--surf)}
.ix-sub a:hover{background:var(--surf2)}
.ix-sub a.on{background:var(--accent);border-color:var(--accent);color:#fff}

/* --- brand gold stays gold for decoration; as text it needs to be readable (2.93:1 -> 5.37:1) --- */
:root{ --gold-text:var(--accent-deep) }
[data-theme="dark"]{ --gold-text:var(--gold) }
header b em,.portal-tile-badge,.portal-arrow,.tabitem.plus-item,.entry-pill.gold,
.entry-optional[open] summary,.ledger-filters summary span,.ledger-detail-actions a{color:var(--gold-text)}

/* --- sign-in / two-step / invite: the pages people meet before the shell exists --- */
body:has(.auth) .wrap{max-width:none;padding:0;margin:0}
.auth{min-height:100dvh;display:grid;place-items:center;padding:28px 16px}
.auth-card{width:100%;max-width:392px;background:var(--surf);border:1px solid var(--line);
  border-radius:16px;padding:34px 30px;box-shadow:var(--shadow-lift)}
.auth-logo{width:54px;height:54px;display:block;margin:0 auto 16px;border-radius:13px;
  border:1px solid var(--line);object-fit:cover}
.auth-logo.dark{display:none}
[data-theme="dark"] .auth-logo.light{display:none}
[data-theme="dark"] .auth-logo.dark{display:block}
.auth-brand{text-align:center;font-size:11px;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;color:var(--dim);margin:0 0 8px}
.auth h1{text-align:center;font-size:22px;line-height:1.25;margin:0 0 6px;letter-spacing:-.01em}
.auth-sub{text-align:center;color:var(--dim);font-size:13px;line-height:1.5;margin:0 0 24px}
.auth-field{margin:0 0 14px}
.auth-field label{display:block;font-size:12px;font-weight:600;color:var(--dim);margin:0 0 6px}
/* 16px so iOS does not zoom the page when the field takes focus */
.auth .auth-field input{width:100%;box-sizing:border-box;min-height:46px;padding:0 14px;font-size:16px;
  border:1px solid var(--line);border-radius:10px;background:var(--surf2);color:var(--ink);font-family:inherit}
.auth .auth-field input:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.auth .auth-field input[inputmode="numeric"]{letter-spacing:.32em;font-size:19px;text-align:center}
/* Chrome paints autofilled fields with its own near-white background and
   ignores background-color. The inset shadow is the documented way to put
   the theme's own surface back, and the absurd transition delay stops
   Chrome repainting over it. Tokens, so light and dark both come out right. */
.auth .auth-field input:-webkit-autofill,
.auth .auth-field input:-webkit-autofill:hover,
.auth .auth-field input:-webkit-autofill:focus,
.auth .auth-field input:-webkit-autofill:active{
  -webkit-box-shadow:0 0 0 1000px var(--surf2) inset;
  box-shadow:0 0 0 1000px var(--surf2) inset;
  -webkit-text-fill-color:var(--ink);
  caret-color:var(--ink);
  transition:background-color 600000s 0s}
.auth .auth-field input:-webkit-autofill:focus{
  -webkit-box-shadow:0 0 0 1000px var(--surf2) inset,0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent);
  box-shadow:0 0 0 1000px var(--surf2) inset,0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.auth .auth-btn{width:100%;min-height:48px;border:0;border-radius:10px;background:var(--accent);color:#fff;
  font-family:inherit;font-weight:700;font-size:15px;cursor:pointer;margin-top:4px}
.auth-btn:hover{background:var(--accent-deep)}
.auth-btn:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:2px}
.auth .auth-btn.alt{background:transparent;color:var(--accent);border:1px solid var(--line);margin-top:10px}
.auth .auth-btn.alt:hover{background:var(--surf2);color:var(--accent-deep)}
.auth-hint{text-align:center;font-size:12px;color:var(--dim);margin:8px 0 0;line-height:1.5}
.auth-foot{text-align:center;margin:18px 0 0;font-size:13px;color:var(--dim);line-height:1.6}
/* the default link blue fails on both themes and clashes with the brand; use the accent */
.auth-foot a,.auth-note a{color:var(--accent);font-weight:600;text-decoration-thickness:1px;text-underline-offset:2px}
.auth-foot a:visited,.auth-note a:visited{color:var(--accent)}
.auth-foot a:hover,.auth-note a:hover{color:var(--accent-deep)}
.auth-note{border-radius:10px;padding:11px 13px;font-size:13px;line-height:1.5;margin:0 0 18px;border:1px solid}
.auth-note.err{background:color-mix(in srgb,var(--bad) 7%,var(--surf));
  border-color:color-mix(in srgb,var(--bad) 32%,transparent);color:var(--bad)}
.auth-note.ok{background:color-mix(in srgb,var(--good) 7%,var(--surf));
  border-color:color-mix(in srgb,var(--good) 32%,transparent);color:var(--good)}
.auth-note.info{background:var(--surf2);border-color:var(--line);color:var(--dim)}
@media (max-width:420px){.auth-card{padding:26px 20px;border-radius:14px}}
