/* Website-only styles: the account buttons added to the builder's top bar, and the sign-in, account
   and admin pages. Colors follow the builder's default "Night Shift" skin. */
.sowb-acct{display:flex;gap:6px;align-items:center}
.sowb-acct a.btn{text-decoration:none;display:inline-flex;align-items:center;gap:6px}
/* claude.ai's page wrapper hides [hidden] elements even when the builder gives them a display; without it
   rules like .tot{display:flex} win and "Hide totals" left an empty dark panel. Same rule as the wrapper. */
[hidden]:not([hidden=until-found i]){display:none!important}
/* Contractors can't create or delete projects, or record payments. */
.sowb-contractor #projNew,.sowb-contractor #sNew,.sowb-contractor #side [title^="Delete"],.sowb-contractor [data-bact="pay"],.sowb-contractor [data-bpayline],.sowb-contractor #secTabs [data-sec="materials"]{display:none!important}
/* Connection notice: shown while saves wait for the connection to come back. */
.sowb-net{position:fixed;left:50%;bottom:40px;transform:translateX(-50%);z-index:9999;max-width:calc(100vw - 32px);
  padding:8px 14px;border-radius:8px;font:600 13px/1.35 "Geist","Segoe UI",system-ui,sans-serif;box-shadow:0 8px 24px rgb(0 0 0 / .25)}
