/* Tenax Ops — navy + solar gold, tool layout: left rail on desktop, scroll tabs on phone. */
:root{
  --bg:#F3F5F8; --surface:#FFFFFF; --sunk:#E9EDF3; --line:#D8DEE8; --fg:#121B2B; --muted:#5B6678;
  --navy:#13294B; --navy-ink:#FFFFFF; --gold:#C18F1E; --gold-soft:#F6EBD0;
  --ok:#1E7A4E; --ok-soft:#DDF2E6; --warn:#A86200; --warn-soft:#FBEBD3; --bad:#B42318; --bad-soft:#FBE1DE; --info:#2456A6; --info-soft:#E0EAFA;
  --f-ui:"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-num:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --r:8px; color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0C121D; --surface:#141C2B; --sunk:#1B2537; --line:#2A3650; --fg:#E7EBF3; --muted:#97A3B8;
  --navy:#7FA3E0; --navy-ink:#0C121D; --gold:#E2B44C; --gold-soft:#3A2F14;
  --ok:#5CC98F; --ok-soft:#17321F; --warn:#F0A64A; --warn-soft:#3A2810; --bad:#F2796C; --bad-soft:#3D1814; --info:#86ADF2; --info-soft:#18284A; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0C121D; --surface:#141C2B; --sunk:#1B2537; --line:#2A3650; --fg:#E7EBF3; --muted:#97A3B8;
  --navy:#7FA3E0; --navy-ink:#0C121D; --gold:#E2B44C; --gold-soft:#3A2F14;
  --ok:#5CC98F; --ok-soft:#17321F; --warn:#F0A64A; --warn-soft:#3A2810; --bad:#F2796C; --bad-soft:#3D1814; --info:#86ADF2; --info-soft:#18284A; color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--fg);font-family:var(--f-ui);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
img{max-width:100%}
[hidden]{display:none!important}
.num{font-family:var(--f-num);font-variant-numeric:tabular-nums;font-size:.92em}
.app{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100%}
.main-col{min-width:0}
.rail{background:var(--surface);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:16px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{display:flex;flex-direction:column;gap:4px;padding:0 6px}
.brand .sub{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:700;padding-left:2px}
.logo{display:block}.logo img{display:block;width:100%;height:auto}.logo .lg-neg{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .logo .lg-pos{display:none}:root:not([data-theme="light"]) .logo .lg-neg{display:block}}
:root[data-theme="dark"] .logo .lg-pos{display:none}:root[data-theme="dark"] .logo .lg-neg{display:block}
.brand .logo{width:150px}
.nav{display:flex;flex-direction:column;gap:2px}
.nav button{all:unset;box-sizing:border-box;cursor:pointer;padding:7px 10px;border-radius:6px;color:var(--muted);font-weight:600;display:flex;justify-content:space-between;align-items:center;gap:6px;width:100%}
.nav button:hover{background:var(--sunk);color:var(--fg)}
.nav button[aria-current="true"]{background:var(--navy);color:var(--navy-ink)}
.nav button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.nav .grp{margin-top:6px}
.nav .grp-h{font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;justify-content:flex-start;color:var(--muted)}
.nav .grp-h .pill{margin-left:auto}
.nav .chev{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s;flex:none;margin-right:2px}
.nav .grp.open .chev{transform:rotate(45deg)}
.nav .grp-b{display:flex;flex-direction:column;gap:2px;padding-left:10px;margin-left:12px;border-left:1px solid var(--line)}
.btn.close-drawer{display:none}
.drawer-bg{display:none}
.whoami{margin-top:auto;padding:10px 8px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:6px}
.whoami b{color:var(--fg)}
.theme-seg{align-self:flex-start}.theme-seg button{padding:3px 8px;font-size:11.5px}
main{padding-block:20px 72px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));min-width:0}
.wrap{max-width:1240px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
h1{font-size:22px;margin:0;font-weight:800;text-wrap:balance}
h2{font-size:15px;margin:0;font-weight:700}
h3{font-size:12px;margin:0;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
p{margin:0}
.head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.sub{color:var(--muted);font-size:13px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:12px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:4px}
.kpi .v{font-family:var(--f-num);font-size:20px;font-weight:500}
.kpi .l{font-size:12px;color:var(--muted);font-weight:600}
.kpi .s{font-size:12px;color:var(--muted)}
.kpi .bar{height:6px;border-radius:3px;background:var(--sunk);overflow:hidden;margin-top:4px}.kpi .bar i{display:block;height:100%;background:var(--gold)}
.btn{border:1px solid var(--line);background:var(--surface);padding:7px 12px;border-radius:6px;cursor:pointer;font-weight:600;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.btn:hover{border-color:var(--navy)}
.btn.primary{background:var(--navy);color:var(--navy-ink);border-color:var(--navy)}
.btn.gold{background:var(--gold);color:#1a1405;border-color:var(--gold)}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.btn.small{padding:4px 9px;font-size:12px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.spacer{flex:1}
.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;font-size:11.5px;font-weight:700;white-space:nowrap;background:var(--sunk);color:var(--muted)}
.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.info{background:var(--info-soft);color:var(--info)}.pill.gold{background:var(--gold-soft);color:var(--gold)}
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
table{border-collapse:collapse;width:100%;font-size:13px}
th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;padding:9px 10px;border-bottom:1px solid var(--line);background:var(--sunk);white-space:nowrap}
td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
tr.click{cursor:pointer}tr.click:hover td{background:var(--sunk)}
td.r,th.r{text-align:right}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field label,.lbl{font-size:12px;color:var(--muted);font-weight:600}
input[type=text],input[type=number],input[type=date],input[type=tel],input[type=email],input[type=password],input[type=month],select,textarea{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:7px 9px;min-width:0}
textarea{min-height:64px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--gold);outline-offset:0;border-color:transparent}
input:disabled,select:disabled,textarea:disabled{background:var(--sunk);color:var(--muted)}
.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:10px}
.full{grid-column:1/-1}
.checks{display:flex;flex-direction:column;gap:2px}
.check{display:flex;gap:9px;align-items:flex-start;padding:6px 4px;border-radius:5px;cursor:pointer}
.check:hover{background:var(--sunk)}
.check input{margin-top:3px;accent-color:var(--navy);width:16px;height:16px;flex:none}
.check .tag{margin-left:auto}
.check.done .t{color:var(--muted);text-decoration:line-through}
.stepper{display:flex;gap:3px;overflow-x:auto;padding-bottom:4px}
.step{flex:1 0 64px;display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--muted);font-weight:600;cursor:pointer;background:none;border:0;padding:0;text-align:left}
.step i{display:block;height:6px;border-radius:3px;background:var(--sunk)}
.step.done i{background:var(--navy)}.step.cur i{background:var(--gold)}.step.cur{color:var(--fg)}.step.view{text-decoration:underline}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{all:unset;cursor:pointer;padding:9px 12px;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}
.tabs button[aria-selected="true"]{color:var(--fg);border-color:var(--gold)}
.tabs button:focus-visible{outline:2px solid var(--gold)}
.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:10px;overflow-x:auto;padding-bottom:8px}
.col{background:var(--sunk);border-radius:var(--r);padding:8px;display:flex;flex-direction:column;gap:8px;min-height:120px}
.col header{display:flex;justify-content:space-between;align-items:baseline;gap:6px;padding:2px 4px}
.col header b{font-size:12.5px}.col header span{font-size:11px;color:var(--muted)}
.jc{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:9px;display:flex;flex-direction:column;gap:5px;cursor:pointer;text-align:left;width:100%}
.jc:hover{border-color:var(--navy)}
.jc.stuck{border-left:3px solid var(--bad)}
.jc .n{font-weight:700;font-size:13px}
.jc .m{font-size:11.5px;color:var(--muted);display:flex;gap:6px;flex-wrap:wrap}
.bars{display:flex;flex-direction:column;gap:6px}
.bar{display:grid;grid-template-columns:160px minmax(0,1fr) 120px;gap:8px;align-items:center;font-size:12.5px}
.bar .t{height:14px;background:var(--sunk);border-radius:3px;overflow:hidden}
.bar .t i{display:block;height:100%;background:var(--navy);border-radius:3px}
.bar .t i.g{background:var(--gold)}
.empty{padding:28px 16px;text-align:center;color:var(--muted);display:flex;flex-direction:column;gap:10px;align-items:center}
.note{font-size:12.5px;color:var(--muted);background:var(--sunk);border-radius:6px;padding:9px 11px}
.note.warn{background:var(--warn-soft);color:var(--warn)}.note.bad{background:var(--bad-soft);color:var(--bad)}.note.ok{background:var(--ok-soft);color:var(--ok)}.note.info{background:var(--info-soft);color:var(--info)}
.lock{font-size:12px;color:var(--muted)}
.overlay{position:fixed;inset:0;background:rgba(8,12,20,.55);display:flex;align-items:flex-start;justify-content:center;padding:max(24px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) 24px max(12px,env(safe-area-inset-left,0px));z-index:50;overflow:auto}
.modal{background:var(--surface);border-radius:10px;max-width:760px;width:100%;padding:18px;display:flex;flex-direction:column;gap:14px;border:1px solid var(--line)}
.toast{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:9px 14px;border-radius:6px;font-weight:600;z-index:60;max-width:90vw}
.toast.err{background:var(--bad);color:#fff}
.log{display:flex;flex-direction:column;gap:8px;font-size:13px}
.log div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:10px}
.log time{color:var(--muted);font-size:12px}
svg text{fill:var(--muted);font-family:var(--f-ui);font-size:11px}
.kv{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;font-size:13px;margin:0}
.kv dt{color:var(--muted)}.kv dd{margin:0;text-align:right}
.alert{display:grid;grid-template-columns:6px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);cursor:pointer}
.alert:hover{border-color:var(--navy)}
.alert>i{align-self:stretch;border-radius:3px;background:var(--warn)}
.alert.bad>i{background:var(--bad)}.alert.info>i{background:var(--info)}
.alert b{font-size:13.5px}.alert .sub{font-size:12px}
.banner{background:var(--gold-soft);color:var(--gold);font-weight:600;font-size:12.5px;padding:8px max(16px,env(safe-area-inset-left,0px));text-align:center}
.auth{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:var(--bg)}
.auth .card{width:100%;max-width:400px;gap:16px}
.auth .logo{width:220px;margin:0 auto}
.mobnav{display:none}
.calc-hero{background:var(--navy);color:var(--navy-ink);border-radius:var(--r);padding:16px;display:grid;gap:10px}
.calc-hero .big{font-family:var(--f-num);font-size:30px}
.calc-hero .sub{color:inherit;opacity:.75}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .calc-hero{background:var(--sunk);color:var(--fg)}}
:root[data-theme="dark"] .calc-hero{background:var(--sunk);color:var(--fg)}
@media (max-width:860px){
  .app{grid-template-columns:minmax(0,1fr)}
  .rail{position:fixed;inset:0 auto 0 0;width:min(300px,86vw);z-index:40;transform:translateX(-105%);transition:transform .2s;padding-top:max(18px,env(safe-area-inset-top,0px));box-shadow:0 0 40px rgba(0,0,0,.25)}
  body.drawer-open .rail{transform:none}
  body.drawer-open .drawer-bg{display:block;position:fixed;inset:0;background:rgba(8,12,20,.5);z-index:39}
  .brand{flex-direction:row;align-items:center;justify-content:space-between}.brand .sub{display:none}.brand .logo{width:120px}
  .btn.close-drawer{display:inline-flex}
  .mobnav{display:flex;gap:10px;position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--surface);border-bottom:1px solid var(--line);padding:8px max(12px,env(safe-area-inset-right,0px)) 8px max(12px,env(safe-area-inset-left,0px));align-items:center}
  .menu-btn{all:unset;cursor:pointer;padding:6px 10px;border-radius:6px;font-weight:700;border:1px solid var(--line);display:inline-flex;gap:6px;align-items:center}
  .mob-title{font-weight:700;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mobnav .logo{width:78px;flex:none}
  body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:21;background:var(--surface)}
  .bar{grid-template-columns:100px minmax(0,1fr) 90px}
}
/* ---------- shared controls ---------- */
.hint{font-size:11.5px;color:var(--muted)}
td .num,td.num{white-space:nowrap}td.nw{white-space:nowrap}
.kpi .v.txt{font-family:var(--f-ui);font-size:17px;font-weight:700}
.acts{display:flex;gap:4px;flex-wrap:nowrap}
.pb-head .sub{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
input[type=search]{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:7px 9px;min-width:0}
input[type=range]{width:100%;accent-color:var(--gold)}
.seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:7px;padding:2px;gap:2px;background:var(--sunk)}
.seg button{all:unset;cursor:pointer;padding:6px 12px;border-radius:5px;font-weight:600;font-size:13px;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--fg);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.seg button:focus-visible{outline:2px solid var(--gold)}
.tabs .cnt{display:inline-block;min-width:18px;padding:0 6px;border-radius:99px;background:var(--sunk);font-size:11px;text-align:center;margin-left:4px}
.tabs .cnt.hot{background:var(--warn-soft);color:var(--warn)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.bar .t{display:flex}
.linkbtn{all:unset;cursor:pointer;color:var(--info);text-decoration:underline}
.muted-row td{opacity:.55}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:10px}
.stat{background:var(--sunk);border-radius:var(--r);padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.stat .l{font-size:11.5px;color:var(--muted);font-weight:600}.stat .v{font-family:var(--f-num);font-size:17px}.stat .s{font-size:11.5px;color:var(--muted)}
.counter{display:flex;gap:4px;align-items:center}.counter input{max-width:80px;text-align:center}.counter .btn{width:34px;justify-content:center;font-size:16px;padding:5px 0}
details.more{border:1px solid var(--line);border-radius:var(--r);padding:8px 12px}
details.more summary{cursor:pointer;font-weight:600;color:var(--muted)}
.stack{display:flex;flex-direction:column;gap:10px;padding-top:10px}
.pb-cat{padding:0;gap:0;overflow:hidden}
.pb-head{all:unset;cursor:pointer;display:flex;gap:10px;align-items:center;padding:12px 16px}
.pb-head:hover{background:var(--sunk)}.pb-head .chev{color:var(--muted);width:12px}
.pb-cat .tbl-wrap{border:0;border-top:1px solid var(--line);border-radius:0}
.heat td{min-width:52px}
/* ---------- quotation builder ---------- */
.type-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px}
.type-card{all:unset;box-sizing:border-box;cursor:pointer;border:1px solid var(--line);border-radius:10px;padding:18px;display:flex;flex-direction:column;gap:6px;background:var(--surface)}
.type-card b{font-size:16px}.type-card span{color:var(--muted);font-size:13px}
.type-card:hover,.type-card:focus-visible{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px var(--gold-soft)}
.qsteps{display:flex;gap:6px;align-items:center;overflow-x:auto;padding-bottom:2px}
.qsteps button{all:unset;cursor:pointer;display:inline-flex;gap:7px;align-items:center;padding:6px 10px;border-radius:99px;font-weight:600;font-size:13px;color:var(--muted);white-space:nowrap}
.qsteps button i{font-style:normal;width:21px;height:21px;border-radius:50%;display:inline-grid;place-items:center;background:var(--sunk);font-size:11.5px}
.qsteps button.done i{background:var(--navy);color:var(--navy-ink)}
.qsteps button[aria-current="step"]{background:var(--gold-soft);color:var(--fg)}.qsteps button[aria-current="step"] i{background:var(--gold);color:#1a1405}
.qgrid{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;align-items:start}
.qmain{display:flex;flex-direction:column;gap:14px;min-width:0}
.qsum{position:sticky;top:16px;gap:10px}
.qsum .big{display:flex;flex-direction:column;gap:2px;background:var(--navy);color:var(--navy-ink);border-radius:var(--r);padding:12px}
.qsum .big .num{font-size:21px}.qsum .big .sub{color:inherit;opacity:.75;font-size:12px}
.qdock{display:none}
.pcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px}
.pcard{all:unset;box-sizing:border-box;cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--muted)}
.pcard b{color:var(--fg);font-size:14px}
.pcard[aria-pressed="true"]{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold-soft);background:color-mix(in srgb,var(--gold-soft) 45%,var(--surface))}
.pcard:focus-visible{outline:2px solid var(--gold)}
table.qlines td{vertical-align:middle}
table.qlines input.qty{max-width:96px;padding:5px 7px}
table.qlines tr.sec td{background:var(--sunk);font-size:12.5px}
table.qlines tr.subt td{font-weight:700;font-size:12.5px;color:var(--muted)}
.addbox{border:1px dashed var(--gold);border-radius:var(--r);padding:12px;display:flex;flex-direction:column;gap:10px;background:color-mix(in srgb,var(--gold-soft) 35%,var(--surface))}
.qtotals{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);gap:18px;align-items:start}
.qnav{padding-top:2px}
.note ul{margin:6px 0 0;padding-left:18px}
@media (max-width:1060px){.qgrid{grid-template-columns:minmax(0,1fr)}.qsum{display:none}
  .qdock{display:flex;position:sticky;bottom:0;z-index:15;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;gap:10px;align-items:center;justify-content:space-between;box-shadow:0 -4px 16px rgba(0,0,0,.08);margin-bottom:env(safe-area-inset-bottom,0px)}
  .qdock>div{display:flex;flex-direction:column;min-width:0}.qdock .num{font-size:17px}
  .qnav{display:none}}
