:root{
  --bg:#f8f9fb; --panel:#fff; --line:#e6e8ec; --line2:#f0f1f4; --ink:#0f172a; --mute:#6b7280; --soft:#9ca3af;
  --side:#f1f7fe; --brand:#0a6bc4; --cta:#15b4ec; --cta-ink:#062a3f;
  --red:#e11d48; --red-bg:#fff1f3; --green:#15803d; --green-bg:#effaf2; --amber:#b45309; --amber-bg:#fff7e8; --blue-bg:#eaf4fe;
  --r:14px; font-size:15px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;font-family:var(--font,Inter),system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink);line-height:1.45}
a{color:var(--brand);text-decoration:none} a:hover{text-decoration:underline}
h1{font-size:1.9rem;letter-spacing:-.02em;margin:.1rem 0 0;font-weight:700}
h2{font-size:1.1rem;margin:0 0 .8rem;font-weight:600} h3{font-size:1rem;margin:0 0 .6rem}
small{color:var(--mute)}
:focus-visible{outline:2px solid var(--cta);outline-offset:2px}

/* ---------- shell ---------- */
.side{position:fixed;inset:0 auto 0 0;width:250px;background:var(--side);border-right:1px solid var(--side-line);overflow-y:auto;padding:14px 12px 30px;z-index:30}
.brand{display:flex;gap:10px;align-items:center;padding:6px 8px 18px}
.brand b{display:block;font-size:.98rem} .brand small{font-size:.78rem}
.logo{width:36px;height:36px;border-radius:10px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:700;overflow:hidden;flex:none}
.logo img{width:100%;height:100%;object-fit:cover}
.side nav a{display:flex;gap:12px;align-items:center;padding:9px 12px;border-radius:10px;color:var(--side-ink);font-weight:500;margin:1px 0}
.side nav a svg{color:var(--side-mute)} .side nav a:hover{background:var(--side-hover);text-decoration:none}
.side nav a.on{background:var(--side-on);color:var(--brand)} .side nav a.on svg{color:var(--brand)}
.grp{color:var(--side-mute);font-size:.85rem;padding:18px 12px 6px}
.main{margin-left:250px;min-height:100vh}
.top{height:64px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 24px;position:sticky;top:0;z-index:20}
.gsearch{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:0 12px;margin-left:auto;width:min(340px,40vw);color:var(--soft)}
.gsearch input{border:0;outline:0;padding:9px 0;width:100%;font:inherit;background:none}
.me{display:flex;align-items:center;gap:10px} .me b{display:block;font-size:.88rem} .me small{font-size:.75rem}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:.8rem;font-weight:600}
.icon-btn{border:0;background:none;padding:6px;border-radius:8px;color:var(--mute);cursor:pointer;display:inline-grid}
.icon-btn:hover{background:var(--line2)} .menu{display:none}
.wrap{padding:28px 32px 60px;max-width:1400px}

/* ---------- page head ---------- */
.phead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.crumbs{color:var(--mute);font-size:.9rem;display:flex;gap:8px} .crumbs a{color:var(--mute)}
.actions{display:flex;gap:10px;flex-wrap:wrap}

