
:root{
  --bg:#F3F5F2; --surface:#FFFFFF; --surface-2:#E9EDE8; --line:#D5DCD4; --ink:#1B2420; --ink-2:#4E5B55; --ink-3:#7A8680;
  --accent:#2E6A52; --accent-ink:#FFFFFF; --accent-soft:#DCEBE3;
  --warn:#9A6212; --warn-soft:#F7EBD4; --crit:#AE2A20; --crit-soft:#F8DEDA; --info:#2F5C8A; --info-soft:#DDE8F4; --ok:#2E6A52;
  --paper:#FFFFFF; --paper-ink:#111111; --paper-line:#BBBBBB; --mark:#FFE58A;
  --shadow:0 1px 2px rgba(20,30,25,.06),0 4px 16px rgba(20,30,25,.06);
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --serif:"Tinos","Times New Roman",Times,serif; --page-sans:"Arimo",Arial,Helvetica,sans-serif;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  color-scheme:dark;
  --bg:#121614; --surface:#1A201D; --surface-2:#222A26; --line:#303A35; --ink:#E4EAE6; --ink-2:#AAB6B0; --ink-3:#7F8C86;
  --accent:#7CC3A3; --accent-ink:#0E1512; --accent-soft:#1F3A2F;
  --warn:#E3B062; --warn-soft:#3A2E1A; --crit:#F08A80; --crit-soft:#3E2220; --info:#8DB6E4; --info-soft:#1E2B3A; --ok:#7CC3A3;
  --paper:#F4F4F1; --paper-ink:#111111; --paper-line:#AAAAAA; --mark:#FFE58A;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.25);
}}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#121614; --surface:#1A201D; --surface-2:#222A26; --line:#303A35; --ink:#E4EAE6; --ink-2:#AAB6B0; --ink-3:#7F8C86;
  --accent:#7CC3A3; --accent-ink:#0E1512; --accent-soft:#1F3A2F;
  --warn:#E3B062; --warn-soft:#3A2E1A; --crit:#F08A80; --crit-soft:#3E2220; --info:#8DB6E4; --info-soft:#1E2B3A; --ok:#7CC3A3;
  --paper:#F4F4F1; --paper-ink:#111111; --paper-line:#AAAAAA; --mark:#FFE58A;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.25);
}
*{box-sizing:border-box}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font:14px/1.5 var(--sans);margin:0}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
h1,h2,h3{text-wrap:balance;margin:0;font-weight:600;line-height:1.25}
h1{font-size:22px} h2{font-size:17px} h3{font-size:14px}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.muted{color:var(--ink-2)} .faint{color:var(--ink-3)}
.label{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-weight:500}

.app{display:grid;grid-template-columns:220px 1fr;min-height:100%}
.side{background:var(--surface);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:18px;position:sticky;top:env(safe-area-inset-top,0px);height:100vh;overflow:auto}
.brand{display:flex;gap:10px;align-items:center;padding:0 8px}
.brand svg{flex:none}
.brand b{font-size:15px;display:block;line-height:1.1}
.brand span{font-size:11px;color:var(--ink-3)}
.nav{display:flex;flex-direction:column;gap:2px}
.nav button{all:unset;cursor:pointer;padding:7px 10px;border-radius:6px;color:var(--ink-2);display:flex;justify-content:space-between;align-items:center}
.nav button:hover{background:var(--surface-2);color:var(--ink)}
.nav button[aria-current="true"]{background:var(--accent-soft);color:var(--ink);font-weight:500}
.nav button:focus-visible{outline:2px solid var(--accent)}
.side .foot{margin-top:auto;font-size:12px;color:var(--ink-3);padding:0 8px;display:flex;flex-direction:column;gap:8px}
.proto{background:var(--warn-soft);color:var(--warn);border-radius:6px;padding:8px 10px;font-size:12px;line-height:1.4}

.main{padding:22px 28px 60px;min-width:0}
.crumbs{font-size:12px;color:var(--ink-3);margin-bottom:6px;display:flex;gap:6px;flex-wrap:wrap}
.crumbs button{all:unset;cursor:pointer;color:var(--ink-2)} .crumbs button:hover{text-decoration:underline}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}
.tabs button{all:unset;cursor:pointer;padding:9px 12px;color:var(--ink-2);border-bottom:2px solid transparent;white-space:nowrap;display:flex;gap:6px;align-items:center}
.tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent);font-weight:500}
.tabs button:focus-visible{outline:2px solid var(--accent)}

.btn{border:1px solid var(--line);background:var(--surface);padding:6px 12px;border-radius:6px;display:inline-flex;gap:6px;align-items:center;white-space:nowrap}
.btn:hover{border-color:var(--ink-3)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.primary:hover{filter:brightness(1.07)}
.btn.sm{padding:3px 8px;font-size:12px}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:var(--surface-2)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.stack{display:flex;flex-direction:column;gap:12px}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:20px;align-items:start}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px}
.panel>h2,.panel>.ph{margin-bottom:12px}
.ph{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}

.chip{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;padding:1px 7px;border-radius:99px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap;font-weight:500}
.chip.owner{background:var(--info-soft);color:var(--info)}
.chip.ejcdc{background:#EDE3F6;color:#5B3B85}
:root[data-theme="dark"] .chip.ejcdc{background:#2D2340;color:#C7B2EA}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .chip.ejcdc{background:#2D2340;color:#C7B2EA}}
.chip.firm{background:var(--accent-soft);color:var(--accent)}
.chip.gen{background:var(--surface-2);color:var(--ink-2)}
.chip.crit{background:var(--crit-soft);color:var(--crit)}
.chip.warn{background:var(--warn-soft);color:var(--warn)}
.chip.info{background:var(--info-soft);color:var(--info)}
.chip.ok{background:var(--accent-soft);color:var(--ok)}
.count{font-size:11px;min-width:18px;text-align:center;padding:0 5px;border-radius:99px;background:var(--crit-soft);color:var(--crit);font-weight:600}

table{border-collapse:collapse;width:100%}
th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:500;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}
td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:none}
.tablewrap{overflow-x:auto}
td.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:10px;text-align:left}
button.card{cursor:pointer} button.card:hover{border-color:var(--accent)}
.card .meta{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;font-size:12.5px}
.card .meta dt{color:var(--ink-3)} .card .meta dd{margin:0}

.field{display:flex;flex-direction:column;gap:4px}
.field label{font-size:12px;color:var(--ink-2)}
.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:6px 8px;width:100%}
.field textarea{resize:vertical;font-size:13px}
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.tok{font-family:var(--mono);font-size:11.5px}

/* Division picker */
.div{border-top:1px solid var(--line);padding:10px 0}
.div:first-child{border-top:none}
.divhead{display:flex;justify-content:space-between;gap:10px;align-items:center}
.divhead h3 .mono{color:var(--ink-3);margin-right:6px}
.seclist{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:2px 14px;margin-top:6px}
.sec{display:flex;gap:8px;align-items:flex-start;padding:4px 6px;border-radius:5px}
.sec:hover{background:var(--surface-2)}
.sec input{margin-top:3px}
.sec .mono{color:var(--ink-2);min-width:78px}
.hiddenDiv{opacity:.55}