@media (max-width:640px){.qtotals{grid-template-columns:minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* ---------- sales dashboard ---------- */
.stage-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,128px),1fr));gap:8px}
.stage-card{all:unset;box-sizing:border-box;cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;background:var(--surface);min-width:0}
.stage-card .l{font-size:12px;color:var(--muted);font-weight:600}.stage-card .v{font-family:var(--f-num);font-size:22px}.stage-card .s{font-size:12px;color:var(--muted);font-family:var(--f-num)}
.stage-card .pill{align-self:flex-start;margin-top:4px}
.stage-card:hover{border-color:var(--navy)}.stage-card:focus-visible{outline:2px solid var(--gold)}
.stage-card.on{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold-soft);background:color-mix(in srgb,var(--gold-soft) 40%,var(--surface))}
.stage-card.won .v{color:var(--ok)}.stage-card.lost .v{color:var(--bad)}
.expand{border-top:1px dashed var(--line);padding-top:12px;display:flex;flex-direction:column;gap:10px}
table.tboard td{min-width:150px}table.tboard td:first-child{min-width:140px}
table.tboard tr.tot td{background:color-mix(in srgb,var(--gold-soft) 35%,transparent)}
.tv{display:flex;justify-content:space-between;gap:8px;font-size:12.5px}
.prog{display:block;position:relative;height:7px;border-radius:4px;background:var(--sunk);margin-top:5px;overflow:visible}
.prog i{display:block;height:100%;border-radius:4px;background:var(--navy)}.prog i.ok{background:var(--ok)}.prog i.bad{background:var(--bad)}
.prog b{position:absolute;top:-3px;width:2px;height:13px;background:var(--gold);transform:translateX(-1px)}
.linkhead{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.linkhead .chev2{width:7px;height:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .15s}
.linkhead[aria-expanded="true"] .chev2{transform:rotate(45deg)}
.linkhead:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
button.kpi{all:unset;box-sizing:border-box;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:4px;cursor:pointer}
button.kpi:hover{border-color:var(--navy)}button.kpi:focus-visible{outline:2px solid var(--gold)}
.stack h3{margin-bottom:2px}
.card>h3{margin-top:4px}
input.qty{max-width:96px;padding:5px 7px}
.row.nw{flex-wrap:nowrap}
/* ---------- bills, insights, financing, client search ---------- */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
label.btn{cursor:pointer}
.insight{border-left:3px solid var(--gold);background:color-mix(in srgb,var(--gold-soft) 40%,var(--surface));border-radius:6px;padding:10px 14px;font-size:13px;display:flex;flex-direction:column;gap:6px}
.insight ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}.insight p{margin:0}
.disclaimer{background:var(--gold-soft);border:1px solid var(--gold);border-radius:6px;padding:10px 12px;font-size:12.5px;color:var(--fg)}
.findbox{position:relative}
.find-res{display:flex;flex-direction:column;gap:4px;margin-top:4px}
.find-hit{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--surface)}
.find-hit:hover,.find-hit:focus-visible{border-color:var(--gold);outline:none}
.find-hit span{font-size:12px;color:var(--muted)}
table.cft td,table.cft th{padding:5px 8px;font-size:12px}
/* Save / Cancel by section */
.dirty{outline:2px solid var(--gold)!important;outline-offset:1px;background:var(--gold-soft)!important}
label.check:has(.dirty){background:var(--gold-soft)}
.savebar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 10px;border:1px solid var(--gold);background:var(--gold-soft);border-radius:6px;font-size:13px}
.tbl-wrap+.savebar{margin-top:8px}
.pendbar{position:fixed;left:50%;transform:translateX(-50%);bottom:14px;z-index:40;display:flex;gap:10px;align-items:center;background:var(--navy);color:var(--navy-ink);padding:8px 10px 8px 16px;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.25);width:min(560px,calc(100% - 24px));font-size:13px}
.pendbar .btn{border-color:transparent}
@media (max-width:820px){.pendbar{bottom:64px}}
.modal.wide{max-width:960px}
.pdfview{display:flex;flex-direction:column;gap:12px;max-height:72vh;overflow:auto;background:var(--sunk);padding:12px;border-radius:8px}
.pdfview canvas{background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.18);border-radius:2px}
.steps-ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}
.sent-ok{display:flex;flex-direction:column;gap:10px;align-items:center;text-align:center}
.sent-ok .tick{width:52px;height:52px;border-radius:50%;background:var(--ok-soft);color:var(--ok);display:grid;place-items:center;font-size:28px;font-weight:800}
.sent-ok .row{align-self:stretch}
/* Projects */
.pbar{display:inline-block;width:110px;height:8px;border-radius:4px;background:var(--sunk);box-shadow:inset 0 0 0 1px var(--line);overflow:hidden;vertical-align:middle}
.pbar i{display:block;height:100%;background:var(--navy);border-radius:4px}
.pbar.ok i{background:var(--ok)}.pbar.bad i{background:var(--bad)}
.ok-t{color:var(--ok)}.bad-t{color:var(--bad)}
.swatch{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.kpi.click{all:unset;box-sizing:border-box;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:4px}
.kpi.click:hover{border-color:var(--navy)}.kpi.click:focus-visible{outline:2px solid var(--gold)}
.stagebar{display:flex;gap:6px;flex-wrap:wrap}
.stagebar .sb{all:unset;box-sizing:border-box;cursor:pointer;min-width:120px;border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;background:var(--surface)}
.stagebar .sb:hover{border-color:var(--navy)}.stagebar .sb .l{font-size:12px;color:var(--muted);font-weight:600}.stagebar .sb .v{font-family:var(--f-num);font-size:20px}.stagebar .sb .s{font-size:12px;color:var(--muted)}
.agenda{display:flex;flex-direction:column;gap:6px}
.agenda .ag{all:unset;box-sizing:border-box;cursor:pointer;display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:6px}
.agenda .ag:hover{border-color:var(--navy)}.agenda .ag .d{font-family:var(--f-num);font-size:12px;color:var(--muted);min-width:150px}.agenda .ag .t{display:flex;flex-direction:column;flex:1;min-width:160px}
.plist{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.prow+.prow{border-top:1px solid var(--line)}
.prow-h{all:unset;box-sizing:border-box;cursor:pointer;width:100%;display:grid;grid-template-columns:14px minmax(0,2.2fr) minmax(0,1.3fr) minmax(150px,1.2fr) minmax(0,1.2fr);gap:12px;align-items:center;padding:10px 12px}
.prow-h:hover{background:var(--sunk)}.prow-h:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.prow-h .chev2{width:7px;height:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .15s}
.prow.open .prow-h .chev2{transform:rotate(45deg)}
.prow-h .pn{display:flex;flex-direction:column;min-width:0}.prow-h .pn b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow-h .pp{display:flex;gap:8px;align-items:center}.prow-h .pp .pbar{flex:1;width:auto}
.prow-b{padding:4px 14px 12px 38px;display:flex;flex-direction:column;gap:6px;background:color-mix(in srgb,var(--sunk) 45%,var(--surface))}
.pst{display:grid;grid-template-columns:minmax(150px,220px) 140px 90px minmax(0,1fr);gap:10px;align-items:center;font-size:13px}
.pst .todo{grid-column:4}
@media (max-width:820px){.prow-h{grid-template-columns:14px minmax(0,1fr) auto;row-gap:6px}.prow-h .pp{grid-column:2/4}.prow-h .pd{grid-column:2/4}.pst{grid-template-columns:minmax(0,1fr) 90px;}.pst .pbar{display:none}.pst .todo{grid-column:1/3}}
.board5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.board5.six{grid-template-columns:repeat(6,minmax(0,1fr))}
.board5 .col{min-width:0}.board5 .jc .pbar{width:100%}
.board5 .col.nurture{background:color-mix(in srgb,var(--warn-soft) 50%,var(--sunk))}
@media (max-width:1100px){.board5,.board5.six{grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:minmax(200px,1fr);overflow-x:auto}}
.stepper.proj .step{flex-basis:90px}.step-next{align-self:center;white-space:nowrap;padding-left:8px}
.check.auto{cursor:default}.check.auto:hover{background:none}
.check.auto .box{width:16px;height:16px;flex:none;margin-top:2px;border:1.5px solid var(--line);border-radius:4px;display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff}
.check.auto.done .box{background:var(--ok);border-color:var(--ok)}
/* calendar */
.cal-m{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface)}
.cal-h{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--sunk);font-size:12px;font-weight:700;color:var(--muted)}.cal-h span{padding:6px 8px}
.cal-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.cd{min-height:96px;border-top:1px solid var(--line);border-left:1px solid var(--line);padding:4px;display:flex;flex-direction:column;gap:3px;min-width:0}
.cd:nth-child(7n+1){border-left:0}.cd.out{background:color-mix(in srgb,var(--sunk) 60%,transparent)}.cd.out .dn{opacity:.5}.cd.sun{background:color-mix(in srgb,var(--sunk) 35%,transparent)}
.cd.today .dn{background:var(--gold);color:#1a1405;border-radius:99px;padding:0 6px}
.cd .dn{font-size:12px;font-weight:700;align-self:flex-start}
.ev{all:unset;box-sizing:border-box;cursor:pointer;display:block;font-size:11.5px;font-weight:600;line-height:1.25;padding:3px 5px;border-radius:4px;background:color-mix(in srgb,var(--c) 16%,var(--surface));border-left:3px solid var(--c);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}
.ev span{display:block;font-weight:400;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.ev.tent,.evw.tent{border-left-style:dashed;opacity:.8}.ev.clash{box-shadow:inset 0 0 0 1px var(--bad)}
.ev:focus-visible,.evw:focus-visible{outline:2px solid var(--gold)}
.cal-w{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.wd{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:6px;display:flex;flex-direction:column;gap:6px;min-height:180px;min-width:0}.wd.today{border-color:var(--gold)}
.evw{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:2px;font-size:12px;padding:6px;border-radius:5px;background:color-mix(in srgb,var(--c) 14%,var(--surface));border-left:3px solid var(--c)}
.evw span{color:var(--muted);font-size:11.5px}
@media (max-width:820px){.cal-w{grid-template-columns:1fr}.wd{min-height:0}.cd{min-height:64px;padding:2px}.ev{font-size:10.5px;padding:2px 3px}.ev span{display:none}.cal-h span{padding:4px 3px;font-size:11px}}
.pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:2px;border:1px solid var(--line);border-radius:6px;padding:4px;max-height:220px;overflow:auto}
/* purchasing */
table.poed input.qty{max-width:100px}input.qty.good{border-color:var(--ok);background:var(--ok-soft)}
.quotes{display:flex;flex-direction:column;gap:4px}
.qrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px}.qrow.pref>span:first-child{font-weight:700}.qrow .acts{margin-left:auto}
.pendbar .btn:not(.gold){background:transparent;color:var(--navy-ink);border-color:color-mix(in srgb,var(--navy-ink) 45%,transparent)}
.mini{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:7px 10px;border:1px solid var(--line);border-radius:6px;font-size:13px}
.mini .btn{margin-left:auto}
.qrow{display:grid;grid-template-columns:minmax(160px,1.3fr) 96px 64px minmax(140px,1.4fr) auto;gap:10px;align-items:center}
.qrow .acts{margin-left:0;justify-content:flex-end}
.qrow>b{text-align:right}
@media (max-width:820px){.qrow{grid-template-columns:1fr auto}.qrow>span.sub{grid-column:1/3}}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:1px;background:var(--muted)}
.dot.ok{background:var(--ok)}.dot.warn{background:#D9A400}.dot.bad{background:var(--bad)}
.sstat{display:inline-flex;align-items:center;white-space:nowrap;font-size:13px}

.attach{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px dashed var(--line);border-radius:8px;background:var(--sunk);font-size:13px}
.field .ro{padding:8px 0;font-weight:600}
.bad-t{color:var(--bad)}

/* ---------- Outlook-style calendar ---------- */
.wk{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:auto;max-height:72vh}
.wk-hd,.wk-bd{display:grid;grid-template-columns:52px repeat(var(--n),minmax(118px,1fr))}
.wk-hd{position:sticky;top:0;z-index:3;background:var(--sunk);border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}
.wk-hd>div{padding:7px 8px;border-left:1px solid var(--line)}.wk-hd b{color:var(--fg);font-size:15px;margin-left:2px}
.wk-hd .today{color:var(--navy)}.wk-hd .today b{background:var(--navy);color:var(--navy-ink);border-radius:999px;padding:1px 7px}
.wk-hd .sun,.wk-col.sun{background:color-mix(in srgb,var(--sunk) 60%,transparent)}
.wk-tm span{display:block;height:var(--h);font-size:11px;color:var(--muted);text-align:right;padding:2px 6px 0 0}
.wk-col{position:relative;border-left:1px solid var(--line)}
.wk-slot{all:unset;box-sizing:border-box;display:block;width:100%;height:var(--h);border-top:1px solid var(--line);cursor:pointer}
.wk-slot:hover{background:var(--gold-soft)}.wk-slot:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.ap{all:unset;box-sizing:border-box;position:absolute;z-index:2;cursor:pointer;border-radius:6px;padding:3px 6px;font-size:11.5px;line-height:1.25;overflow:hidden;border:1px solid var(--line);border-left:4px solid var(--c);background:var(--surface);color:var(--fg)}
.ap b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap span{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ap:focus-visible{outline:2px solid var(--gold)}
.ap.draft,.ev.draft{border-style:dashed;background:var(--surface)}
.ap.team,.ev.team{background:var(--warn-soft);border-color:var(--warn)}
.ap.cust,.ev.cust{background:var(--info-soft);border-color:var(--info)}
.ap.confirmed,.ev.confirmed{background:var(--ok-soft);border-color:var(--ok)}
.ap.resched,.ev.resched{background:var(--bad-soft);border-color:var(--bad)}
.ap.done,.ev.done{background:var(--sunk);opacity:.75}
.ap.draft,.ap.team,.ap.cust,.ap.confirmed,.ap.resched,.ap.done{border-left:4px solid var(--c)}
.ev.ap-m{border:1px solid var(--line);border-left:3px solid var(--c)}
.cd[data-act]{cursor:pointer}.cd[data-act]:hover{background:var(--gold-soft)}
.legend .lg{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px;border:1px solid var(--line)}
.lg.draft{border-style:dashed;background:var(--surface)}.lg.team{background:var(--warn-soft);border-color:var(--warn)}.lg.cust{background:var(--info-soft);border-color:var(--info)}.lg.confirmed{background:var(--ok-soft);border-color:var(--ok)}.lg.resched{background:var(--bad-soft);border-color:var(--bad)}.lg.done{background:var(--sunk)}
.choice{display:grid;gap:8px}.choice .opt{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.choice .opt:hover,.choice .opt:focus-visible{border-color:var(--gold);background:var(--gold-soft)}
fieldset.owner{border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;margin:0}fieldset.owner legend{font-weight:700;font-size:13px;padding:0 4px}
.apsteps{list-style:none;margin:10px 0;padding:0;display:flex;flex-direction:column;gap:10px}
.apsteps li{display:flex;gap:10px;align-items:flex-start}.apsteps .n{flex:0 0 26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;background:var(--sunk);color:var(--muted)}
.apsteps li.done .n{background:var(--ok);color:#fff}.apsteps li.now .n{background:var(--gold);color:#fff}.apsteps li.bad .n{background:var(--bad);color:#fff}
.apsteps .sub .btn{margin:4px 4px 0 0}
@media (max-width:700px){.wk-hd,.wk-bd{grid-template-columns:44px repeat(var(--n),minmax(150px,1fr))}}
/* ---------- reply page (team / customer) ---------- */
.rp{max-width:520px;margin:0 auto;padding:20px 16px;display:flex;flex-direction:column;gap:14px}
.rp-logo{text-align:center}.rp-logo .logo img{height:44px}
.rp-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:10px}
.rp-card h1{font-size:20px;margin:0}.rp-k{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gold)}
.rp-when{font-size:16px;font-weight:600;padding:10px 12px;background:var(--sunk);border-radius:8px}
.rp-btns{display:flex;flex-direction:column;gap:8px}.btn.big{padding:13px 16px;font-size:15px;justify-content:center}
.rp-ok{color:var(--ok);font-weight:600;margin:0}.rp-bad{color:var(--bad);font-weight:600;margin:0}
.rp-move{border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:8px}.rp-opts{display:flex;flex-direction:column;gap:6px}
.rp-foot{text-align:center}

/* ---------- marketing ---------- */
.mbars{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;align-items:end;height:170px;padding-top:8px}
.mbars>div{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%}
.mbars .b{display:block;width:70%;max-width:46px;min-height:2px;background:var(--navy);border-radius:4px 4px 0 0}
.mbars b{font-size:13px;font-family:var(--f-num)}.mbars small{font-size:11px;color:var(--muted)}
ul.plain{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.ev.pst{border-left:3px solid var(--muted)}
.ev.pst.idea,.lg.pst.idea{background:var(--surface);border-style:dashed}
.ev.pst.drafting,.lg.pst.drafting{background:var(--info-soft);border-color:var(--info)}
.ev.pst.review,.lg.pst.review{background:var(--warn-soft);border-color:var(--warn)}
.ev.pst.approved,.lg.pst.approved{background:var(--info-soft);border-color:var(--navy)}
.ev.pst.scheduled,.lg.pst.scheduled{background:var(--gold-soft);border-color:var(--gold)}
.ev.pst.published,.lg.pst.published{background:var(--ok-soft);border-color:var(--ok)}