.sowb-net.warn{background:#7c4a03;color:#fff}
.sowb-net.ok{background:#15803d;color:#fff}
.sowb-net[hidden]{display:none}
.sowb-badge{background:var(--accent,#c2410c);color:#fff;border-radius:999px;font-size:11px;line-height:1;padding:3px 6px;font-weight:700}
/* The artifact viewer reset the page margin for us; on the website the browser's 8px default showed as a gap. */
body:not(.auth){margin:0}
/* With totals hidden, the sidebar's totals box is empty; don't leave a blank white card there. */
#totSide:empty{display:none}

/* Photos on lines: thumbnails in the details panel, a camera count in the grid, a full-screen viewer. */
.sowb-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px;margin-top:2px}
.sowb-thumbs > button{padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--subtle);aspect-ratio:1;cursor:zoom-in}
.sowb-thumbs img{width:100%;height:100%;object-fit:cover;display:block}
.sowb-addph{position:relative;display:grid;place-items:center;aspect-ratio:1;border:1.5px dashed var(--line-strong,var(--line));border-radius:8px;color:var(--muted);font-size:12.5px;font-weight:600;text-align:center;padding:6px;cursor:pointer}
.sowb-addph input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.sowb-addph:focus-within{outline:2px solid var(--ring,#2563eb);outline-offset:1px}
.sowb-phmsg{margin-top:6px;font-size:12.5px;color:var(--muted)}
.sowb-phmsg[hidden]{display:none}
.sowb-phc{margin-left:6px;font-size:11px;font-weight:600;color:var(--muted);white-space:nowrap}
.sowb-viewer{position:fixed;inset:0;z-index:10000;background:rgb(10 10 10 / .94);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px 16px max(16px,env(safe-area-inset-bottom))}
.sowb-viewer img{max-width:100%;max-height:calc(100% - 64px);object-fit:contain;border-radius:6px}
.sowb-viewer .bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin-top:12px;color:#efebe2;font:500 13px/1.3 "Geist","Segoe UI",system-ui,sans-serif}
.sowb-viewer .who{flex:1 1 100%;text-align:center;opacity:.8}
.sowb-viewer button,.sowb-viewer a{font:inherit;font-weight:600;color:#efebe2;background:rgb(255 255 255 / .1);border:1px solid rgb(255 255 255 / .2);border-radius:6px;padding:7px 14px;text-decoration:none;cursor:pointer}
.sowb-viewer [data-del]{color:#ff9b73}
.sowb-viewer [data-del][data-armed]{background:#c2410c;color:#fff;border-color:#c2410c}

/* Printable SOW: a paper-white document over the builder; only the document prints. */
.field.sowb-xph{display:flex;gap:8px;align-items:center;justify-content:flex-start;cursor:pointer}
.field.sowb-xph input{width:auto;margin:0;accent-color:var(--accent)}
.field.sowb-xph > span{color:var(--fg)}
.sowb-print{position:fixed;inset:0;z-index:10000;overflow:auto;background:#e9e6df;color:#131313;-webkit-overflow-scrolling:touch}
.sowb-print .pv-np{position:sticky;top:0;z-index:1;display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 16px;background:#131313;color:#efebe2;font:500 13px/1.3 "Geist","Segoe UI",system-ui,sans-serif}
.sowb-print .pv-np span{opacity:.75;margin-left:auto}
.sowb-print .pv-np button{font:600 13px/1 "Geist","Segoe UI",system-ui,sans-serif;height:34px;padding:0 14px;border-radius:6px;cursor:pointer;border:1px solid #efebe2;background:#efebe2;color:#131313}
.sowb-print .pv-np button[data-x]{background:transparent;color:#efebe2;border-color:rgb(239 235 226 / .35)}
.sowb-print .pv-np button:disabled{opacity:.6;cursor:default}
.sowb-print .pv-doc{max-width:8.5in;margin:20px auto 40px;background:#fff;padding:.6in .65in;box-shadow:0 10px 30px rgb(0 0 0 / .12);font:10.5pt/1.45 "Geist","Segoe UI",system-ui,-apple-system,sans-serif}
.sowb-print .pv-doc header{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #131313;padding-bottom:8px;margin-bottom:18px}
.sowb-print .pv-brand{display:flex;gap:8px;align-items:center;font-weight:700;font-size:11pt}
.sowb-print .pv-brand i{font:700 8pt/1 ui-monospace,monospace;font-style:normal;background:#c2410c;color:#fff;border-radius:3px;padding:3px 5px}
.sowb-print .pv-kind{font-size:9pt;text-transform:uppercase;letter-spacing:.08em;color:#54504a;font-weight:600}
.sowb-print h1{font-size:20pt;letter-spacing:-.02em;margin:0 0 2px}
.sowb-print .pv-addr,.sowb-print .pv-meta{margin:0;color:#54504a}
.sowb-print .pv-meta{margin-bottom:12px}
.sowb-print .pv-ask{background:#fff8d6;border:1px solid #f1d98a;border-radius:6px;padding:8px 10px;margin:0 0 12px}
.sowb-print .pv-sum{white-space:pre-line;margin:0 0 12px}
.sowb-print section{margin-top:18px}
.sowb-print h2{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:12.5pt;margin:0;padding:6px 10px;background:#e2eee7;border-bottom:1.5px solid #1f5e46;break-after:avoid}
.sowb-print h2 small{font-size:9pt;font-weight:500;color:#3d3a35}
.sowb-print .pv-pr{display:flex;gap:18px;justify-content:flex-end;align-items:baseline;padding:6px 10px;border-bottom:1px solid #d8d3c8;font-size:9.5pt;break-after:avoid}
.sowb-print .pv-blank{display:inline-block;min-width:1.8in;border-bottom:1.5px solid #131313;font-weight:700}
.sowb-print .pv-ln{padding:8px 10px;border-bottom:1px solid #e6e1d7;break-inside:avoid}
.sowb-print .pv-ln .pv-hd{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.sowb-print .pv-sid{font:700 9pt/1 ui-monospace,monospace;color:#3d3a35;min-width:52px}
.sowb-print .pv-loc{color:#54504a;font-size:9.5pt}
.sowb-print .pv-own{margin-left:auto;font-weight:700}
.sowb-print .pv-desc{white-space:pre-line;margin:3px 0 0 62px}
.sowb-print .pv-bits{display:grid;grid-template-columns:repeat(auto-fit,minmax(1.8in,1fr));gap:4px 14px;margin:5px 0 0 62px;font-size:9.5pt}
.sowb-print .pv-bits div{white-space:pre-line}
.sowb-print .pv-bits i{display:block;font-style:normal;font-size:8pt;text-transform:uppercase;letter-spacing:.05em;color:#6b665d;font-weight:700}
.sowb-print .pv-ph{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0 62px;align-items:flex-end}
.sowb-print .pv-ph img{height:1.45in;width:auto;max-width:2.2in;object-fit:cover;border-radius:3px;border:1px solid #d8d3c8}
.sowb-print .pv-ph span{font-size:9pt;color:#6b665d}
.sowb-print .pv-tot{display:flex;gap:22px;justify-content:flex-end;align-items:baseline;margin-top:18px;padding:10px;border-top:2px solid #131313;font-size:11pt}
.sowb-print .pv-sign{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:48px;font-size:9pt;color:#54504a;break-inside:avoid}
.sowb-print .pv-sign span{display:block;border-bottom:1px solid #131313;height:34px;margin-bottom:4px}
@media (max-width:640px){
  .sowb-print .pv-doc{margin:0;padding:20px 16px;box-shadow:none}
  .sowb-print .pv-desc,.sowb-print .pv-bits,.sowb-print .pv-ph{margin-left:0}
  .sowb-print .pv-sign{grid-template-columns:1fr}
  .sowb-print .pv-ph img{height:1.1in}
}
@media print{
  @page{margin:.5in}
  html,body.sowb-printing{height:auto!important;overflow:visible!important;display:block!important;background:#fff!important}
  body.sowb-printing > :not(.sowb-print){display:none!important}
  .sowb-print{position:static;overflow:visible;background:#fff}
  .sowb-print .pv-np{display:none}
  .sowb-print .pv-doc{max-width:none;margin:0;padding:0;box-shadow:none}
  .sowb-print h2,.sowb-print .pv-ask{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ---------- phones ----------
   The builder is a desktop spreadsheet. On a phone: a compact header, filters in one row you swipe
   sideways, totals tucked away until asked for (Show totals), and each scope line as a card.
   Tapping a card opens its details panel, where everything can be edited (shim.js wires the tap). */
@media (max-width:640px){
  #top{gap:8px;padding-block:8px}
  #top .brand{flex:1 1 auto;order:0}
  #top .sowb-acct{order:1}
  #top .proj-pick{order:2;flex:1 1 100%}
  #top .proj-pick select{flex:1;max-width:none}
  #top .skin-pick{display:none}
  #top .tabs{order:3;flex:1 1 100%;margin-block:0;height:36px;gap:20px}
  #top #btnHist,#top #btnImport,#top #btnExport{order:4;height:30px;padding:0 10px;font-size:13px}
  #top #btnExport{margin-left:auto}
  #strip{padding-block:6px}
  #strip h1{font-size:16px}
  #fbar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:6px;padding-block:8px;-webkit-overflow-scrolling:touch}
  #fbar::-webkit-scrollbar{display:none}
  #fbar > *{flex:0 0 auto}
  #fbar > .lbl:first-child{flex:1 1 auto;min-width:0}
  #fbar #fq{order:-2;width:150px;min-width:150px}
  #fbar .fbtn:has(#addBlank){order:-1}
  #status .hint{display:none}

  #gw table.grid{display:block;width:auto!important;min-width:0!important;user-select:auto;-webkit-user-select:auto}
  #gw table.grid colgroup,#gw table.grid thead{display:none}
  #gw table.grid tbody{display:block;padding-bottom:16px}
  #gw .grid tr{display:block}
  #gw .grid td{display:block;position:static;width:auto!important;border:0;padding:1px 0;background:none;cursor:pointer;font-size:14px;line-height:1.4}
  #gw .grid td.rh{display:none}
  #gw .grid td:empty,#gw .grid td:has(> .clamp:empty){display:none}
  #gw .grid td.sel,#gw .grid td.active{background:none;box-shadow:none}
  #gw .grid tr.dense td .clamp{-webkit-line-clamp:3}
  #gw .grid td[data-label]:not(.c0)::before{content:attr(data-label);display:block;margin-top:6px;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
  #gw .grid td.money{text-align:left}
  #gw .grid tr:not(.grp){margin:8px 12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
  #gw .grid tr:not(.grp) td.c0{display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:13px}
  #gw .grid tr:not(.grp) td.c0 .rowbtn{font-size:16px;padding:2px 8px;opacity:1}
  #gw .grid tr.grp{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:14px;padding:10px 12px;background:var(--subtle);border-block:1px solid var(--line)}
  #gw .grid tr.grp td{flex:1 1 auto;padding:0;cursor:default}
  #gw .grid tr.grp td.c0{flex:1 1 100%;font-size:15px}
  #gw .grid tr.grp td.money{flex:1 1 40%}
  #gw .grid tr.grp td.money::before{margin-top:0}
  #gw .grid tr.grp td.money input{width:100%}
}

.auth{
  --bg:#f3f0ea;--card:#ffffff;--fg:#0f0f0e;--muted:#54504a;--line:#e2ddd3;--ink:#131313;--ink-fg:#efebe2;
  --accent:#c2410c;--ok:#15803d;--ok-bg:#ecf6ef;--err:#9a3412;--err-bg:#fdf0ea;--field:#fbfaf7;
  margin:0;min-height:100vh;background:var(--bg);color:var(--fg);
  font:14px/1.5 "Geist","Segoe UI",system-ui,-apple-system,sans-serif;
  display:flex;flex-direction:column;
}
@media (prefers-color-scheme:dark){
  .auth{--accent:#ff8a5c;--bg:#0f0f0e;--card:#1a1918;--fg:#efebe2;--muted:#a39e95;--line:#2b2a28;--ink:#efebe2;--ink-fg:#141413;--ok-bg:#12261a;--ok:#6ad08f;--err-bg:#2a1610;--err:#ff9b73;--field:#141413}
}
.auth *{box-sizing:border-box}
.auth header{background:#131313;color:#efebe2;padding:14px 20px;display:flex;align-items:center;gap:12px}
.auth .brand{font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}
.auth .brand i{font-style:normal;font-family:"Geist Mono",ui-monospace,monospace;font-size:11px;background:#c2410c;color:#fff;border-radius:4px;padding:3px 6px;letter-spacing:.04em}
.auth header .spacer{flex:1}
.auth header a{color:#efebe2;opacity:.85;text-decoration:none;font-size:13px}
.auth header a:hover{opacity:1;text-decoration:underline}
.auth main{flex:1;display:flex;justify-content:center;padding:48px 16px}
.auth .card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:28px;width:100%;max-width:420px;box-shadow:0 12px 32px rgb(20 20 19 / .08);align-self:flex-start}
.auth .wide{max-width:1040px}
.auth h1{font-size:22px;letter-spacing:-.02em;margin:0 0 4px}
.auth .sub{color:var(--muted);margin:0 0 20px}
.auth label{display:block;margin:0 0 14px;font-weight:500;font-size:13px}
.auth label small{font-weight:400;color:var(--muted)}
.auth input,.auth select{display:block;width:100%;margin-top:5px;font:inherit;color:inherit;background:var(--field);border:1px solid var(--line);border-radius:6px;padding:9px 11px}
.auth input:focus,.auth select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}
.auth .row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:480px){.auth .row{grid-template-columns:1fr}}
.auth button,.auth .button{font:inherit;font-weight:600;border-radius:6px;padding:9px 14px;border:1px solid var(--ink);background:var(--ink);color:var(--ink-fg);cursor:pointer}
.auth button.ghost{background:transparent;color:var(--fg);border-color:var(--line)}
.auth button.sm{padding:5px 10px;font-size:12px}
.auth button:disabled{opacity:.55;cursor:default}
.auth .full{width:100%}
.auth .switch{margin-top:18px;text-align:center;color:var(--muted)}
.auth .switch button{background:none;border:0;color:var(--accent);padding:0;font-weight:600}
.auth .msg{border-radius:6px;padding:10px 12px;margin:0 0 16px;font-size:13px}
.auth .msg.err{background:var(--err-bg);color:var(--err)}
.auth .msg.ok{background:var(--ok-bg);color:var(--ok)}
.auth [hidden]{display:none!important}
.auth table{width:100%;border-collapse:collapse;font-size:13px}
.auth th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;padding:8px;border-bottom:1px solid var(--line)}
.auth td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.auth td .who{font-weight:600}
.auth td .meta{color:var(--muted);font-size:12px}
.auth .pill{display:inline-block;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600}
.auth .pill.pending{background:#fff1d6;color:#7c4a03}
.auth .pill.approved{background:var(--ok-bg);color:var(--ok)}
.auth .pill.disabled{background:var(--err-bg);color:var(--err)}
.auth .acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.auth .tablewrap{overflow-x:auto}
.auth .toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px}
.auth .toolbar input[type=search]{flex:1;min-width:220px;margin:0}
.auth .seg{display:flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.auth .seg button{background:transparent;color:var(--muted);border:0;border-radius:0;padding:8px 12px;font-weight:500}
.auth .seg button[aria-selected=true]{background:var(--ink);color:var(--ink-fg)}
.auth .ask{margin-top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--field);text-align:left;max-width:320px}
.auth .ask p{margin:0 0 8px;font-size:12px;line-height:1.45}
/* Users page: one card per person. Identity on the left, role, then what they can see, then actions. */
.auth .wide{max-width:1280px}
.auth .phead{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end;justify-content:space-between;margin:0 0 14px}
.auth .phead .sub{margin:0}
.auth .stats{display:flex;gap:8px;flex-wrap:wrap}
.auth .stat{display:grid;gap:1px;min-width:118px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--field)}
.auth .stat b{font-size:20px;line-height:1.1;font-variant-numeric:tabular-nums}
.auth .stat span{font-size:11.5px;color:var(--muted)}
.auth .stat.warn{border-color:#e9b65a;background:#fff8e8}
.auth .stat.warn b{color:#9a5200}
@media (prefers-color-scheme:dark){.auth .stat.warn{border-color:#6b4d16;background:#241b0c}.auth .stat.warn b{color:#ffcf7a}}
.auth .how{margin:0 0 16px;font-size:13px;color:var(--muted)}
.auth .how summary{cursor:pointer;font-weight:600;color:var(--fg);width:max-content}
.auth .how ul{margin:8px 0 0;padding-left:18px;display:grid;gap:4px;line-height:1.5}
.auth .seg button .ct{margin-left:6px;padding:0 6px;border-radius:999px;font-size:11px;background:color-mix(in srgb,currentColor 14%,transparent);font-variant-numeric:tabular-nums}
.auth .ppl{display:grid;gap:10px}
.auth .pcard{display:grid;grid-template-columns:minmax(220px,1.05fr) 150px minmax(320px,2fr) minmax(130px,auto);gap:14px 20px;align-items:start;padding:16px 18px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.auth .pcard.pending{border-color:#e9b65a;box-shadow:inset 4px 0 0 #e9a23b}
.auth .pcard.disabled{opacity:.72}
@media (prefers-color-scheme:dark){.auth .pcard.pending{border-color:#6b4d16}}
.auth .pid{display:flex;gap:12px;min-width:0}
.auth .av{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;font:600 13px "Geist Mono",ui-monospace,monospace;background:var(--field);border:1px solid var(--line);color:var(--fg)}
.auth .r-admin .av{background:var(--ink);color:var(--ink-fg);border-color:var(--ink)}
.auth .r-team .av{background:color-mix(in srgb,var(--accent) 18%,var(--card));border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.auth .pidt{min-width:0;display:grid;gap:1px}
.auth .pidt .who{font-weight:600;font-size:14.5px}
.auth .hint{color:var(--muted);font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.auth .hint.when{margin-top:4px}
.auth .hint.warn{color:#9a5200}
@media (prefers-color-scheme:dark){.auth .hint.warn{color:#ffcf7a}}
.auth .hint.empty{padding:20px;text-align:center}
.auth .prole{display:grid;gap:6px;justify-items:start}
.auth .lab{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.auth .pcard select{display:inline-block;width:auto;max-width:100%;margin:0;padding:5px 8px;font-size:12.5px}
.auth .pacc{display:grid;gap:10px;min-width:0}
.auth .pacc > .hint{margin:0}
.auth .pact{flex-direction:column;align-items:flex-end}
.auth .gcrow{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;align-items:center;margin:0}
.auth .gcrow label{margin:0;font-size:12px;font-weight:600}
.auth .gcrow select{width:100%}
.auth .gcrow .hint{grid-column:1 / -1}
.auth .gcrow.unset select{border-color:#e9b65a}
.auth .allp{display:grid;gap:4px;justify-items:start}
.auth .proj{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--field);display:grid;gap:8px}
.auth .projhd{display:flex;align-items:center;gap:8px}
.auth .projhd b{flex:1;min-width:0;font-size:13.5px}
.auth .seg.mini button{padding:4px 10px;font-size:12px}
.auth .seg button[aria-pressed=true]{background:var(--ink);color:var(--ink-fg)}
.auth button.icon{padding:4px 8px;line-height:1}
.auth button.link{background:none;border:0;padding:2px 4px;color:var(--accent);font-size:12px;font-weight:600}
.auth button.link:hover{text-decoration:underline}
.auth .trsum{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.auth .tchip{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:500;background:var(--card);border:1px solid var(--line)}
.auth .tchip.all{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.auth .tchip.warn{background:#fff1d6;color:#7c4a03;border-color:transparent}
@media (prefers-color-scheme:dark){.auth .tchip.warn{background:#33260d;color:#ffcf7a}}
.auth .tchip.more{color:var(--muted)}
.auth .tred{display:grid;gap:8px;margin-top:2px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--card)}
.auth .trbar{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.auth .trcount{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;margin-right:auto}
.auth .trevery{display:flex;gap:6px;align-items:center;margin:0;font-size:12px;font-weight:500}
.auth .trevery input,.auth .tchk input{display:inline-block;width:auto;margin:0;accent-color:var(--accent)}
.auth .tchk{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:2px 12px;max-height:240px;overflow:auto;padding:2px}
.auth .tchk label{display:flex;gap:7px;align-items:center;margin:0;padding:3px 4px;border-radius:4px;font-weight:400;font-size:12.5px;cursor:pointer}
.auth .tchk label:hover{background:var(--field)}
.auth .tchk label:has(input:checked) span{font-weight:600}
.auth .tchk label:has(input:disabled){cursor:default;opacity:.7}
.auth .trfoot{display:flex;gap:6px;justify-content:flex-end;padding-top:8px;border-top:1px solid var(--line)}
.auth .addp{display:flex;gap:6px;align-items:center;padding-top:10px;border-top:1px dashed var(--line)}
.auth .addp select:first-child{flex:1;min-width:0}
@media (max-width:1100px){.auth .pcard{grid-template-columns:minmax(200px,1fr) 140px minmax(0,2fr)}.auth .pact{grid-column:1 / -1;flex-direction:row;justify-content:flex-start}}
@media (max-width:760px){.auth .pcard{grid-template-columns:1fr;padding:14px}.auth .prole{grid-template-columns:auto auto auto;align-items:center}.auth .phead{align-items:flex-start}.auth .gcrow{grid-template-columns:1fr}.auth .gcrow select{min-width:0}.auth .toolbar .seg{max-width:100%;overflow-x:auto}.auth .seg button{white-space:nowrap}.auth .addp{flex-wrap:wrap}}
.auth .asked{margin-top:6px;font-size:12px;background:#fff1d6;color:#7c4a03;border-radius:4px;padding:3px 6px;display:inline-block}
@media (prefers-color-scheme:dark){.auth .asked{background:#33260d;color:#ffcf7a}}
.auth main:has(.install){flex-direction:column;align-items:center;gap:16px}
.auth main:has(.install) .card{align-self:center}
.auth .install h2{font-size:17px;letter-spacing:-.01em;margin:0 0 4px}
.auth .install ol{margin:12px 0 0;padding-left:20px;display:grid;gap:8px;color:var(--fg)}
.auth .install #installBtn{margin-top:4px}
/* Users page: People / Activity log switch, and the log itself. */
.auth .viewtabs{display:flex;gap:4px;margin:-8px 0 18px;border-bottom:1px solid var(--line)}
.auth .viewtabs button{background:none;border:0;border-radius:0;color:var(--muted);font-weight:600;padding:8px 2px;margin-right:16px;box-shadow:inset 0 -2px 0 transparent}
.auth .viewtabs button[aria-selected=true]{color:var(--fg);box-shadow:inset 0 -2px 0 var(--accent)}
.auth .log{list-style:none;margin:0 0 12px;padding:0;font-size:13px}
.auth .log li{display:grid;grid-template-columns:110px 140px 1fr;gap:10px;padding:9px 4px;border-bottom:1px solid var(--line);align-items:baseline}
.auth .log li.meta{display:block;color:var(--muted)}
.auth .log time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}
.auth .log .who{font-weight:600;overflow-wrap:anywhere}
.auth .log .proj{display:inline-block;margin-left:8px;font-size:11.5px;color:var(--muted);background:var(--field);border:1px solid var(--line);border-radius:999px;padding:0 8px}
.auth .log li.warn .what{color:var(--err)}
@media (max-width:640px){.auth .log li{grid-template-columns:1fr auto;gap:2px 10px}.auth .log time{grid-column:2;grid-row:1;text-align:right}.auth .log .what{grid-column:1 / -1}}
/* Users page: Email alerts form. */
.auth .alerts{max-width:520px}
.auth .alerts fieldset{border:1px solid var(--line);border-radius:8px;padding:10px 14px 4px;margin:0 0 16px}
.auth .alerts legend{font-size:13px;font-weight:600;padding:0 4px}
.auth .alerts label.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:13.5px}
.auth .alerts label.check input{width:auto;margin:3px 0 0;accent-color:var(--accent)}
.auth .alerts .row2{display:flex;gap:10px;flex-wrap:wrap}
/* Users page on a phone: one stacked card per person instead of a sideways-scrolling table. */
@media (max-width:640px){
  .auth main{padding:16px 12px}
  .auth .card{padding:20px 16px}
  .auth .wide table,.auth .wide tbody,.auth .wide tr,.auth .wide td{display:block}
  .auth .wide thead{display:none}
  .auth .wide tr{padding:14px 0;border-bottom:1px solid var(--line)}
  .auth .wide td{border:0;padding:4px 0}
  .auth .wide td:first-child{padding-bottom:6px}
  .auth .wide .projcell{min-width:0}
  .auth .wide .acts{justify-content:flex-start;padding-top:6px}
  .auth .toolbar input[type=search]{min-width:0;flex-basis:100%}
}
.auth .temp{font-family:"Geist Mono",ui-monospace,monospace;background:var(--field);border:1px solid var(--line);border-radius:4px;padding:2px 6px}