/* Book */
.part{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.part+.part{margin-top:6px}
.part .ord{display:flex;flex-direction:column;gap:2px}
.part .ord button{all:unset;cursor:pointer;font-size:10px;line-height:1;color:var(--ink-3);padding:2px 6px;border-radius:3px;text-align:center}
.part .ord button:hover{background:var(--surface-2);color:var(--ink)}
.part .t{display:flex;flex-direction:column;gap:3px;min-width:0}
.part .t b{font-weight:500}
.part .opts{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12.5px}
.part .opts select,.part .opts input[type=text]{border:1px solid var(--line);background:var(--surface);border-radius:5px;padding:2px 6px;font-size:12.5px}
.part .opts input[type=text]{width:54px;font-family:var(--mono)}
.part.techblock{background:var(--surface-2)}
.part.flag{border-color:var(--warn)}
.part.flagc{border-color:var(--crit)}

/* Editor */
.blk{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:6px;align-items:start;padding:2px 4px;border-radius:5px}
.blk:hover{background:var(--surface-2)}
.blk .n{font-family:var(--mono);font-size:12px;color:var(--ink-3);text-align:right;padding-top:3px}
.blk .tx{outline:none;padding:2px 6px;border-radius:4px;min-height:1.5em;white-space:pre-wrap}
.blk .tx:focus{background:var(--surface);box-shadow:0 0 0 1px var(--accent)}
.blk.part-l .tx{font-weight:600;letter-spacing:.02em}
.blk.art .tx{font-weight:600}
.blk.p1{margin-left:0} .blk.p2{margin-left:26px} .blk.p3{margin-left:52px}
.blk.note{margin-left:0}
.blk.note .tx{background:var(--info-soft);color:var(--info);font-size:12.5px;border-left:3px solid var(--info)}
.blk .ctl{display:flex;gap:1px;opacity:0;transition:opacity .1s}
.blk:hover .ctl,.blk:focus-within .ctl{opacity:1}
.blk .ctl button{all:unset;cursor:pointer;font-size:11px;padding:2px 5px;border-radius:3px;color:var(--ink-3);font-family:var(--mono)}
.blk .ctl button:hover{background:var(--surface);color:var(--ink)}
.blk.hl{box-shadow:inset 3px 0 0 var(--warn)}
.blk.hlc{box-shadow:inset 3px 0 0 var(--crit)}

/* Paper preview */
.paperwrap{background:var(--surface-2);border-radius:10px;padding:18px;overflow-x:auto;position:sticky;top:12px}
.paper{background:var(--paper);color:var(--paper-ink);width:100%;max-width:560px;min-width:420px;margin:0 auto;aspect-ratio:8.5/11;padding:6.5% 9%;box-shadow:0 2px 10px rgba(0,0,0,.15);display:flex;flex-direction:column;font-family:var(--serif);font-size:10.5px;line-height:1.35;overflow:hidden;position:relative}
.paper.tall{aspect-ratio:auto;min-height:0}
.paper .ph3{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;font-family:var(--page-sans);font-size:8.5px;line-height:1.3;margin-bottom:14px}
.paper .ph3 div:nth-child(2){text-align:center} .paper .ph3 div:nth-child(3){text-align:right}
.paper .pf3{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;font-family:var(--page-sans);font-size:8.5px;margin-top:auto;padding-top:14px}
.paper .pf3 div:nth-child(2){text-align:center} .paper .pf3 div:nth-child(3){text-align:right}
.paper .body{flex:1;overflow:hidden}
.paper .sh{font-weight:700;margin:0 0 8px}
.paper .pp{margin:0 0 5px;display:grid;grid-template-columns:34px 1fr}
.paper .pp.part-l{margin-top:8px;font-weight:400;grid-template-columns:1fr}
.paper .pp.art{margin-top:8px;grid-template-columns:40px 1fr}
.paper .pp.p1{padding-left:40px} .paper .pp.p2{padding-left:74px} .paper .pp.p3{padding-left:108px}
.paper mark{background:var(--mark);color:#111;padding:0 1px}
.paper mark.c{background:#FFB3A8}
.paper .mf{background:#DCEBE3;color:#1E4D39;border-radius:2px;padding:0 2px}
.paper .fade{position:absolute;left:0;right:0;bottom:64px;height:40px;background:linear-gradient(transparent,var(--paper))}
.paper.cover{justify-content:flex-start;padding-top:12%}
.cov{margin-left:45%;display:flex;flex-direction:column;gap:12px;font-family:var(--page-sans)}
.cov .bar{height:5px;background:#8DB255}
.cov .big{font-size:26px;line-height:1.1;font-family:"Cambria",Georgia,serif}
.cov .sm{font-size:11px;line-height:1.35}
.toc h4{font-family:var(--serif);text-align:center;font-weight:400;margin:0 0 14px;font-size:11px}
.toc .tr{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}
.toc .tr u{text-decoration:underline}
.toc .dv{font-weight:700;margin:10px 0 2px}
.toc .it{padding-left:16px}

/* Checks */
.chk{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;padding:10px 0;border-top:1px solid var(--line)}
.chk:first-child{border-top:none}
.chk .ctx{font-family:var(--serif);font-size:13px;background:var(--surface-2);padding:3px 8px;border-radius:4px;margin-top:4px;display:inline-block;max-width:100%;overflow-wrap:anywhere}
.chk .ctx mark{background:var(--mark);color:#111}
.stat{display:flex;gap:18px;flex-wrap:wrap}
.stat div{display:flex;flex-direction:column}
.stat b{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}
.found li{margin-bottom:6px}
.found{padding-left:18px;margin:0}

.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:9px 16px;border-radius:8px;box-shadow:var(--shadow);z-index:50;max-width:calc(100% - 32px)}
.modalbg{position:fixed;inset:0;background:rgba(10,15,12,.45);display:flex;align-items:center;justify-content:center;padding:16px;z-index:40}
.modal{background:var(--surface);border-radius:12px;padding:20px;width:min(560px,100%);max-height:90vh;overflow:auto;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.tpls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tpl{border:1px solid var(--line);border-radius:8px;padding:10px;display:flex;gap:8px;align-items:flex-start;cursor:pointer}
.tpl:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.bm{font-size:13px;margin:0;padding-left:16px}
.bm ul{padding-left:16px;margin:2px 0}
.notice{background:var(--info-soft);color:var(--info);padding:10px 12px;border-radius:8px;font-size:13px}

@media (max-width:980px){.split,.grid2{grid-template-columns:1fr}.paperwrap{position:static}}
@media (max-width:760px){
  .app{grid-template-columns:1fr}
  .side{position:static;height:auto;flex-direction:column;gap:10px;border-right:none;border-bottom:1px solid var(--line)}
  .nav{flex-direction:row;flex-wrap:wrap}
  .side .foot{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:0}
  .main{padding:16px}
  .paper{min-width:340px}
  .tpls,.grid3{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---- App additions ---- */
.login{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.login form{width:min(380px,100%);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.err{background:var(--crit-soft);color:var(--crit);padding:8px 10px;border-radius:6px;font-size:13px}
.savestate{font-size:12px;color:var(--ink-3);min-width:70px;text-align:right}
.savestate.bad{color:var(--crit)}
.spin{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .8s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.part .opts input.w{width:auto;min-width:0;flex:1 1 160px;font-family:var(--sans)}
.part .opts input.skip{width:90px}
.filebox{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12.5px}
.filebox .fn{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dz{border:1.5px dashed var(--line);border-radius:10px;padding:18px;text-align:center;color:var(--ink-2)}
.dz.over{border-color:var(--accent);background:var(--accent-soft)}
.results td{font-size:13px}
.linkish{all:unset;cursor:pointer;color:var(--accent);text-decoration:underline}
.menu{position:relative}
tr.click{cursor:pointer} tr.click:hover td{background:var(--surface-2)}
.hidden{display:none!important}
.userbox{font-size:12.5px;color:var(--ink-2);padding:0 8px;display:flex;flex-direction:column;gap:6px}

a.btn{text-decoration:none;color:inherit}
a.btn.primary{color:var(--accent-ink)}
.part .t .row input.w{flex:1 1 220px;min-width:0;max-width:100%}

.choices{display:flex;flex-direction:column;gap:8px}
.choice{all:unset;box-sizing:border-box;cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:3px;background:var(--surface)}
.choice:hover{border-color:var(--ink-3)}
.choice:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.choice.on{border-color:var(--accent);background:var(--accent-soft)}
.choice>span{font-size:13px;color:var(--ink-2)}
.seclist-sm{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1px 12px;margin-top:6px;font-size:12.5px}
.btn[disabled]{opacity:.45}

.navgroup{display:flex;flex-direction:column;gap:2px;min-height:0;overflow:auto}
.nav .pn{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.nav button.navnew{color:var(--accent);font-weight:500}
.side .foot{gap:10px}

.blkmsg{margin:2px 34px 8px 62px;padding:6px 10px;border-radius:6px;font-size:12.5px;line-height:1.45;border-left:3px solid}
.blkmsg.crit{background:var(--crit-soft);color:var(--crit);border-color:var(--crit)}
.blkmsg.warn{background:var(--warn-soft);color:var(--warn);border-color:var(--warn)}
.blkmsg.info{background:var(--info-soft);color:var(--info);border-color:var(--info)}
.blkmsg .btn{margin-left:6px;vertical-align:baseline}
.blk.hli{box-shadow:inset 3px 0 0 var(--info)}

.subtabs{display:flex;gap:4px;margin:-8px 0 18px;flex-wrap:wrap}
.subtabs button{all:unset;cursor:pointer;padding:5px 12px;border-radius:99px;color:var(--ink-2);font-size:13px;display:flex;gap:6px;align-items:center}
.subtabs button:hover{background:var(--surface-2)}
.subtabs button[aria-selected="true"]{background:var(--ink);color:var(--bg)}
.subtabs button:focus-visible{outline:2px solid var(--accent)}

.toc-list{padding:8px 16px 14px}
.tocdiv{font-weight:600;font-size:12px;letter-spacing:.05em;color:var(--ink-2);margin:16px 0 4px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.toc-list .tocdiv:first-child{margin-top:6px}
.tocrow{display:grid;grid-template-columns:96px minmax(0,1fr) auto 64px 70px;gap:10px;align-items:center;padding:7px 8px;border-radius:6px;cursor:pointer}
.tocrow:hover,.tocrow:focus-visible{background:var(--surface-2);outline:none}
.tocrow.flat{cursor:default;grid-template-columns:96px minmax(0,1fr) auto auto}
.tocrow.flat:hover{background:transparent}
.tocn{color:var(--ink-2)} .toct{font-weight:500} .tocs{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end} .tocp{font-size:12px;text-align:right}
.tocx{visibility:hidden} .tocrow:hover .tocx,.tocrow:focus-within .tocx{visibility:visible}
.picklist{max-height:55vh;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:0 10px 10px}
label.pick{display:grid;grid-template-columns:auto 90px 1fr;gap:10px;align-items:center;padding:5px 4px;border-radius:5px;cursor:pointer}
label.pick:hover{background:var(--surface-2)}
.modal{width:min(640px,100%)}
@media (max-width:760px){.tocrow{grid-template-columns:80px 1fr;}.tocrow .tocs,.tocrow .tocp{grid-column:2}.tocx{visibility:visible;grid-column:2;justify-self:start}}

/* ---- Costs ---- */
.up{color:var(--crit)} .down{color:var(--ok)}
.empty{text-align:left;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.trend{display:flex;gap:10px;align-items:stretch;height:190px}
.tbar{all:unset;box-sizing:border-box;cursor:pointer;display:grid;grid-template-rows:auto auto 1fr auto auto;gap:2px;padding:8px 10px;border-radius:8px;border:1px solid transparent;min-width:0;text-align:center}
.tbar:hover{background:var(--surface-2)}
.tbar.on{border-color:var(--accent);background:var(--accent-soft)}
.tbar:focus-visible{outline:2px solid var(--accent)}
.tv{font-weight:600;font-variant-numeric:tabular-nums;font-size:13.5px}
.td{font-size:11.5px;min-height:1.2em}
.tcol{display:flex;align-items:flex-end;justify-content:center;min-height:0}
.tcol span{width:min(56px,70%);background:var(--accent);border-radius:4px 4px 0 0;opacity:.85}
.tl{font-weight:600;font-size:13px;border-top:1px solid var(--line);padding-top:4px}
.ts{font-size:11.5px;color:var(--ink-3)}
table.est{font-size:13px}
table.est th.r,table.est td.r{text-align:right}
table.est td{padding:2px 4px}
table.est input{width:100%;min-width:0;border:1px solid transparent;background:transparent;border-radius:4px;padding:4px 6px;font:inherit}
table.est input:hover{border-color:var(--line)}
table.est input:focus{border-color:var(--accent);background:var(--surface);outline:none}
table.est input.r{text-align:right;font-variant-numeric:tabular-nums}
table.est input::placeholder{color:var(--ink-3)}
table.est tr.cat td{background:var(--surface-2);padding-top:6px;padding-bottom:6px}
table.est tr.cat input.catname{font-weight:600;max-width:340px}
table.est tfoot td{border-top:1px solid var(--line);padding-top:8px}
table.est td.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.stat b.up,.stat span.up{color:var(--crit)} .stat b.down,.stat span.down{color:var(--ok)}
.catbars{display:flex;flex-direction:column;gap:5px}
.cb{display:grid;grid-template-columns:minmax(90px,170px) 1fr 100px;gap:10px;align-items:center;font-size:12.5px}
.cbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cbt{position:relative;height:12px}
.cbz{position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--line)}
.cbb{position:absolute;top:0;bottom:0;border-radius:2px}
.cbb.up{background:var(--crit);opacity:.75} .cbb.down{background:var(--ok);opacity:.75}
.cbv{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
table.cmp td{vertical-align:top}
table.cmp td.r,table.cmp th.r{text-align:right}
table.cmp td.mono{font-family:var(--mono);white-space:nowrap}
table.cmp input{border:1px solid var(--line);border-radius:5px;padding:4px 6px;background:var(--surface);min-width:180px}
.paper.sched{font-family:var(--page-sans);font-size:8.5px;padding:5%}
.paper.sched table{width:100%;border-collapse:collapse}
.paper.sched th,.paper.sched td{border:0.5px solid #333;padding:2px 3px;color:#111}
.paper.sched th{background:#eee;font-size:7.5px}
.paper.sched tr.c td{font-weight:700;background:#f4f4f4}
.paper.sched td.r{text-align:right}
table.bidtab{font-size:12.5px}
table.bidtab td.r,table.bidtab th.r{text-align:right}
table.bidtab td.mono{font-family:var(--mono);white-space:nowrap}
table.bidtab td.hi{background:var(--crit-soft);color:var(--crit)}
table.bidtab td.lo{background:var(--warn-soft);color:var(--warn)}
tr.lowbid td{background:var(--accent-soft)}
@media (max-width:760px){.trend{overflow-x:auto}.tbar{min-width:110px}}

/* ======== Estimates: summary, milestones, categories ======== */
.ms{margin-bottom:14px}
.ms-toggle{all:unset;cursor:pointer;font-weight:600;font-size:13px;color:var(--ink-2);display:inline-flex;gap:6px;align-items:center;padding:4px 2px}
.ms-toggle:focus-visible{outline:2px solid var(--accent)}
.chev{display:inline-block;width:12px;color:var(--ink-3)}
.ms-row{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:8px 2px 4px}
.ms-arrow{color:var(--ink-3);font-size:13px;flex:none}
.ms-card{all:unset;box-sizing:border-box;cursor:pointer;flex:0 0 auto;min-width:150px;display:flex;flex-direction:column;gap:2px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.ms-card:hover{border-color:var(--ink-3)}
.ms-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ms-card.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}
.ms-name{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.ms-total{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums lining-nums}
.ms-meta{font-size:12px;color:var(--ink-3)}
.est-sum{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr);gap:24px;margin-bottom:16px;padding:20px 22px}
.est-title{font-size:20px;margin:2px 0 4px}
.est-sum-r{border-left:1px solid var(--line);padding-left:22px}
.est-lines{display:grid;gap:6px}
.el{display:flex;justify-content:space-between;gap:12px;font-size:13.5px}
.el b{font-weight:500;font-variant-numeric:tabular-nums lining-nums;font-family:var(--mono);font-size:13px}
.el.tot{border-top:2px solid var(--ink);padding-top:8px;margin-top:4px;font-size:15px;font-weight:700}
.el.tot b{font-size:20px;font-weight:700;font-family:var(--sans)}
.menu{position:relative}
.menu-pop{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:260px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:6px;display:flex;flex-direction:column}
.menu-pop button{all:unset;cursor:pointer;padding:8px 10px;border-radius:5px;font-size:13.5px}
.menu-pop button:hover,.menu-pop button:focus-visible{background:var(--surface-2)}
.danger{color:var(--crit)!important}
.area-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.area-tabs button{all:unset;cursor:pointer;padding:7px 12px;border:1px solid var(--line);border-radius:99px;font-size:13px;background:var(--surface);display:flex;gap:8px}
.area-tabs button[aria-selected="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.area-tabs button[aria-selected="true"] .faint{color:inherit;opacity:.75}
.area-tabs button:focus-visible{outline:2px solid var(--accent)}
table.area-sum td.r,table.area-sum th.r{text-align:right}
.est-tools{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.est-tools input[type=search]{flex:1;max-width:340px;border:1px solid var(--line);border-radius:8px;padding:7px 10px;background:var(--surface)}
.cats{display:flex;flex-direction:column;gap:8px}
.cat{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.cat.open{border-color:var(--ink-3)}
.cat-h{all:unset;box-sizing:border-box;cursor:pointer;width:100%;display:grid;grid-template-columns:14px minmax(0,1fr) auto minmax(60px,140px) 40px 110px;gap:12px;align-items:center;padding:12px 16px}
.cat-h:hover{background:var(--surface-2)}
.cat-h:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.cat-n{font-weight:700;font-size:14.5px}
.cat-c,.cat-p{font-size:12.5px;text-align:right}
.cat-bar{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.cat-bar span{display:block;height:100%;background:var(--accent);opacity:.7}
.cat-t{text-align:right;font-weight:600}
.cat-b{border-top:1px solid var(--line)}
.irow{display:grid;grid-template-columns:minmax(0,1fr) 120px 110px 110px;gap:12px;align-items:baseline;padding:9px 16px 9px 42px;border-bottom:1px solid var(--line);cursor:pointer}
.irow:hover{background:var(--surface-2)}
.irow:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.i-d{min-width:0}
.i-n{font-size:12px;color:var(--ink-3);margin-top:2px}
.i-q,.i-p,.i-t{text-align:right;font-size:13px;white-space:nowrap}
.i-t{font-weight:600}
.irow.editing{display:block;cursor:default;background:var(--accent-soft);padding:14px 16px 14px 42px}
.ie-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px 12px}
.ie-grid .f{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--ink-2)}
.ie-grid .f.wide{grid-column:span 3}
.ie-grid .f input{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--surface);font-size:13.5px;color:var(--ink)}
.ie-grid .f input.r{text-align:right;font-variant-numeric:tabular-nums}
.ie-grid .f input[readonly]{background:var(--surface-2)}
.ie-grid .f b{font-size:15px;padding:6px 0}
.cat-add{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 16px 8px 36px}
.cat-add .catname{border:1px solid transparent;background:transparent;border-radius:5px;padding:4px 6px;font-size:12.5px;color:var(--ink-3);text-align:right}
.cat-add .catname:hover,.cat-add .catname:focus{border-color:var(--line);color:var(--ink)}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.seg button{all:unset;cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.seg button span{font-size:12.5px;color:var(--ink-2)}
.seg button[aria-checked="true"]{border-color:var(--accent);background:var(--accent-soft)}
.imp-list{display:flex;flex-direction:column;gap:4px;max-height:40vh;overflow:auto}
.imp-s{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:7px 8px;border:1px solid var(--line);border-radius:7px}
.imp-s>span{display:flex;flex-direction:column}
.imp-s .faint{font-size:12.5px}
.imp-warn{background:var(--warn-soft);color:var(--warn);border-radius:8px;padding:8px 12px;font-size:13px}
.imp-warn ul{margin:6px 0 0;padding-left:18px}
.mkrow{display:grid;grid-template-columns:minmax(0,1fr) 170px 90px 100px auto;gap:8px;align-items:center;margin-bottom:6px}
.mkrow input,.mkrow select{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--surface)}
.mkrow .mono{text-align:right}
@media (max-width:900px){.est-sum{grid-template-columns:1fr}.est-sum-r{border-left:none;padding-left:0;border-top:1px solid var(--line);padding-top:14px}.irow{grid-template-columns:1fr auto;padding-left:16px}.i-p{display:none}.i-q{grid-row:2}.cat-h{grid-template-columns:14px 1fr auto}.cat-bar,.cat-p,.cat-c{display:none}.ie-grid{grid-template-columns:1fr 1fr}.ie-grid .f.wide{grid-column:span 2}.mkrow{grid-template-columns:1fr 1fr}}

/* ======== TSW theme: Raleway, orange / green / charcoal ======== */
:root{
  --bg:#F5F5F3; --surface:#FFFFFF; --surface-2:#EEEEEB; --line:#DDDDD9; --ink:#262628; --ink-2:#58595B; --ink-3:#8A8A8D;
  --accent:#C84E15; --accent-ink:#FFFFFF; --accent-soft:#FCEBE1;
  --brand-orange:#F36523; --brand-green:#8DC740; --brand-charcoal:#58595B;
  --ok:#4C7F1C; --side:#2E2E30; --side-ink:#E9E9EA; --side-ink-2:#A9A9AC; --side-hover:#3B3B3E;
  --sans:"GW Numerals","Raleway","Segoe UI",system-ui,-apple-system,sans-serif;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#18181A; --surface:#212123; --surface-2:#2A2A2D; --line:#37373A; --ink:#EDEDED; --ink-2:#B9B9BC; --ink-3:#8C8C90;
  --accent:#F47B40; --accent-ink:#1B1B1D; --accent-soft:#3A2419; --ok:#9CD35A; --side:#111113; --side-hover:#26262A;
}}
:root[data-theme="dark"]{
  --bg:#18181A; --surface:#212123; --surface-2:#2A2A2D; --line:#37373A; --ink:#EDEDED; --ink-2:#B9B9BC; --ink-3:#8C8C90;
  --accent:#F47B40; --accent-ink:#1B1B1D; --accent-soft:#3A2419; --ok:#9CD35A; --side:#111113; --side-hover:#26262A;
}
body{font-family:var(--sans);font-variant-numeric:lining-nums;font-weight:500}
h1,h2,h3{font-family:var(--sans);font-weight:700;letter-spacing:-.005em}
h1{font-size:24px}
.chip.ok{background:#EAF4DC;color:var(--ok)}
.side{background:var(--side);border-right:none;color:var(--side-ink)}
.side .brand{flex-direction:column;align-items:flex-start;gap:12px;padding:4px 10px 10px}
.side .brand img{width:150px;height:auto;display:block}
.side .brand .app{display:flex;align-items:baseline;gap:8px;border-top:1px solid #4A4A4D;padding-top:12px;width:100%}
.side .brand .app b{font-size:17px;letter-spacing:.02em;color:#fff}
.side .brand .app span{font-size:11px;color:var(--side-ink-2)}
.side .nav button{color:var(--side-ink-2)}
.side .nav button:hover{background:var(--side-hover);color:#fff}
.side .nav button[aria-current="true"]{background:var(--side-hover);color:#fff;box-shadow:inset 3px 0 0 var(--brand-orange)}
.side .nav button.navnew{color:var(--brand-green)}
.side .label{color:var(--side-ink-2)}
.side .nav .mono.faint{color:var(--side-ink-2)}
.side .userbox{color:var(--side-ink-2)}
.side .userbox b{color:#fff}
.side .btn{background:transparent;color:var(--side-ink);border-color:#4A4A4D}
.tabs button[aria-selected="true"]{border-bottom-color:var(--brand-orange)}
.btn{font-weight:600}
.login{background:var(--side)}
.login form{border:none}
.login .brand img{width:64px;height:64px}

/* Branding */
.bprev{background:#fff;color:#1B1B1E;border-radius:8px;padding:14px;box-shadow:0 2px 10px rgba(0,0,0,.12);font-size:12px;display:flex;flex-direction:column;gap:3px;max-width:520px;margin:0 auto}
.bp-ban{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;font-size:16px;font-weight:700;letter-spacing:.02em}
.bp-no{display:block;font-size:9.5px;letter-spacing:.14em;opacity:.8;margin-bottom:1px}
.bp-ban img{height:36px;width:auto;background:#fff;border-radius:3px;padding:2px}
.bp-t{font-weight:700;font-size:13px;padding:4px 12px 8px}
.bp-cat{font-weight:700;padding:5px 12px}
.bp-row,.bp-sub,.bp-tot{display:grid;grid-template-columns:1fr 80px 60px 80px;gap:8px;padding:4px 12px;font-variant-numeric:tabular-nums}
.bp-row span:not(:first-child){text-align:right}
.bp-sub,.bp-tot{grid-template-columns:1fr auto;font-weight:700}
.bp-tot{font-size:13px;margin-top:4px}
.blogo{min-width:72px;max-width:200px;padding:4px 6px;box-sizing:border-box;height:72px;border:1px solid var(--line);border-radius:8px;display:flex;align-items:center;justify-content:center;background:#fff;overflow:hidden}
.blogo img{max-width:100%;max-height:100%}
.bcols{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.bcol{display:flex;gap:10px;align-items:center;font-size:13px}
.bcol input[type=color]{width:40px;height:40px;border:1px solid var(--line);border-radius:8px;padding:2px;background:var(--surface);cursor:pointer}

/* Bids */
.bid-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.pill{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--line);border-radius:99px;background:var(--surface);font-size:13px;font-weight:600}
.pill:hover{border-color:var(--ink-3)}
.pill.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.pill.add{color:var(--accent);border-style:dashed}
.pill input{margin:0;accent-color:var(--brand-orange)}
.pill:focus-visible,.pill:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.bid-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,380px);gap:24px;margin-bottom:14px}
.bid-name{font:inherit;font-size:20px;font-weight:700;border:1px solid transparent;background:transparent;border-radius:6px;padding:2px 6px;margin-left:-6px;max-width:100%}
.bid-name:hover,.bid-name:focus{border-color:var(--line);background:var(--surface)}
.bid-stats{display:grid;gap:8px;border-left:1px solid var(--line);padding-left:22px;align-content:start}
.bs-row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13.5px}
.bs-row b{font-family:var(--mono);font-weight:500;font-size:13px}
.bs-row input{width:150px;border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--surface);font-family:var(--mono);font-size:13px;text-align:right}
.bs-row.warnrow{color:var(--crit);font-weight:600} .bs-row.okrow{color:var(--ok)}
table.bidentry{table-layout:fixed;font-size:13px}
table.bidentry th{padding:10px 12px}
table.bidentry td{padding:4px 12px}
table.bidentry .r{text-align:right}
table.bidentry td.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
table.bidentry tr.bcat td{background:var(--surface-2);font-weight:700;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);padding:8px 12px}
table.bidentry input{width:100%;border:1px solid transparent;border-radius:5px;padding:5px 7px;background:transparent;font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums lining-nums;color:var(--ink)}
table.bidentry input::placeholder{color:var(--ink-3);font-family:var(--sans)}
table.bidentry tr:hover input{border-color:var(--line);background:var(--surface)}
table.bidentry input:focus{border-color:var(--accent);background:var(--surface);outline:none}
table.rank{font-size:13.5px} table.rank .r{text-align:right} table.rank td.rk{font-weight:700;color:var(--ink-3);width:24px}
.seg2{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg2 button{all:unset;cursor:pointer;padding:5px 12px;font-size:13px}
.seg2 button[aria-checked="true"]{background:var(--ink);color:var(--bg)}
table.bidtab td.best{font-weight:700}
table.bidtab tfoot td{font-weight:700;border-top:2px solid var(--ink)}
@media (max-width:900px){.bid-head{grid-template-columns:1fr}.bid-stats{border-left:none;padding-left:0}}

/* Numbers: Raleway with lining, equal-width figures instead of a code font */
:root{--mono:"GW Numerals","Raleway","Segoe UI",system-ui,sans-serif}
.mono,td.num,.cat-t,.i-q,.i-p,.i-t,.el b,.ms-total,.bs-row b,.bs-row input,table.bidentry input,table.est input.r,.ie-grid .f input.r,.tv,.cbv,.stat b,.tocn,.tocp,.chk .ctx{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1,"lnum" 1}
.mono{font-weight:500;letter-spacing:0}

/* Project search */
.psearch{position:relative;max-width:560px;margin:-4px 0 20px}
.psearch input{width:100%;border:1px solid var(--line);border-radius:10px;padding:11px 14px 11px 38px;font-size:15px;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238A8A8D' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4-4'/%3E%3C/svg%3E") no-repeat 13px center}
.psearch input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.psearch ul{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);max-height:60vh;overflow:auto}
.psearch li{display:grid;grid-template-columns:70px 1fr;gap:2px 12px;padding:9px 10px;border-radius:7px;cursor:pointer}
.psearch li[aria-selected="true"],.psearch li:hover{background:var(--accent-soft)}
.ps-num{grid-row:span 2;color:var(--ink-3);font-variant-numeric:tabular-nums lining-nums;padding-top:1px}
.ps-name{font-weight:600}
.ps-meta{font-size:12.5px;color:var(--ink-3)}
.psearch mark{background:transparent;color:var(--accent);font-weight:700}
.psearch li.ps-none{display:block;color:var(--ink-3);cursor:default}
.psearch li.ps-none:hover{background:transparent}

/* ======== Products & site furnishings ======== */
.modal.wide{width:min(1040px,100%)}
.pfilters{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}
.pfilters input[type=search]{max-width:520px;border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:var(--surface);font-size:14.5px}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.pcard{all:unset;box-sizing:border-box;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .12s, transform .12s}
.pcard:hover{border-color:var(--accent);transform:translateY(-1px)}
.pcard:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.pimg{width:100%;aspect-ratio:4/3;object-fit:cover;background:#fff;display:block}
.noimg{display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:12.5px;background:var(--surface-2)}
.pc-b{display:flex;flex-direction:column;gap:2px;padding:10px 12px 12px}
.pc-b b{font-size:14.5px}
.pc-b .faint{font-size:12.5px}
.pc-cat{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:700}
.pc-used{font-size:11.5px;color:var(--ok);margin-top:4px}
.vlist{display:flex;flex-direction:column;gap:6px}
.vrow{background:var(--surface);border:1px solid var(--line);border-radius:10px}
.vrow summary{cursor:pointer;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 14px;list-style:none}
.vrow summary::-webkit-details-marker{display:none}
.vrow[open]{border-color:var(--ink-3)}
.vn{font-weight:700}
.vchips{display:flex;gap:4px}
.vbody{border-top:1px solid var(--line);padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.vcontact{display:flex;gap:16px;flex-wrap:wrap;font-size:13px}
.stable{font-size:13px}
.pform .pf-top{display:flex;gap:16px;align-items:flex-start}
.pf-img{width:200px;flex:none;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.pf-img img,.pf-img .noimg{width:200px;aspect-ratio:4/3;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.optrow{display:grid;grid-template-columns:minmax(0,170px) 150px minmax(0,1fr) auto;gap:8px;margin-bottom:6px}
.optrow input,.optrow select,.pform textarea{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--surface)}
.pdetail .pd-top{display:grid;grid-template-columns:260px minmax(0,1fr);gap:18px}
.pd-img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.plist{margin:6px 0 0;padding-left:18px;font-size:13.5px}
.orow{display:grid;grid-template-columns:160px 1fr;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:13.5px}
.sflist{display:flex;flex-direction:column;gap:8px}
.sfcard{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:16px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px}
.sf-img{width:120px;aspect-ratio:4/3;object-fit:cover;border-radius:8px;display:block}
.sf-b{display:flex;flex-direction:column;gap:4px;min-width:0}
.sf-b b{font-size:15px}
.sf-opts{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.sf-r{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.sf-q{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1}
.sf-q b{font-size:18px}
.tag{display:inline-block;background:var(--ink);color:var(--bg);font-weight:700;font-size:11.5px;padding:2px 8px;border-radius:5px;letter-spacing:.03em}
.sfsync{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:16px;flex-wrap:wrap;border-color:var(--accent);background:var(--accent-soft)}
.cf{display:grid;grid-template-columns:200px minmax(0,1fr);gap:16px;align-items:start}
.cf-img{width:200px;aspect-ratio:4/3;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.cfopt{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
[hidden]{display:none!important}
.cfo-n{font-weight:700;font-size:13.5px}.cfo-gate{display:block;font-weight:400;font-size:12px;margin-top:2px}
.cfopt input{border:1px solid var(--line);border-radius:6px;padding:7px 9px;background:var(--surface);width:100%}
.optchip{all:unset;cursor:pointer;padding:7px 12px;border:1px solid var(--line);border-radius:8px;font-size:13.5px;background:var(--surface)}
.optchip:hover{border-color:var(--ink-3)}
.optchip[aria-checked="true"]{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent);font-weight:700}
.optchip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.est-empty{display:flex;flex-direction:column;gap:8px}
.est-empty input{border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-width:240px;background:var(--surface)}
@media (max-width:760px){.pdetail .pd-top,.cf{grid-template-columns:1fr}.sfcard{grid-template-columns:80px 1fr}.sf-r{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:center}.sf-img{width:80px}.optrow{grid-template-columns:1fr 1fr}.cfopt{grid-template-columns:1fr}.pform .pf-top{flex-direction:column}}

.hf-ro{border:1px dashed var(--line);border-radius:6px;padding:7px 9px;min-height:44px;font-size:13px;background:var(--surface-2)}
.hf-tok{display:inline-block;background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:0 5px;font-size:12px;font-weight:600;margin:1px 0}

.secstat{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}

/* ======== Faceted product browser ======== */
.pbrowse{display:grid;grid-template-columns:230px minmax(0,1fr);gap:22px;align-items:start}
.pfacets{position:sticky;top:12px;display:flex;flex-direction:column;gap:16px;max-height:calc(100vh - 40px);overflow:auto;padding-right:6px}
.facet{display:flex;flex-direction:column;gap:1px}
.facet-h{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);margin-bottom:4px;display:flex;justify-content:space-between;align-items:baseline}
.facet-h .linkish{font-size:11.5px;text-transform:none;letter-spacing:0;font-weight:600}
.fv{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;padding:4px 6px;border-radius:6px;font-size:13.5px;cursor:pointer}
.fv:hover{background:var(--surface-2)}
.fv input{margin:0;accent-color:var(--brand-orange)}
.fv span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fv .fn{font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums lining-nums}
.fv.zero{opacity:.45}
.fmore{font-size:12.5px;align-self:flex-start;margin:2px 6px 0}
.presults{min-width:0}
.ptop{display:flex;gap:12px;align-items:center;margin-bottom:8px}
.ptop input[type=search]{flex:1;min-width:0;border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:var(--surface);font-size:14.5px}
.ptop input[type=search]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.ptop select{border:1px solid var(--line);border-radius:8px;padding:6px 8px;background:var(--surface)}
.pcount{font-size:13px;color:var(--ink-2);margin-bottom:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.fchips{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center}
.fchip{all:unset;cursor:pointer;font-size:12px;padding:3px 9px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font-weight:600}
.fchip:hover{background:var(--accent);color:var(--accent-ink)}
.pc-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.pc-tags span{font-size:11px;padding:1px 7px;border-radius:99px;background:var(--surface-2);color:var(--ink-2)}
.pc-tags .smp{background:#EAF4DC;color:var(--ok)}
.pc-tags .used{background:var(--info-soft);color:var(--info)}
.pbrowse .pgrid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
/* In the picker window */
.modal.wide .pbrowse.pick{grid-template-columns:200px minmax(0,1fr);gap:18px}
.modal.wide .pbrowse.pick .pfacets{max-height:68vh}
.modal.wide .pbrowse.pick .presults{max-height:68vh;overflow:auto;padding-right:4px}
.modal.wide .pbrowse.pick .pgrid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
#pickBody{background:transparent}
@media (max-width:860px){.pbrowse,.modal.wide .pbrowse.pick{grid-template-columns:1fr}.pfacets{position:static;max-height:none;flex-direction:row;flex-wrap:wrap;gap:12px}.facet{min-width:160px}}

.sfcard.deciding{border-color:var(--info)}
.sf-alts{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}
.sf-alts .alt{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2);background:var(--surface-2);border-radius:6px;padding:2px 8px 2px 2px}
.sf-alts .alt img{width:28px;height:21px;object-fit:cover;border-radius:4px}
.cf-actions{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px}
.cmp-opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.cmp-opt{display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--surface)}
.cmp-opt .lt{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.cmp-opt .pimg{border-radius:8px}

.cat-h{cursor:pointer}
.cat-n{display:flex;align-items:center;gap:8px;min-width:0}
.cat-ren{all:unset;cursor:pointer;font-size:12px;font-weight:600;color:var(--accent);opacity:0;padding:2px 6px;border-radius:4px}
.cat-h:hover .cat-ren,.cat-ren:focus-visible{opacity:1}
.cat-ren:hover{background:var(--accent-soft)}
.cat-n .catname{font:inherit;font-weight:700;border:1px solid var(--accent);border-radius:6px;padding:3px 8px;background:var(--surface);color:var(--ink);min-width:220px}
.cat-sub{font-size:13px;color:var(--ink-2)}
.cat-sub b{color:var(--ink);font-variant-numeric:tabular-nums lining-nums;margin-left:4px}

.modal.tall{height:92vh;max-height:92vh}
.pdfprev{height:100%;display:flex;flex-direction:column}
.pdfwrap{position:relative;flex:1;min-height:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#525659}
.pdfwrap iframe{width:100%;height:100%;border:0;display:block}
.pdfload{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:8px;color:#fff}

.sf-cost{font-size:12.5px;margin-top:4px}
.sf-cost b{font-variant-numeric:tabular-nums lining-nums}
.linkbox{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:7px 9px;border:1px dashed var(--accent);border-radius:6px;background:var(--surface);font-size:13.5px}
.linkbox .faint{flex-basis:100%}
.linksel{border:1px solid var(--line);border-radius:6px;padding:4px 8px;background:var(--surface);font-size:13px}
.i-d .tag{font-size:10.5px;padding:1px 6px;vertical-align:1px}

.linkchip{display:inline-block;font-size:10.5px;font-weight:700;padding:0 6px;border-radius:4px;border:1px solid var(--line);color:var(--ink-2);vertical-align:1px;margin-left:4px}
.linkbox .btn{flex:none}

.vrow2{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.vmain{display:flex;flex-direction:column;gap:2px;min-width:0}
.vmain .linkish{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vmeta{font-size:12.5px;color:var(--ink-2)}
.vstat{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.vstat .chip{display:inline-flex;align-items:center;gap:6px}
.imp-banner{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.ib{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center}
.ib .ibar{grid-column:1/-1;height:6px;border-radius:3px;background:rgba(0,0,0,.08);overflow:hidden}
.ib .ibar span{display:block;height:100%;background:var(--accent);transition:width .6s}
@media (max-width:760px){.vrow2{grid-template-columns:1fr}}

.bulktype{border:1px solid var(--line);border-radius:6px;padding:3px 6px;background:var(--surface);font-size:12.5px;margin-left:6px}

.infolist{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 18px;margin:4px 0 0}
.infolist dt{font-size:12px;color:var(--ink-3);margin-bottom:2px}
.infolist dd{margin:0;font-size:14.5px;font-weight:600}

.vrow2{grid-template-columns:minmax(0,1fr) 280px 340px}
.vstat{justify-self:start}
.vrow2>.row{justify-self:end}
@media (max-width:1100px){.vrow2{grid-template-columns:minmax(0,1fr) 220px 300px}}
@media (max-width:760px){.vrow2{grid-template-columns:1fr}.vrow2>.row{justify-self:start}}

/* ======== Book order ======== */
.book{display:flex;flex-direction:column;gap:6px}
.book-div{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);margin:10px 0 2px}
.bk{background:var(--surface);border:1px solid var(--line);border-radius:10px}
.bk.open{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.bk-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto auto 18px;gap:12px;align-items:center;padding:10px 12px}
.bk-row[role=button]{cursor:pointer}
.bk-row[role=button]:hover{background:var(--surface-2);border-radius:10px}
.bk-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.bk-ord{position:relative;align-self:stretch;min-height:22px}
.bk-grip{top:50%;transform:translateY(-50%);left:0}
.bk:hover .bk-grip,.bk-grip:focus{opacity:.8}
.bk-t{display:flex;flex-direction:column;min-width:0}
.bk-t b{font-weight:600;font-size:14.5px}
.bk-src{font-size:12px;color:var(--ink-3)}
.bk-p{font-size:12.5px;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums lining-nums}
.bk-s{justify-self:end;font-size:12.5px}
.bk-file{color:var(--ok);max-width:220px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.bk-auto{color:var(--ink-3)}
.bk.nofile .bk-t b{color:var(--ink-2)}
.bk-ed{border-top:1px solid var(--line);padding:14px 16px;display:flex;flex-direction:column;gap:14px;background:var(--bg);border-radius:0 0 10px 10px}
.bk-ed .field>span{font-size:12px;color:var(--ink-2);margin-bottom:4px;display:block}
.bk-ed input:not([type]),.bk-ed input[type=text],.bk-ed select,.bk-ed .field input{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--surface)}
.bk-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.bk-grid .field input{width:100%}
.bk-opts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.bk-opt{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:9px 10px;cursor:pointer;background:var(--surface)}
.bk-opt.on{border-color:var(--accent);background:var(--accent-soft)}
.bk-opt input{margin-top:3px;accent-color:var(--brand-orange)}
.bk-opt span{display:flex;flex-direction:column;font-size:13px}
.bk-opt .faint{font-size:12px}
.bk-sub{margin-top:8px;gap:8px;font-size:13px}
.pfx{width:90px}
.bk-filebox{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.menu-pop .faint{font-size:12px}
@media (max-width:760px){.bk-row{grid-template-columns:22px 1fr auto}.bk-p{grid-column:2}.bk-s{grid-column:2;justify-self:start}.bk-grid,.bk-opts{grid-template-columns:1fr}}
.bk-row{grid-template-columns:22px minmax(170px,1fr) minmax(0,max-content) minmax(0,210px) 18px}
.bk-p{white-space:normal;text-align:right;max-width:170px}
.bk-s{max-width:210px;overflow:hidden}
.bk-file{max-width:200px}
.bk-opts{grid-template-columns:1fr;gap:6px}
.bk-opt{align-items:center;padding:8px 10px}
.bk-opt span{flex-direction:row;gap:8px;align-items:baseline;flex-wrap:wrap}
.bk-opt input{margin-top:0}

.bk-row{grid-template-columns:22px minmax(0,1fr) minmax(0,240px) 18px}
.bk-r{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:0;text-align:right}
.bk-p{max-width:none;white-space:nowrap}
.bk-s{max-width:240px}
.bk-file{max-width:240px}
.warnt{color:var(--warn);font-weight:600}
@media (max-width:760px){.bk-row{grid-template-columns:22px 1fr 18px}.bk-r{grid-column:2;align-items:flex-start;text-align:left}}
/* Book editor: keep radios and small inputs at their natural size */
.bk-ed .bk-opt{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;text-align:left}
.bk-ed .bk-opt input[type=radio]{width:auto;margin:0;padding:0;border:none;justify-self:start}
.bk-ed .bk-opt>span{display:flex;flex-direction:column;align-items:flex-start;gap:1px}
.bk-ed .bk-opt>span b{font-size:13.5px}
.bk-ed .bk-sub{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.bk-ed .bk-sub input,.bk-ed input.pfx{width:90px;flex:none}
.bk-ed .bk-sub label{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bk-ed input[type=checkbox]{width:auto;flex:none}

/* Guided EJCDC editor */
.gd-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:4px 0 10px}
.gd-head h2{margin:2px 0 4px;font-size:22px}
.gd-prog{height:5px;border-radius:3px;background:var(--surface-2);overflow:hidden;margin-bottom:12px}
.gd-prog span{display:block;height:100%;background:var(--accent)}
.gd-term{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px;margin-bottom:14px}
.gd{display:grid;grid-template-columns:250px minmax(0,1fr);gap:18px;align-items:start}
.gd-rail{position:sticky;top:12px;display:flex;flex-direction:column;gap:2px;max-height:calc(100vh - 40px);overflow:auto}
.gd-a{all:unset;cursor:pointer;display:grid;grid-template-columns:26px 1fr auto;gap:8px;align-items:center;padding:7px 8px;border-radius:8px;font-size:13px;color:var(--ink-2)}
.gd-a:hover{background:var(--surface-2)}
.gd-a.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:inset 3px 0 0 var(--accent)}
.gd-st{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;background:var(--surface-2);color:var(--ink-3)}
.gd-a.done .gd-st{background:var(--accent);color:var(--accent-ink)}
.gd-at{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gd-b{font-size:11px;background:#FDE9DC;color:#A8430F;border-radius:10px;padding:1px 7px}
.gd-main{padding:20px 24px}
.gd-ah h3{margin:2px 0 12px;font-size:19px}
.gd-guide{background:var(--surface-2);border-radius:8px;padding:8px 12px;margin-bottom:14px;font-size:13px;color:var(--ink-2)}
.gd-guide summary{cursor:pointer;font-weight:600;color:var(--ink)}
.gd-guide p{margin:8px 0;line-height:1.5}
.gd-note{border:1px solid #F5C9AC;background:#FEF6F0;border-radius:10px;padding:12px 14px;margin:12px 0}
.gd-nt{font-weight:700;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:#C2530F;margin-bottom:4px}
.gd-note .faint{font-size:12.5px;line-height:1.45}
.gd-choices{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.gd-ch{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer;font-size:13px;line-height:1.45}
.gd-ch input{width:auto;margin-top:3px}
.gd-ch.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.gd-p{display:grid;grid-template-columns:62px minmax(0,1fr) auto;gap:10px;padding:7px 6px;border-radius:6px;line-height:1.6;font-size:14px}
.gd-p:hover{background:var(--bg)}
.gd-p.l-a{padding-left:28px}.gd-p.l-n{padding-left:52px}.gd-p.l-l{padding-left:76px}
.gd-n{color:var(--ink-3);font-size:13px;text-align:right;padding-top:1px}
.gd-p.rm .gd-t,.gd-p.rm .gd-n{text-decoration:line-through;color:var(--ink-3);opacity:.6}
.gd-p.rm input{pointer-events:none}
.gd-act{display:flex;gap:4px;opacity:0;transition:opacity .15s}
.gd-p:hover .gd-act,.gd-p.rm .gd-act,.gd-act:focus-within{opacity:1}
.gd-t textarea{width:100%;font:inherit;line-height:1.5}
.gd-fill{display:inline-flex;align-items:center;gap:4px;vertical-align:baseline}
.gd-fill input{width:auto;font:inherit;font-size:13.5px;padding:1px 6px;border-radius:5px;border:1px solid var(--line);background:var(--surface);min-width:0}
.gd-fill.open input{border-color:#F36523;background:#FFF4EC}
.gd-fill.auto input{border-color:#8DC740;background:#F2F9E8}
.gd-auto{font-size:10.5px;color:#5B8A1E;text-transform:uppercase;letter-spacing:.04em}
.gd-omit{font-size:11.5px}
.gd-om{color:var(--ink-3);font-size:12.5px;font-style:italic}
.gd-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}
@media (max-width:820px){.gd{grid-template-columns:1fr}.gd-rail{position:static;flex-direction:row;overflow-x:auto}.gd-at{display:none}.gd-p{grid-template-columns:40px 1fr}.gd-act{grid-column:2;opacity:1}}
.gd-act{align-self:start}
.gd-term-sw{border-bottom:1px dotted #8DC740}
.fe-off{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.fe-toggle{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:14px;font-size:13px}
.gd-flat .gd-p{grid-template-columns:0 minmax(0,1fr) auto;gap:0 10px}
.gd-p.l-c .gd-t{text-align:center;font-weight:700}
.gd-p.l-ti{padding-left:34px}
.gd-p.tight{padding-top:2px;padding-bottom:2px}
.gd-or{display:flex;align-items:center;gap:10px;margin:4px 0;color:var(--ink-3);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.gd-or::before,.gd-or::after{content:"";flex:1;border-top:1px dashed var(--line)}
.gd-tbl{overflow-x:auto}
.gd-tbl table{border-collapse:collapse;font-size:13px;margin:4px 0}
.gd-tbl td{border:1px solid var(--line);padding:5px 8px;vertical-align:top}
.gd-tbl tr:first-child td{font-weight:600;background:var(--surface-2)}
.gd-p.rm .gd-tbl{opacity:.45;text-decoration:line-through}
.divpick{columns:250px 3;column-gap:20px}
.divpick label{break-inside:avoid;display:grid;grid-template-columns:18px 22px 1fr;gap:8px;align-items:start;padding:4px 0;line-height:1.35;cursor:pointer}
.divpick input{width:auto;margin:2px 0 0}
.divpick .faint{font-variant-numeric:tabular-nums}
.split.nopv{grid-template-columns:1fr}
.pv-split{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:18px;align-items:start}
.pv-side{position:sticky;top:12px;background:var(--surface-2);border-radius:10px;padding:12px;max-height:calc(100vh - 24px);display:flex;flex-direction:column}
.pv-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.pv-head .btn{margin-left:auto}
.pv-page{overflow:auto;min-height:200px}
@media (max-width:1100px){.pv-split{grid-template-columns:1fr}.pv-side{position:static;max-height:none}}
/* Submittal log */
.sl-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.sl-stat{all:unset;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:1px}
.sl-stat b{font-size:24px;font-weight:700;line-height:1.1}.sl-stat span{font-weight:600;font-size:13.5px}.sl-stat small{color:var(--ink-3);font-size:12px}
.sl-stat:hover{border-color:var(--ink-3)}.sl-stat.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.sl-stat.waiting b{color:var(--ink-2)}.sl-stat.review b{color:var(--info)}.sl-stat.done b{color:#5B8A1E}.sl-stat.back b{color:var(--warn)}
.sl-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.sl-tools input[type=search]{max-width:260px}
.sl{display:flex;flex-direction:column;gap:10px}
.sl-sec{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.sl-sh{all:unset;cursor:pointer;box-sizing:border-box;width:100%;display:grid;grid-template-columns:14px auto minmax(0,1fr) auto 90px auto;gap:10px;align-items:center;padding:12px 16px}
.sl-sh:hover{background:var(--surface-2)}.sl-sn{color:var(--ink-3);font-variant-numeric:tabular-nums}.sl-sc{font-size:12.5px;white-space:nowrap}
.sl-bar{height:5px;background:var(--surface-2);border-radius:3px;overflow:hidden}.sl-bar span{display:block;height:100%;background:#8DC740}
.sl-rows{border-top:1px solid var(--line)}
.sl-row{display:grid;grid-template-columns:96px minmax(0,1fr) 110px 150px;gap:12px;align-items:center;padding:9px 16px;cursor:pointer;border-top:1px solid var(--surface-2)}
.sl-row:first-child{border-top:none}.sl-row:hover{background:var(--bg)}.sl-row.open{background:var(--surface-2)}
.sl-row.gone{opacity:.6}
.sl-no{font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.sl-d{display:flex;flex-direction:column;min-width:0}.sl-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sl-row.open .sl-desc{white-space:normal}
.sl-meta{font-size:12px}.sl-date{font-size:12.5px;text-align:right}.sl-st{justify-self:end}
.sl-ed{padding:12px 16px 16px;background:var(--surface-2);border-top:1px solid var(--line)}
.sl-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:10px}
.sl-ed textarea{width:100%}
.sl-more{margin:6px 0;font-size:13px}.sl-more summary{cursor:pointer;color:var(--ink-2)}.sl-more .sl-grid{margin-top:8px}
.sl-src{font-size:12.5px;background:var(--surface);border-radius:8px;padding:8px 10px;margin-top:8px}
.chip.ok{background:#E6F1D8;color:#3F6A12}
@media (max-width:820px){.sl-stats{grid-template-columns:repeat(2,1fr)}.sl-row{grid-template-columns:80px 1fr}.sl-date{display:none}.sl-st{grid-column:2;justify-self:start}.sl-grid{grid-template-columns:1fr 1fr}.sl-sh{grid-template-columns:14px auto 1fr}.sl-bar,.sl-sc{display:none}}
.toast{display:flex;align-items:center;gap:14px}.toast-undo{all:unset;cursor:pointer;font-weight:700;color:#F9A56B;text-decoration:underline}
[data-f="unit"]{text-transform:uppercase}
.bp-ban img.wide{background:none;padding:0;border-radius:0;height:38px}
.toc .crow{display:grid;grid-template-columns:78px 1fr 44px;gap:8px;margin-bottom:3px}
.toc .crow span:last-child{text-align:right}
.toc .crow.hd{font-weight:700;border-bottom:1px solid #111;padding-bottom:2px;margin-bottom:6px;font-size:.92em}
.toc .grp{font-weight:700;margin:10px 0 4px}
/* Step-by-step spec sections */
.sg-part{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--ink-3);text-transform:uppercase;margin:10px 8px 2px}
.gd-a.off .gd-at{text-decoration:line-through;color:var(--ink-3)}
.sg-ah{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.sg-notes,.sg-note{font-size:12.5px;color:#2B5D8C;background:#EEF4FA;border-left:3px solid #8DB3D9;padding:5px 10px;margin:8px 0 2px 62px;border-radius:0 6px 6px 0}
.sg-notes{margin-left:0}.sg-notes p{margin:3px 0}
.sg-p .gd-t{line-height:2}
.sg-chip{all:unset;cursor:pointer;display:inline-block;padding:0 8px;margin:1px 2px;border:1px solid var(--line);border-radius:12px;font-size:13px;line-height:1.7;background:var(--surface);color:var(--ink-2)}
.sg-chip:hover{border-color:var(--ink-3)}
.sg-chip.on{background:#FDE9DC;border-color:#F36523;color:#8A3308;font-weight:600}
.sg-chip.opt{border-style:dashed}
.sg-grp.open .sg-chip{border-color:#F5B58A}
.sg-in{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.sg-in input{width:auto;font:inherit;font-size:13.5px;padding:1px 6px;border-radius:5px;border:1px solid #F36523;background:#FFF4EC}
.sg-in.set input{border-color:var(--line);background:var(--surface)}
.sg-hint{all:unset;cursor:pointer;font-size:11.5px;color:#5B8A1E;background:#F2F9E8;border-radius:10px;padding:0 7px;line-height:1.7}
.sg-hint:hover{text-decoration:underline}
.sg-office{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:#5B8A1E;border:1px solid #CFE3B4;border-radius:8px;padding:0 5px;vertical-align:1px}
.sg-unused{all:unset;cursor:pointer;display:block;margin:4px 0 4px 62px;padding:5px 10px;font-size:12.5px;color:var(--ink-2);border:1px dashed var(--line);border-radius:8px}
.sg-unused:hover{background:var(--bg)}.sg-unused span:first-child{margin-right:6px;color:var(--ink-3)}
.sg-fold{display:block;margin:2px 0 6px 62px;font-size:12.5px}
.sg-picks{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:4px 0 10px;font-size:13px}
.sg-tpls{margin-bottom:14px}.sg-tlist{margin-top:8px;display:flex;flex-direction:column}
.sg-trow{display:grid;grid-template-columns:90px minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.gd-fill input[type=date],.gd-fill input[type=time]{width:auto;font-size:13px;padding:1px 4px}.gd-dt{font-size:12.5px;color:var(--ink-2);margin-left:4px}.gd-auto-day{padding:1px 8px;border:1px dashed var(--line);border-radius:5px;font-size:13.5px}
.gd-fill select{width:auto;font-size:13.5px;padding:1px 4px;border-radius:5px;border:1px solid var(--line)}.gd-fill.open select{border-color:#F36523;background:#FFF4EC}
/* Consultant sections */
.ext-by{background:var(--info-soft);color:var(--info);font-size:11px} /* "by others": the blue that notes used */
.toct:has(.ext-by){display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tocrow.ext.open{background:var(--surface-2)}
.ext-ed{background:var(--surface-2);padding:10px 14px 14px;border-radius:0 0 8px 8px;margin-bottom:6px}
.ext-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px;margin-bottom:10px}
.ext-sum{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:-4px 0 12px}
.ls-wrap{max-height:55vh;overflow:auto;border:1px solid var(--line);border-radius:8px}
table.ls{width:100%;border-collapse:collapse;font-size:13px}table.ls th{position:sticky;top:0;background:var(--surface);text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}
table.ls td{padding:4px 8px;border-bottom:1px solid var(--surface-2)}table.ls tr.off td{opacity:.45}
table.ls input[type=checkbox]{width:auto}.ls-by{width:140px;font-size:12.5px;padding:2px 6px}
@media (max-width:760px){.ext-grid{grid-template-columns:1fr}}
.ie-grid .f select{border:1px solid var(--line);border-radius:6px;padding:6px 6px;background:var(--surface);font-size:13.5px;color:var(--ink)}
.sg-setup{display:flex;flex-direction:column;gap:10px;max-width:760px}
.sg-kind{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--surface)}
.sg-kind.on{border-color:#F5B58A;background:#FFFAF6}
.sg-kh{display:flex;align-items:center;gap:8px;font-size:15px;cursor:pointer}.sg-kh input,.sg-kp input{width:auto}
.sg-kb{margin:8px 0 0 26px;display:flex;flex-direction:column;gap:6px;font-size:13.5px}
.sg-kp{display:flex;align-items:center;gap:6px;cursor:pointer}
.sg-kblank{display:flex;align-items:center;gap:6px;color:var(--ink-2);font-size:13px}
.sg-newkind{display:flex;gap:8px;margin-top:4px}.sg-newkind input{max-width:280px}
.sg-setup{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;max-width:900px}
.sg-setup .sg-kind{padding:9px 12px}.sg-setup .sg-kind.on{grid-column:1/-1;padding:12px 14px}
.sg-setup .sg-kind:not(.on) .sg-kh{font-size:14px}
.sg-setup .sg-newkind,.sg-setup>p{grid-column:1/-1}
/* Spec paragraph levels: A. / 1. / a. / 1) / a) each step in, like the printed section */
.gd-p.sg-p{grid-template-columns:34px minmax(0,1fr) auto;padding-top:5px;padding-bottom:5px}
.gd-p.sg-p .gd-n{text-align:left}
.gd-p.sg-p.l-p1{padding-left:6px}.gd-p.sg-p.l-p2{padding-left:40px}.gd-p.sg-p.l-p3{padding-left:74px}.gd-p.sg-p.l-p4{padding-left:108px}.gd-p.sg-p.l-p5{padding-left:142px}
.sg-note{margin-left:40px}
.sg-unused,.sg-fold{margin-left:40px}
.sg-offk{font-size:12px;color:var(--ink-3);padding:6px 8px 10px;line-height:1.5}
/* Simple article view */
.sg-how{font-size:13px;color:var(--ink-2);margin:2px 0 4px;max-width:720px}
.sq-head{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#C2530F;margin:4px 0 8px}
.sq-list{display:flex;flex-direction:column;border:1px solid #F5C9AC;border-radius:10px;overflow:hidden;margin-bottom:14px}
.sq{display:grid;grid-template-columns:220px minmax(0,1fr);gap:14px;padding:12px 14px;background:#FFFAF6;border-top:1px solid #F8DCC8}
.sq:first-child{border-top:none}
.sq-l{font-size:14px;line-height:1.35}.sq-l b{display:block}.sq-c{display:block;font-size:11.5px;color:var(--ink-3)}
.sq-v{line-height:2}.sq-ctx{font-size:12px;color:var(--ink-3);line-height:1.4;margin-top:4px}
.sq-done{background:#F2F9E8;color:#3F6A12;border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:14px}
.sq-prev summary{cursor:pointer;font-weight:600;font-size:14px;margin-bottom:8px}
.sq-paper{background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px 18px;font-family:"Liberation Serif","Times New Roman",serif;font-size:13.5px;line-height:1.45;color:#111}
.sq-pl{display:grid;grid-template-columns:34px 1fr;margin:3px 0}.sq-pl.l-art{font-weight:700;margin-top:4px}
.sq-pl.l-p2{padding-left:30px}.sq-pl.l-p3{padding-left:60px}.sq-pl.l-p4{padding-left:90px}.sq-pl.l-p5{padding-left:120px}
.sq-paper mark{background:#FFE58A}
.sg-railmore{display:block;font-size:12.5px;margin:10px 8px 4px}
@media (max-width:820px){.sq{grid-template-columns:1fr;gap:4px}}
/* "How it will read" matches the section editor */
.sq-paper{font-family:inherit;font-size:inherit;line-height:1.5;color:var(--ink);padding:12px 14px}
.sq-pl{grid-template-columns:52px minmax(0,1fr);gap:6px;margin:0;padding:3px 4px}
.sq-pl>span:first-child{font-family:var(--mono);font-size:12px;color:var(--ink-3);text-align:right;padding-top:3px}
.sq-pl>span:last-child{padding:0 6px}
.sq-pl.l-art{font-weight:600;margin-top:2px}.sq-pl.l-part{font-weight:600;letter-spacing:.02em}
.sq-pl.l-p1{padding-left:4px}.sq-pl.l-p2{padding-left:30px}.sq-pl.l-p3{padding-left:56px}.sq-pl.l-p4{padding-left:82px}.sq-pl.l-p5{padding-left:108px}
.sg-setup.inline{max-width:none;margin-bottom:12px}
.sg-apply{position:sticky;bottom:12px;display:flex;align-items:center;gap:10px;justify-content:flex-end;background:var(--surface);border:1px solid #F5C9AC;border-radius:10px;padding:10px 12px;margin:0 0 14px;box-shadow:0 4px 14px rgba(0,0,0,.08)}
.sg-apply span{margin-right:auto;font-size:13px;color:#A8430F}
/* Article text: click to edit */
.sq-texthead{font-weight:600;font-size:14px;margin:4px 0 8px}
.sq-pl{grid-template-columns:52px minmax(0,1fr) auto}
.sq-pl.ed{cursor:text;border-radius:5px}.sq-pl.ed:hover{background:var(--surface-2)}
.sq-act{display:flex;gap:10px;opacity:0;font-size:12px;padding-top:2px}.sq-pl.ed:hover .sq-act{opacity:1}
.sq-act .linkish{font-size:12px}
.sq-pl.unused>span:nth-child(2){text-decoration:line-through;color:var(--ink-3)}
.sq-pl.editing textarea{width:100%;font:inherit;line-height:1.5;padding:6px 8px}
.sq-unused{all:unset;cursor:pointer;display:block;font-size:12.5px;color:var(--ink-3);padding:3px 10px;margin:2px 0 2px 60px;border:1px dashed var(--line);border-radius:6px}
.sq-unused span{color:var(--ink-3)}.sq-unused:hover{color:var(--ink-2);background:var(--bg)}
.sq-unused.l-p2,.sq-fold.l-p2{margin-left:86px}.sq-unused.l-p3,.sq-fold.l-p3{margin-left:112px}.sq-unused.l-p4,.sq-fold.l-p4{margin-left:138px}
.sq-fold{display:block;font-size:12.5px;margin:0 0 4px 60px}
.sq-notes{font-size:12.5px;color:#2B5D8C;margin-bottom:10px}.sq-notes summary{cursor:pointer}.sq-notes p{margin:4px 0 4px 14px}
.div-panel summary{cursor:pointer;list-style:revert}.div-panel[open] summary{margin-bottom:4px}
.mf-more{display:block;margin:4px 0 8px 6px;font-size:13px}
/* Product cards: steady hover (no lift/animation), so the grid doesn't repaint and flash while the mouse moves */
.pcard{transition:none;transform:none;contain:layout paint;backface-visibility:hidden}
.pcard:hover{transform:none;border-color:var(--accent);box-shadow:none;outline:2px solid var(--accent);outline-offset:-2px}
.pcard .pimg{background:#fff}
.presults,.pgrid{contain:content}
/* TSWDG style guide: Futura for headings/accents (Jost is the web stand-in when Futura isn't installed) */
@font-face{font-family:"Jost";font-weight:300 700;font-display:swap;src:url(/fonts/jost-latin.woff2) format("woff2")}
/* Numbers everywhere in the app use Jost's even, lining digits (Raleway's numerals rise and drop, so figures never line up);
   letters stay Raleway. unicode-range limits this face to digits, $, and %. */
@font-face{font-family:"GW Numerals";font-weight:300 700;font-display:swap;src:url(/fonts/jost-latin.woff2) format("woff2");unicode-range:U+0024-0025,U+0030-0039}
:root{--display:"Futura Md BT","Futura",Jost,"Raleway",system-ui,sans-serif;--brand-lightgray:#D8D8DA}
h1,h2,h3,.brand .app b,.gd-head h2,.sq-head,.label{font-family:var(--display)}
h1,h2,h3,.brand .app b{font-weight:500;letter-spacing:.005em}
/* One dropdown style everywhere: matches the text boxes (border, radius, font) with a small chevron */
select:not([multiple]){appearance:none;-webkit-appearance:none;-moz-appearance:none;border:1px solid var(--line);border-radius:8px;background-color:var(--surface);color:var(--ink);font:inherit;font-size:14px;line-height:1.3;padding:7px 30px 7px 10px;min-height:34px;cursor:pointer;max-width:100%}
select:not([multiple]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2358595B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;background-size:10px 6px!important;padding-right:30px!important}
select:not([multiple]):hover{border-color:var(--ink-3)}
select:not([multiple]):focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
select:not([multiple]):disabled{opacity:.55;cursor:default}
.part .opts select,.ls select,table select{min-height:28px;padding-top:3px;padding-bottom:3px;font-size:12.5px}
.cols-pop{min-width:240px;padding:6px 0}.cols-opt{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:13.5px;cursor:pointer}.cols-opt:hover{background:var(--surface-2)}.cols-opt input{width:auto}
/* Project cards: fixed rows so every card lines up */
.cards{align-items:stretch}
.card.pc{display:grid;grid-template-rows:auto auto auto auto 1fr auto;gap:8px;cursor:pointer;min-width:0}
.card.pc:hover{border-color:var(--accent)}
.pc-top{display:flex;align-items:center;gap:8px;min-height:24px}.pc-num{font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.pc-name{margin:0;font-size:19px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.4em}
.pc-sub{font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-dates{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-3)}.pc-dates b{color:var(--ink-2);font-weight:600}
.pc-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;border-top:1px solid var(--surface-2);padding-top:10px;align-content:start}
.pc-stat{display:flex;flex-direction:column;min-width:0}.pc-stat span{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.pc-stat b{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}.pc-stat small{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-foot{display:flex;align-items:center;gap:8px;justify-content:space-between;border-top:1px solid var(--surface-2);padding-top:10px}
.pc-chips{display:flex;gap:6px;flex-wrap:wrap}.pc-ed{font-size:12px;white-space:nowrap}
.pc-group{margin:22px 0 10px;font-size:15px}
.star{cursor:pointer;font-size:20px;line-height:1;color:var(--ink-3);padding:2px 4px;border-radius:6px;user-select:none}
.star:hover{color:#F36523;background:var(--surface-2)}.star.on{color:#F36523}
.star.star-h{font-size:22px;vertical-align:3px;margin-left:4px}
.vwrap{display:flex;flex-direction:column}
.vtypes{display:block;font-size:12px;color:var(--ink-3);margin-top:3px;line-height:1.4}
.vcats{background:var(--surface-2);border:1px solid var(--line);border-top:none;border-radius:0 0 10px 10px;padding:12px 14px;margin:-6px 0 8px}
.vcat-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 18px}
.vcat-g .label{margin-bottom:4px}.vcat{display:flex;align-items:center;gap:6px;font-size:13.5px;padding:2px 0;cursor:pointer}.vcat input{width:auto}
.pc-dates{display:grid;grid-template-columns:1fr 1fr;gap:12px;flex-wrap:nowrap}
.pc-dates span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.pc-chips{flex-wrap:nowrap;overflow:hidden;min-width:0}.pc-chips .chip{flex:none}
.pc-foot{min-width:0}
/* Card footer: checks on one line, "Edited …" on its own line below, so nothing gets cut off */
.pc-foot{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:6px}
.pc-chips{flex-wrap:wrap;overflow:visible}
.pc-ed{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
/* Deliverables */
.dl-ms{padding:0;margin-bottom:12px;overflow:hidden}
.dl-h{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;align-items:center;gap:10px;padding:14px 16px;font-size:15px}.dl-h:hover{background:var(--surface-2)}
.dl-list{border-top:1px solid var(--line)}
.dl-row{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:14px;align-items:center;padding:10px 16px;border-top:1px solid var(--surface-2)}
.dl-row:first-child{border-top:none}
.dl-kind{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2)}
.dl-kind{color:#C84E15} /* one color for every kind */
.dl-t{display:flex;flex-direction:column;min-width:0}.dl-t b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dl-t .faint{font-size:12.5px}
.dl-act{display:flex;gap:6px;align-items:center}
.dl-exp summary{cursor:pointer}.dl-exp .dl-row{padding-left:0;padding-right:0}
.d-opt{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-top:6px;cursor:pointer}
.d-opt input{width:auto;margin-top:3px}.d-opt b{display:block}.d-opt .faint{font-size:12.5px}
.d-savebox{display:flex;align-items:center;gap:6px;font-size:13px;background:var(--surface-2);border-radius:8px;padding:4px 8px}.d-savebox select{min-height:28px;padding-top:3px;padding-bottom:3px;font-size:13px}
@media (max-width:760px){.dl-row{grid-template-columns:1fr}.dl-act{flex-wrap:wrap}}
.cmp-tot{width:100%;border-collapse:collapse;font-size:14px}.cmp-tot th{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);font-weight:600;padding:0 8px 6px;text-align:left}
.cmp-tot th.r,.cmp-tot td.r{text-align:right}.cmp-tot td{padding:7px 8px;border-top:1px solid var(--surface-2);vertical-align:top;font-variant-numeric:tabular-nums}
.cmp-tot td .faint{font-size:12px;font-weight:400}.cmp-tot tr.k-sub td{font-weight:600}.cmp-tot tr.k-tot td{font-weight:700;font-size:16px;border-top:2px solid var(--ink-2)}
.cmp-tot .up{color:var(--crit)}.cmp-tot .down{color:var(--ok)}.rate-ch{color:#C84E15!important;font-weight:600!important}
.tot-story{font-size:13px;color:var(--ink-2);margin:10px 0 0;line-height:1.45}
.toc .crow.pn{grid-template-columns:70px minmax(0,1fr) 150px 38px}.toc .crow .spn{white-space:nowrap;font-size:.9em;text-align:left}
.d-msin{width:220px;min-height:30px;padding:4px 8px;border:1px solid var(--line);border-radius:8px}
.toc .crow.pn{align-items:baseline}.toc .crow .spn{font-size:inherit}
/* Planned sections */
/* TBD selections */
.optchip.tbd{border-style:dashed;color:var(--ink-2)}
.optchip.tbd[aria-checked="true"]{background:var(--mark);border-color:#C9A200;box-shadow:inset 0 0 0 1px #C9A200;color:#111;border-style:solid}
.chip.tbd{background:var(--warn-soft);color:var(--warn)} /* same yellow as "to review" and Planned */
mark.tbdmark{background:var(--mark);color:#111;padding:0 2px}
.tbdlist{margin:0;padding-left:18px;font-size:13.5px;line-height:1.6}
.cf-text input{flex:1;min-width:0}
/* Comparison summary: give the totals table the room it needs */
.cmp-sum{grid-template-columns:minmax(0,1fr) minmax(420px,1.25fr)}
.cmp-sum .est-sum-r{min-width:0;overflow-x:auto}
.cmp-tot td:first-child{min-width:130px}
.cmp-tot td.r,.cmp-tot th.r{white-space:nowrap}
.cmp-tot td:last-child,.cmp-tot th:last-child{padding-right:2px}
@media (max-width:900px){.cmp-sum{grid-template-columns:1fr}}
/* Swap / add option: suggested look-alikes */
.simbar{display:flex;flex-direction:column;gap:8px;padding:10px 12px;margin-bottom:14px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.simtraits .optchip.sm{padding:4px 10px;font-size:12.5px}
.pbrowse.simon{grid-template-columns:minmax(0,1fr)}
.pbrowse.simon .pfacets{display:none}
.modal.wide .pbrowse.pick.simon{grid-template-columns:minmax(0,1fr)}
.pc-tags .simt{background:var(--accent-soft);color:var(--accent)}
/* Two-click delete: armed state */
.btn.armed,.btn.ghost.armed,.btn.sm.armed{background:var(--crit);border-color:var(--crit);color:#fff;white-space:nowrap}
.tocx.armed{visibility:visible}
/* Technical specifications page */
.sec-head{margin-bottom:14px}.sec-head .muted{font-size:13px;margin-top:2px}
.tocdiv{text-transform:uppercase}
.tocrow.planned .toct{font-weight:500;color:var(--ink-2)}
.tocrow.planned .tocn{color:var(--ink-3)}
.chip.plan{background:var(--warn-soft);color:var(--warn)} /* same yellow as "to review" */
.plan-note{display:block;font-size:12.5px;font-weight:400;color:var(--ink-3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tocrow.planned.open{background:var(--surface-2);border-radius:6px 6px 0 0}
.plan-ed{display:flex;gap:8px;align-items:center;padding:4px 8px 10px 114px;background:var(--surface-2);border-radius:0 0 6px 6px;margin-bottom:4px}
.plan-ed input{flex:1;min-width:0;font-size:13px}
.sec-foot{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.sec-foot>details.panel{padding:12px 16px}
.sec-foot summary{cursor:pointer;font-size:14px}.sec-foot summary .faint{font-size:12.5px;margin-left:6px}
.empty-sm{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 0}
@media (max-width:760px){.plan-ed{padding-left:8px;flex-wrap:wrap}}
.tocrow.planned .tocx{grid-column:4 / span 2;justify-self:end}
.tocrow.planned.open .tocx{visibility:visible}
@media (max-width:760px){.tocrow.planned .tocx{grid-column:2;justify-self:start}}
.bk-pv{margin-top:10px;width:min(100%,620px);aspect-ratio:8.5/11;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#525659}
.bk-pv iframe{width:100%;height:100%;border:0;display:block}
/* Part 1 and Part 2 share one look: heading + count, actions on the right, one panel of rows */
.book-list{padding:4px 8px}
.book.flat{gap:0}
.book.flat .bk{border:0;border-radius:0;border-top:1px solid var(--line);background:transparent}
.book.flat .bk:first-child{border-top:0}
.book.flat .bk.open{box-shadow:none;background:var(--surface)}
.book.flat .bk-row{padding:9px 8px;border-radius:6px}
.book.flat .bk-row[role=button]:hover{border-radius:6px}
.book.flat .bk-ed{border-radius:6px;margin:0 0 8px;border:1px solid var(--line)}
.bk-t b{font-weight:500;font-size:14px}
.sec-foot .fe-toggle{margin-top:0;justify-content:flex-start}
.bk-row{grid-template-columns:14px 88px minmax(0,1fr) auto 18px}
.bk-no{color:var(--ink-2);font-variant-numeric:tabular-nums lining-nums}
.book.flat .bk-ed{margin-left:110px}
@media (max-width:760px){.bk-row{grid-template-columns:14px minmax(0,1fr) auto 18px}.bk-no{display:none}.book.flat .bk-ed{margin-left:0}}
/* Settings › Users */
.roles-help{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 12px}
.roles-help>div{background:var(--surface-2);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;font-size:13px}
.roles-help span{color:var(--ink-2)}.roles-help ul{margin:4px 0 0;padding-left:18px;color:var(--ink-2);display:flex;flex-direction:column;gap:2px}.roles-help li::marker{color:var(--brand-orange,#F36523)}
#usersBox select{border:1px solid var(--line);border-radius:6px;padding:4px 8px;background:var(--surface)}
@media (max-width:700px){.roles-help{grid-template-columns:1fr}}
/* Library cards: the whole photo, never cropped */
.pcard .pimg{object-fit:contain;padding:6px;box-sizing:border-box;background:#fff}
/* Sortable column headers */
.thsort{all:unset;cursor:pointer;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;white-space:nowrap}
.thsort:hover,.thsort.on{color:var(--ink)}
.thsort:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
/* EJCDC fill-ins sit in running text: room on each side so the box and its focus ring never cover the words next to it */
.gd-fill{margin:1px 4px}
.gd-fill input,.gd-fill select{box-sizing:content-box}
.gd-fill input:focus-visible,.gd-fill select:focus-visible{outline-offset:0}
/* On/off switch */
.fe-switch{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;margin-right:6px;white-space:nowrap}
.fe-switch input{position:absolute;opacity:0;width:1px;height:1px}
.fe-switch .sw{width:34px;height:20px;border-radius:10px;background:var(--line);position:relative;transition:background .15s;flex:none}
.fe-switch .sw::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.fe-switch input:checked+.sw{background:var(--accent)}
.fe-switch input:checked+.sw::after{transform:translateX(14px)}
.fe-switch input:focus-visible+.sw{outline:2px solid var(--accent);outline-offset:2px}
/* Compare › item changes: description reads as the item; category is a quiet tag in its own column */
table.cmp td.cmp-desc{font-weight:500}
table.cmp td.cmp-no{color:var(--ink-2);white-space:nowrap}
.cmp-cat{display:inline-block;font-size:12px;color:var(--ink-2);background:var(--surface-2);border-radius:99px;padding:1px 9px;white-space:nowrap}
/* Project info groups */
.info-g+.info-g{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.info-g>.label{margin-bottom:8px}
/* Project info: each row of fields on its own line, three columns */
.info-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 18px}
dl.info-row{margin:0}.info-row+.info-row{margin-top:12px}
@media (max-width:700px){.info-row{grid-template-columns:1fr 1fr}}
.dt-pair{display:flex;flex-direction:column;gap:6px}
.dt-pair input{width:100%;box-sizing:border-box}
/* Estimate reordering: drag handles on categories and lines */
.cat{position:relative}
.grip{position:absolute;left:2px;width:14px;height:22px;cursor:grab;opacity:0;transition:opacity .12s;border-radius:4px;z-index:2;
  background-image:radial-gradient(circle,var(--ink-3) 1.3px,transparent 1.6px);background-size:6px 6px;background-position:1px 2px;background-repeat:space}
.cat-grip{top:13px}
.irow{position:relative}.irow .grip{top:50%;transform:translateY(-50%);left:22px}
.cat:hover>.cat-grip,.irow:hover>.grip,.grip:focus{opacity:.8}
.grip:hover{background-color:var(--surface-2);opacity:1}
.grip:active{cursor:grabbing}
.dragging{opacity:.45}
.drop-before{box-shadow:inset 0 3px 0 var(--accent)}
.drop-after{box-shadow:inset 0 -3px 0 var(--accent)}
.cat.drop-before{box-shadow:0 -3px 0 var(--accent)}
.cat.drop-after{box-shadow:0 3px 0 var(--accent)}

/* ================= Phones and small tablets ================= */
.mbar{display:none}
.side-body{display:flex;flex-direction:column;gap:18px;flex:1;min-height:0}
@media (max-width:760px){
  /* The sidebar becomes a slim bar with a menu button; the menu opens under it. */
  .app{grid-template-columns:1fr}
  .side{position:sticky;top:0;z-index:30;height:auto;gap:0;padding:calc(env(safe-area-inset-top,0px) + 8px) 12px 8px;overflow:visible;border-bottom:1px solid #3a3a3d}
  .mbar{display:flex;align-items:center;gap:12px;min-height:40px}
  .mbar img{height:30px;width:auto;display:block}
  .mbar b{color:#fff;font-size:16px;letter-spacing:.02em}
  .mbar-btn{all:unset;cursor:pointer;width:40px;height:40px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;border-radius:8px;margin-left:-6px}
  .mbar-btn span{display:block;width:20px;height:2px;background:#fff;border-radius:2px;transition:transform .15s,opacity .15s}
  .side.open .mbar-btn span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .side.open .mbar-btn span:nth-child(2){opacity:0}
  .side.open .mbar-btn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .mbar-btn:focus-visible{outline:2px solid var(--brand-orange)}
  .side-body{display:none}
  .side.open .side-body{display:flex;padding:12px 0 6px;max-height:calc(100dvh - 70px);overflow:auto}
  .side .side-body .brand{display:none}
  .side .nav{flex-direction:column;flex-wrap:nowrap}
  .side .nav button{padding:10px 12px;font-size:15px}
  .side .foot{flex-direction:column;flex-wrap:nowrap;margin-top:6px;padding-top:10px;border-top:1px solid #3a3a3d}
  .main{padding:14px 14px calc(40px + env(safe-area-inset-bottom,0px))}

  /* Page heads and tab rows: wrap buttons, scroll tabs sideways instead of spilling off screen. */
  .head{align-items:flex-start;gap:10px}
  .head h1{font-size:20px}
  .head>.row,.ph>.row,.sec-head .row{flex-wrap:wrap}
  .tabs{flex-wrap:nowrap;scrollbar-width:none;margin-left:-14px;margin-right:-14px;padding:0 14px}
  .tabs::-webkit-scrollbar,.subtabs::-webkit-scrollbar{display:none}
  .subtabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-left:-14px;margin-right:-14px;padding:0 14px 2px}
  .subtabs button{white-space:nowrap;flex:none}

  /* Wide tables scroll inside their panel. */
  table.rank,table.cmp-tot,table.cmp,table.area-sum,#usersBox table,.panel>table{display:block;overflow-x:auto;max-width:100%}
  .tablewrap{overflow-x:auto}

  /* Dialogs take the whole screen. */
  .modalbg{padding:0;align-items:stretch}
  .modal,.modal.wide{width:100%;max-width:100%;max-height:100dvh;height:100dvh;border-radius:0;padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px))}

  /* Bigger touch targets for small buttons. */
  .btn.sm{min-height:32px}
  .panel{padding:14px}
}
@media (max-width:980px){.split,.grid2{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
  .est-tools{flex-wrap:wrap}.est-tools input[type=search]{flex:1 1 100%}
  .tocrow{grid-template-columns:80px minmax(0,1fr)}
  .plan-note{white-space:normal}
  .info-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .info-row>[style*="span 3"],.info-row>[style*="span 2"]{grid-column:1/-1!important}
}
/* Phones: product filters behind a button; spec-builder article list as a compact strip; template rows wrap */
.mfilters{display:none}
@media (max-width:760px){
  .mfilters{display:inline-flex;order:-1}
  .ptop{flex-wrap:wrap}
  .pbrowse:not(.fopen) .pfacets{display:none}
  .pbrowse.fopen .pfacets{padding:10px 0;border-bottom:1px solid var(--line);margin-bottom:6px}
  .pgrid,.pbrowse .pgrid,.modal.wide .pbrowse.pick .pgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .gd-rail{align-items:center;gap:4px;padding-bottom:6px;scrollbar-width:thin}
  .gd-rail .sg-part{display:none}
  .gd-a{flex:none;grid-template-columns:auto auto;padding:4px 6px}
  .sg-trow{grid-template-columns:70px minmax(0,1fr);row-gap:4px}
  .sg-trow>:nth-child(n+3){grid-column:2;justify-self:start}
}
@media (max-width:760px){.ptop input[type=search]{flex:1 1 100%;order:-2}}
@media (max-width:760px){
  .irow.editing{padding-left:14px;padding-right:14px}
  .ie-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
  .ie-grid .f{min-width:0}
  .ie-grid input,.ie-grid select{width:100%;min-width:0;box-sizing:border-box}
  .ie-grid .f.wide{grid-column:1/-1}
}
/* Touch screens can't drag rows; the handles would only get in the way. */
@media (hover:none){.grip{display:none}}
/* Branding: faint topographic contours behind the sidebar (public/topo-side.svg, generated) */
.side{background:var(--side) url(/topo-side.svg) 0 0 / 480px auto repeat-y}
@media (max-width:760px){.side{background-position:-40px -120px;background-size:520px auto}}
/* Full-height numerals everywhere (Raleway's default old-style digits sit low next to capitals and chips) */
body{font-variant-numeric:lining-nums}
/* Overview panels styled like the project cards */
.ov-stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:10px;gap:4px 12px}
.pc-link{all:unset;box-sizing:border-box;display:flex;flex-direction:column;min-width:0;cursor:pointer;border-radius:8px;padding:6px 8px;margin:-6px -8px}
.pc-link:hover{background:var(--surface-2)}.pc-link:focus-visible{outline:2px solid var(--accent)}
.pc-link span{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.ov-foot{margin-top:12px;flex-wrap:wrap}.ov-foot .pc-ed{white-space:normal}
@media (max-width:1100px){.ov-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}}
/* Project Manual cover editor: fields beside a live preview */
.bk-ed.mc-ed{flex-direction:row;align-items:flex-start;gap:18px}
.mc-ed .mc-f{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:12px}
.mc-ed .mc-f textarea{width:100%;box-sizing:border-box;font:inherit;resize:vertical}
.mc-ed .bk-pv{flex:1 1 0;min-width:0}
@media (max-width:900px){.bk-ed.mc-ed{flex-direction:column}.mc-ed .bk-pv{width:100%}}
/* Header & footer tab: which pages carry it, and a preview of each kind */
.hf-where{margin:6px 0 0;padding-left:18px;display:grid;gap:6px;font-size:13.5px;color:var(--ink-2)}
.hf-pvseg{margin:0 auto 14px;max-width:560px;grid-template-columns:repeat(3,1fr)}.hf-pvseg button{padding:8px 10px}
.paper.hf-sample{position:relative}
.paper .hf-own{padding-top:4px;font-family:var(--page-sans);font-size:6.5px;line-height:1.35;text-align:center;color:#333}
.paper .hf-pn{font-family:var(--page-sans);font-size:8.5px;text-align:right;margin-top:auto;padding-top:10px}
.paper .hf-pn mark,.paperwrap p mark{background:#FDE7B0;color:#111;padding:0 2px;border-radius:2px}
.dl-hrow{display:flex;align-items:center;gap:8px;padding-right:16px}.dl-hrow .dl-h{flex:1;min-width:0}
.dl-hact{display:flex;gap:6px;flex:none}
@media (max-width:760px){.dl-hrow{flex-wrap:wrap;padding:0 0 10px}.dl-hact{padding-left:16px}}
.paper .hf-add{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;font-family:var(--page-sans);font-size:8.5px;line-height:1.3}
.paper .hf-add div:nth-child(2){text-align:center}.paper .hf-add div:nth-child(3){text-align:right}
.paper .hf-add:first-child{margin-bottom:14px}.paper .body+.hf-add{margin-top:auto;padding-top:10px}
.paper .hf-add mark{background:#FDE7B0;color:#111;padding:0 2px;border-radius:2px}
/* A linked estimate line: one slim line (tag, product, Unlink) */
.linkline{grid-column:1/-1;display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);min-width:0}
.linkline .ll-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.linkline .linkish{font-size:12.5px;margin-left:4px}
/* Bids & bid tab: totals as a bar chart, in the same table style as "Item by item" below */
table.bidtab th:first-child,table.bidtab td:first-child{width:64px}
table.bidbars td{vertical-align:middle}
table.bidbars th:nth-child(3){width:42%}
.bb-track{display:flex;align-items:center;gap:8px;min-width:0}
.bb-track b{font-weight:600;font-family:var(--mono);white-space:nowrap}
.bb-bar{display:block;height:16px;border-radius:3px;background:#D8D8DA;flex:none} /* other bids: the style guide light gray */
table.bidbars tr.low .bb-bar{background:#8DC740}
table.bidbars tr.est .bb-bar{background:#58595B}
table.bidtab tr.bt-cat td{font-weight:700;font-size:12px;letter-spacing:.03em;background:var(--surface-2);color:var(--ink)}
.ms-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
/* Every checkbox and radio in the app uses the TSW orange (no browser-default blue). */
input[type=checkbox],input[type=radio]{accent-color:var(--brand-orange,#F36523)}
/* A dropdown styled like a selected pill (Compare 30% to 60%) */
select.pillsel{appearance:none;-webkit-appearance:none;width:auto;cursor:pointer;background:var(--ink) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23fff' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 12px center;color:var(--bg);border:1px solid var(--ink);border-radius:99px;padding:6px 32px 6px 14px;font-size:13px;font-weight:600;min-height:0;height:auto}
select.pillsel:focus-visible{outline:2px solid var(--brand-orange,#F36523);outline-offset:2px}
select.pillsel option{background:var(--surface);color:var(--ink)}
select.pillsel{background-color:var(--ink) !important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1.5 1.5l4.5 4.5 4.5-4.5' fill='none' stroke='%23F36523' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;background-repeat:no-repeat !important;background-position:right 12px center !important;background-size:12px 8px !important}
/* Item by item: number columns only as wide as their numbers (with even gaps); Description takes the rest */
table.bidtab:not(.bidbars) th.r,table.bidtab:not(.bidbars) td.r{width:1%;white-space:nowrap;padding-left:36px}
table.bidtab:not(.bidbars) th.r:nth-child(n+4),table.bidtab:not(.bidbars) td.r:nth-child(n+4){min-width:110px}
/* ---- Phone fixes (Bids totals, Deliverables headers, Compare totals) ---- */
@media (max-width:760px){
  /* Bids › Totals: each bidder as a small card: name and checks, then the bar, then the difference */
  table.bidbars thead{display:block} table.bidbars thead tr:not(.base){display:none}
  table.bidbars,table.bidbars tbody{display:block;width:100%}
  table.bidbars tr{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:4px 8px;padding:10px 12px;border-bottom:1px solid var(--line)}
  table.bidbars td{display:block;border:0;padding:0;width:auto !important}
  table.bidbars td:nth-child(1){grid-row:1;grid-column:1}
  table.bidbars td:nth-child(2){grid-row:1;grid-column:2;font-weight:600}
  table.bidbars td:last-child{grid-row:1;grid-column:3}
  table.bidbars td:nth-child(3){grid-row:2;grid-column:1/-1}
  table.bidbars td:nth-child(4){grid-row:3;grid-column:2;font-size:12.5px}
  table.bidbars td:nth-child(5):not(:last-child){grid-row:3;grid-column:3;font-size:12.5px}
  table.bidbars .bb-bar{max-width:calc(100% - 110px)}
  /* Deliverables: milestone name and count on one line, View all / Download all below */
  .dl-hrow{flex-direction:column;align-items:stretch;gap:0;padding:0 0 10px}
  .dl-hrow .dl-h{flex-wrap:wrap}
  .dl-hact{padding:0 16px}
  /* Compare: the totals table scrolls sideways inside its panel instead of being cut off */
  .cmp-sum .est-sum-r{overflow-x:auto;min-width:0}
}
@media (max-width:760px){
  /* Compare totals: smaller type so the Change column fits; scrolls sideways if it still doesn't */
  .cmp-sum .est-sum-r{overflow-x:auto}
  .cmp-tot{font-size:12.5px}.cmp-tot th,.cmp-tot td{padding-left:4px;padding-right:4px}
  .cmp-tot td .faint{display:none}
}
@media (max-width:760px){.cmp-tot td:first-child{min-width:0}.cmp-tot tr.k-tot td{font-size:13.5px}.cmp-tot th{padding:0 4px 6px;letter-spacing:0}}
table.bidbars .dn{color:var(--ok);font-weight:600;font-variant-numeric:tabular-nums}table.bidbars .upc{color:var(--crit);font-weight:600;font-variant-numeric:tabular-nums}
/* Bids › Totals: the estimate as the baseline row, above the column labels */
table.bidbars tr.base td{border-bottom:1px solid var(--line);padding-top:10px;padding-bottom:10px}
table.bidbars tr.base .bb-bar{background:#58595B}
.bb-track b{position:relative;z-index:1;background:var(--surface);padding:0 3px}
table.bidbars tr.base td.est-n{font-weight:700;font-size:15px}
table.bidbars tr.base .bb-track b{font-size:14px}
@media (max-width:760px){table.bidbars tr.base td{border:0;padding:0}table.bidbars tr.base td:empty{display:none}}
table.bidbars tr.base{cursor:pointer}table.bidbars tr.base:hover td{background:var(--surface-2)}
.d-opt{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px}.d-opt input{margin-top:0}.d-opt select.pillsel{margin-left:auto}.d-opt select.pillsel+.faint+select.pillsel{margin-left:0}
/* "Confirm" on a red button stays readable whatever button style it started from (ghost, danger…) */
.btn.armed,.btn.armed:hover{background:var(--crit) !important;border-color:var(--crit) !important;color:#fff !important}
.d-when{font-size:inherit;color:inherit;text-decoration:underline dotted;text-underline-offset:2px}
.bq-note{display:block;font-size:11.5px;margin-top:2px;color:var(--warn);text-align:right;width:100%}
/* Addenda: tracked changes (red, delta with the addendum number), the Addenda bar, the letter editor */
.blk.rv .tx,.blk.rvdel .tx{color:#D0021B}
.blk.rvdel .tx{text-decoration:line-through}
.blk{position:relative}
.paper .pp .dl{display:inline-block;vertical-align:-2px;margin-left:3px;width:13px;height:11px;line-height:13px;font-style:normal;font-size:7px;font-weight:700;color:#D0021B;text-align:center;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 26'%3E%3Cpath d='M15 2 28 24H2Z' fill='none' stroke='%23D0021B' stroke-width='2.4' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center/contain}
.blk .dl{position:absolute;left:-22px;top:2px;width:18px;height:16px;font-style:normal;font-size:9px;font-weight:700;color:#D0021B;text-align:center;line-height:19px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 26'%3E%3Cpath d='M15 2 28 24H2Z' fill='none' stroke='%23D0021B' stroke-width='2.4' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center/contain}
.paper .pp.rv{color:#D0021B;position:relative}.paper .pp.rv.del span:last-child{text-decoration:line-through}
.rv-undo{position:absolute;right:4px;top:2px;z-index:2}
.rv-bar{margin-bottom:12px}.rv-list{display:grid;gap:6px;margin-top:10px}
.rv-line{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:8px}.rv-line.on{border-color:#D0021B;background:#FFF5F5}
.rv-tag{font-weight:700;color:#D0021B}
.chip.rvchip{background:#FDECEC;color:#B0021A}
.rv-notice{background:#FFF5F5;color:#B0021A;border:1px solid #F5C2C7}
.ad-item{display:flex;gap:8px;align-items:flex-start;margin-top:6px}.ad-no{font-weight:700;padding-top:6px;min-width:20px}
.ad-form textarea{width:100%;box-sizing:border-box;font:inherit;resize:vertical}.ad-form .ad-a{color:#D0021B}
.ad-sec{display:grid;gap:4px;margin:6px 0}.ad-sec input{width:100%;box-sizing:border-box}
/* Addendum letter window: the form beside a live preview of the page */
.modal.ad-modal{max-width:min(1400px,96vw);width:96vw}
.ad-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:20px;align-items:start}
.ad-form{min-width:0;max-height:calc(92vh - 60px);overflow:auto;padding-right:4px}
.ad-pv{position:sticky;top:0;background:var(--surface-2);border-radius:10px;padding:12px}
.ad-pv .pv-head{display:flex;gap:8px;align-items:baseline;margin-bottom:8px}
#adPvHost{overflow:hidden;background:#fff}
.ad-top{grid-template-columns:200px}
@media (max-width:900px){.ad-wrap{grid-template-columns:1fr}.ad-pv{position:static}}
.ad-contact{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}.ad-contact input{width:100%;box-sizing:border-box}
.ad-form textarea{min-height:2.6em;line-height:1.4}
/* Section editor: parts and articles as bookmarks down the left (like the step-by-step editor) */
.ed-wrap{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px;align-items:start}
.ed-wrap>.split{min-width:0}
.ed-rail .struck .gd-at,.ed-rail .ed-bm.part.struck{text-decoration:line-through;color:#D0021B}
.ed-rail .ed-rv{color:#D0021B;font-size:11px}
.blk.jumped{background:var(--accent-soft);transition:background .3s}
@media (max-width:1100px){.ed-wrap{grid-template-columns:1fr}.ed-rail{position:static;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;max-height:none}.ed-rail .ed-bm.part{display:none}.ed-rail .gd-a{flex:none}}
.ad-form{padding:4px 8px 4px 4px} /* room for the focus outline inside the scrolling form */
/* Letter window: a fixed-height window; the form scrolls, the preview page is scaled to fit */
.modal.ad-modal{height:92vh;max-height:92vh;overflow:hidden;display:flex;flex-direction:column}
.modal.ad-modal>.ad-wrap{flex:1;min-height:0;height:100%}
.ad-wrap .ad-form{max-height:none;height:100%;overflow:auto;box-sizing:border-box}
.ad-wrap .ad-pv{height:100%;box-sizing:border-box;display:flex;flex-direction:column;position:static}
.ad-wrap #adPvHost{flex:1;min-height:0;background:transparent}
@media (max-width:900px){.modal.ad-modal{height:auto;max-height:none;overflow:auto}.ad-wrap .ad-form{height:auto}.ad-wrap .ad-pv{height:80vh}}
/* Letter attachments: numbered rows with a grip to reorder */
#adAttList{display:grid;gap:6px;margin-bottom:8px}
.ad-att{position:relative;display:grid;grid-template-columns:18px 22px minmax(0,1fr) auto;gap:6px;align-items:center;padding:4px 4px 4px 0;border-radius:6px}
.ad-att .ad-grip{position:static;opacity:.55}.ad-att:hover .ad-grip,.ad-att .ad-grip:focus{opacity:1}
.ad-att .ad-no{font-weight:700;padding-top:0}
.ad-att .ad-sec{margin:0}.ad-att .ad-txt{width:100%;box-sizing:border-box}
.ad-auto{font-size:11px;color:var(--ink-3);border:1px solid var(--line);border-radius:99px;padding:1px 7px}
.ad-att.drop-before{box-shadow:inset 0 3px 0 var(--accent)}.ad-att.drop-after{box-shadow:inset 0 -3px 0 var(--accent)}
/* the parts in the rail: the step-by-step editor's part labels, clickable */
.ed-rail .ed-bm.part{all:unset;cursor:pointer;display:block;font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--ink-3);text-transform:uppercase;margin:10px 8px 2px}
.ed-rail .ed-bm.part:first-child{margin-top:0}.ed-rail .ed-bm.part:hover{color:var(--ink)}
.ed-rail .gd-a.on .gd-st{background:var(--surface-2);color:var(--ink)}
/* ===== One button system across the site =====
   .btn: 34px tall, 8px corners, 13.5px semibold, centered; .btn.sm: 28px, 12.5px. Primary = the accent (TSW orange);
   ghost = text-only at the same height; buttons never stretch to fill a stack or form (that made them look like text boxes). */
.btn{box-sizing:border-box;min-height:34px;padding:0 14px;border-radius:8px;font-size:13.5px;font-weight:600;line-height:1.2;justify-content:center;gap:6px;color:var(--ink);cursor:pointer;transition:background .12s,border-color .12s,filter .12s}
.btn.sm{min-height:28px;padding:0 10px;font-size:12.5px;border-radius:7px}
.btn.primary{color:var(--accent-ink)}
.btn.ghost{color:var(--ink-2)}.btn.ghost:hover{color:var(--ink)}
.btn.danger,.btn.ghost.danger{color:var(--crit)}
.stack>.btn,.stack>a.btn,.field>.btn,form>.btn,.stack>button.btn{align-self:flex-start;width:auto}
.btn:focus-visible{outline:2px solid var(--brand-orange,#F36523);outline-offset:2px}
@media (max-width:760px){.btn{min-height:38px}.btn.sm{min-height:32px}}
/* Branding: the logo, then its controls in one tidy row */
.blogo-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.blogo-ctl{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.blogo-ctl .row{gap:8px;align-items:center;flex-wrap:wrap}
.pill.sm{padding:4px 10px;font-size:12.5px}
/* Dropdown menus in the app's theme (Chrome/Edge customizable select; other browsers keep their own list) */
@supports (appearance: base-select) {
  select:not([multiple]), select:not([multiple])::picker(select){appearance:base-select}
  select:not([multiple])::picker-icon{display:none}
  select:not([multiple])::picker(select){border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 10px 28px rgba(27,36,32,.16);padding:4px;margin-top:4px;min-width:anchor-size(width)}
  select:not([multiple]) option{padding:7px 10px;border-radius:6px;font-size:13.5px;color:var(--ink);background:transparent;cursor:pointer;min-height:0}
  select:not([multiple]) option::checkmark{display:none}
  select:not([multiple]) option:hover,select:not([multiple]) option:focus-visible{background:var(--surface-2);outline:none}
  select:not([multiple]) option:checked{background:#FDEBDD;color:var(--ink);font-weight:600}
  select:not([multiple]) option:disabled{color:var(--ink-3);cursor:default}
  select:not([multiple]) optgroup{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding:6px 10px 2px}
}
/* Themed calendar (gw date picker) — replaces the browser's popup */
input[type=date]::-webkit-calendar-picker-indicator{opacity:0;display:none}
input[type=date]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none' stroke='%23F36523' stroke-width='1.4'%3E%3Crect x='1.5' y='2.5' width='11' height='10' rx='1.5'/%3E%3Cpath d='M1.5 5.5h11M4.5 1v3M9.5 1v3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:14px 14px;padding-right:28px !important;cursor:pointer}
.gw-cal{position:fixed;z-index:1000;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(27,36,32,.18);padding:12px;width:264px;font-size:13px;color:var(--ink)}
.gw-cal-h{display:flex;align-items:center;gap:4px;margin-bottom:8px}
.gw-cal-h b{flex:1;font-family:var(--head-font,inherit);font-weight:600;font-size:14px}
.gw-cal-h button{border:0;background:transparent;width:28px;height:28px;border-radius:7px;cursor:pointer;color:var(--ink-2);font-size:16px;line-height:1}
.gw-cal-h button:hover{background:var(--surface-2);color:var(--ink)}
.gw-cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.gw-cal-g span{font-size:11px;color:var(--ink-3);padding:4px 0;text-transform:uppercase;letter-spacing:.04em}
.gw-cal-g button{border:0;background:transparent;height:32px;border-radius:7px;cursor:pointer;color:var(--ink);font:inherit;font-size:13px}
.gw-cal-g button.o{color:var(--ink-3)}
.gw-cal-g button:hover{background:var(--surface-2)}
.gw-cal-g button.t{box-shadow:inset 0 0 0 1.5px #8DC740}
.gw-cal-g button.s{background:#F36523;color:#fff;font-weight:600}
.gw-cal-g button:focus-visible{outline:2px solid #F36523;outline-offset:1px}
.gw-cal-f{display:flex;justify-content:space-between;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.gw-cal-f button{border:0;background:transparent;color:#C94F12;font:inherit;font-weight:600;font-size:12.5px;cursor:pointer;padding:4px 6px;border-radius:6px}
.gw-cal-f button:hover{background:var(--surface-2)}
/* Header & footer preview: highlights on demand (all fields, or the one being edited) */
.paper .hfv{border-radius:2px;transition:background .15s}
#hfPreview.hl-all .paper .hfv,#hfPreview.hl-all .paper .hft{background:#FDE7B0;color:#111;padding:0 2px}
#hfPreview .hl-on{background:#FDE7B0;color:#111;padding:0 2px;box-shadow:0 0 0 1.5px #F36523;border-radius:2px}
.hf-hlbar{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin:0 auto 12px;font-size:12.5px;text-align:center}
.btn.hl-tog i{width:10px;height:10px;border-radius:2px;border:1.5px solid var(--ink-3);display:inline-block}.btn.hl-tog[aria-pressed="true"]{background:#FDE7B0;border-color:#E9C46A;color:#111}.btn.hl-tog[aria-pressed="true"] i{background:#F36523;border-color:#F36523}
.paper .hft .mf,.paper .hft{background:none;color:inherit}
.paper .fade{display:none}.paper .body{-webkit-mask-image:linear-gradient(#000 calc(100% - 36px),transparent);mask-image:linear-gradient(#000 calc(100% - 36px),transparent)}
.hf-ed{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:7px 9px;min-height:44px;font-size:13.5px;line-height:1.7;white-space:pre-wrap;cursor:text;outline:none}
.hf-ed:focus{border-color:#F36523;box-shadow:0 0 0 2px rgba(243,101,35,.18)}
.hf-ed .hf-tok{cursor:pointer;user-select:none;background:#F1F2EF;color:var(--ink);border:1px solid var(--line);margin:0 1px;vertical-align:baseline;line-height:1.4}
.hf-ed .hf-tok:hover{border-color:#F36523}
.hf-ed .hf-tok.on{background:#FDE7B0;border-color:#F36523}
#hfPreview .paper .mf{background:none;color:inherit}
.hf-ro .hf-tok{background:#F1F2EF;color:var(--ink);border:1px solid var(--line);font-weight:600}
/* Checkboxes and radios drawn in the TSW theme everywhere (no browser blue) */
input[type=checkbox]:not(.fe-switch input),input[type=radio]:not(.fe-switch input){-webkit-appearance:none;appearance:none;box-sizing:border-box;width:16px;height:16px;margin:0;flex:none;border:1.5px solid #9AA39E;border-radius:4px;background:var(--surface) center/11px 11px no-repeat;cursor:pointer;vertical-align:-3px;transition:background-color .12s,border-color .12s}
input[type=radio]:not(.fe-switch input){border-radius:50%}
input[type=checkbox]:not(.fe-switch input):hover,input[type=radio]:not(.fe-switch input):hover{border-color:#F36523}
input[type=checkbox]:not(.fe-switch input):checked{background-color:#F36523;border-color:#F36523;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.4 2.4 4.6-5' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
input[type=checkbox]:not(.fe-switch input):indeterminate{background-color:#F36523;border-color:#F36523;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 6h6' stroke='%23fff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E")}
input[type=radio]:not(.fe-switch input):checked{border-color:#F36523;background:radial-gradient(circle,#F36523 0 3.5px,var(--surface) 4px)}
input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.5;cursor:default}
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:2px solid #F36523;outline-offset:2px}
.fe-switch input:checked+.sw{background:#F36523}.fe-switch input:focus-visible+.sw{outline:2px solid #F36523;outline-offset:2px}
/* No system blue: text selection, date/time segments, autofill, focus rings */
::selection{background:#FBD3BC;color:#111}
input:focus::-webkit-datetime-edit-month-field{background:transparent;color:inherit}
input:focus::-webkit-datetime-edit-day-field{background:transparent;color:inherit}
input:focus::-webkit-datetime-edit-year-field{background:transparent;color:inherit}
input:focus::-webkit-datetime-edit-hour-field{background:transparent;color:inherit}
input:focus::-webkit-datetime-edit-minute-field{background:transparent;color:inherit}
input:focus::-webkit-datetime-edit-ampm-field{background:transparent;color:inherit}
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 40px var(--surface) inset;-webkit-text-fill-color:var(--ink);caret-color:var(--ink)}
input[type=time]::-webkit-calendar-picker-indicator{display:none}
input[type=time]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none' stroke='%23F36523' stroke-width='1.4'%3E%3Ccircle cx='7' cy='7' r='5.6'/%3E%3Cpath d='M7 4v3.2l2.2 1.4' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:14px 14px;padding-right:28px !important;cursor:pointer}
input[type=color]{-webkit-appearance:none;appearance:none;border:1px solid var(--line);border-radius:6px;padding:2px;background:var(--surface);cursor:pointer}
input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:0;border-radius:4px}
.gw-cal.gw-time{width:auto;min-width:150px;padding:6px;max-height:280px;overflow-y:auto}
.gw-time button{display:block;width:100%;text-align:left;border:0;background:transparent;font:inherit;font-size:13px;color:var(--ink);padding:6px 10px;border-radius:6px;cursor:pointer}
.gw-time button:hover{background:var(--surface-2)}.gw-time button.s{background:#F36523;color:#fff;font-weight:600}
.gw-time button:focus-visible{outline:2px solid #F36523;outline-offset:-2px}
.vcat-g{display:flex;flex-direction:column;gap:2px}.vcat-g .label{margin-bottom:6px}
.vcat{align-items:flex-start;gap:9px;padding:3px 0;line-height:1.35}.vcat input{margin-top:1px}
.vcat .vn{min-width:0}.vcat .vn .faint{margin-left:6px;font-variant-numeric:tabular-nums}
/* Library multi-select: a checkbox on each card (on hover, or always once something is selected) and a selection bar */
.pcard-w{position:relative;display:flex;min-width:0}.pcard-w>.pcard{flex:1;min-width:0}
.psel{position:absolute;top:10px;left:10px;width:30px;height:30px;display:grid;place-items:center;background:rgba(255,255,255,.94);border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.18);opacity:0;transition:opacity .12s;cursor:pointer;z-index:1}
.pcard-w:hover .psel,.psel:focus-within,.pgrid.selmode .psel{opacity:1}
.pcard-w.sel>.pcard{border-color:#F36523;box-shadow:0 0 0 1.5px #F36523}
@media (hover:none){.psel{opacity:1}}
.pcount.selbar{background:#FDEBDD;border:1px solid #F7C4A6;border-radius:10px;padding:6px 8px 6px 12px;gap:10px;color:var(--ink);position:sticky;top:calc(env(safe-area-inset-top,0px) + 8px);z-index:5}
.pcount.selbar .bulktype{min-height:30px;padding-top:4px;padding-bottom:4px;font-size:13px}
.rv-bar>summary,.sec-foot details>summary,.sec-cover>summary{cursor:pointer}
.rv-body{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:8px}
.sec-cover{margin-bottom:12px}
.sec-foot .rv-bar{margin-bottom:0}
.vcat,.vcat .vn{font-weight:400;font-size:13.5px}.vcat-groups{gap:14px 28px}
/* One button family: small buttons differ only by a little less height and padding (same text size, corners, and hover) */
.btn{min-height:34px;font-size:13px;border-radius:8px}
.btn.sm{min-height:32px;padding:0 12px;font-size:13px;border-radius:8px}
.btn:not(.primary):not(.armed):not(.ghost):hover{border-color:#B9C0BB;background:var(--surface)}
.btn.ghost:hover{background:var(--surface-2)}
@media (max-width:760px){.btn,.btn.sm{min-height:38px}}
.sfsync{display:block;margin-top:16px;border-color:var(--line);background:var(--surface)}.sfsync .ph{margin-bottom:6px;gap:14px;flex-wrap:wrap}
.sfsync .ph{flex-wrap:nowrap;align-items:flex-start}.sfsync .ph>div:first-child{flex:1;min-width:0}.sfsync .ph>.row{flex:none}.sfsync .tocrow:first-of-type{border-top:1px solid var(--line)}
@media (max-width:760px){.sfsync .ph{flex-wrap:wrap}}
/* Section editor on wide screens: paragraphs, bookmarks, and preview each scroll in their own column; the page stays at the top */
@media (min-width:1101px){
  #edPanel{max-height:max(360px,calc(100vh - var(--edTop,300px) - 20px));overflow-y:auto;overscroll-behavior:contain}
  .ed-wrap>.ed-rail{position:static;max-height:max(360px,calc(100vh - var(--edTop,300px) - 20px));overflow-y:auto;overscroll-behavior:contain}
  .ed-wrap #edPreview{position:static;max-height:max(360px,calc(100vh - var(--edTop,300px) - 20px));overflow-y:auto;overscroll-behavior:contain}
}
/* Follow-up flags */
.fl-svg{display:inline-block;vertical-align:-1px;flex:none}
.blk.flagged{box-shadow:inset 3px 0 0 #E0A43A}
.flagnote{display:flex;align-items:flex-start;gap:8px;margin:2px 34px 8px 62px;padding:7px 10px;border-radius:8px;background:var(--warn-soft);color:var(--ink);font-size:12.5px;line-height:1.45;border-left:3px solid #E0A43A}
.flagnote .fl-ic{color:#C47F10;padding-top:2px}.flagnote .fl-tx{flex:1;min-width:0}.flagnote b{color:var(--warn)}
.flagnote .fl-act{display:flex;gap:4px;flex:none}
.gd-p+.flagnote{margin:0 0 8px 40px}
.gd-p.flagged{box-shadow:inset 3px 0 0 #E0A43A;border-radius:4px}
.ed-rail .ed-fl,.gd-rail .ed-fl{color:#C47F10;margin-left:4px;display:inline-flex}
.chip.fl-chip{display:inline-flex;align-items:center;gap:4px}
.blk .ctl button .fl-svg{vertical-align:-2px}
.g-flagbtn{padding:0 8px}
.fl-to .pill{cursor:pointer;display:inline-flex;align-items:center;gap:6px}
@media (max-width:760px){.flagnote{margin-left:0;margin-right:0;flex-wrap:wrap}}
.gd-a:has(.ed-fl){grid-template-columns:26px 1fr auto auto}.gd-a .ed-fl{margin-left:0}
/* Product picker window keeps one size while filtering: filters and results scroll inside it */
@media (min-width:861px){
  .modal.wide:has(#pickBody){height:min(88vh,920px);overflow:hidden}
  .modal.wide:has(#pickBody)>.stack{flex:1;min-height:0;display:flex;flex-direction:column}
  #pickBody{flex:1;min-height:0;display:flex;flex-direction:column}
  #pickBody>.pbrowse.pick{flex:1;min-height:0;align-items:stretch}
  .modal.wide .pbrowse.pick .pfacets,.modal.wide .pbrowse.pick .presults{position:static;max-height:none;height:100%;min-height:0;overflow-y:auto;scrollbar-gutter:stable}
}
/* Materials & Products group headings: the site's heading font, with the RefNote letter in the same chip as the product tags */
.grp-h{display:flex;align-items:center;gap:10px;margin:22px 0 10px;font-size:17px;color:var(--ink)}
.grp-h .grp-l{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:6px;background:#58595B;color:#fff;font-size:13px;font-weight:600;font-family:var(--sans)}
.grp-h .grp-n{font-family:var(--sans);font-size:12.5px;font-weight:400;color:var(--ink-3)}
/* Project photo on a picked product */
.cf-photo{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.cf-ph-ctl{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cf-ph-note{font-size:12px;line-height:1.35;max-width:200px}
.sf-imgw{position:relative;align-self:start}
.sf-pp{position:absolute;left:6px;bottom:6px;background:rgba(88,89,91,.88);color:#fff;font-size:10.5px;font-weight:600;padding:2px 6px;border-radius:5px}
.pf-also{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:12.5px}.pf-also .pill{cursor:pointer;display:inline-flex;align-items:center;gap:6px}
/* Page previews: one design width, scaled by fitPapers(); short documents still show a whole page */
.paperwrap .paper{width:560px;max-width:none;min-width:0;margin:0 auto}
.paperwrap .paper.tall{min-height:725px}
.paperwrap{overflow-x:hidden}
/* Previews fit the page to the screen: no sideways scrolling; a long estimate scrolls down inside its page area */
.pv-page{overflow-x:hidden;overflow-y:auto}
.pv-side .pv-page{flex:1;min-height:0}
/* Users list: stacks on phones; invite window */
.ulist{display:flex;flex-direction:column}
.urow{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line)}
.u-who{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 220px}
.u-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.u-em{font-size:13px;overflow-wrap:anywhere;text-decoration:none}
.u-ctl{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.u-ctl select{min-height:32px;padding-top:4px;padding-bottom:4px;font-size:13px}
.login .loginbox{width:min(380px,100%);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:24px;box-shadow:var(--shadow)}
.inv-to{font-size:13px;line-height:1.7;background:var(--surface-2);border-radius:8px;padding:8px 12px}
.inv-to .faint{display:inline-block;min-width:58px}
#invText{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font:inherit;font-size:13px;line-height:1.5;background:var(--surface);color:var(--ink);resize:vertical}
.inv-act{gap:8px;flex-wrap:wrap}
@media (max-width:760px){
  .urow{align-items:flex-start}.u-ctl{width:100%}.u-ctl .btn.ghost.danger{margin-left:auto}
  .roles-help{grid-template-columns:1fr}
  .inv-act .btn{flex:1 1 auto}.inv-act .btn.ghost{margin-left:0}
}
.login{min-height:100vh;min-height:100dvh;box-sizing:border-box}
/* "In the specs" on phones: the note runs full width with the buttons below it; each row's status and count sit on one line */
@media (max-width:760px){
  .sfsync .ph{flex-direction:column;align-items:stretch;gap:10px}
  .sfsync .ph>.row{gap:8px}.sfsync .ph>.row .btn{flex:1 1 0}
  .sfsync .tocrow{grid-template-columns:80px 1fr;row-gap:4px}
  .sfsync .tocrow .tocs,.sfsync .tocrow .tocp{grid-column:2;justify-self:start;display:inline-flex}
  .sfsync .tocrow .tocs{grid-row:2}.sfsync .tocrow .tocp{grid-row:2;margin-left:92px}
}
/* Estimate options (Option A / Option B at one milestone) */
.ms-card .ms-opt{font-weight:600;color:var(--ink-2);font-size:12px;margin-left:4px}
.ms-arrow.opt{width:6px}
.est-opts{font-size:13px;margin:2px 0 4px;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