/* ---------- buttons & forms ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:9px 16px;border-radius:10px;font:inherit;font-weight:500;cursor:pointer;white-space:nowrap}
.btn:hover{background:var(--hover);text-decoration:none}
.btn.primary{background:var(--cta);border-color:var(--cta);color:var(--cta-ink)} .btn.primary:hover{background:#0ea5dc}
.btn.green{background:#16a34a;border-color:#16a34a;color:#fff} .btn.danger{color:var(--red);border-color:#fbd0d9}
.btn.sm{padding:5px 10px;font-size:.85rem;border-radius:8px}
.link{background:none;border:0;padding:0;font:inherit;color:var(--brand);cursor:pointer;font-weight:500}
.link.red{color:var(--red)}
label{display:flex;flex-direction:column;gap:6px;font-size:.88rem;font-weight:500;color:var(--ink2)}
input,select,textarea{font:inherit;border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:var(--panel);color:var(--ink);width:100%;min-width:0}
input:focus,select:focus,textarea:focus{border-color:var(--cta);outline:2px solid #bfeafb}
textarea{min-height:70px}
.grid2,.grid3,.grid4{display:grid;gap:14px;margin-bottom:14px}
.grid2{grid-template-columns:repeat(2,1fr)} .grid3{grid-template-columns:repeat(3,1fr)} .grid4{grid-template-columns:repeat(4,1fr)}
.form-foot{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}
.req::after{content:" *";color:var(--red)}

/* ---------- cards ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px;margin-bottom:20px}
.card.flush{padding:0;overflow:hidden}
.card-h{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}
.card-h h2{margin:0}
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-bottom:22px}
.stat{display:flex;gap:14px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;color:var(--ink)}
a.stat:hover{text-decoration:none;border-color:var(--cta)}
.stat .ico{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:var(--blue-bg);color:var(--brand);flex:none}
.stat small{display:block;font-size:.84rem} .stat b{font-size:1.25rem;font-weight:700;letter-spacing:-.01em}
.stat em{display:block;font-style:normal;font-size:.8rem;color:var(--mute)}
.stat.red .ico{background:var(--red-bg);color:var(--red)} .stat.red b{color:var(--red)}
.stat.green .ico{background:var(--green-bg);color:var(--green)}
.stat.amber .ico{background:var(--amber-bg);color:var(--amber)}
.hero{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);margin-bottom:20px}
.hero div{padding:20px 22px;border-right:1px solid var(--line)} .hero div:last-child{border:0}
.hero small{display:block} .hero b{font-size:1.6rem;letter-spacing:-.02em}

/* ---------- tables ---------- */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:14px 20px;border-bottom:1px solid var(--line);justify-content:flex-end}
.toolbar select,.toolbar input[type=date]{width:auto}
.search{flex-direction:row;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:0 12px;color:var(--soft);width:260px}
.search input{border:0;outline:0;padding:9px 0}
.tbl{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th{text-align:left;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);font-weight:600;padding:12px 16px;background:var(--panel2);border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:13px 16px;border-bottom:1px solid var(--line2);vertical-align:middle}
tbody tr:hover{background:var(--row-hover)}
tfoot td{font-weight:700;background:var(--panel2);border-top:1px solid var(--line)}
td.n,th.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.empty{text-align:center;color:var(--mute);padding:36px}
.due{color:var(--red);font-weight:600} .ok{color:var(--green);font-weight:600} .muted{color:var(--mute)}
.row-actions{display:flex;gap:14px;justify-content:flex-end;white-space:nowrap}
.badge{display:inline-block;font-size:.78rem;padding:2px 9px;border-radius:7px;font-weight:500;border:1px solid}
.badge.green{color:var(--green);background:var(--green-bg);border-color:#c8ebd3}
.badge.red{color:var(--red);background:var(--red-bg);border-color:#fbd0d9}
.badge.amber{color:var(--amber);background:var(--amber-bg);border-color:#f7dfb2}
.badge.blue{color:var(--brand);background:var(--blue-bg);border-color:#cfe4fa}
.badge.gray{color:var(--ink2);background:var(--chip);border-color:var(--line)}

/* ---------- misc ---------- */
.alert{padding:12px 16px;border-radius:10px;margin-bottom:18px;border:1px solid;font-weight:500}
.alert.ok{background:var(--green-bg);color:var(--green);border-color:#c8ebd3}
.alert.err{background:var(--red-bg);color:var(--red);border-color:#fbd0d9}
.alert.warn{background:var(--amber-bg);color:var(--amber);border-color:#f7dfb2}
.cols{display:grid;grid-template-columns:320px 1fr;gap:20px;align-items:start}
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.dl{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:.92rem;margin:0}
.dl dt{color:var(--mute)} .dl dd{margin:0;font-weight:500}
.quick{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.quick a{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;color:var(--ink);font-weight:500;background:var(--panel)}
.quick a:hover{border-color:var(--cta);text-decoration:none}
.quick svg{color:var(--brand)}
.alerts li{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line2)} .alerts{list-style:none;margin:0;padding:0}
.alerts li:last-child{border:0}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}
.tabs a{padding:10px 14px;color:var(--mute);font-weight:500;border-bottom:2px solid transparent;white-space:nowrap}
.tabs a.on{color:var(--brand);border-color:var(--brand)} .tabs a:hover{text-decoration:none;color:var(--ink)}
dialog{border:0;border-radius:16px;padding:0;width:min(640px,94vw);box-shadow:0 24px 60px rgba(15,23,42,.25)}
dialog::backdrop{background:rgba(15,23,42,.35)}
dialog form{padding:22px} dialog h2{display:flex;justify-content:space-between}
.item-row{display:grid;grid-template-columns:2fr 2fr 1fr 1fr 1fr 36px;gap:8px;align-items:center;margin-bottom:8px}
.item-row .net{font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.totals{display:flex;justify-content:flex-end;gap:28px;padding:14px 0;font-weight:600;border-top:1px solid var(--line);margin-top:10px}
.pay-input{width:130px;text-align:right}
.hint{color:var(--mute);font-size:.85rem}
.login{min-height:100vh;display:grid;place-items:center;background:var(--side)}
.login .card{width:min(400px,92vw);padding:30px}

/* ---------- print documents ---------- */
.print-body{background:#eef0f3}
.print-bar{display:flex;gap:10px;align-items:center;justify-content:center;padding:14px;flex-wrap:wrap}
.paper{background:var(--panel);width:min(820px,96vw);margin:0 auto 40px;padding:36px 40px;border-radius:6px}
.lh{display:flex;gap:16px;align-items:center;border-bottom:2px solid var(--ink);padding-bottom:14px;margin-bottom:20px}
.lh img{width:64px;height:64px;object-fit:contain} .lh h2{margin:0;font-size:1.35rem} .lh p{margin:4px 0 0;color:var(--mute);font-size:.85rem}
.lh .doc{margin-left:auto;font-weight:700;font-size:1.1rem;border:1.5px solid var(--ink);padding:6px 14px;border-radius:6px}
.paper table td,.paper table th{padding:8px 10px}
.sign{display:flex;justify-content:space-between;margin-top:60px;font-size:.9rem}
.sign span{border-top:1px solid var(--ink);padding-top:6px;min-width:180px;text-align:center}

@media print{
  .no-print,.print-bar{display:none!important} body,.print-body{background:var(--panel)}
  .paper{width:100%;margin:0;padding:0;border-radius:0}
}
@media (max-width:1000px){
  .grid4{grid-template-columns:repeat(2,1fr)} .cols,.cols2{grid-template-columns:1fr}
  .hero{grid-template-columns:repeat(2,1fr)} .hero div:nth-child(2){border-right:0} .hero div:nth-child(-n+2){border-bottom:1px solid var(--line)}
}
@media (max-width:760px){
  .side{transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 40px rgba(0,0,0,.15)}
  .nav-open .side{transform:none} .main{margin-left:0} .menu{display:inline-grid}
  .wrap{padding:18px 14px 40px} h1{font-size:1.5rem}
  .grid2,.grid3,.grid4{grid-template-columns:1fr} .gsearch{width:auto;flex:1}
  .me div{display:none} .search{width:100%}
  .item-row{grid-template-columns:1fr 1fr;padding:10px;border:1px solid var(--line);border-radius:10px}
  .paper{padding:20px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media print{.side,.top,.actions,.tabs,.toolbar,.row-actions,.alert{display:none!important}.main{margin:0!important}.wrap{padding:0}.card{border:0}}
.tbl td:first-child{white-space:nowrap}

/* ---------- collapsible menu ---------- */
.side{display:flex;flex-direction:column}
.side nav{flex:1}
.grp{display:flex;width:100%;justify-content:space-between;align-items:center;background:none;border:0;font:inherit;cursor:pointer;border-radius:8px;padding:14px 12px 6px}
.grp:hover{color:var(--ink)}
.grp svg{transition:transform .2s}
.navgrp.closed .grp svg{transform:rotate(180deg)}
.navgrp .items{overflow:hidden;transition:max-height .22s ease}
.navgrp.closed .items{max-height:0!important}
.navgrp.closed.has-on .grp{color:var(--brand)}
.side-toggle{display:flex;align-items:center;gap:12px;margin-top:14px;padding:9px 12px;border:1px solid var(--side-line);border-radius:10px;background:var(--panel);color:var(--mute);font:inherit;font-size:.88rem;cursor:pointer}
.side-toggle:hover{color:var(--ink)}
.side-toggle svg{flex:none}
.side,.main{transition:width .2s,margin-left .2s}

/* icons-only sidebar */
@media (min-width:761px){
  .side-mini .side{width:72px;padding:14px 10px 20px}
  .side-mini .main{margin-left:72px}
  .side-mini .brand{padding:6px 8px 12px}
  .side-mini .brand div,.side-mini .side nav a span,.side-mini .grp span,.side-mini .side-toggle span{display:none}
  .side-mini .grp{justify-content:center;padding:10px 0 4px;border-top:1px solid var(--side-line);border-radius:0}
  .side-mini .grp svg{display:none}
  .side-mini .navgrp.closed .items{max-height:none!important}
  .side-mini .side nav a{justify-content:center;padding:10px}
  .side-mini .side-toggle{justify-content:center;padding:9px}
  .side-mini .side-toggle svg{transform:scaleX(-1)}
}
@media (max-width:760px){.side-toggle{display:none}}

/* ---------- Nepali dates ---------- */
.dt{display:inline-block;line-height:1.25;white-space:nowrap}
.dt small{display:block;font-size:.76rem;color:var(--mute)}
.dt.in small{display:inline}
.bsdate{display:flex;flex-direction:column;gap:3px;position:relative;min-width:0}
.toolbar .bsdate{width:170px}
.bs-hint{font-size:.76rem;color:var(--mute);font-weight:400;min-height:1em}
.bs-hint.bad{color:var(--red)}
.toolbar .bs-hint{position:absolute;top:100%;left:2px;white-space:nowrap}
.bs-pop{position:fixed;z-index:1000;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 44px rgba(15,23,42,.18);padding:12px;width:300px;font-size:.9rem}
.bs-head{display:flex;gap:6px;align-items:center;margin-bottom:8px}
.bs-head select{padding:6px 8px;border-radius:8px}
.bs-head button{border:0;background:var(--line2);width:30px;height:32px;border-radius:8px;font-size:1.1rem;cursor:pointer;flex:none}
.bs-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.bs-grid b{font-size:.72rem;color:var(--mute);font-weight:600;padding:4px 0}
.bs-grid .sat{color:var(--red)}
.bs-grid button{border:0;background:none;border-radius:8px;padding:5px 0 3px;cursor:pointer;font:inherit;line-height:1.1;color:var(--ink)}
.bs-grid button small{display:block;font-size:.62rem;color:var(--soft)}
.bs-grid button:hover{background:var(--blue-bg)}
.bs-grid button.today{outline:1.5px solid var(--cta)}
.bs-grid button.sel{background:var(--brand);color:#fff}.bs-grid button.sel small{color:#dbeafe}
.bs-grid button.sat{color:var(--red)} .bs-grid button.sel.sat{color:#fff}
.bs-foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--line2);font-size:.78rem;color:var(--mute)}
.bs-foot button{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:5px 10px;cursor:pointer;font:inherit}
@media print{.dt small{display:inline}.dt small::before{content:" · "}}
.bsdate[hidden]{display:none!important}
.btn.wa-btn{color:#128c4a;border-color:#bfe8cf} .btn.wa-btn:hover{background:#effaf2}
.btn.green:hover{background:#15803d}

/* ---------- dashboard welcome ---------- */
.welcome{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:26px 28px;margin-bottom:22px}
.w-top{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.welcome h1{font-size:2rem;letter-spacing:-.025em;margin:0}
.welcome p{color:var(--mute);margin:6px 0 0;font-size:1.02rem} .welcome p b{color:var(--ink);font-weight:500}
.w-clock{text-align:right}
.w-date{font-size:1.3rem;font-weight:600;color:var(--ink2)}
.w-time{font:600 2.3rem/1.15 ui-monospace,"SF Mono",Menlo,Consolas,monospace;color:var(--brand);letter-spacing:.02em;font-variant-numeric:tabular-nums}
.w-clock small{font-size:.86rem}
.w-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px;align-items:center}
.act{display:inline-flex;align-items:center;gap:9px;padding:12px 18px;border-radius:12px;color:#fff;font-weight:600;font-size:1rem}
.act:hover{text-decoration:none;filter:brightness(.94)} .act span{font-weight:400;opacity:.85}
.act.green{background:#16a34a}.act.red{background:#e11d48}.act.blue{background:#0a78d1}.act.slate{background:#475569}
.act-pair{display:flex;flex-direction:column;gap:5px;padding-left:12px;border-left:1px solid var(--line)}
.act-sm{color:#fff;font-weight:600;font-size:.85rem;padding:5px 14px;border-radius:8px;text-align:center}
.act-sm:hover{text-decoration:none;filter:brightness(.94)} .act-sm.teal{background:#0d9488}.act-sm.orange{background:#ea580c}
.dash-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
.dash-stats .stat{padding:20px 22px;border-radius:16px;gap:16px}
.dash-stats .stat .ico{width:52px;height:52px;border-radius:14px}
.dash-stats .stat .ico svg{width:24px;height:24px}
.dash-stats .stat small{font-size:.9rem;color:var(--ink2)}
.dash-stats .stat b{font-size:1.45rem}
@media (max-width:1100px){.dash-stats{grid-template-columns:repeat(2,1fr)}}
@media (max-width:760px){.dash-stats{grid-template-columns:1fr}.w-clock{text-align:left}.welcome{padding:20px}.welcome h1{font-size:1.5rem}.act{flex:1 1 45%;justify-content:center}.act-pair{flex-direction:row;border:0;padding:0}}

/* ---------- income & expenses report ---------- */
.ie-filter{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}
.seg{display:inline-flex;background:var(--line2);border-radius:12px;padding:4px;flex-wrap:wrap}
.seg label{flex-direction:row;cursor:pointer} .seg input{position:absolute;opacity:0;width:1px;height:1px}
.seg span{padding:8px 14px;border-radius:9px;font-weight:500;color:var(--mute)}
.seg input:checked+span{background:var(--panel);color:var(--brand);box-shadow:0 1px 3px rgba(15,23,42,.12)}
.seg input:focus-visible+span{outline:2px solid var(--cta)}
.ie-pick{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;flex:1}
.ie-pick [data-mode]{min-width:240px} .ie-pick [data-mode][hidden]{display:none}
.ie-custom{display:flex;gap:12px} .ie-custom label{width:190px}
.ie-head h2{font-size:1.35rem;margin:0}
.ie-totals{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:12px 0 20px}
.ie-totals div{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 20px;border-top:4px solid}
.ie-totals .in{border-top-color:#16a34a} .ie-totals .out{border-top-color:#e11d48}
.ie-totals small{display:block} .ie-totals b{font-size:1.5rem;letter-spacing:-.01em}
.ie-totals .net.in b{color:var(--green)} .ie-totals .net.out b{color:var(--red)}
.ie-totals em{display:block;font-style:normal;font-size:.8rem;color:var(--mute)}
.ie-side .card-h{border-bottom-width:3px} .ie-side.in .card-h{border-bottom-color:#16a34a;background:var(--green-bg)} .ie-side.out .card-h{border-bottom-color:#e11d48;background:var(--red-bg)}
.ie-side .card-h h2{display:flex;gap:8px;align-items:center}
.ie-side.in .card-h h2,.ie-side.in .card-h b{color:var(--green)} .ie-side.out .card-h h2,.ie-side.out .card-h b{color:var(--red)}
.grp-row td{background:var(--panel2);font-weight:600;font-size:.86rem;color:var(--ink2)}
td.ind{padding-left:28px}
.bar{display:inline-block;width:54px;height:6px;background:var(--line2);border-radius:3px;margin-right:6px;vertical-align:middle;overflow:hidden}
.bar i{display:block;height:100%} .in .bar i{background:#16a34a} .out .bar i{background:#e11d48}
.ie-det summary{padding:12px 16px;cursor:pointer;color:var(--brand);font-weight:500;border-top:1px solid var(--line)}
@media (max-width:760px){.ie-totals{grid-template-columns:1fr}.ie-custom{flex-direction:column}.ie-custom label,.ie-pick [data-mode]{width:100%;min-width:0}}
@media print{.ie-filter{display:none}.cols2.ie{grid-template-columns:1fr 1fr}.ie-det{display:none}}
.dash-stats .stat b{white-space:nowrap;font-variant-numeric:tabular-nums}
.stat b .cur{font-size:.62em;font-weight:600;color:var(--mute);margin-right:4px;letter-spacing:.02em}
.stat.red b .cur{color:#f07a93}
@media (max-width:1280px) and (min-width:761px){.dash-stats{grid-template-columns:repeat(3,1fr)}}
.dh{display:flex;align-items:center;gap:8px}
.act.teal{background:#0d9488}
.pcols .pdl{grid-template-columns:auto 1fr auto 1fr auto 1fr auto 1fr}
@media (max-width:1000px){.pcols .pdl{grid-template-columns:auto 1fr auto 1fr}}
@media (max-width:760px){.pcols .pdl{grid-template-columns:auto 1fr}}

/* ---------- printed documents: design settings ---------- */
.paper .lh{border-bottom-color:var(--doc-accent,#0f172a)}
.paper .lh h2{color:var(--doc-accent,#0f172a)}
.paper .lh .doc{border-color:var(--doc-accent,#0f172a);color:var(--doc-accent,#0f172a)}
.paper thead th{background:var(--panel2);color:var(--doc-accent,#0f172a);border-bottom:2px solid var(--doc-accent,#0f172a)}
.paper-a5 .paper{width:min(560px,96vw);padding:24px 26px;font-size:.88rem}
.paper-a5 .paper .lh h2{font-size:1.1rem}
.sum-box{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:10px;margin-top:16px;overflow:hidden}
.sum-box div{padding:10px 14px;border-right:1px solid var(--line)} .sum-box div:last-child{border:0}
.sum-box small{display:block} .sum-box b{font-size:1.05rem;font-variant-numeric:tabular-nums}
.words{margin:10px 0 0;font-size:.9rem} .words b{font-weight:600}
.doc-foot{margin-top:22px;padding-top:10px;border-top:1px dashed var(--line);color:var(--mute);font-size:.82rem;text-align:center}
.paper h3.sub{font-size:.95rem;margin:18px 0 6px}
.pdf-mode{border-radius:0!important;margin:0!important;box-shadow:none!important}
.dash-bottom:has(> :only-child){grid-template-columns:1fr}
.check{flex-direction:row;align-items:center;gap:8px;font-weight:400} .check input{width:auto}
.pdf-mode{padding:6px 4px!important;max-width:none!important}
.pdf-mode table{font-size:.84rem} .pdf-mode td,.pdf-mode th{padding:7px 8px!important}
.paper th{white-space:normal;letter-spacing:.03em}
.paper-a5 .paper table{font-size:.74rem} .paper-a5 .paper th{font-size:.62rem}
.paper-a5 .paper td,.paper-a5 .paper th{padding:5px 5px!important}
.paper-a5 .paper .grid2{gap:6px 14px} .paper-a5 .paper .dl{font-size:.8rem;gap:4px 10px}
.paper-a5 .sum-box b{font-size:.9rem} .paper-a5 .paper .lh .doc{font-size:.85rem;padding:4px 8px}
fieldset.src{border:1px solid var(--line);border-radius:12px;padding:12px 14px 14px;margin:0 0 14px}
fieldset.src legend{font-size:.88rem;font-weight:500;color:var(--ink2);padding:0 6px}
fieldset.src .seg{margin-bottom:10px} fieldset.src [data-src][hidden]{display:none}
/* required-field asterisk sits beside the label text */
label.req{display:grid;grid-template-columns:max-content 1fr;column-gap:3px;row-gap:6px;align-items:center;align-content:start}
label.req::after{order:0;justify-self:start}
label.req>*{order:1;grid-column:1/-1}

/* ---------- editable lists ---------- */
label{position:relative}
.lk{position:absolute;right:2px;top:1px;font-size:.74rem;font-weight:500;color:var(--mute)}
.lk:hover{color:var(--brand)}
.lists-wrap{display:grid;grid-template-columns:260px 1fr;gap:20px;align-items:start}
.lists-nav{padding:10px;position:sticky;top:80px;max-height:calc(100vh - 100px);overflow:auto}
.lists-nav .ln-g{font-size:.78rem;color:var(--mute);padding:12px 10px 4px;font-weight:600}
.lists-nav a{display:flex;justify-content:space-between;padding:7px 10px;border-radius:8px;color:var(--ink2);font-size:.9rem}
.lists-nav a span{color:var(--soft);font-size:.8rem}
.lists-nav a:hover{background:var(--line2);text-decoration:none}.lists-nav a.on{background:var(--blue-bg);color:var(--brand);font-weight:500}
@media (max-width:900px){.lists-wrap{grid-template-columns:1fr}.lists-nav{position:static;max-height:none}}
.chk-bad{margin:6px 0 0;padding-left:18px;color:var(--red);font-size:.85rem}

/* ---------- theme hooks (values come from Settings › Appearance) ---------- */
:root{--panel:#fff;--panel2:#fafbfc;--row-hover:#fbfdff;--hover:#f6f7f9;--chip:#f3f4f6;--ink2:#374151;
  --side-ink:#1f2937;--side-mute:#6b7280;--side-line:#e3eefa;--side-hover:#e6f0fc;--side-on:#e3eefb}
.brand b,.brand small{color:var(--side-ink)} .brand small{opacity:.75}
.side-toggle{background:var(--panel);color:var(--side-mute)}
html[data-theme=dark]{color-scheme:dark}
html[data-theme=dark] .badge.green{border-color:#1f5134} html[data-theme=dark] .badge.red{border-color:#5b2230}
html[data-theme=dark] .badge.amber{border-color:#5a4418} html[data-theme=dark] .badge.blue{border-color:#23405f} html[data-theme=dark] .badge.gray{border-color:#333c47}
html[data-theme=dark] .alert.ok{border-color:#1f5134} html[data-theme=dark] .alert.err{border-color:#5b2230} html[data-theme=dark] .alert.warn{border-color:#5a4418}
html[data-theme=dark] .btn.danger{border-color:#5b2230} html[data-theme=dark] .btn.wa-btn{border-color:#1f5134;color:#4ade80}
html[data-theme=dark] input,html[data-theme=dark] select,html[data-theme=dark] textarea{background:var(--panel2);color:var(--ink);border-color:var(--line)}
html[data-theme=dark] input:focus,html[data-theme=dark] select:focus,html[data-theme=dark] textarea:focus{outline-color:#164e63}
html[data-theme=dark] dialog{background:var(--panel);color:var(--ink)} html[data-theme=dark] dialog::backdrop{background:rgba(0,0,0,.6)}
html[data-theme=dark] .bs-pop{background:var(--panel);border-color:var(--line)} html[data-theme=dark] .bs-grid button{color:var(--ink)}
html[data-theme=dark] .seg{background:var(--chip)} html[data-theme=dark] .seg input:checked+span{background:var(--panel)}
html[data-theme=dark] img.avatar-img{outline:1px solid var(--line)}
body.compact td{padding:8px 12px} body.compact th{padding:9px 12px} body.compact .card{padding:16px} body.compact .stat{padding:12px 14px}
body.compact .wrap{padding-top:18px}

/* ---------- user menu ---------- */
.me{position:relative}
.me-btn{display:flex;align-items:center;gap:10px;border:0;background:none;padding:5px 8px;border-radius:12px;cursor:pointer;color:var(--ink);font:inherit;text-align:left}
.me-btn:hover,.me-btn[aria-expanded=true]{background:var(--hover)} .me-btn b{display:block;font-size:.88rem} .me-btn small{font-size:.75rem}
.me-btn svg{color:var(--mute);transform:rotate(180deg)}
img.avatar{object-fit:cover;display:block}
.avatar-lg{width:48px;height:48px;font-size:1rem}
.avatar-xl{width:96px;height:96px;font-size:1.8rem;border-radius:50%}
.me-menu{position:absolute;right:0;top:calc(100% + 8px);width:290px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 44px rgba(15,23,42,.18);padding:8px;z-index:60}
.me-head{display:flex;gap:12px;align-items:center;padding:10px 10px 12px;border-bottom:1px solid var(--line2);margin-bottom:6px}
.me-head b{display:block} .me-head small{font-size:.78rem;word-break:break-all}
.me-menu>a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--ink)} .me-menu>a:hover{background:var(--hover);text-decoration:none}
.me-menu>a svg{color:var(--mute)} .me-out{color:var(--red)!important;border-top:1px solid var(--line2);margin-top:6px;border-radius:0 0 9px 9px!important}
.me-out svg{color:var(--red)!important}
.me-sec{font-size:.75rem;color:var(--mute);padding:8px 10px 4px}
.me-theme{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:0 6px 8px}
.me-theme button{border:1px solid var(--line);background:var(--panel2);color:var(--ink);border-radius:9px;padding:7px 4px;font:inherit;font-size:.82rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}
.me-theme button span{font-size:1.05rem} .me-theme button.on{border-color:var(--brand);color:var(--brand);background:var(--blue-bg)}
@media (max-width:760px){.me-btn div{display:none}.me-menu{position:fixed;right:10px;left:10px;width:auto;top:66px}}

/* ---------- settings: two-line tabs + appearance pickers ---------- */
.tabs.tabs-wrap{flex-wrap:wrap;overflow:visible;row-gap:2px}
.tabs.tabs-wrap a{padding:9px 13px}
.presets{display:flex;flex-wrap:wrap;gap:8px}
.preset input,.pick input{position:absolute;opacity:0;width:1px;height:1px}
.preset span,.pick span{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--line);border-radius:10px;padding:8px 12px;cursor:pointer;font-weight:500;background:var(--panel)}
.preset i{width:16px;height:16px;border-radius:50%;display:inline-block}
.preset input:checked+span,.pick input:checked+span{border-color:var(--brand);background:var(--blue-bg);color:var(--brand)}
.preset input:focus-visible+span,.pick input:focus-visible+span{outline:2px solid var(--cta)}
.picks{display:flex;flex-wrap:wrap;gap:8px}
.pick,.preset{flex-direction:row}
/* dashboard cards adapt to text size and screen width */
.dash-stats{grid-template-columns:repeat(auto-fill,minmax(min(100%,17.5rem),1fr))}
@media (max-width:1280px) and (min-width:761px){.dash-stats{grid-template-columns:repeat(auto-fill,minmax(min(100%,17.5rem),1fr))}}
.stat>div{min-width:0}
/* never let wide content push the page sideways */
.cols>*,.cols2>*,.hero>*,.grid2>*,.grid3>*,.grid4>*{min-width:0}
.hero b{overflow-wrap:anywhere}
@media (max-width:520px){.hero{grid-template-columns:1fr}.hero div{border-right:0!important;border-bottom:1px solid var(--line)}.hero div:last-child{border-bottom:0}}

/* ---------- financial statements ---------- */
.fs-card{padding:28px 32px}
.fs-top{text-align:center;margin-bottom:14px}
.fs-top h2{font-size:1.25rem;margin:0} .fs-top p{margin:2px 0;color:var(--mute);font-size:.9rem}
.fs-top h3{font-size:1rem;margin:10px 0 0} .fs-top h4{font-size:1.05rem;margin:4px 0 2px;text-decoration:underline;text-underline-offset:3px}
.fs-top span{font-style:italic}
table.fs{width:100%;border-collapse:collapse;font-size:.9rem;margin-bottom:6px}
table.fs th{background:none;border-bottom:1.5px solid var(--ink);color:var(--ink);text-transform:none;letter-spacing:0;font-size:.82rem}
table.fs td{padding:5px 10px;border-bottom:1px solid var(--line2)}
table.fs .c{text-align:center;width:80px;color:var(--mute)}
table.fs td.n,table.fs th.n{width:170px}
.fs-h td{font-weight:700;padding-top:12px!important;border-bottom:0!important}
.fs-sh td{font-style:italic;font-weight:600;color:var(--ink2);border-bottom:0!important}
.fs-st td{font-weight:600;border-top:1px solid var(--ink);border-bottom:0!important}
.fs-t td{font-weight:700;border-top:1px solid var(--ink);border-bottom:2.5px double var(--ink)!important}
table.fs td.ind{padding-left:22px}
.fs-wide{font-size:.76rem} .fs-wide th,.fs-wide td{padding:4px 6px!important} .fs-wide td.n,.fs-wide th.n{width:auto}
.fs-card h5,.fs-paper h5{font-size:.95rem;margin:18px 0 4px}
.fs-note{font-size:.82rem;color:var(--mute);margin:8px 0 0}
.fs-sign{margin-top:44px} .fs-sign p{font-weight:600;margin:0 0 42px}
.fs-sign div{display:flex;justify-content:space-between;gap:20px} .fs-sign span{border-top:1px solid var(--ink);padding-top:6px;min-width:150px;text-align:center;font-size:.9rem}
.fs-pol{font-size:.9rem;line-height:1.6}
.pb{page-break-before:always;break-before:page;margin-top:30px}
.fs-paper{font-size:.86rem} .fs-paper table.fs{font-size:.8rem} .fs-paper table.fs td.n,.fs-paper table.fs th.n{width:120px} .fs-paper .fs-wide{font-size:.62rem}
@media print{.pb{margin-top:0}}
.maprow{flex-direction:row;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line2);font-weight:400}.maprow select{width:190px}
.paper-wide{width:min(1120px,98vw)}
/* PPE schedule must fit the printed page */
.fs-paper .tbl{overflow:visible}
.fs-paper .fs-wide{table-layout:fixed;width:100%;font-size:.5rem}
.fs-paper .fs-wide th,.fs-paper .fs-wide td{padding:3px 2px!important;word-break:break-word;white-space:normal}
.fs-paper .fs-wide th:first-child,.fs-paper .fs-wide td:first-child{width:17%}
.fs-paper .fs-wide th:nth-child(2),.fs-paper .fs-wide td:nth-child(2){width:5%}
.fs-paper .fs-wide td.n,.fs-paper .fs-wide th.n,.fs-wide td.n,.fs-wide th.n{width:auto!important}
.fs-paper .fs-wide th{font-size:.48rem;vertical-align:bottom}
.fs-paper table.fs.fs-wide,.pdf-mode table.fs.fs-wide{font-size:.5rem!important}
.fs-paper table.fs.fs-wide td{font-size:.5rem!important;line-height:1.3}

/* ---------- read-only pages (role can view but not change) ---------- */
.readonly main form[method=post]:not(.keep),.readonly main button[data-open]:not(.wa-btn):not([data-open=dlgMail]),
.readonly main a[href*="a=new"],.readonly main a[href*="&a=edit"],.readonly main .ro-hide{display:none!important}
.nomsg .wa-btn,.nomsg [data-open=dlgMail],.nomsg #dlgWa,.nomsg #dlgMail{display:none!important}
.ro-note{background:var(--chip);color:var(--mute);border-radius:10px;padding:8px 14px;margin-bottom:16px;font-size:.88rem;display:inline-block}

/* ---------- permissions matrix ---------- */
table.perm td{vertical-align:middle}
.perm-acts{display:flex;flex-wrap:wrap;gap:6px}
.pchip input{position:absolute;opacity:0;width:1px;height:1px}
.pchip{flex-direction:row;cursor:pointer}
.pchip span{display:inline-block;border:1.5px solid var(--line);border-radius:999px;padding:4px 12px;font-size:.84rem;font-weight:500;color:var(--mute);background:var(--panel)}
.pchip input:checked+span{border-color:var(--green);background:var(--green-bg);color:var(--green)}
.pchip.view input:checked+span{border-color:var(--brand);background:var(--blue-bg);color:var(--brand)}
.pchip input:focus-visible+span{outline:2px solid var(--cta)}
.pchip span::before{content:"✕ ";opacity:.5} .pchip input:checked+span::before{content:"✓ ";opacity:1}
/* import preview */
.steps-list{padding-left:20px;line-height:1.7;margin:0} .steps-list li{margin-bottom:6px}
tr.imp-err td{background:var(--red-bg)} tr.imp-dup td{background:var(--amber-bg)}
.bulk-bar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--red-bg);color:var(--red);font-weight:600;border-bottom:1px solid var(--line)} .bulk-bar[hidden]{display:none!important}
