




:root{

  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --disp:"Archivo","Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;


  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s6:24px; --s8:32px; --s12:48px;


  --row:48px;
  --row-pad:12px;
  --row-py:8px;


  --ctrl:40px;
  --ctrl-sm:32px;
  --tap:44px;


  --gut:clamp(16px,3vw,24px);
  --page:1600px;
  --prose:76ch;
  --top-h:56px;

  --sticky-h:140px;
  --panel-w:440px;


  --t-hover:120ms;
  --t-panel:180ms;
  --ease:cubic-bezier(.2,.8,.3,1);


  --chamfer:polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 0 100%);
}


:root,
html[data-theme="dark"],
[data-ground="dark"]{
  --bg:#0A0A0A;
  --bg2:#111111;
  --bg3:#171717;
  --ink:#F2F2F2;
  --ink2:#C4C4C4;
  --mid:#8C8C8C;
  --line:#262626;
  --line2:#3A3A3A;
  --edge:#6E6E6E;
  --o:#F25513;
  --on-o:#0A0A0A;

  --o-txt:var(--o);
  --ok:#4FB477;
  --danger:#E5484D;

  --o-tint:rgba(242,85,19,.14);
  --ok-tint:rgba(79,180,119,.13);
  --danger-tint:rgba(229,72,77,.15);
  --flag-bg:#301B11;
  --field:#1E1E1E;
  --sheet:#151515;
  --tag-bg:#242424;
  --skel:#1E1E1E;
  --scrim:rgba(0,0,0,.72);
  color-scheme:dark;
}


html[data-theme="light"],
[data-ground="light"]{
  --bg:#EAE8E1;
  --bg2:#F4F3EE;
  --bg3:#E4E1D8;
  --ink:#14161A;
  --ink2:#3B3E43;
  --mid:#565550;
  --line:#CFCCC2;
  --line2:#B4B0A3;
  --edge:#807A6D;
  --o:#B03400;
  --on-o:#FFF6F2;
  --o-txt:var(--o);
  --ok:#166237;
  --danger:#A32B2B;
  --o-tint:rgba(176,52,0,.12);
  --ok-tint:rgba(22,98,55,.12);
  --danger-tint:rgba(163,43,43,.12);
  --flag-bg:#ECDCD1;
  --field:#FDFCFA;
  --sheet:#FAF9F4;
  --tag-bg:#DCD8CE;
  --skel:#DCD9CF;
  --scrim:rgba(20,22,26,.62);
  color-scheme:light;
}


html[data-theme="dim"],
[data-ground="dim"]{
  --bg:#242320;
  --bg2:#2C2B27;
  --bg3:#343330;
  --ink:#F0EEE9;
  --ink2:#C9C6BE;
  --mid:#96938B;
  --line:#3A3934;
  --line2:#4E4C46;
  --edge:#847F75;
  --o:#F2691F;
  --on-o:#1A1512;
  --o-txt:var(--o);
  --ok:#5CBE85;
  --danger:#EC5C60;
  --o-tint:rgba(242,105,31,.15);
  --ok-tint:rgba(92,190,133,.14);
  --danger-tint:rgba(236,92,96,.15);
  --flag-bg:#3A2A20;
  --field:#1C1B18;
  --sheet:#2A2925;
  --tag-bg:#38372F;
  --skel:#302F2B;
  --scrim:rgba(0,0,0,.66);
  color-scheme:dark;
}


.ground{background:var(--bg);color:var(--ink)}



html[data-density="condensed"]{--row:40px; --row-pad:10px; --row-py:4px}
html[data-density="regular"] {--row:48px; --row-pad:12px; --row-py:8px}
html[data-density="relaxed"] {--row:56px; --row-pad:14px; --row-py:12px}




*,*::before,*::after{box-sizing:border-box}



html{scrollbar-width:thin;scrollbar-color:var(--line2) transparent;
  overflow-y:scroll;scrollbar-gutter:stable}
*::-webkit-scrollbar{width:11px;height:11px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{
  background-color:var(--line2);
  border:3px solid transparent;background-clip:padding-box;
  border-radius:8px;
}
*::-webkit-scrollbar-thumb:hover{background-color:var(--mid)}

*::-webkit-scrollbar-corner{background:transparent}

html{background:var(--bg);-webkit-text-size-adjust:100%}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;

}

a{color:inherit;text-decoration:none}
a:hover{color:var(--o)}


.note a,.hint a,.state a,.prose a,.disc-b a,.kv .v a,caption.is-shown a,
.ph-l p a,td p a,.row p a,.finding-b a{
  color:var(--ink);
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:2px;
  padding-block:4px;
}
.note a:hover,.hint a:hover,.state a:hover,.prose a:hover,.disc-b a:hover,
.kv .v a:hover,caption.is-shown a:hover,.finding-b a:hover{color:var(--o)}


code,kbd,samp,pre{
  font-family:var(--sans);font-size:inherit;
  font-weight:500;color:var(--ink2);
  font-variant-numeric:tabular-nums;
}
pre{white-space:pre-wrap;margin:0}
img,svg{max-width:100%}
p{margin:0 0 var(--s3)}
p:last-child{margin-bottom:0}


:focus-visible{
  outline:2px solid var(--gc-focus,var(--o));
  outline-offset:2px;
}
:focus:not(:focus-visible){outline:none}


[id]{scroll-margin-top:var(--sticky-h)}
@media (max-width:900px){

  :root{--sticky-h:132px}
}


@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}


.vh{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}


.lbl{
  font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--mid);
}




:root{--gct-o:#F25513}

.lockup{display:block;height:28px;width:auto}
.lockup .slab{fill:var(--gct-o,#F25513)}
@media (min-width:900px){.lockup{height:30px}}





.top{
  position:sticky;top:0;z-index:60;
  display:flex;align-items:center;gap:var(--s6);
  min-height:var(--top-h);
  padding:0 var(--gut);
  background:var(--bg2);
  border-bottom:1px solid var(--line2);
}
.brand{display:inline-flex;align-items:center;flex:none;color:var(--ink)}
.brand:hover{color:var(--ink)}


.nav{display:flex;align-items:center;gap:var(--s1);flex:1 1 auto;min-width:0;flex-wrap:wrap}
.nav a{
  display:inline-flex;align-items:center;gap:var(--s2);
  height:var(--top-h);padding:0 var(--s3);
  font-size:14px;font-weight:600;color:var(--ink2);
  border-bottom:2px solid transparent;
  transition:color var(--t-hover) var(--ease);
}
.nav a:hover{color:var(--ink)}
.nav a[aria-current]{color:var(--ink);border-bottom-color:var(--o)}


.nav .navm-t{
  display:inline-flex;align-items:center;gap:var(--s1);
  height:var(--top-h);padding:0 var(--s3);
  font:inherit;font-size:14px;font-weight:600;color:var(--ink2);
  background:none;border:0;border-bottom:2px solid transparent;
  cursor:pointer;
  transition:color var(--t-hover) var(--ease);
}
.nav .navm-t:hover,.navm:focus-within > .navm-t{color:var(--ink)}
.nav .navm-t[aria-current]{color:var(--ink);border-bottom-color:var(--o)}
.navm-cv{width:14px;height:14px;color:var(--mid);
  transition:transform var(--t-hover) var(--ease)}
.navm:hover .navm-cv,.navm:focus-within .navm-cv{transform:rotate(180deg)}


.nav .navm-p .navm-x{
  display:flex;align-items:center;gap:var(--s2);
  min-height:var(--tap);padding:0 var(--s4);
  font-size:13.5px;font-weight:500;color:var(--mid);
  white-space:nowrap;cursor:default;
}
.nav .navm-p .navm-x .tag{opacity:.85}

.navm{position:relative;display:inline-flex}
.navm-p{
  position:absolute;top:100%;left:0;z-index:70;
  display:none;flex-direction:column;

  min-width:264px;padding:var(--s2) 0;
  background:var(--bg2);
  border:1px solid var(--edge);border-top:0;
}
.navm:hover > .navm-p,
.navm:focus-within > .navm-p{display:flex}

.nav .navm-p a{
  height:auto;min-height:var(--tap);
  justify-content:flex-start;gap:var(--s2);white-space:nowrap;
  padding:0 var(--s4);
  font-size:13.5px;font-weight:500;color:var(--ink2);
  border-bottom:0;
}
.nav .navm-p a:hover{background:var(--bg3);color:var(--ink)}

.nav .navm-p a[aria-current]{color:var(--ink);font-weight:700;box-shadow:inset 2px 0 0 var(--o)}
.nav .navm-p .tag{margin-left:auto}


@media (hover:none){
  .navm{display:contents}
  .navm-p{
    position:static;display:flex;flex-direction:row;flex-wrap:wrap;
    min-width:0;padding:0;background:none;border:0;
  }
  .nav .navm-p a{height:var(--top-h);padding:0 var(--s3);font-size:14px;font-weight:600}
  .nav .navm-p a[aria-current]{box-shadow:none;border-bottom:2px solid var(--o)}
}


.topr{display:flex;align-items:center;gap:var(--s4);flex:none;min-width:0}
.org{
  font-size:13px;color:var(--mid);
  padding-left:var(--s4);border-left:1px solid var(--line);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}


.menu{position:relative}
.menu > summary{
  display:inline-flex;align-items:center;gap:var(--s2);
  height:var(--ctrl);padding:0 var(--s2);
  cursor:pointer;list-style:none;
  border:1px solid transparent;
}
.menu > summary::-webkit-details-marker{display:none}
.menu > summary:hover,.menu[open] > summary{border-color:var(--edge);background:var(--bg3)}
.menu .av{
  display:grid;place-items:center;flex:none;
  width:28px;height:28px;border:1px solid var(--edge);border-radius:50%;
  font-size:11.5px;font-weight:600;
}
.menu .nm{font-size:13.5px}
.menu-p{
  position:absolute;right:0;top:calc(100% + var(--s2));z-index:70;
  width:280px;background:var(--bg2);border:1px solid var(--edge);
}

@media (max-width:520px){
  .menu-p,.pk-p{
    position:fixed;left:var(--s2);right:var(--s2);
    top:auto;bottom:var(--s2);
    width:auto;max-width:none;
    max-height:70vh;overflow:auto;
  }
}
.menu-p a,.menu-p button{
  display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  width:100%;min-height:var(--tap);padding:var(--s3) var(--s4);
  font:inherit;font-size:14px;text-align:left;
  background:none;border:0;border-bottom:1px solid var(--line);
  color:var(--ink);cursor:pointer;
}
.menu-p a:hover,.menu-p button:hover{background:var(--bg3);color:var(--ink)}
.menu-id{margin:0;padding:var(--s3) var(--s4);border-bottom:1px solid var(--line)}
.menu-id b{display:block;font-size:14px}
.menu-id small{display:block;font-size:12.5px;color:var(--mid)}
.menu-sec{padding:var(--s3) var(--s4);border-bottom:1px solid var(--line)}
.menu-sec > .lbl{display:block;margin-bottom:var(--s2)}


@media (min-width:901px){
  .nav{flex:0 0 auto;flex-wrap:nowrap}
  .topr{flex:1 1 auto;min-width:0;justify-content:flex-end}
  .org{flex:0 1 auto;min-width:0}
  .allow{flex:none}
}


@media (min-width:901px) and (max-width:1163px){
  .topr:has(.allow) .org{display:none}
}


@media (min-width:901px) and (max-width:905px){
  .org{display:none}
}


@media (max-width:459px){
  .topr:has(> .dens) .org{display:none}
}


@media (max-width:394px){
  .topr:has(.allow) .org{display:none}
}


@media (max-width:900px){
  .top{height:auto;flex-wrap:wrap;padding:var(--s2) var(--gut);gap:var(--s3)}
  .nav a{height:var(--tap)}
  .topr{flex:1 1 100%;justify-content:space-between}
  .org{border-left:0;padding-left:0}
  .menu .nm{display:none}
}




.wrap{max-width:var(--page);margin:0 auto;padding:0 var(--gut) var(--s12)}
.wrap-prose{max-width:var(--prose)}


.crumb{
  display:flex;align-items:center;flex-wrap:wrap;gap:var(--s1);
  font-size:13px;color:var(--mid);
}
.crumb a{display:inline-flex;align-items:center;min-height:var(--tap);color:var(--mid)}
.crumb a:hover{color:var(--o);text-decoration:underline;text-underline-offset:3px}
.crumb [aria-current="page"]{color:var(--ink);font-weight:500}
.crumb .sep{color:var(--mid);padding:0 var(--s1)}



.ph{
  position:sticky;top:var(--top-h);z-index:50;
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:var(--s4) var(--s6);flex-wrap:wrap;
  padding:var(--s6) 0 var(--s3);
  background:var(--bg);
  border-bottom:1px solid var(--line2);
}
.ph-l{min-width:0}
.ph-r{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}


h1{
  margin:0;
  font-family:var(--disp);font-weight:700;letter-spacing:-.02em;
  font-size:clamp(1.35rem,2.4vw,1.75rem);line-height:1.1;
}


.ph .sub{

  outline:2px dashed var(--danger);
}

@media (max-width:900px){.ph{position:static}}


.sec{margin:var(--s6) 0 0}
.sec:first-child{margin-top:var(--s4)}

.sech{
  display:flex;align-items:center;justify-content:space-between;
  gap:var(--s2) var(--s4);flex-wrap:wrap;
  padding:0 0 var(--s2);
  border-bottom:1px solid var(--line2);
}

.sech h2{
  margin:0;font-family:var(--disp);font-weight:700;
  font-size:18px;letter-spacing:-.015em;color:var(--ink);
}
.sech .lbl{margin-left:auto}
h2{font-size:16px;margin:0}
h3{margin:0;font-size:14px;font-weight:600}
.hint{margin:var(--s3) 0 0;font-size:13.5px;color:var(--mid);max-width:var(--prose)}

.meta{font-size:12.5px;color:var(--mid);font-variant-numeric:tabular-nums}
.meta b{color:var(--ink2);font-weight:500}


.mon{display:inline-block;width:2.2em;font-variant-numeric:tabular-nums}





.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);
  min-height:var(--ctrl);padding:0 var(--s3);
  font-family:var(--sans);font-size:13.5px;font-weight:600;
  color:var(--ink);background:transparent;
  border:1px solid transparent;
  cursor:pointer;white-space:nowrap;
  transition:background var(--t-hover) var(--ease),
             border-color var(--t-hover) var(--ease),
             color var(--t-hover) var(--ease);
}
.btn:hover{background:var(--bg2);border-color:var(--edge);color:var(--ink)}
.btn:focus-visible{border-color:var(--edge)}
.btn:active{background:var(--bg3)}
.btn[disabled],.btn[aria-disabled="true"]{
  opacity:.5;cursor:not-allowed;background:transparent;border-color:transparent;
}


.i{
  width:18px;height:18px;flex:none;
  fill:none;stroke:currentColor;stroke-width:1.4;
  stroke-linecap:square;stroke-linejoin:miter;
  overflow:visible;
}
.btn-s .i{width:16px;height:16px}


.btn-p,.btn-p:hover,.btn-p:focus-visible{background:var(--o);border-color:var(--o);color:var(--on-o)}
.btn-p:hover{filter:brightness(1.1)}
html[data-theme="light"] .btn-p:hover,[data-ground="light"] .btn-p:hover{filter:brightness(1.15)}


.btn-q{color:var(--ink2);font-weight:500}
.btn-q:hover{color:var(--ink)}


.btn-d{color:var(--danger);border-color:var(--danger);background:transparent}
.btn-d:hover,.btn-d:focus-visible{background:var(--danger-tint);color:var(--danger);border-color:var(--danger)}


.btn-s{min-height:var(--ctrl-sm);padding:0 var(--s3);font-size:13px;position:relative}
.btn-s::after{
  content:"";position:absolute;left:0;right:0;top:50%;
  height:var(--tap);transform:translateY(-50%);
}

.btnrow{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center}

.tw + .btnrow,.tbar + .btnrow,table + .btnrow,.sheet-surface + .btnrow{margin-top:var(--s3)}




.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--s4)}
.f{display:flex;flex-direction:column;gap:var(--s1);min-width:0}

.span-all,.f-wide{grid-column:1/-1}

.f > label{
  font-size:12.5px;font-weight:600;color:var(--ink2);
  display:flex;align-items:center;gap:var(--s1);
}

.f > label .req{font-size:11.5px;font-weight:500;color:var(--mid);text-transform:uppercase;letter-spacing:.05em}


input,select,textarea{
  font-family:var(--sans);font-size:14px;color:var(--ink);
  min-height:var(--ctrl);padding:0 var(--s3);width:100%;
  background:var(--field);
  border:1px solid transparent;
  border-bottom:1px solid var(--edge);
  transition:border-color var(--t-hover) var(--ease),
             background var(--t-hover) var(--ease);
}
textarea{min-height:96px;padding:var(--s2) var(--s3);resize:vertical;line-height:1.5}
select{appearance:none;padding-right:var(--s8);
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),
                   linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 18px) 50%,calc(100% - 12px) 50%;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;
}
input:hover,select:hover,textarea:hover{border-bottom-color:var(--ink2)}


input:focus-visible,select:focus-visible,textarea:focus-visible{
  border-color:var(--o);
}

input::placeholder,textarea::placeholder{color:var(--mid)}


input[type="checkbox"],input[type="radio"]{
  appearance:none;-webkit-appearance:none;
  box-sizing:border-box;
  width:var(--tap);height:min(var(--tap),var(--row));
  min-height:0;padding:0;margin:0;
  background:transparent;border:0;
  display:inline-grid;place-items:center;
  position:relative;cursor:pointer;
}
input[type="checkbox"]::before,input[type="radio"]::before{
  content:"";width:18px;height:18px;
  background:var(--field);
  box-shadow:inset 0 0 0 1px var(--edge);
}
input[type="radio"]::before{border-radius:50%}
input[type="checkbox"]:checked::before,input[type="radio"]:checked::before{
  background:var(--o);box-shadow:inset 0 0 0 1px var(--o);
}
input[type="checkbox"]:checked::after{
  content:"";position:absolute;width:9px;height:5px;
  border-left:2px solid var(--on-o);border-bottom:2px solid var(--on-o);
  transform:translateY(-1px) rotate(-45deg);
}
input[type="radio"]:checked::after{
  content:"";position:absolute;width:6px;height:6px;border-radius:50%;
  background:var(--on-o);
}
input[type="checkbox"]:indeterminate::before{background:var(--o);box-shadow:inset 0 0 0 1px var(--o)}
input[type="checkbox"]:indeterminate::after{
  content:"";position:absolute;width:10px;height:2px;background:var(--on-o);
}

.f .help{font-size:12.5px;color:var(--mid)}


.f-err input,.f-err select,.f-err textarea{border-color:var(--danger)}
.f .err{
  display:flex;align-items:flex-start;gap:var(--s1);
  font-size:12.5px;font-weight:500;color:var(--danger);
}
.f .err::before{
  content:"!";flex:none;
  display:inline-grid;place-items:center;width:15px;height:15px;margin-top:1px;
  font-size:11px;font-weight:700;line-height:1;
  color:var(--on-o);background:var(--danger);border-radius:50%;
}
html[data-theme="light"] .f .err::before,[data-ground="light"] .f .err::before{color:#FFF6F2}


.ed{cursor:text}
.ed:hover,.ed:focus-within{outline:1px solid var(--o);outline-offset:-1px}




:root,html[data-theme="dark"],[data-ground="dark"]{
  --pill-ok-bg:#132018;      --pill-ok-fg:#4FB477;
  --pill-danger-bg:#2B1314;  --pill-danger-fg:#EC5F63;
  --pill-pending-bg:#171717; --pill-pending-fg:#8C8C8C;
}

html[data-theme="dim"],
[data-ground="dim"]{
  --pill-ok-bg:#233026;      --pill-ok-fg:#6ECB94;
  --pill-danger-bg:#3B2523;  --pill-danger-fg:#F0797C;
  --pill-pending-bg:#2F2E29; --pill-pending-fg:#9C998F;
}
html[data-theme="light"],
[data-ground="light"]{
  --pill-ok-bg:#D9E2D8;      --pill-ok-fg:#166237;
  --pill-danger-bg:#EADBD7;  --pill-danger-fg:#A32B2B;
  --pill-pending-bg:#E4E1D8; --pill-pending-fg:#565550;
}

.pill{
  display:inline-flex;align-items:center;gap:var(--s1);
  padding:4px 10px 4px 8px;
  font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  white-space:nowrap;
  clip-path:var(--chamfer);
  color:var(--pill-pending-fg);background:var(--pill-pending-bg);
}
.pill-ok     {color:var(--pill-ok-fg);     background:var(--pill-ok-bg)}
.pill-danger {color:var(--pill-danger-fg); background:var(--pill-danger-bg)}
.pill-pending{color:var(--pill-pending-fg);background:var(--pill-pending-bg)}
.pill-act    {color:var(--on-o);           background:var(--o)}


.badge{
  display:inline-flex;align-items:center;
  min-height:22px;padding:0 10px 0 8px;
  font-size:12px;font-weight:700;letter-spacing:.04em;
  font-variant-numeric:tabular-nums;
  color:var(--on-o);background:var(--o);
  clip-path:var(--chamfer);
}



.tag{
  display:inline-flex;align-items:center;
  padding:3px 8px;font-size:12px;font-weight:500;
  color:var(--ink2);background:var(--tag-bg);border:0;
  white-space:nowrap;
}





.bcov{
  display:flex;flex-wrap:wrap;align-items:baseline;
  gap:var(--s1) var(--s2);
  font-size:12.5px;line-height:1.4;
  color:var(--mid);
  font-variant-numeric:tabular-nums;
}

.bcov-v{font-weight:500}
.bcov-v b{font-weight:700}
.bcov-in {color:var(--ok)}
.bcov-rev{color:var(--o)}
.bcov-rem{color:var(--mid)}

.bcov-v.is-0{color:var(--mid);font-weight:400}

.bcov-t{color:var(--ink2);font-weight:500}
.bcov-t b{font-weight:700;color:var(--ink)}


.bcov-col,th.bcov-col,td.bcov-col{min-width:var(--bcov-w,232px)}


.clock{
  flex:1 0 100%;
  font-size:12.5px;line-height:1.4;color:var(--ink2);
  font-variant-numeric:tabular-nums;
}
.clock b{font-weight:700}
.clock .who{color:var(--mid);font-weight:500}
.clock-near b{color:var(--o)}
.clock-past b{color:var(--danger)}
.clock-done b{color:var(--mid);font-weight:600}

tr.flag .clock-past b,.flag .clock-past b{color:var(--pill-danger-fg)}



.row.is-sent,
tr.is-sent,
tr.is-sent > td,
tr.is-sent > th{color:var(--mid)}
.row.is-sent .ttl,
.row.is-sent .code,
.row.is-sent .bcov,
.row.is-sent .bcov-v,
.row.is-sent .clock,
.row.is-sent .clock b,
.row.is-sent .tag,
tr.is-sent .ttl,
tr.is-sent .code,
tr.is-sent .id,
tr.is-sent .bcov,
tr.is-sent .bcov-v,
tr.is-sent .bcov-t,
tr.is-sent .bcov-t b,
tr.is-sent .clock,
tr.is-sent .clock b,
tr.is-sent .sub,
tr.is-sent .sub b,
tr.is-sent .meta b,
tr.is-sent .ev,
tr.is-sent .ev a,
tr.is-sent .ev-i,
tr.is-sent .tag{color:var(--mid)}



.altd{position:relative;display:inline-block;width:24px;vertical-align:middle}
.alt{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:24px;min-height:24px;padding:0 2px;
  font:inherit;font-size:15px;font-weight:700;line-height:1;
  color:var(--o);background:none;border:0;
  cursor:pointer;list-style:none;
}
.alt::-webkit-details-marker{display:none}
.alt:hover{color:var(--ink)}

.alt-p{
  position:absolute;left:0;top:calc(100% + var(--s1));z-index:50;
  width:max-content;max-width:min(240px,70vw);
  padding:var(--s2) var(--s3);
  background:var(--bg2);border:1px solid var(--edge);
  font-size:12px;line-height:1.4;color:var(--ink2);
  text-align:left;
}




.ev{
  display:flex;align-items:center;flex-wrap:wrap;gap:var(--s1) var(--s2);
  margin:var(--s1) 0 0;
  font-size:12.5px;color:var(--mid);
  font-variant-numeric:tabular-nums;
}
.ev > .lbl{font-size:11.5px;letter-spacing:.07em}


.ev-k{color:var(--mid);font-weight:500}


.ev-source[hidden]{display:none}

td .ev,th .ev{margin:0}

.ev-inline{display:inline-flex;vertical-align:baseline}

.ev a,.ev .ev-i{
  display:inline;padding-block:4px;
  color:var(--ink2);font-weight:600;
}

.ev a,.ev .ev-i{white-space:nowrap}
.ev a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.ev a:hover{color:var(--o)}

.ev .sep{color:var(--mid)}

.ev .unread{color:var(--o);font-weight:600}





.finding{
  display:flex;flex-wrap:wrap;
  gap:var(--s3) var(--s6);
  align-items:flex-start;
  padding:0 0 0 var(--s3);
  border-left:2px solid var(--o);
}
.finding-b{flex:8 1 320px;min-width:0}
.finding-b p{margin:0;font-size:13.5px;color:var(--ink2);max-width:var(--prose)}
.finding-b p + p{margin-top:var(--s2)}
.finding-b b{color:var(--ink)}

.finding-t{
  display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;
  margin:0 0 var(--s2);
}
.finding-t b{font-size:14px;color:var(--ink)}

.finding-src{
  flex:1 1 var(--ev-w,200px);max-width:var(--ev-max,none);min-width:0;
  display:flex;flex-direction:column;gap:var(--s2);
}
.finding-src .ev{margin:0}

.finding-src .ev > .lbl{flex:1 0 100%}

.finding-stack{display:block}
.finding-stack .finding-src{max-width:none;margin-top:var(--s3)}



td .finding,th .finding{gap:var(--s2) var(--s6)}
td .finding-b p,th .finding-b p{font-size:12.5px}


.findings{display:flex;flex-direction:column;gap:var(--s6)}



.tw{
  position:relative;
  overflow:auto;
  max-height:var(--tw-h,min(72vh,820px));
  overscroll-behavior:contain;
  background:var(--bg2);

}
.tw-fit{max-height:none}

.tw:focus-visible{outline-offset:-2px}

table{
  border-collapse:separate;border-spacing:0;
  width:100%;
  background:var(--bg2);
}

caption{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;
}
caption.is-shown{
  position:static;width:auto;height:auto;margin:0;overflow:visible;
  clip:auto;white-space:normal;
  text-align:left;padding:var(--s3) 0;
  font-size:12.5px;color:var(--mid);
}

th,td{
  height:var(--row);
  padding:var(--s1) var(--row-pad);
  text-align:left;
  vertical-align:middle;
  border-bottom:1px solid var(--line);
  font-size:14px;line-height:1.4;
}

tr.tall td,.tbl-tall td{vertical-align:top;padding-top:var(--s2);padding-bottom:var(--s2)}


thead tr:nth-child(2) > th{top:var(--thead-1,40px);z-index:2}
thead tr:nth-child(3) > th{top:calc(var(--thead-1,40px) * 2);z-index:1}
thead th{
  position:sticky;top:0;z-index:3;
  height:40px;
  background:var(--bg);
  border-bottom:1px solid var(--line2);
  font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--mid);
  white-space:nowrap;
}
tbody tr:last-child td{border-bottom:0}


tbody tr:hover > td{background:var(--bg3)}
a.rowlink,tr[data-href]{cursor:pointer}


tbody tr[aria-selected="true"] > td:first-child{box-shadow:inset 2px 0 0 var(--o)}



td a:not(.btn):not(.chip),
th a:not(.btn):not(.chip),
.row a:not(.btn):not(.chip),
.ttl a:not(.btn){padding-block:4px}

.num,td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}

.id,td.id,th.id{font-variant-numeric:tabular-nums;font-weight:600}

.tnum,td.tnum,th.tnum{font-variant-numeric:tabular-nums;white-space:nowrap}

.neg{color:var(--danger)}
.pos{color:var(--ok)}




tfoot tr:nth-last-child(2) > *{bottom:calc(var(--tfoot-1,var(--row)) - 1px);z-index:2}
tfoot tr:nth-last-child(3) > *{bottom:calc((var(--tfoot-1,var(--row)) * 2) - 2px);z-index:1}
tfoot td,tfoot th{
  position:sticky;bottom:0;z-index:3;
  background:var(--bg);
  border-top:1px solid var(--line2);border-bottom:0;
  font-weight:700;
}


.tbl-froze{--pick-w:44px}
.tbl-froze .c1,.tbl-froze .pick{
  position:sticky;left:0;z-index:2;
  background:var(--bg2);
  box-shadow:1px 0 0 var(--line2);
}


.tbl-froze{--c1-cap:calc(100vw - (2 * var(--gut)) - 32px)}
.tbl-froze:has(.pick){--c1-cap:calc(100vw - (2 * var(--gut)) - var(--pick-w) - 32px)}
.tbl-froze .c1{min-width:min(var(--c1-w,240px),var(--c1-cap))}

.tbl-froze .pick{
  width:var(--pick-w);min-width:var(--pick-w);max-width:var(--pick-w);
  padding-left:0;padding-right:0;box-shadow:none;
}
.tbl-froze:has(.pick) .c1{left:var(--pick-w)}
.tbl-froze thead .c1,.tbl-froze thead .pick{z-index:4;background:var(--bg)}
.tbl-froze tfoot .c1,.tbl-froze tfoot .pick{z-index:4;background:var(--bg)}

.tbl-froze tbody tr:hover > .c1,
.tbl-froze tbody tr:hover > .pick{background:var(--bg3)}


th .sort{
  display:inline-flex;align-items:center;gap:var(--s1);
  width:100%;min-height:var(--tap);
  font:inherit;letter-spacing:inherit;text-transform:inherit;
  color:inherit;background:none;border:0;padding:0;cursor:pointer;
}
th .sort:hover{color:var(--ink)}
th .sort .cv{font-style:normal;font-size:11px;color:var(--mid);line-height:1}
th[aria-sort] .sort{color:var(--ink)}
th[aria-sort] .sort .cv{color:var(--o);font-size:9px}
th[aria-sort="ascending"] .sort .cv::after{content:"\25B2"}
th[aria-sort="descending"] .sort .cv::after{content:"\25BC"}

th:not([aria-sort]) .sort .cv::after{content:"\21C5"}


tr.flag > td,
tr.flag:hover > td,
.tbl-froze tr.flag > .c1,
.tbl-froze tr.flag > .pick,
.tbl-froze tr.flag:hover > .c1,
.tbl-froze tr.flag:hover > .pick{background:var(--flag-bg)}
tr.flag .why{display:block;margin-top:2px;font-size:12.5px;color:var(--ink2)}


tr.grp > td{
  background:var(--bg);
  border-top:1px solid var(--line2);
  font-weight:700;font-size:13px;
}
.tbl-froze tr.grp > .c1{background:var(--bg)}


.bulk{
  position:sticky;bottom:0;z-index:5;
  display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;
  padding:var(--s2) var(--s3);
  background:var(--bg);
  border-top:1px solid var(--o);
}
.bulk[hidden]{display:none}
.bulk .count{font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums}
.bulk .btnrow{margin-left:auto}




.tbar{
  position:relative;
  display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;
  padding:var(--s2) 0;

}
.tbar + .tw{border-top:0}
.tbar .count{font-size:13px;color:var(--mid);font-variant-numeric:tabular-nums}
.tbar .count b{color:var(--ink);font-weight:600}
.tbar .end{display:flex;gap:var(--s2);flex-wrap:wrap;margin-left:auto}

.tbar .legend{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;
  font-size:12.5px;color:var(--mid)}
.tbar .legend > span{display:inline-flex;align-items:center;gap:var(--s1)}
.tbar .legend b{color:var(--ink2);font-weight:600}


.fpanel{position:relative}
.tbar{--fpanel-anchor:1}
.tbar .fpanel{position:static}

.fpanel > summary{list-style:none;display:inline-flex}
.fpanel > summary::-webkit-details-marker{display:none}
.fpanel > summary::marker{content:""}
.fpanel-p{
  position:absolute;left:0;top:calc(100% + var(--s2));z-index:70;

  width:min(420px,100%);
  padding:var(--s4);
  background:var(--bg2);border:1px solid var(--edge);
}
.fpanel-p .form{gap:var(--s3)}
.fpanel-f{
  display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;
  margin-top:var(--s4);padding-top:var(--s3);
  border-top:1px solid var(--line);
}
.fpanel-f .btn-q{margin-left:auto}
@media (max-width:520px){
  .fpanel-p{position:fixed;left:var(--s2);right:var(--s2);width:auto;top:auto;bottom:var(--s2);
    max-height:70vh;overflow:auto}
}

.tbar input,.tbar select{min-height:var(--ctrl-sm);width:auto;max-width:100%}
.tbar .search{flex:1 1 200px;min-width:160px}
@media (max-width:760px){.tbar .end{margin-left:0;width:100%}}


.chip{
  display:inline-flex;align-items:center;gap:var(--s2);
  min-height:var(--ctrl-sm);padding:0 var(--s3);
  font:inherit;font-size:13px;
  color:var(--ink);background:var(--bg3);border:1px solid var(--edge);
  cursor:pointer;white-space:nowrap;position:relative;
}
.chip::after{content:"";position:absolute;left:0;right:0;top:50%;height:var(--tap);transform:translateY(-50%)}
.chip b{font-weight:600}
.chip .x{color:var(--mid);font-size:15px;line-height:1}

.chip:hover{border-color:var(--danger);color:var(--danger)}
.chip:hover .x{color:var(--danger)}
.chip[aria-pressed]:hover{border-color:var(--edge);color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--o);border-color:var(--o);color:var(--on-o);font-weight:600}
.chip[aria-pressed="true"]:hover{background:var(--o);border-color:var(--o);color:var(--on-o)}





.tabs{
  display:flex;gap:var(--s1);flex-wrap:wrap;align-items:flex-end;
  border-bottom:1px solid var(--line2);
}
.tabs [role="tab"]{
  display:inline-flex;align-items:center;gap:6px;
  min-height:var(--tap);padding:0 var(--s3);
  font:inherit;font-size:13.5px;font-weight:600;
  color:var(--mid);background:none;
  border:1px solid transparent;
  margin-bottom:-1px;
  cursor:pointer;
  outline:none;transition:color 120ms var(--ease),box-shadow 120ms var(--ease);
}
.tabs [role="tab"]:hover{color:var(--ink2);box-shadow:inset 0 -1px 0 var(--line2)}
.tabs [role="tab"][aria-selected="true"]{
  color:var(--ink);
  background:transparent;border-color:transparent;
  box-shadow:inset 0 -2px 0 var(--o);
}
.tabs [role="tab"]:focus{outline:none}
.tabs [role="tab"]:focus-visible{outline:1px solid var(--o);outline-offset:-4px}
.tabs [role="tab"] .n{min-width:0;margin-left:0;padding:0;background:none;color:var(--o);font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums}
[role="tabpanel"]{padding-top:var(--s4)}
[role="tabpanel"][hidden]{display:none}


[hidden]{display:none !important}

.panel[hidden]{display:flex !important}




.sheettabs{
  display:flex;gap:2px;align-items:flex-end;padding:0;
  margin:var(--s4) 0 0;
  border-bottom:1px solid var(--edge);
  flex-wrap:nowrap;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  scrollbar-width:none;
}
.sheettabs::-webkit-scrollbar{display:none}
.sheettabs:first-child{margin-top:0}
.sheettabs button{display:inline-flex;align-items:center;gap:6px;
  min-height:var(--tap);padding:0 var(--s2);cursor:pointer;
  flex:none;white-space:nowrap;
  font:inherit;font-size:12.5px;font-weight:600;
  background:transparent;color:var(--mid);
  border:1px solid transparent;margin-bottom:-1px;
  outline:none;transition:color 120ms var(--ease),box-shadow 120ms var(--ease)}
.sheettabs button:hover{color:var(--ink2);box-shadow:inset 0 -1px 0 var(--line2)}
.sheettabs button[aria-selected="true"]{
  background:transparent;color:var(--ink);border-color:transparent;
  box-shadow:inset 0 -2px 0 var(--o);
}
.sheettabs button:focus{outline:none}
.sheettabs button:focus-visible{outline:1px solid var(--o);outline-offset:-4px}
@media(prefers-reduced-motion:reduce){.tabs [role="tab"],.sheettabs button{transition:none}}

.sheet-surface{
  background:var(--sheet);
  border:1px solid var(--edge);border-top:0;

  padding:var(--s4) 0;
  margin-top:0;
}

.sheet-surface[hidden] + .sheet-surface,
.sheet-surface + .sheet-surface{margin-top:0}
.sheet-surface > .tw,.sheet-surface > table{background:var(--sheet)}
.sheettabs .n{min-width:0;margin-left:0;padding:0;background:none;color:var(--o);font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums}

.jnav{display:flex;align-items:center;gap:var(--s1);flex-wrap:wrap;
  border-bottom:1px solid var(--line2);margin:0 0 var(--s4)}
.jnav a,.jnav .soon{display:inline-flex;align-items:center;gap:var(--s2);
  min-height:var(--tap);padding:0 var(--s3);font-size:13px;font-weight:600;
  border:0}
.jnav a{color:var(--ink2)}
.jnav a:hover{color:var(--ink)}
.jnav .soon,.nav .soon{color:var(--mid);cursor:default}
.jnav .arrow{color:var(--mid);font-size:11px}
.jnav .soon::after,.nav .soon::after,.nav a.soon-l::after,
.side a.soon-l::after,.wbnav a.soon-l::after{
  content:"soon";font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
  color:var(--mid);border:1px solid var(--line2);padding:1px 4px;margin-left:var(--s2)}
.side a.soon-l{justify-content:space-between}



.panel{
  position:fixed;top:0;right:0;bottom:0;z-index:80;
  width:min(var(--panel-w),100vw);
  display:flex;flex-direction:column;
  background:var(--bg2);
  border-left:1px solid var(--line2);
  transform:translateX(0);
  transition:transform var(--t-panel) var(--ease);
}
.panel[hidden]{display:flex;transform:translateX(100%);visibility:hidden}
.panel-h{
  display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  padding:var(--s3) var(--s4);
  border-bottom:1px solid var(--line2);
}
.panel-h h2{font-family:var(--disp);font-size:15px;font-weight:700}
.panel-b{flex:1 1 auto;overflow:auto;padding:var(--s4)}
.panel-f{
  display:flex;gap:var(--s2);flex-wrap:wrap;
  padding:var(--s3) var(--s4);border-top:1px solid var(--line2);
}

.panel-inline{position:static;width:auto;border-left:1px solid var(--line2);transform:none}




dialog,.dlg{
  padding:0;width:min(520px,calc(100vw - var(--s8)));
  color:var(--ink);background:var(--bg2);
  border:1px solid var(--line2);
}
dialog::backdrop{background:var(--scrim)}
.dlg-h{padding:var(--s4) var(--s4) 0}
.dlg-h h2{font-family:var(--disp);font-size:16px;font-weight:700}
.dlg-b{padding:var(--s3) var(--s4) var(--s4);font-size:14px;color:var(--ink2)}
.dlg-b b{color:var(--ink)}


.dlg-b ul,.dlg-list{margin:0 0 var(--s3);padding-left:var(--s6)}
.dlg-b li,.dlg-list li{margin-bottom:var(--s2)}
.dlg-b li:last-child,.dlg-list li:last-child{margin-bottom:0}
.dlg-b .sub,.dlg-list .sub{color:var(--ink2)}
.dlg-f{
  display:flex;gap:var(--s2);justify-content:flex-end;flex-wrap:wrap;
  padding:var(--s3) var(--s4);
  background:var(--bg);border-top:1px solid var(--line);
}




.toasts{
  position:fixed;left:var(--gut);bottom:var(--gut);z-index:90;
  display:flex;flex-direction:column-reverse;gap:var(--s2);
  width:min(420px,calc(100vw - var(--gut) * 2));
}

.toast{
  display:flex;align-items:flex-start;gap:var(--s3);
  padding:var(--s3);
  background:var(--bg2);
  border-left:3px solid var(--mid);
  font-size:13.5px;
}
.toast-ok{border-left-color:var(--ok)}
.toast-err{border-left-color:var(--danger)}
.toast b{display:block;font-weight:600;color:var(--ink)}
.toast p{margin:2px 0 0;color:var(--ink2)}
.toast .btnrow{margin-top:var(--s2)}
.toast .close{margin-left:auto;flex:none}





.skel{display:block;height:10px;background:var(--skel)}
.skel-row{
  display:flex;align-items:center;gap:var(--s6);
  height:var(--row);padding:0 var(--row-pad);
  border-bottom:1px solid var(--line);
}
.skel-row .skel:nth-child(1){flex:0 0 22%}
.skel-row .skel:nth-child(2){flex:0 0 34%}
.skel-row .skel:nth-child(3){flex:0 0 14%}
.skel-row .skel:nth-child(4){flex:0 0 10%}


.prog{
  display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;
  padding:var(--s3) 0;
}
.prog .bar{
  flex:1 1 200px;height:4px;background:var(--bg3);
  position:relative;overflow:hidden;
}
.prog .bar > i{display:block;height:100%;background:var(--o)}
.prog .n{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.prog .what{font-size:13px;color:var(--mid)}


.state{
  display:flex;flex-direction:column;align-items:flex-start;gap:var(--s2);
  padding:var(--s8) 0;
  max-width:var(--prose);
}
.state h3{font-family:var(--disp);font-size:15px;font-weight:700}
.state p{margin:0;font-size:13.5px;color:var(--mid)}
.state .btnrow{margin-top:var(--s2)}


.state-err{padding-left:var(--s3);border-left:2px solid var(--danger)}
.state-err h3{color:var(--danger);display:flex;align-items:center;gap:var(--s2)}
.state-err h3::before{
  content:"!";flex:none;display:inline-grid;place-items:center;
  width:18px;height:18px;font-size:12px;font-weight:700;line-height:1;
  color:var(--on-o);background:var(--danger);border-radius:50%;
}
html[data-theme="light"] .state-err h3::before,[data-ground="light"] .state-err h3::before{color:#FFF6F2}






.rows-head{
  display:grid;align-items:center;gap:var(--s1) var(--s4);
  padding:0 var(--row-pad) var(--s2);
  font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--mid);
  border-bottom:1px solid var(--line2);
}

.rows-head + .rows{border-top:0}


@media (max-width:760px){.rows-head{display:none}}




.rows{border-top:1px solid var(--line);background:var(--bg2)}

.row{
  display:grid;align-items:center;gap:var(--s1) var(--s4);
  min-height:var(--row);padding:var(--row-py) var(--row-pad);
  border-bottom:1px solid var(--line);
}
.rows .row:last-child{border-bottom:0}
a.row:hover,button.row:hover{background:var(--bg3);color:var(--ink)}


.rows-q{display:flex;flex-direction:column;border-top:0}
.rows-q > .row{border-top:1px solid var(--line);border-bottom:0}
.rows-head:has(+ .rows-q){border-bottom:0}
.rows-q > .is-sent{order:1}

.row .ttl{font-weight:700;font-size:15px;letter-spacing:-.01em}
.row .sub{font-size:12.5px;color:var(--mid);font-variant-numeric:tabular-nums}
@media (max-width:760px){.row{grid-template-columns:minmax(0,1fr) !important}}


.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
   gap:var(--s4) var(--s6);padding:var(--s3) 0;
   border-top:1px solid var(--line)}
.kv > div{min-width:0}
.kv .k{margin:0 0 var(--s1);font-size:12px;font-weight:600;letter-spacing:.06em;
   text-transform:uppercase;color:var(--mid)}

.kv .v{margin:0;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.kv .v a{font-size:inherit;font-weight:inherit;color:var(--ink)}


.tally{font-size:13px;font-variant-numeric:tabular-nums;color:var(--mid);white-space:nowrap}
.tally b{font-weight:700}
.tally .t-ok  {color:var(--ok)}
.tally .t-mid {color:var(--o)}
.tally .t-hot {color:var(--danger)}

.tally .is-0{color:var(--mid);font-weight:400}
.tally .s{color:var(--line2);margin:0 2px}

tr.flag .tally .t-hot{color:var(--pill-danger-fg)}

.tally-col,th.tally-col,td.tally-col{min-width:158px}


.due{font-variant-numeric:tabular-nums;white-space:nowrap}
.due .due-v{display:block;font-size:13px;font-weight:600;color:var(--ink)}
.due .clock{font-size:12.5px}


.row-due{--row-cols:minmax(0,1fr) 156px 24px}
@media (max-width:760px){.row-due{--row-cols:minmax(0,1fr) !important}}


.isu{
  display:inline-flex;align-items:center;gap:3px;
  margin-left:var(--s2);
  font-size:12px;font-weight:700;color:var(--danger);
  vertical-align:1px;
}
.isu .i{width:14px;height:14px}
tr.flag .isu{color:var(--pill-danger-fg)}



.disc.stage > summary{font-size:15px;letter-spacing:-.01em}
.disc.stage > summary .gc{font-weight:400;font-size:12.5px;color:var(--mid)}

.disc.stage > summary .allow-in{margin-left:auto;font-weight:400}
@media (max-width:640px){.disc.stage > summary .allow-in{margin-left:0}}

.stage > .tw{margin-bottom:var(--s4)}
.stage[open] > summary{margin-bottom:var(--s1)}


.stage table{--c1-fix:372px}
.stage .c1::before{
  content:"";display:block;height:0;
  width:calc(min(var(--c1-fix),var(--c1-cap)) - 2 * var(--row-pad));
}

.stage table th:last-child,
.stage table td:last-child{width:100%}


.picks{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--s1) var(--s6)}
.pick-l{
  display:flex;align-items:flex-start;gap:var(--s3);
  min-height:var(--tap);padding:var(--s2) 0;
  cursor:pointer;
}
.pick-l input{margin-top:2px;flex:none}
.pick-t{font-size:14px;font-weight:600;min-width:0}

.pick-t small{display:block;font-size:12px;font-weight:400;color:var(--mid)}
.pick-l:hover .pick-t{color:var(--ink)}



.cal{
  display:grid;
  grid-template-columns:112px repeat(14,minmax(0,1fr)) 112px;
  overflow-x:auto;overscroll-behavior-x:contain;
  border-top:1px solid var(--line);
  background:var(--bg2);
}
@media (max-width:1400px){
  .cal{grid-template-columns:112px repeat(14,minmax(88px,1fr)) 112px}
}
.cal:focus-visible{outline-offset:-2px}
.cal-d{
  min-width:0;min-height:104px;
  padding:var(--s2) var(--s2) var(--s3);
  border-left:1px solid var(--line);
}
.cal-d:first-child{border-left:0}

.cal-end{background:var(--bg)}

.cal-wk{background:color-mix(in srgb,var(--bg) 55%,var(--bg2))}
.cal-hd{
  margin:0 0 var(--s2);
  font-size:12px;font-variant-numeric:tabular-nums;color:var(--mid);
  display:flex;align-items:baseline;gap:4px;
}
.cal-hd b{font-size:15px;font-weight:700;color:var(--ink2)}
.cal-hd .dow{text-transform:uppercase;letter-spacing:.06em;font-size:10.5px}


.cal-d:hover{background:var(--bg3)}
.cal-now{background:var(--bg3)}

.cal-d.cal-now:hover{background:color-mix(in srgb,var(--o) 14%,var(--bg3))}
.cal-now .cal-hd{color:var(--o)}
.cal-now .cal-hd b{color:var(--o)}
.cal-now .cal-hd .dow::after{content:" · today"}

.cal-i{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  margin-top:3px;padding:3px 0 3px var(--s2);
  border-left:2px solid var(--line2);
  font-size:11.5px;line-height:1.35;color:var(--ink2);
  text-decoration:none;
  overflow-wrap:anywhere;
}
.cal-i:hover{color:var(--ink);border-left-color:var(--o)}

.cal-end .cal-i{-webkit-line-clamp:3}

.cal-i b{font-weight:700;font-variant-numeric:tabular-nums;color:var(--mid);font-size:11px}
.cal-i.is-now {border-left-color:var(--o)}
.cal-i.is-late{border-left-color:var(--danger)}
.cal-i.is-late b{color:var(--danger)}
.cal-n{margin:0;font-size:11.5px;color:var(--mid)}


.duo{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));
  gap:var(--s6) var(--s8);margin-top:var(--s6)}

.duo > .sec{margin-top:0;display:flex;flex-direction:column}

.duo > .sec > .hint{margin-top:auto;padding-top:var(--s3)}

.i-star{fill:currentColor;stroke:none;color:var(--o);flex:none}




.ct-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:var(--s3);margin-top:var(--s3)}
.ct{position:relative;min-width:0;padding:var(--s3);
  background:var(--bg2);border:1px solid var(--line)}
.ct p{margin:0}

.ct-role{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;
  font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}
.ct-co{margin-top:var(--s2);font-size:14.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em}
.ct-nm{font-size:13.5px;color:var(--ink2)}
.ct-nm small{margin-left:var(--s2);font-size:12.5px;color:var(--mid)}
.ct-em{margin-top:var(--s2);font-size:12.5px;overflow-wrap:anywhere}
.ct-web{display:block;color:var(--mid);overflow-wrap:anywhere;white-space:normal}
.ct-tel{font-size:12.5px;color:var(--mid);font-variant-numeric:tabular-nums}
.ct-head{display:none}


.ct-ed{
  position:absolute;top:var(--s2);right:var(--s2);
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;padding:0;
  background:var(--bg2);border:1px solid var(--line);
  color:var(--mid);cursor:pointer;opacity:0;
}
.ct-ed .i{width:15px;height:15px}

.ct:hover .ct-ed,.ct-ed:focus{opacity:1}
.ct-ed:hover{color:var(--o);border-color:var(--o)}


.is-listview .ct-list{display:block;margin-top:0}
.is-listview .ct-head,
.is-listview .ct{
  display:grid;
  grid-template-columns:158px 190px 168px minmax(0,1fr) 132px 40px;
  gap:var(--s4);align-items:center;
}
.is-listview .ct-head{
  padding:0 var(--s3) var(--s2);border-bottom:1px solid var(--line2);
  font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid);
}
.is-listview .ct{border:0;border-bottom:1px solid var(--line);padding:var(--s2) var(--s3)}
.is-listview .ct:hover{background:var(--bg3)}
.is-listview .ct-role{
  font-size:13px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--ink2);
}
.is-listview .ct-co,.is-listview .ct-em,.is-listview .ct-tel{margin-top:0}
.is-listview .ct-co{font-size:13.5px}
.is-listview .ct-nm{min-width:0}
.is-listview .ct-nm small{display:block;margin-left:0}
.is-listview .ct-ed{position:static;opacity:0;justify-self:end}
.is-listview .ct:hover .ct-ed,.is-listview .ct-ed:focus{opacity:1}
@media (max-width:1100px){
  .is-listview .ct-head{display:none}
  .is-listview .ct{grid-template-columns:minmax(0,1fr) 40px}
  .is-listview .ct-role{grid-column:1;font-size:11px;font-weight:700;
    letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}
  .is-listview .ct-co,.is-listview .ct-nm,.is-listview .ct-em,.is-listview .ct-tel{grid-column:1}
  .is-listview .ct-ed{grid-row:1/6;grid-column:2;opacity:1}
}


.viewsw{display:inline-flex;border:1px solid var(--edge);background:var(--bg2)}
.viewsw button{
  display:inline-flex;align-items:center;justify-content:center;
  width:var(--ctrl-sm);min-height:var(--ctrl-sm);padding:0;
  background:none;border:0;color:var(--mid);cursor:pointer;
}
.viewsw button + button{border-left:1px solid var(--edge)}
.viewsw button:hover{color:var(--ink);background:var(--bg3)}
.viewsw button[aria-pressed="true"]{color:var(--on-o);background:var(--o)}
.viewsw .i{width:16px;height:16px}
.ct-sortl{font-size:12.5px;color:var(--mid)}


.jpane{min-width:0}


.jobtop{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--s6) var(--s8);
  align-items:start;margin-top:0}
@media (max-width:960px){.jobtop{grid-template-columns:minmax(0,1fr)}}
.jobtop-l > .hint-lead{margin-top:0}
.jobtop-r{min-width:0}


.rl.rl-facts{display:block;gap:0;font-size:13.5px}
.rl.rl-facts .fct{display:grid;grid-template-columns:112px minmax(0,1fr);gap:var(--s3);
  align-items:baseline;padding:var(--s2) 0;border-top:1px solid var(--line)}
.rl.rl-facts .fct:first-child{border-top:0;padding-top:0}
.rl.rl-facts dt{color:var(--mid);white-space:normal}
.rl.rl-facts dd{margin:0;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.rl.rl-facts dd small{display:block;font-weight:400;font-size:12px;color:var(--mid)}


.crumb-pick.is-on > summary,
.crumb-pick.is-on > summary .who{color:var(--o);font-weight:700}

.rl.rl-facts .fct.is-whole dd::after{
  content:"whole job";
  display:block;margin-top:1px;
  font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
  color:var(--mid);
}

.sheettabs [role="tab"].is-empty{opacity:.45}

@media (max-width:760px){.cal{grid-template-columns:104px repeat(14,minmax(84px,1fr)) 104px}}




.note{
  padding:0 0 0 var(--s3);
  border-left:2px solid var(--o);
  font-size:13.5px;color:var(--ink2);
  max-width:var(--prose);
}

.note p{margin:0}
.note p + p{margin-top:var(--s2)}
.note b{color:var(--ink)}
.note-q{border-left-color:var(--line2)}

.note .note-set{margin-top:var(--s4)}

.note .note-set + *{margin-top:var(--s2)}


.note + .note{margin-top:var(--s3)}
.note + .btnrow{margin-top:var(--s3)}

.sech + .note{margin-top:var(--s3)}


.disc{border-bottom:1px solid var(--line)}
.disc > summary{
  display:flex;align-items:center;gap:var(--s2);
  min-height:var(--tap);padding:var(--s2) 0;
  font-size:14px;font-weight:600;cursor:pointer;list-style:none;
}
.disc > summary::-webkit-details-marker{display:none}
.disc > summary::before{content:"+";width:12px;flex:none;color:var(--o);font-size:15px}
.disc[open] > summary::before{content:"\2212"}
.disc > .disc-b{padding:0 0 var(--s4) var(--s6)}


.dens{
  display:inline-flex;gap:var(--s1);align-items:flex-end;
  border-bottom:1px solid var(--line2);
}
.dens button{
  min-height:var(--ctrl-sm);padding:0 var(--s3);
  font:inherit;font-size:12.5px;font-weight:600;
  color:var(--mid);background:transparent;
  border:1px solid transparent;border-bottom:0;margin-bottom:-1px;
  cursor:pointer;position:relative;
  transition:color var(--t-hover) var(--ease);
}
.dens button::after{content:"";position:absolute;left:0;right:0;top:50%;height:var(--tap);transform:translateY(-50%)}
.dens button:hover{color:var(--ink)}
.dens button[aria-pressed="true"]{
  color:var(--ink);background:var(--bg2);
  border-color:var(--edge);box-shadow:inset 0 2px 0 var(--o);
  padding-bottom:1px;
}





.pick,th.pick,td.pick{width:44px;padding-right:0}


.ttl{display:block;font-weight:600;font-size:14px}
.ttl-s{font-size:13.5px;font-weight:500}
.sub{display:block;font-size:12.5px;color:var(--mid);font-variant-numeric:tabular-nums}
.sub b{color:var(--ink2);font-weight:500}
.arw{color:var(--mid);text-align:right}
a.row:hover .arw,button.row:hover .arw{color:var(--o)}


.lnk,.more,.lnk-s{
  display:inline-flex;align-items:center;min-height:24px;
  font-size:13px;color:var(--mid);
}

button.lnk,button.more,button.lnk-s,button.go{
  font:inherit;font-size:13px;padding:0;
  background:none;border:0;appearance:none;cursor:pointer;
}

a.lnk:hover,a.more:hover,a.lnk-s:hover,
button.lnk:hover,button.more:hover,button.lnk-s:hover{color:var(--o)}


.code{display:inline-block;min-width:46px;margin-right:var(--s2);font-weight:700;
  color:var(--o);font-variant-numeric:tabular-nums}

h1 .code{font-size:.66em;color:var(--mid);min-width:0;vertical-align:.12em}


.ctx{font-size:13px;font-weight:400;color:var(--mid)}
.ph-l .ctx{display:block;margin-top:3px}
.ctx .tag{margin-left:var(--s2)}


.hint-lead{margin-top:var(--s4);font-size:14.5px;color:var(--ink2)}


.kv-con{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.kv-con .v{font-size:14px}
.kv-con .v small{display:block;margin-top:1px;font-size:12.5px;font-weight:400;color:var(--mid)}

.kv-con .v small:last-child{font-variant-numeric:tabular-nums}

.con-fold > .kv-con{padding-bottom:var(--s4)}



.seg{display:flex;gap:var(--s1);align-items:flex-end;border-bottom:1px solid var(--line2)}
.seg button{flex:1;min-height:var(--ctrl-sm);font:inherit;font-size:13px;font-weight:600;
  color:var(--mid);background:transparent;
  border:1px solid transparent;border-bottom:0;margin-bottom:-1px;cursor:pointer}
.seg button:hover{color:var(--ink)}
.seg button[aria-pressed="true"]{
  color:var(--ink);background:var(--bg2);
  border-color:var(--edge);box-shadow:inset 0 2px 0 var(--o);padding-bottom:1px;
}



.row{grid-template-columns:var(--row-cols,minmax(0,1fr) auto)}
button.row{
  width:100%;font:inherit;text-align:left;color:inherit;
  background:none;border:0;border-bottom:1px solid var(--line);
  appearance:none;cursor:pointer;
}
.row-2{grid-template-columns:minmax(0,1fr) auto}
.row-3{grid-template-columns:minmax(0,1fr) auto auto}

.row-job{grid-template-columns:minmax(0,1fr) 148px 232px 96px 40px}
.row-act{grid-template-columns:104px 100px minmax(0,1fr) 140px}
.row-pkg{grid-template-columns:minmax(0,1fr) 148px 132px 108px 46px}
.row-bid{grid-template-columns:minmax(0,1fr) 232px 132px 116px}


@media (min-width:761px) and (max-width:900px){
  .row-job{grid-template-columns:minmax(0,1fr) 116px 176px 88px 32px}
  .row-bid{grid-template-columns:minmax(0,1fr) 176px 108px 116px}
}


.meter{display:flex;height:12px;gap:2px;margin:var(--s3) 0}
.meter i{flex:1;background:var(--bg);border:1px solid var(--line)}
.meter i.used{background:var(--o);border-color:var(--o)}
.meter i.hold{background:var(--o-tint);border-color:var(--o)}

.meter-s{height:6px;gap:0;margin:0;width:56px;flex:none;
  background:var(--bg);border:1px solid var(--line)}
.meter-s i{flex:none;border:0;background:none}
.meter-s i.used{width:var(--fill,0);background:var(--o);border:0}


.allow{
  display:inline-flex;align-items:center;gap:var(--s2);
  min-height:var(--tap);padding:0 var(--s2);
  font-size:12.5px;color:var(--ink2);white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.allow:hover{color:var(--ink)}
.allow b{color:var(--ink);font-weight:600}
.allow .renews{color:var(--mid)}

@media (max-width:1267px){.allow .renews{display:none}}
@media (max-width:900px){.allow{padding-left:0}}
@media (max-width:520px){
  .allow .meter-s{display:none}
  .org{flex:1 1 auto;min-width:0}
}



.mockbar{position:sticky;left:0;right:0;bottom:0;z-index:40;
  display:flex;align-items:center;justify-content:center;gap:var(--s3);flex-wrap:wrap;
  padding:var(--s2) var(--s3);background:var(--bg);border-top:1px solid var(--line2);
  font-size:12.5px;color:var(--mid)}
.mockbar b{color:var(--o);font-weight:600}
.mockbar a{display:inline-flex;align-items:center;min-height:24px;
  color:var(--ink2);text-decoration:underline;text-underline-offset:2px}



@media (max-width:900px),(pointer:coarse){
  :root{--ctrl:44px; --ctrl-sm:44px}
  .btn,.btn-s,.chip,.dens button,.tabs [role="tab"],
  .menu > summary,.disc > summary,.crumb a,.nav a,th .sort,.asec a,
  .brand,.lnk,.more,.lnk-s,.sech .lnk,.att-c .go,.mockbar a{
    display:inline-flex;align-items:center;min-height:var(--tap);
  }

  .alt{min-width:var(--tap);min-height:var(--tap)}
  .altd{width:var(--tap)}

  .ev a,.ev .ev-i{padding-block:12px}

  td a:not(.btn):not(.chip),
  th a:not(.btn):not(.chip),
  .row a:not(.btn):not(.chip),
  .ttl a:not(.btn),
  .note a,.hint a,.state a,.prose a,.disc-b a,.kv .v a{padding-block:8px}

  .ed{
    display:inline-flex;align-items:center;min-height:var(--tap);
    outline:1px dashed var(--line2);outline-offset:-1px;
  }
  .tw{max-height:var(--tw-h,70vh)}
}

@media (max-width:520px){
  .form{grid-template-columns:minmax(0,1fr)}
  .toasts{left:var(--s2);right:var(--s2);width:auto}
}




.wrap-w{max-width:var(--page)}
.ph-c{display:flex;align-items:center;justify-content:space-between;gap:var(--s2) var(--s6);
  flex-wrap:wrap;padding:var(--s3) 0;border-bottom:1px solid var(--line2)}
.ph-c .hl{display:flex;align-items:baseline;gap:var(--s3);flex-wrap:wrap;min-width:0}
.phr{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.ph p{margin:var(--s1) 0 0;font-size:13px;color:var(--mid);max-width:var(--prose)}
@media (max-width:760px){.ph{position:static}}

.ws{display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:var(--s6);align-items:start}
@media (max-width:1120px){.ws{grid-template-columns:minmax(0,1fr)}}
.rail-c{border-top:1px solid var(--line)}
.rail-c > section{padding:var(--s3);border-bottom:1px solid var(--line);margin:0}
.rail-c > section:last-child{border-bottom:0}
.rail-c h2{margin:0 0 var(--s2);font-size:12px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--mid)}
.rl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s1) var(--s3);margin:0;font-size:13px}
.rl dt{color:var(--mid);white-space:nowrap}
.rl dd{margin:0;text-align:right;font-weight:500;font-variant-numeric:tabular-nums}
.rail-c p{margin:0;font-size:12.5px;color:var(--ink2)}
.rail-c .lnk{display:inline-block;margin-top:var(--s2);font-size:12.5px;color:var(--o)}

.cols{display:grid;grid-template-columns:196px minmax(0,1fr);gap:var(--s8)}
@media (max-width:860px){.cols{grid-template-columns:minmax(0,1fr);gap:var(--s6)}
  .side{flex-direction:row;flex-wrap:wrap}}
.side{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.side a{display:flex;align-items:center;min-height:var(--tap);
  padding:var(--s3);border-bottom:1px solid var(--line);
  border-left:2px solid transparent;font-size:14px;color:var(--ink2)}
.side a:hover{background:var(--bg2);color:var(--ink)}
.pane{min-width:0}
.pane-hd{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  flex-wrap:wrap;margin:0 0 var(--s6);padding-bottom:var(--s2);border-bottom:1px solid var(--line2)}
.pane-h{margin:0;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}

.jobbar{display:flex;align-items:center;gap:var(--s1);flex-wrap:wrap;
  padding-bottom:var(--s2);border-bottom:1px solid var(--line2)}
.jnum{display:inline-flex;align-items:center;padding:var(--s1) var(--s2);
  background:var(--bg2);border:1px solid var(--line2);
  font-weight:700;font-size:14px;color:var(--o);font-variant-numeric:tabular-nums}
.sep{color:var(--mid)}
.picker{position:relative}
.picker > summary{display:inline-flex;align-items:center;gap:var(--s2);cursor:pointer;
  list-style:none;min-height:var(--ctrl);padding:0 var(--s2);border:1px solid transparent}
.picker > summary::-webkit-details-marker{display:none}
.picker > summary:hover,.picker[open] > summary{border-color:var(--edge);background:var(--bg2)}
.pk-job{margin:0;font-family:var(--disp);font-weight:700;letter-spacing:-.02em;
  font-size:clamp(1.15rem,2.2vw,1.5rem);line-height:1.1}
.pk-seg{font-size:14px;font-weight:500}
.pk-seg-all{color:var(--mid)}
.pk-p{position:absolute;left:0;top:calc(100% + var(--s1));z-index:70;
  width:340px;max-width:86vw;background:var(--bg2);border:1px solid var(--edge)}
.pk-h{padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);background:var(--bg);
  font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}
.pk-p a{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:var(--s1) var(--s3);
  align-items:center;min-height:var(--tap);padding:var(--s2) var(--s3);
  border-bottom:1px solid var(--line);font-size:13.5px}
.pk-p a:hover{background:var(--bg3);color:var(--ink)}
.pk-p .n{color:var(--o);font-weight:700;font-variant-numeric:tabular-nums;font-size:12.5px}
.pk-p .d{color:var(--mid);font-size:12px;white-space:nowrap}
.pk-p .src{grid-column:2/-1;font-size:11.5px;color:var(--mid)}
.pk-p a.in1{padding-left:var(--s8)}
.pk-p a.in2{padding-left:var(--s12)}
.pk-p-seg a,.pk-p-list a{grid-template-columns:minmax(0,1fr) auto}
.pk-p-seg .src{grid-column:1/-1}


body[data-page="overview"] .nav a[href="index.html"],
body[data-page="jobs"]     .nav a[href="jobs.html"],
body[data-page="subs"]     .nav a[href="subs.html"],
body[data-page="finances"] .nav a[href="finances.html"]{
  color:var(--ink);border-bottom-color:var(--o);
}
body[data-jtab="prebid"]  .jnav a[href="job.html"],
body[data-jtab="bidding"] .jnav a[href="bidding.html"],
.jnav a[aria-current="page"]{
  color:var(--ink);box-shadow:inset 0 -2px 0 var(--o);
}
body[data-page="subscription"] .side a[href="subscription.html"],
body[data-page="organization"] .side a[href="organization.html"],
body[data-page="access"]       .side a[href="access.html"],
body[data-page="columns"]      .side a[href="columns.html"],
body[data-page="followup"]     .side a[href="followup.html"]{
  color:var(--ink);font-weight:600;
  border-left-color:var(--o);background:var(--bg2);
}

.soonbar{display:flex;align-items:baseline;gap:var(--s3);flex-wrap:wrap;
  padding:0 0 0 var(--s3);margin:0 0 var(--s4);
  border-left:2px solid var(--o);
  font-size:13.5px;color:var(--ink2)}
.soonbar b{color:var(--ink)}

.jmeta{display:flex;gap:var(--s4);flex-wrap:wrap;align-items:baseline;
  font-size:12.5px;color:var(--mid);margin-left:auto}
.jmeta b{color:var(--ink2);font-weight:600}
.jmeta a{color:var(--o)}
@media (max-width:1100px){.jmeta{margin-left:0;flex-basis:100%;order:3}}

.wbnav{display:flex;gap:var(--s1);flex-wrap:wrap;margin:0 0 var(--s3)}
.wbnav{border-bottom:1px solid var(--line2);align-items:flex-end}
.wbnav a{display:inline-flex;align-items:center;gap:var(--s2);min-height:var(--ctrl);
  padding:0 var(--s3);font-size:13px;font-weight:600;color:var(--mid);
  border:1px solid transparent;border-bottom:0;margin-bottom:-1px}
.wbnav a:hover{color:var(--ink)}
.wbnav a[aria-current="page"]{color:var(--ink);background:var(--bg2);
  border-color:var(--edge);box-shadow:inset 0 2px 0 var(--o);padding-bottom:1px}
.wbnav .n{font-size:12px;color:var(--mid);font-variant-numeric:tabular-nums}

.sheet-t{margin:0;padding:var(--s2) var(--s3);border:1px solid var(--line2);border-bottom:0;
  background:var(--bg);font-size:12.5px;color:var(--ink2)}
.sheet-t b{display:block;font-family:var(--disp);font-weight:700;font-size:14px;color:var(--ink)}
.sheet-n{margin:var(--s4) 0 0;font-size:12.5px;font-weight:600;color:var(--mid)}

.wb{overflow:auto;max-height:min(72vh,820px);background:var(--bg2)}
.wb table{border-collapse:separate;border-spacing:0;width:100%;min-width:1040px}
.wb-grid table{min-width:2140px}
.wb th,.wb td{height:auto;padding:var(--s2) var(--s3);font-size:13px;line-height:1.4;
  vertical-align:top;text-align:left;
  border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.wb th{position:sticky;top:0;z-index:3;background:var(--bg);color:var(--mid);
  font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
.wb .subhdr th{top:var(--thead-1,40px);z-index:2}
.wb th:last-child,.wb td:last-child{border-right:0}
.wb tbody tr:hover td{background:var(--bg3)}
.wb th.sg{color:var(--ink2);border-left:2px solid var(--line2);text-transform:none;letter-spacing:0}
.wb th.cg,.wb td.cg{width:52px}
.wb td.in{background:var(--o-tint)}
.wb tbody tr:hover td.in{background:var(--o-tint)}
.wb td.flagc{color:var(--o);font-weight:700;white-space:nowrap}
.wb tr.band td{background:var(--bg);color:var(--mid);font-size:12.5px}
.wb tr.tot td{background:var(--bg);font-weight:700;border-top:1px solid var(--line2)}
.wb tr.grp td{background:var(--bg);border-top:1px solid var(--line2);font-weight:700;font-size:12.5px}
.wb tr.grp .gn{color:var(--o);font-weight:700;margin-right:var(--s2)}
.wb tr.grp .gc{color:var(--mid);font-weight:400;font-size:12px;margin-left:var(--s2)}
.wb tr.flag td{background:var(--o-tint)}
.wb tr.flag:hover td{background:var(--o-tint)}
.wb .src{color:var(--mid);font-size:12px;white-space:nowrap}
.wb .qty,.wb .num{font-variant-numeric:tabular-nums;white-space:nowrap}
.wb .num{text-align:right}
.wb .why{display:block;color:var(--ink2);font-size:12.5px;margin-top:2px}
.wbbar{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;padding:var(--s2) 0}
.wbbar-top{border-bottom:1px solid var(--line2);margin-bottom:var(--s3)}
.wbbar .count{font-size:13px;color:var(--mid)}
.wbbar .count b{color:var(--ink);font-weight:600}
.wbbar .right{display:flex;gap:var(--s2);flex-wrap:wrap;margin-left:auto}


.att-c{border-top:1px solid var(--line);margin:0 0 var(--s4)}
.att-c > *{display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  gap:var(--s1) var(--s3);align-items:center;padding:var(--s2) var(--s3);
  border-bottom:1px solid var(--line);font-size:13.5px}
.att-c > *:last-child{border-bottom:0}
.att-hd{margin:0;padding:var(--s2) var(--s3);background:var(--bg);
  border-bottom:1px solid var(--line);font-size:12px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}
.att-c p{margin:0}
.att-c .go{font-size:12.5px;color:var(--o);white-space:nowrap}
@media (max-width:760px){.att-c > *{grid-template-columns:minmax(0,1fr)}}

.trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s6);
  padding:var(--s3) 0;border-top:1px solid var(--line)}
.trio > div{display:flex;flex-direction:column;gap:var(--s2);min-width:0}
.trio .dl{display:flex;gap:var(--s1);flex-wrap:wrap;margin-top:auto}
@media (max-width:820px){.trio{grid-template-columns:minmax(0,1fr)}}

.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));
  gap:var(--s3);padding:var(--s3) 0}
.filters .acts{grid-column:1/-1;display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;
  padding-top:var(--s3);border-top:1px solid var(--line)}
.filters .acts .count{font-size:13px;color:var(--mid);margin-right:auto}
.toolbar{display:flex;align-items:flex-end;gap:var(--s3);flex-wrap:wrap;padding:var(--s3) 0}
.toolbar .f{flex:0 1 150px}
.toolbar .f-grow{flex:1 1 auto}
.toolbar .tb-end{display:flex;gap:var(--s2);flex-wrap:wrap;margin-left:auto}
.toolbar + .tw{border-top:0}
.fbar{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;padding:var(--s2) 0}
.fbar .fsearch{flex:1 1 210px;min-width:170px;min-height:var(--ctrl-sm)}
.fbar .count{font-size:13px;color:var(--mid)}
.fbar .count b{color:var(--ink);font-weight:600}
.fbar .facts{display:flex;gap:var(--s2);flex-wrap:wrap;margin-left:auto}
.fbtn > summary{display:inline-flex;align-items:center;gap:var(--s2);cursor:pointer;list-style:none;
  min-height:var(--ctrl-sm);padding:0 var(--s3);border:1px solid var(--edge);
  font-size:12.5px;font-weight:600;white-space:nowrap}
.fbtn > summary::-webkit-details-marker{display:none}
.fchip{display:inline-flex;align-items:center;gap:var(--s2);min-height:var(--ctrl-sm);
  padding:0 var(--s3);font:inherit;font-size:12.5px;color:var(--ink);
  background:var(--bg3);border:1px solid var(--edge);cursor:pointer;white-space:nowrap}
.fchip b{font-weight:600}
.fchip i{font-style:normal;color:var(--mid);font-size:14px}
.fchip:hover{border-color:var(--danger);color:var(--danger)}

.st{display:inline-flex;align-items:center;gap:var(--s2);font-size:12.5px;white-space:nowrap}
.st::before{content:"";width:3px;height:12px;background:currentColor}
.st-ok{color:var(--ok)}
.st-run{color:var(--o)}
.st-warn{color:var(--o)}
.st-crit{color:var(--danger)}
.st-idle{color:var(--mid)}
.kind{font-size:11.5px;font-weight:600;letter-spacing:.04em;padding:2px 6px;
  background:var(--tag-bg);color:var(--mid);white-space:nowrap;justify-self:start}
.kind-job,.kind-acc,.kind-bill{color:var(--ink2)}
.kind-del{color:var(--ok);border-color:currentColor}
.kind-dir{color:var(--o);border-color:currentColor}
.ptag,.dtag{display:inline-flex;align-items:center;padding:2px 7px;font-size:12px;font-weight:500;
  background:var(--tag-bg);color:var(--ink2);white-space:nowrap}
.cpl{display:flex;gap:var(--s1);flex-wrap:wrap}
.cpl span{font-size:11.5px;font-weight:600;padding:2px 5px;border:1px solid currentColor;white-space:nowrap}
.cpl .c-ok{color:var(--ok)}
.cpl .c-due{color:var(--o)}
.cpl .c-no{color:var(--danger)}
.rate{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.rate small{font-weight:400;color:var(--mid);margin-left:var(--s1)}
.rate-none{color:var(--mid);font-weight:400}
.mlegend{display:flex;gap:var(--s6);flex-wrap:wrap;font-size:13px;color:var(--mid);
  font-variant-numeric:tabular-nums}
.mlegend b{color:var(--ink);font-weight:600}
.figs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:var(--s4) var(--s6);padding:var(--s3) 0;border-top:1px solid var(--line)}
.figs > div{min-width:0}
.figs .k{margin:0 0 var(--s1);font-size:12px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--mid)}
.figs .v{margin:0;font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}
.figs .v small{display:block;font-size:12px;font-weight:400;color:var(--mid)}
.rt,td.rt,th.rt{text-align:right;font-variant-numeric:tabular-nums}
.amt-s{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.li-tot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s2) var(--s4);
  align-items:baseline;padding:var(--s4) 0;border-top:1px solid var(--line2)}
.li-tot .amt{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums}
.li-off .ttl{color:var(--mid);font-weight:500}
.lbl-t{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}
.fade{font-variant-numeric:tabular-nums;white-space:nowrap}
.fade-bad{color:var(--danger);font-weight:600}
.fade-watch{color:var(--o);font-weight:600}
.fade-ok{color:var(--mid)}
.chips{display:flex;gap:var(--s2);flex-wrap:wrap;margin:0 0 var(--s4)}
.charts{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s4)}
.chart{min-width:0;padding:var(--s3) 0;border-top:1px solid var(--line)}
.ch-h{display:flex;align-items:baseline;gap:var(--s3);flex-wrap:wrap}
.ch-s,.ch-n{font-size:12.5px;color:var(--mid)}
.chart .cv{display:block;width:100%;height:auto}
.cv .ax{fill:var(--mid);font-size:11px}
.cv .lb{fill:var(--ink);font-size:11.5px;font-weight:600}
.cv .lbm{fill:var(--mid);font-size:11.5px}
.lgd{display:flex;gap:var(--s4);flex-wrap:wrap;margin:0;font-size:12.5px;color:var(--ink2)}
.lgd span{display:inline-flex;align-items:center;gap:var(--s1)}
.lgd i{width:11px;height:11px;flex:none}
html[data-theme="dark"],[data-ground="dark"]{--s1c:#3987e5;--s2c:#d95926;--s3c:#199e70;--s4c:#c98500;
  --dv-neg:#e66767;--dv-pos:#3987e5;--grid:#2C2C2A;--axis:#383835;--deemph:#6B6B68}

html[data-theme="dim"],[data-ground="dim"]{--s1c:#4B93E8;--s2c:#E2683A;--s3c:#27AE7E;--s4c:#D89A1F;
  --dv-neg:#EC6A6A;--dv-pos:#4B93E8;--grid:#35342F;--axis:#45443E;--deemph:#7C7972}
html[data-theme="light"],
[data-ground="light"]{--s1c:#2a78d6;--s2c:#eb6834;--s3c:#1baf7a;--s4c:#eda100;
  --dv-neg:#e34948;--dv-pos:#2a78d6;--grid:#DDDCD5;--axis:#B2AFA5;--deemph:#7C7A74}


body[data-page="assistant"]{
  --assistant-accent:oklch(.68 .09 155);
  --assistant-accent-tint:oklch(.68 .09 155 / .13);
  --assistant-on-accent:oklch(.16 .018 150);
  --gc-focus:oklch(.68 .09 155);
}
html[data-theme="light"] body[data-page="assistant"]{
  --assistant-accent:oklch(.48 .09 155);
  --assistant-accent-tint:oklch(.48 .09 155 / .12);
  --assistant-on-accent:oklch(.995 .003 145);
  --gc-focus:oklch(.48 .09 155);
}

body[data-page="assistant"] .nav a[aria-current="page"]{
  border-bottom-color:var(--assistant-accent);
}
.assistant-page{padding:0}



body[data-page="assistant"]{display:flex;flex-direction:column;min-height:100vh}

body[data-page="assistant"] .assistant-page{flex:1 1 0;min-height:0}
.asst{
  display:grid;
  grid-template-columns:308px minmax(0,1fr) 336px;
  height:100%;
  border-top:1px solid var(--line2);
  background:var(--bg2);
}
.asst > *{min-width:0;overflow-y:auto;overscroll-behavior:contain}
.asst-list{border-right:1px solid var(--line2)}
.asst-side{border-left:1px solid var(--line2);padding-bottom:var(--s6)}


.asst-hd{
  position:sticky;top:0;z-index:2;
  display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  min-height:52px;padding:var(--s2) var(--s4);
  background:var(--bg2);border-bottom:1px solid var(--line);
}
.asst-hd h2{margin:0;font-family:var(--disp);font-size:15px;letter-spacing:-.01em}
.asst-hd h2 .n{margin-left:var(--s2);font-family:var(--sans);font-size:12.5px;
  font-weight:400;color:var(--mid);font-variant-numeric:tabular-nums}
.asst-hd-thr{min-height:64px;align-items:flex-start;padding-top:var(--s3)}
.asst-hd-l{min-width:0}
.asst-hd-r{display:flex;align-items:center;gap:var(--s2);flex:none}
.asst-meta{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;
  margin:var(--s1) 0 0;font-size:12.5px;color:var(--mid)}
.asst-note{margin:0;padding:var(--s3) var(--s4);font-size:12.5px;color:var(--mid);
  max-width:var(--prose)}


.asst-find{padding:var(--s3) var(--s4) 0}
.asst-find .search{width:100%;min-height:var(--ctrl-sm)}
.asst-seg{margin:var(--s3) var(--s4) 0;border-bottom:0;gap:0}
.asst-seg button{flex:1 1 auto;padding:0 var(--s2);border:1px solid var(--line);
  margin:0 0 0 -1px}
.asst-seg button:first-child{margin-left:0}
.asst-seg button[aria-pressed="true"]{background:var(--bg3);border-color:var(--edge);
  color:var(--ink);box-shadow:none}
.asst-seg .n{margin-left:4px;color:var(--mid);font-weight:400;
  font-variant-numeric:tabular-nums}

.thrs{margin-top:var(--s3)}
.thr{
  position:relative;display:flex;gap:var(--s3);width:100%;
  padding:var(--s3) var(--s4);text-align:left;font:inherit;cursor:pointer;
  background:none;border:0;border-top:1px solid var(--line);
}
.thr:hover{background:var(--bg3)}

.thr.is-on{background:var(--bg3);box-shadow:inset 3px 0 0 var(--o)}
.thr-av{
  display:flex;align-items:center;justify-content:center;flex:none;
  width:32px;height:32px;margin-top:2px;
  font-size:11.5px;font-weight:700;letter-spacing:.02em;
  color:var(--ink2);background:var(--tag-bg);border-radius:50%;
}
.thr-b{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}
.thr-top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2)}
.thr-who{font-size:13px;font-weight:600;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.thr-when{flex:none;font-size:11.5px;color:var(--mid);font-variant-numeric:tabular-nums}
.thr-sub{font-size:13px;color:var(--ink2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.thr-pre{font-size:12px;color:var(--mid);line-height:1.45;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.thr-tags{display:flex;flex-wrap:wrap;gap:var(--s1);margin-top:var(--s1)}

.thr.is-unread .thr-who,.thr.is-unread .thr-sub{color:var(--ink);font-weight:700}
.thr.is-unread .thr-when::after{
  content:"";display:inline-block;width:6px;height:6px;margin-left:6px;
  background:var(--o);border-radius:50%;vertical-align:middle;
}


.jchip{display:inline-flex;align-items:center;gap:5px;padding:1px 7px;
  font-size:11.5px;color:var(--ink2);background:var(--tag-bg);white-space:nowrap}
.jchip b{font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink)}
a.jchip:hover{color:var(--ink);background:var(--bg3);box-shadow:inset 0 0 0 1px var(--edge)}
.tag-due{color:var(--o);background:var(--o-tint)}


.asst-thread{display:flex;flex-direction:column;overflow:hidden}
.asst-thread > .asst-hd,.asst-thread > .asst-note{flex:none}
.assistant-conversation{
  flex:1 1 auto;min-height:0;overflow-y:auto;
  display:flex;flex-direction:column;gap:var(--s4);
  padding:var(--s6);background:var(--bg);
  border-top:1px solid var(--line);
}


.assistant-turn{
  position:relative;width:auto;max-width:min(76%,660px);
  padding:var(--s3) var(--s4);
  border:1px solid var(--line2);border-radius:14px;
  background:var(--bg2);
}
.assistant-turn-agent{align-self:flex-start;border-bottom-left-radius:3px}
.assistant-turn-user{align-self:flex-end;background:var(--bg3);
  border-color:var(--edge);border-bottom-right-radius:3px}

.assistant-speaker{display:none}
.turn-who{display:block;margin-bottom:var(--s1);
  font-size:11.5px;font-weight:700;color:var(--ink2)}
.assistant-turn p{margin:0;font-size:14px;line-height:1.55;
  white-space:pre-wrap;overflow-wrap:anywhere}
.assistant-turn small{display:block;margin-top:var(--s2);font-size:12px;color:var(--mid)}


.assistant-composer{flex:none;padding:var(--s4);border-top:1px solid var(--line2)}
.assistant-message-label{display:block;margin-bottom:var(--s2);font-weight:700}
.assistant-composer textarea{
  display:block;width:100%;min-height:76px;resize:vertical;padding:var(--s3);
  color:var(--ink);background:var(--field);border:1px solid var(--line2);font:inherit;
}
.assistant-composer textarea:focus,.assistant-file:focus-within{border-color:var(--assistant-accent)}
.assistant-compose-row{display:flex;align-items:stretch;gap:var(--s3);margin-top:var(--s3)}
.assistant-file{
  position:relative;display:flex;flex:1 1 auto;min-height:var(--ctrl);
  align-items:center;gap:var(--s2);flex-wrap:wrap;
  padding:var(--s2) var(--s3);border:1px dashed var(--line2);border-radius:11px;
  cursor:pointer;background:var(--bg2);
}
.assistant-file .i{width:16px;height:16px;color:var(--mid);flex:none}
.assistant-file > span{font-size:13px;font-weight:700}
.assistant-file small{font-size:12px;color:var(--mid)}
.assistant-file input{flex:1 1 160px;min-width:0;max-width:100%;
  font-size:12px;color:var(--ink2)}
.assistant-compose-row > .btn{align-self:stretch;min-width:104px}
.assistant-compose-row > .btn-p,
.assistant-compose-row > .btn-p:hover,
.assistant-compose-row > .btn-p:focus-visible{
  background:var(--assistant-accent);border-color:var(--assistant-accent);
  color:var(--assistant-on-accent);
}
.assistant-status{min-height:18px;margin:var(--s2) 0 0;color:var(--mid);font-size:12.5px}
.assistant-status-error{color:var(--danger)}


.docs{display:flex;flex-direction:column;gap:var(--s2);padding:var(--s3) var(--s4)}
.doc{display:flex;align-items:center;gap:var(--s3);min-width:0;
  padding:var(--s2) var(--s3);color:var(--ink2);
  background:var(--bg);border:1px solid var(--line2);border-radius:12px}
a.doc:hover,button.doc:hover{background:var(--bg3);border-color:var(--edge);color:var(--ink)}
.doc-k{flex:none;display:flex;align-items:center;justify-content:center;
  width:38px;height:34px;font-size:9.5px;font-weight:700;letter-spacing:.03em;
  color:var(--mid);background:var(--tag-bg);border:1px solid var(--line2);
  border-radius:9px;

  clip-path:polygon(0 0,72% 0,100% 26%,100% 100%,0 100%);
}
.doc-k-x{color:var(--ok);border-color:currentColor}
.doc-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.doc-n{font-size:13px;font-weight:600;color:inherit;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-m{font-size:11.5px;color:var(--mid);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.asst-side > section + section{border-top:1px solid var(--line2)}
.asst-side #assistant-runs,
.asst-side #assistant-tools{padding:0 var(--s4) var(--s4)}
.assistant-empty,.assistant-muted{color:var(--mid);font-size:12.5px}
.assistant-empty p,.assistant-muted{margin:0}
.assistant-empty p + p{margin-top:var(--s2)}
.assistant-run + .assistant-run{margin-top:var(--s3);padding-top:var(--s3);
  border-top:1px solid var(--line)}
.assistant-run > div{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s2)}
.assistant-run b{overflow-wrap:anywhere;font-size:13px}
.assistant-run code{display:block;margin-top:var(--s2);font-size:11.5px;
  overflow-wrap:anywhere;color:var(--mid)}
.assistant-run p{margin:var(--s2) 0 0;color:var(--mid);font-size:12.5px}
.assistant-run .assistant-run-coverage{color:var(--ink2)}
.assistant-run .assistant-run-coverage-unresolved{color:var(--o);font-weight:600}
.assistant-downloads{display:grid;gap:var(--s2);margin-top:var(--s3)}
.assistant-downloads a{display:flex;align-items:center;min-height:var(--tap);
  padding:var(--s2) var(--s3);border:1px solid var(--assistant-accent);
  border-radius:11px;color:var(--assistant-accent);font-size:13px;font-weight:700}
.assistant-downloads a:hover{background:var(--assistant-accent-tint);color:var(--ink)}
.assistant-tool{border:1px solid var(--line2);background:var(--bg)}
.assistant-tool + .assistant-tool{margin-top:var(--s2)}
.assistant-tool summary{display:flex;justify-content:space-between;align-items:center;
  gap:var(--s2);min-height:var(--tap);padding:var(--s2) var(--s3);cursor:pointer;font-size:12.5px}
.assistant-tool pre{margin:0;padding:var(--s3);border-top:1px solid var(--line2);overflow:auto;
  color:var(--ink2);font-size:11.5px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.assistant-boundary{margin:0;padding:var(--s4);border-top:1px solid var(--line2);
  background:var(--assistant-accent-tint);color:var(--ink2);font-size:12.5px}


.asst-list .asst-hd,
.asst-list .asst-find,
.asst-list .thr{padding-left:var(--gut)}
.asst-list .asst-seg{margin-left:var(--gut)}
.asst-side .asst-hd,
.asst-side .asst-note,
.asst-side .docs,
.asst-side #assistant-runs,
.asst-side #assistant-tools,
.asst-side .assistant-boundary{padding-right:var(--gut)}


@media (max-width:1180px){
  .asst{display:block;height:auto}
  .asst > *{overflow:visible}
  .asst-list{order:3;border-right:0;border-top:1px solid var(--line2)}
  .asst-thread{order:1}
  .asst-side{order:2;border-left:0;border-top:1px solid var(--line2)}
  .asst{display:flex;flex-direction:column}
  .asst-hd{position:static}
  .assistant-conversation{min-height:340px;max-height:none}
}
@media (max-width:560px){
  .assistant-compose-row{flex-direction:column}
  .assistant-turn{max-width:92%}
}



.dir{margin-top:var(--s2)}


.cg-band{border-top:1px solid var(--line2)}
.dir > .cg-band:last-of-type{border-bottom:1px solid var(--line2)}
.cg-band > summary{
  list-style:none;cursor:pointer;
  display:flex;align-items:center;gap:var(--s3);
  padding:var(--s3);background:var(--bg2);
}
.cg-band > summary::-webkit-details-marker{display:none}
.cg-band > summary:hover{background:var(--bg3)}
.cg-bnm{font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink)}
.cg-bn{font-size:12.5px;color:var(--mid);font-variant-numeric:tabular-nums}


.dir-co{overflow-x:auto}
.dir-co .cg-head,
.dir-co .cg > summary,
.dir-co .ct{
  display:grid;
  grid-template-columns:220px minmax(190px,1fr) 205px 132px 120px 200px 112px 36px;
  gap:var(--s3);align-items:center;
}
.dir-co .cg-head,
.dir-co .cg-band{min-width:1300px}
.dir-co .cg-head{
  padding:0 var(--s3) var(--s2);border-bottom:1px solid var(--line2);
  font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid);
}
.cg{border-top:1px solid var(--line)}
.cg > summary{list-style:none;cursor:pointer;padding:var(--s2) var(--s3);min-height:44px}
.cg > summary::-webkit-details-marker{display:none}
.cg > summary:hover{background:var(--bg3)}

.dir-co .cg-id{grid-column:1}
.dir-co .cg-scopes{grid-column:2}
.dir-co .cg-region{grid-column:3}
.dir-co .cg-rate{grid-column:4}
.cg-id{display:flex;align-items:center;gap:var(--s2);min-width:0}
.cg-cv{width:14px;height:14px;flex:none;color:var(--mid);
  transition:transform var(--t-hover) var(--ease)}
.cg[open] > summary .cg-cv{transform:rotate(90deg)}
.cg-nm{font-size:13.5px;font-weight:700;letter-spacing:-.01em;color:var(--ink);min-width:0}
.cg-n{font-size:12px;color:var(--mid);font-variant-numeric:tabular-nums;flex:none}
.cg-none{color:var(--mid)}
.cg-b{padding-bottom:var(--s3)}

.cg-act{display:flex;gap:var(--s2);flex-wrap:wrap;margin:var(--s3) 0 0;
  padding:0 var(--s3) 0 calc(14px + var(--s2) + var(--s3))}
.cg-note{margin:var(--s3) 0 0;font-size:12.5px;color:var(--mid);max-width:var(--prose);
  padding:0 var(--s3) 0 calc(14px + var(--s2) + var(--s3))}
.cg-note q{color:var(--ink2);font-style:normal}


.dir-co .ct{padding:var(--s2) var(--s3);border-top:1px solid var(--line)}
.dir-co .ct:hover{background:var(--bg3)}
.dir-co .ct-nm{grid-column:1;padding-left:calc(14px + var(--s2))}
.dir-co .ct-co{display:none}
.dir-co .ct-role{grid-column:5}
.dir-co .ct-em{grid-column:6}
.dir-co .ct-tel{grid-column:7}
.dir-co .ct-ed{grid-column:8}


.dir-ind .cg-head,
.dir-ind .ct{
  display:grid;
  grid-template-columns:210px 240px 190px minmax(240px,1fr) 140px 40px;
  gap:var(--s4);align-items:center;
}
.dir-ind .cg-head{
  padding:0 var(--s3) var(--s2);border-bottom:1px solid var(--line2);
  font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid);
}
.dir-ind .ct{padding:var(--s2) var(--s3);border-bottom:1px solid var(--line)}
.dir-ind .ct:hover{background:var(--bg3)}
.dir-ind .ct-nm{grid-column:1}
.dir-ind .ct-co{display:block;grid-column:2}
.dir-ind .ct-role{grid-column:3}
.dir-ind .ct-em{grid-column:4}
.dir-ind .ct-tel{grid-column:5}
.dir-ind .ct-ed{grid-column:6}


.dir-co .ct p,.dir-ind .ct p{margin:0}
.dir-co .ct-nm,.dir-ind .ct-nm{font-size:13.5px;font-weight:600;color:var(--ink);min-width:0}
.dir-co .ct-role,.dir-ind .ct-role,.cg > summary .ct-role{
  font-size:13px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--ink2);min-width:0}
.dir-co .ct-co,.dir-ind .ct-co{margin-top:0;font-size:13.5px;color:var(--ink2);min-width:0}
.dir-co .ct-em,.dir-ind .ct-em,.cg > summary .ct-em{margin-top:0;font-size:12.5px;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dir-co .ct-tel,.dir-ind .ct-tel,.cg > summary .ct-tel{
  font-size:12.5px;color:var(--mid);font-variant-numeric:tabular-nums}
.dir-co .ct-ed,.dir-ind .ct-ed{position:static;opacity:0;justify-self:end}
.dir-co .ct:hover .ct-ed,.dir-co .ct-ed:focus,
.dir-ind .ct:hover .ct-ed,.dir-ind .ct-ed:focus{opacity:1}


.dir-int .cg-head,
.dir-int .ct{
  display:grid;
  grid-template-columns:210px 200px minmax(240px,460px) 150px minmax(0,1fr) 40px;
  gap:var(--s4);align-items:center;
}
.dir-int .cg-head{
  padding:0 var(--s3) var(--s2) calc(14px + var(--s3) + var(--s3));
  border-bottom:1px solid var(--line2);
  font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid);
}
.dir-int .ct{padding:var(--s2) var(--s3) var(--s2) calc(14px + var(--s3) + var(--s3));
  border-bottom:1px solid var(--line)}
.dir-int .ct:hover{background:var(--bg3)}
.dir-int .ct p{margin:0}

.dir-int .ct-co{display:none}
.dir-int .ct-nm{font-size:13.5px;font-weight:600;color:var(--ink);min-width:0}
.dir-int .ct-role{font-size:13px;font-weight:400;letter-spacing:0;text-transform:none;
  color:var(--ink2);min-width:0}
.dir-int .ct-em{margin-top:0;font-size:12.5px;min-width:0;overflow-wrap:anywhere}
.dir-int .ct-tel{font-size:12.5px;color:var(--mid);font-variant-numeric:tabular-nums}

.dir-int .ct-ed,.dir-int .cg-head span:last-child{grid-column:6}
.dir-int .ct-ed{position:static;opacity:0;justify-self:end}
.dir-int .ct:hover .ct-ed,.dir-int .ct-ed:focus{opacity:1}
.dir-int .cg{border-top:1px solid var(--line2)}
.dir-int .cg > summary{display:flex;align-items:center;gap:var(--s3);padding:var(--s3)}
.dir-int .cg-nm{font-size:15px}


.tgs{display:flex;flex-wrap:wrap;gap:var(--s1);min-width:0}
.tg{display:inline-flex;align-items:center;gap:5px;padding:2px 7px;
  font-size:12px;background:var(--tag-bg);color:var(--ink2);white-space:nowrap}
.tg .n{font-weight:600;color:var(--mid);font-variant-numeric:tabular-nums}
.tg-geo{padding:1px 6px;background:none;border:1px solid var(--line2);color:var(--mid)}
.tg-geo .i{width:11px;height:11px;flex:none}


.stars{display:inline-flex;align-items:baseline;gap:var(--s2);white-space:nowrap}
.stars-b{position:relative;display:inline-block;font-size:13px;line-height:1;
  letter-spacing:0;color:var(--line2)}
.stars-b::before{content:"\2605\2605\2605\2605\2605"}
.stars-b i{position:absolute;top:0;left:0;overflow:hidden;
  width:calc(var(--fill,0) * 100%);color:var(--ink)}
.stars-b i::before{content:"\2605\2605\2605\2605\2605"}
.stars b{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.stars small{font-size:12px;color:var(--mid);font-variant-numeric:tabular-nums}
.stars-none{font-size:12.5px;color:var(--mid)}


.seg-sub{max-width:380px;margin-top:var(--s4)}
.seg-sub button{flex:0 1 auto;padding:0 var(--s4);display:inline-flex;
  align-items:center;gap:var(--s2)}
.seg-sub button[aria-selected="true"]{
  color:var(--ink);background:var(--bg2);
  border-color:var(--edge);box-shadow:inset 0 2px 0 var(--o);padding-bottom:1px;
}
.seg-sub .n{font-size:12px;font-weight:400;color:var(--mid);font-variant-numeric:tabular-nums}

.dir-hint{margin:var(--s2) 0 0;font-size:13px;color:var(--mid);max-width:var(--prose)}


@media (max-width:1100px){
  .dir-co{overflow-x:visible}
  .dir-co .cg-head,.dir-ind .cg-head,.dir-int .cg-head{display:none}
  .dir-co .cg-band{min-width:0}
  .dir-co .cg > summary,
  .dir-co .ct,.dir-ind .ct,.dir-int .ct{
    grid-template-columns:minmax(0,1fr) 40px;gap:var(--s1) var(--s3);
    align-items:start;padding-left:var(--s3);
  }

  .dir-co .cg-id,.dir-co .ct-nm,.dir-ind .ct-nm,.dir-int .ct-nm,
  .dir-co .ct-co,.dir-ind .ct-co,
  .dir-co .ct-role,.dir-ind .ct-role,.dir-int .ct-role,
  .dir-co .ct-em,.dir-ind .ct-em,.dir-int .ct-em,
  .dir-co .ct-tel,.dir-ind .ct-tel,.dir-int .ct-tel,
  .dir-co .cg-scopes,.dir-co .cg-region,.dir-co .cg-rate{grid-column:1}
  .dir-co .ct-nm{padding-left:0}
  .dir-co .ct-ed,.dir-ind .ct-ed,.dir-int .ct-ed{grid-row:1/8;grid-column:2;opacity:1}
  .dir-co .ct-em,.dir-ind .ct-em{white-space:normal;overflow-wrap:anywhere}
}


[data-foldall] .i{transition:transform var(--t-hover) var(--ease)}
[data-foldall][aria-expanded="false"] .i{transform:rotate(180deg)}


.areas{margin-top:var(--s4)}
.areas-h{display:flex;align-items:baseline;gap:var(--s3);margin:0 0 var(--s2);
  font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--mid)}
.areas-h .lnk{font-size:12px;font-weight:400;letter-spacing:0;text-transform:none}
.areas-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:var(--s2)}
.area{
  display:flex;flex-direction:column;gap:2px;min-width:0;
  padding:var(--s3);text-align:left;font:inherit;cursor:pointer;
  background:var(--bg2);border:1px solid var(--line);border-left:3px solid transparent;
  transition:background var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease);
}
.area:hover{background:var(--bg3);border-color:var(--line2)}
.area[aria-current="true"]{background:var(--bg3);border-color:var(--edge);border-left-color:var(--o)}
.area-n{font-size:13.5px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.area-m{font-size:12px;color:var(--mid);font-variant-numeric:tabular-nums}
.area-m b{font-weight:700;color:var(--ink2)}
.area-m .sep{margin:0 5px;color:var(--line2)}
@media (max-width:640px){
  .areas-g{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
}
.area-sub{display:block;font-style:normal;font-size:12px;font-weight:500;color:var(--o-txt)}
.area-sub:empty{display:none}


body[data-page="job"] .wrap{max-width:none}


th abbr[title]{text-decoration:none;cursor:help}


.sech + *{margin-top:var(--s3)}
.sech + .rows,.sech + .tw,.sech + .form,.sech + .toolbar,
.sech + .tbar,.sech + .picks,.sech + .figs{margin-top:var(--s3)}


.atts{display:flex;flex-direction:column;gap:var(--s2);margin:var(--s3) 0 0}
.att{display:flex;align-items:center;gap:var(--s2);min-width:0;
  padding:var(--s2) var(--s3);background:var(--bg);
  border:1px solid var(--line2);border-radius:11px}
.att-k{flex:none;display:flex;align-items:center;justify-content:center;
  width:34px;height:30px;font-size:9px;font-weight:700;letter-spacing:.03em;
  color:var(--mid);background:var(--tag-bg);border:1px solid var(--line2);
  border-radius:8px;clip-path:polygon(0 0,72% 0,100% 26%,100% 100%,0 100%)}
.att-k-x{color:var(--ok);border-color:currentColor}
.att-b{display:flex;flex-direction:column;gap:1px;min-width:0}
.att-n{font-size:12.5px;font-weight:600;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.att-m{font-size:11px;color:var(--mid)}
.assistant-turn small{margin-top:var(--s2);font-size:11.5px;color:var(--mid)}

#assistant-pending{margin:var(--s3) 0 0}
#assistant-pending .att{border-style:dashed}



.asec{background:var(--bg);border-bottom:1px solid var(--line2)}

.asec-in{
  display:flex;align-items:flex-end;gap:var(--s2);
  padding:var(--s2) var(--gut) 0;
  overflow-x:auto;scrollbar-width:none;
}
.asec-in::-webkit-scrollbar{display:none}
.asec a{
  display:inline-flex;align-items:center;gap:var(--s2);
  min-height:40px;padding:0 var(--s4);white-space:nowrap;
  font-size:13.5px;font-weight:600;color:var(--mid);
  border:1px solid transparent;border-bottom:0;margin-bottom:-1px;
  transition:color var(--t-hover) var(--ease);
}
.asec a:hover{color:var(--ink)}

.asec a[aria-current]{
  color:var(--ink);background:var(--bg2);
  border-color:var(--edge);box-shadow:inset 0 2px 0 var(--o);
  padding-bottom:1px;
}
.asec .n{font-size:12.5px;font-weight:400;color:var(--mid);
  font-variant-numeric:tabular-nums}
.asec a[aria-current] .n{color:var(--ink2)}


@media (max-width:900px),(pointer:coarse){
  .asec a{min-height:var(--tap)}
}
body[data-page="assistant"] .asec{flex:none}



.alog{margin-top:var(--s2)}
.aday{margin-top:var(--s6)}
.aday:first-child{margin-top:var(--s3)}
.aday-h{
  display:flex;align-items:baseline;gap:var(--s3);
  margin:0;padding:var(--s2) 0;
  border-bottom:1px solid var(--line2);
  font-family:var(--disp);font-size:13px;letter-spacing:-.01em;color:var(--ink);
}
.aday-h .n{font-family:var(--sans);font-size:12px;font-weight:400;color:var(--mid)}

.aev{border-bottom:1px solid var(--line)}
.aev > summary{
  list-style:none;cursor:pointer;
  display:grid;grid-template-columns:62px 26px minmax(0,1fr) auto;
  gap:var(--s3);align-items:baseline;
  padding:var(--s3) var(--s2);
}
.aev > summary::-webkit-details-marker{display:none}
.aev > summary:hover{background:var(--bg2)}
.aev[open] > summary{background:var(--bg2)}
.aev-t{font-size:12px;color:var(--mid);font-variant-numeric:tabular-nums}

.aev-i{
  align-self:center;display:flex;align-items:center;justify-content:center;
  width:26px;height:26px;border-radius:50%;
  background:var(--tag-bg);color:var(--ink2);
}
.aev-i .i{width:14px;height:14px}
.aev-held .aev-i{background:var(--o-tint);color:var(--o)}
.aev-b{min-width:0}
.aev-x{display:block;font-size:13.5px;color:var(--ink);line-height:1.45}
.aev-s{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);
  margin-top:3px;font-size:12px;color:var(--mid)}
.aev-r{display:flex;align-items:center;gap:var(--s2);flex:none;align-self:center}
.aev-cv{width:14px;height:14px;color:var(--mid);
  transition:transform var(--t-hover) var(--ease)}
.aev[open] .aev-cv{transform:rotate(180deg)}


.aev-p{padding:0 var(--s2) var(--s4) calc(62px + 26px + var(--s3) * 2)}
.arec{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:var(--s3) var(--s6);margin:0;
  padding:var(--s3) var(--s4);background:var(--bg2);
  border:1px solid var(--line2)}
.arec > div{min-width:0}
.arec dt{font-size:11px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--mid)}
.arec dd{margin:3px 0 0;font-size:13px;color:var(--ink2);line-height:1.5}
.aev-p .docs{padding:var(--s3) 0 0;max-width:560px}
.aev-p > .hint{margin:var(--s3) 0 0;max-width:var(--prose)}
@media (max-width:760px){
  .aev > summary{grid-template-columns:26px minmax(0,1fr) auto}
  .aev-t{grid-column:2;order:2;font-size:11.5px}
  .aev-p{padding-left:var(--s2)}
}




.chase{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;
  font-variant-numeric:tabular-nums}
.chase-d{display:inline-flex;align-items:center;gap:3px}
.chase-d i{width:6px;height:6px;border-radius:50%;border:1px solid var(--edge)}
.chase-d i.on{background:var(--mid);border-color:var(--mid)}
.chase-d i.due{background:transparent;border-color:var(--o);box-shadow:inset 0 0 0 1px var(--o)}
.spec-ok{color:var(--ok)}
.spec-no{color:var(--o);font-weight:600}


.filts{display:flex;align-items:center;gap:var(--s1);flex-wrap:wrap}
.tbar .filts{margin-left:var(--s3)}


.live{
  display:inline-block;width:7px;height:7px;margin-right:7px;
  border-radius:50%;background:var(--o);vertical-align:baseline;
}


.asec a .tag{font-size:10px;font-weight:600;padding:1px 6px;opacity:.9}
.asec a[aria-current] .tag{opacity:1}

.ph-c .hl .tag{align-self:center}



.why-q{margin:0;font-family:var(--disp);font-size:16px;line-height:1.35;
  letter-spacing:-.01em;color:var(--ink)}
#whypanel .hint{margin-top:var(--s2)}
#why-src{margin-top:var(--s4);display:flex;flex-direction:column;gap:var(--s3)}
.why-src{border:1px solid var(--line2);border-radius:12px;background:var(--bg);
  overflow:hidden}

.why-src > .doc{border:0;border-radius:0;border-bottom:1px solid var(--line);
  background:none}
.why-src > .doc .tag,.why-src > .doc .pill{flex:none}
.doc-k-no{color:var(--o);border-color:currentColor}

.why-quote{margin:0;padding:var(--s3) var(--s4);
  border-left:3px solid var(--edge);
  font-size:13.5px;line-height:1.6;color:var(--ink2);max-width:var(--prose)}
.why-none{margin:0;padding:var(--s3) var(--s4);font-size:13px;color:var(--mid);
  font-style:italic}
#why-stop-wrap{margin-top:var(--s4)}
.why-go{margin:var(--s4) 0 0}


.covl{
  display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;
  margin:var(--s6) 0 0;padding:var(--s3) 0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  font-size:13px;color:var(--mid);
}
.covl-bar{flex:none;display:block;width:120px;height:6px;
  background:var(--o-tint);border:1px solid var(--line2);overflow:hidden}
.covl-bar i{display:block;height:100%;width:0;background:var(--ok)}
.covl-t{min-width:0}
.covl-t b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.covl [data-goto-coverage]{margin-left:auto}



.beta{
  display:flex;align-items:center;justify-content:center;gap:var(--s2);
  padding:var(--s2) var(--gut);
  background:var(--o-tint);
  border-bottom:1px solid var(--edge);
  color:var(--ink2);font-size:12.5px;line-height:1.4;text-align:center;
}
.beta b{color:var(--ink);font-weight:600}

.beta i{flex:none;width:6px;height:6px;border-radius:50%;background:var(--o)}
@media (max-width:560px){
  .beta{text-align:left;justify-content:flex-start}
  .beta i{display:none}
}

body[data-page="assistant"] .beta{flex:none}



.tpick{
  display:grid;grid-template-columns:repeat(3,1fr);
  border:1px solid var(--line2);background:var(--bg);
}
.tpick button{
  min-height:var(--ctrl-sm);padding:0 var(--s2);
  font:inherit;font-size:12.5px;font-weight:600;
  color:var(--mid);background:none;
  border:0;border-left:1px solid var(--line2);
  cursor:pointer;appearance:none;
  transition:color var(--t-hover) var(--ease);
}
.tpick button:first-child{border-left:0}
.tpick button:hover{color:var(--ink)}
.tpick button[aria-pressed="true"]{
  color:var(--ink);background:var(--bg3);
  box-shadow:inset 0 2px 0 var(--o);
}




.source-list > summary{display:flex;align-items:center;gap:var(--s1);min-height:var(--tap);
  white-space:nowrap;list-style:none;cursor:pointer;font-size:12px;font-weight:600;
  font-variant-numeric:tabular-nums}
.source-list > summary::-webkit-details-marker{display:none}
.source-list > summary:hover{color:var(--o)}
.source-arrow{width:14px;height:14px;flex:none}
.source-list[open] > summary .source-arrow{transform:rotate(90deg)}
.source-warning{color:var(--o)}
.source-references{display:block;list-style:none;margin:0;padding:var(--s1) 0 var(--s2);
  font-size:12px;line-height:1.5}
.source-references li + li{margin-top:var(--s2)}
.source-references .ev-k{color:var(--mid)}


.tbl-wide{min-width:2280px}
.tw-grid{--tw-h:none;overscroll-behavior-y:auto}
.tw-grid tfoot tr > *{bottom:auto}

.subgrp{color:var(--ink2);border-left:2px solid var(--line2);
  text-transform:none;letter-spacing:0}


.tbl-wide.row-disclosure{table-layout:fixed}
.row-disclosure col:nth-child(2){width:var(--scope-width)}
.row-disclosure tbody td{vertical-align:top}
.row-disclosure tbody tr:not(.row-expanded) > td{vertical-align:middle;padding-top:4px;padding-bottom:4px}
.row-disclosure .row-pick{display:flex;align-items:center;min-height:var(--tap)}
.row-disclosure .row-pick > input{margin:auto}
.attention-slot{display:inline-flex;align-items:center;justify-content:center;width:24px;flex:none;color:var(--o)}
.attention-slot .i{width:16px;height:16px}
.attention-column{color:var(--o);margin-right:var(--s1)}
.column-resizer{position:absolute;right:0;top:0;bottom:0;width:44px;cursor:col-resize;
  touch-action:none;z-index:5;background:transparent;border:0;padding:0}
.column-resizer::after{content:'';position:absolute;top:20%;bottom:20%;right:5px;width:2px;background:var(--line2)}
.column-resizer:hover::after,.column-resizer:focus::after{background:var(--o)}
.row-disclosure .coverage-cell,.row-disclosure .accept-cell{position:relative;padding:0!important;text-align:center}
.coverage-symbol,.accept-cell-control{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  min-height:44px;font-size:24px;font-weight:600}
.coverage-in{color:var(--o);background:color-mix(in oklch,var(--o) 7%,transparent)}
.coverage-ex{color:var(--danger);background:color-mix(in oklch,var(--danger) 7%,transparent)}
.coverage-unknown{color:var(--mid)}
.accept-cell-control{cursor:pointer;margin:0}
.accept-cell-control input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.accept-mark{font-size:0;color:var(--mid);pointer-events:none}
.accept-mark::before{content:'□';font-size:24px}
.accept-cell-control input:checked + .accept-mark::before{content:'✓'}
.accept-cell-control input:checked + .accept-mark{color:var(--ok);opacity:1}
.accept-cell-control:focus-within{outline:2px solid var(--o);outline-offset:-3px}
.row-disclosure tbody tr > .bid-accepted{background:color-mix(in oklch,var(--ok) 22%,var(--bg2))!important}
.row-disclosure tbody tr > .bid-accepted .coverage-symbol{background:none}
.row-toggle{display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:44px;height:44px;padding:0;border:0;background:none;color:var(--mid);cursor:pointer}
.row-toggle:hover{color:var(--o)}
.row-toggle .i{width:16px;height:16px}
.row-expanded .row-toggle .i{transform:rotate(90deg)}
.cell-preview{min-width:0}
.row-disclosure tbody tr{cursor:pointer}
.row-disclosure tbody tr:not(.row-expanded) .cell-preview,
.row-disclosure tbody tr:not(.row-expanded) .nm{
  display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-disclosure tbody tr:not(.row-expanded) .why,
.row-disclosure tbody tr:not(.row-expanded) .source-references,
.row-disclosure tbody tr:not(.row-expanded) .row-review{display:none}
.row-disclosure tbody tr:not(.row-expanded) .pill{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row-disclosure .source-primary{display:flex;align-items:center;gap:var(--s1);
  min-height:var(--tap);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}
.source-primary > span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.source-more{color:var(--mid);flex:none}
.row-expanded .source-more{display:none}
.row-expanded .cell-preview,.row-expanded .nm{white-space:normal;overflow-wrap:anywhere}
.row-expanded .source-primary > span:first-child{white-space:normal;overflow:visible}
.row-disclosure .row-review{margin-top:var(--s2)}
.row-disclosure .rowbtn:has(.why) .nm::after{content:' …';color:var(--mid)}
.row-disclosure .row-expanded .rowbtn .nm::after{content:none}
.scope-view-tools{display:flex;gap:var(--s1)}
.scope-view-tools .btn,.tbar .icon-only{width:44px;min-width:44px;min-height:44px;padding:0;justify-content:center}

.rowbtn{display:block;width:100%;min-height:var(--tap);padding:0;
  font:inherit;text-align:left;color:inherit;background:none;border:0;
  cursor:pointer}
.rowbtn .nm{font-weight:600;border-bottom:1px solid transparent}
.rowbtn:hover .nm{color:var(--o);border-bottom-color:var(--o)}
@media print{
  .row-disclosure .row-toggle,.row-disclosure .row-review,.row-display-controls{display:none!important}
  .row-disclosure tbody tr .cell-preview,.row-disclosure tbody tr .nm{
    white-space:normal!important;overflow:visible!important}
  .row-disclosure tbody tr .why,.row-disclosure tbody tr .source-references{display:block!important}
}


.wb-rowline{display:flex;align-items:center;gap:var(--s1);min-width:0}



.ph.job-header{display:grid;grid-template-columns:minmax(0,1fr) auto;
  align-items:center;gap:var(--s1) var(--s4);padding:var(--s4) 0 var(--s2)}
.job-header h1{font-size:clamp(1.2rem,2.2vw,1.65rem)}
.job-status,.job-context{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s2);
  font-size:13px;color:var(--mid)}
.job-status{justify-content:flex-end;font-variant-numeric:tabular-nums}
.job-context{gap:var(--s2) var(--s3)}
.job-area{justify-self:end}
.job-workspace{min-width:0}
.job-tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;align-items:stretch;
  padding:var(--s2) 0 1px}
.job-tabs [role="tab"]{flex:none;white-space:nowrap}
.job-tabs [role="tab"] .i{width:16px;height:16px;flex:none}
.job-tabs [role="tab"][aria-selected="true"] .i{color:var(--o)}
@media(max-width:760px){
  .ph.job-header{grid-template-columns:minmax(0,1fr) auto}
  .job-header h1{grid-column:1 / -1}
  .job-status{justify-content:flex-start;grid-column:1;grid-row:2}
  .job-context{grid-column:1 / -1;grid-row:3;font-size:12px}
  .job-area{grid-column:2;grid-row:2}
}

/* Shared-renderer additions. The full visual contract comes from the adopted
   GC Hub Demo stylesheet. These rules cover only data-driven shell content. */
.customer-view-banner{position:sticky;top:0;z-index:80;display:flex;align-items:center;justify-content:space-between;gap:var(--s3) var(--s5);flex-wrap:wrap;padding:var(--s3) var(--gut);background:var(--bg2);border-bottom:2px solid var(--o);color:var(--ink)}
.customer-view-banner>div{display:flex;align-items:baseline;gap:var(--s2) var(--s4);flex-wrap:wrap;min-width:0}
.customer-view-banner small{flex-basis:100%;overflow-wrap:anywhere;color:var(--muted)}
.customer-view-banner form,.customer-view-banner p{margin:0}
.customer-view-banner p{flex-basis:100%;font-size:13px;color:var(--muted)}
body[data-customer-view] .top{top:var(--customer-view-banner-height,110px)}
body[data-customer-view] .ph{top:calc(var(--top-h) + var(--customer-view-banner-height,110px))}
body[data-customer-view] [data-hub-root][hidden]{display:none!important}
@media(max-width:700px){.customer-view-banner{gap:var(--s2);padding:var(--s2) var(--gut)}.customer-view-banner>div{font-size:13px}.customer-view-banner small{font-size:11px}.customer-view-banner p{font-size:12px}}
@font-face{font-family:Inter;src:url("./fonts/InterVariable.woff2") format("woff2");font-style:normal;font-weight:100 900;font-display:swap}
@font-face{font-family:Archivo;src:url("./fonts/ArchivoVariable.woff2") format("woff2");font-style:normal;font-weight:100 900;font-display:swap}
/* GCT-396: masthead, title rule and data surface share the same outer rails.
   Keep the established colour/spacing tokens; precision, not extra boxes, carries the brand. */
:root{--hub-label-tracking:.06em;--hub-title-tracking:-.035em}
/* Staff pages use the same shell, tables, forms, typography and themes as customer pages. */
.skip-link{position:absolute;top:var(--s2);left:var(--gut);z-index:100;padding:var(--s3);background:var(--bg2);color:var(--ink);transform:translateY(-200%)}
.skip-link:focus{transform:translateY(0);outline:2px solid var(--o);outline-offset:2px}
.admin-context{margin:var(--s4) 0 0}
.admin-search{display:flex;align-items:end;gap:var(--s3);margin-block:var(--s4)}
.admin-search .f{flex:1;max-width:600px}
.admin-search>p{margin:0}
.admin-pagination{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:center;margin-block:var(--s4)}
.admin-id{font-variant-numeric:tabular-nums}
.admin-options{border:0;padding:0;margin:var(--s2) 0;min-width:0}
.admin-options legend{font-weight:600;margin-bottom:var(--s2)}
.admin-options label{display:flex;align-items:center;gap:var(--s2);min-height:var(--tap)}
.admin-options input{width:18px;height:18px;accent-color:var(--o)}
.admin-hub .tw{overflow-x:auto}
.admin-hub .tw table{min-width:560px}
.admin-hub .settings-shell:not(.cols){display:block}
.dev-heading,.dev-detail-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s5);padding:clamp(28px,5vw,64px) 0 var(--s5);border-bottom:1px solid var(--line2)}
.dev-heading h1,.dev-editor-heading h1,.dev-detail-heading h1{margin:0;font-family:Archivo,Inter,sans-serif;font-size:clamp(2rem,5vw,4.5rem);line-height:.96;letter-spacing:-.055em}
.dev-heading p,.dev-editor-heading p,.dev-detail-heading p{margin:var(--s2) 0 0;color:var(--mid)}
.dev-heading .eyebrow,.dev-editor-heading .eyebrow{margin-bottom:var(--s3);color:var(--o);font-size:11px;font-weight:750;letter-spacing:.14em;text-transform:uppercase}
.dev-new{min-height:46px;padding-inline:var(--s5);flex:0 0 auto}
.dev-notice,.dev-form-error{padding:var(--s3) var(--s4);border-left:3px solid var(--o);background:var(--bg2);color:var(--ink)}
.dev-form-error{grid-column:1/-1;border-color:var(--red,#b42318)}
.dev-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line2)}
.dev-metrics a{display:flex;align-items:baseline;gap:var(--s2);min-width:0;padding:var(--s4) var(--s3);color:inherit;text-decoration:none;border-right:1px solid var(--line2)}
.dev-metrics a:first-child{padding-left:0}.dev-metrics a:last-child{border-right:0}
.dev-metrics a:hover span{text-decoration:underline;text-underline-offset:3px}
.dev-metrics strong{font:750 clamp(1.4rem,2.5vw,2rem)/1 Archivo,Inter,sans-serif;font-variant-numeric:tabular-nums}.dev-metrics span{font-size:12px;color:var(--mid)}
.dev-workspace{padding-top:var(--s5)}
.dev-toolbar{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;padding-bottom:var(--s3);border-bottom:1px solid var(--line2)}
.dev-toolbar label{margin:0}.dev-toolbar select,.dev-toolbar input{min-height:38px;border:1px solid var(--edge);background:var(--bg);color:var(--ink);border-radius:4px;padding:7px 10px;font:inherit}
.dev-search{display:flex;align-items:center;gap:8px;flex:1 1 280px;min-height:38px;padding-left:10px;border:1px solid var(--edge);border-radius:4px;color:var(--mid)}
.dev-search:focus-within{outline:2px solid var(--o);outline-offset:2px;border-color:var(--o)}.dev-search input{width:100%;border:0;padding-left:0;outline:0;background:transparent}
.dev-view-switch{display:inline-flex;margin-left:auto;border:1px solid var(--edge);border-radius:4px;overflow:hidden}.dev-view-switch a{padding:9px 12px;color:var(--mid);font-size:12px;text-decoration:none}.dev-view-switch a[aria-current=page]{background:var(--ink);color:var(--bg)}
.dev-result-count{margin:var(--s3) 0;color:var(--mid);font-size:12px}
.dev-list{border-top:1px solid var(--line2)}.dev-list-head,.dev-list-row{display:grid;grid-template-columns:minmax(260px,2.2fr) minmax(100px,.75fr) minmax(90px,.65fr) minmax(150px,1fr) 90px;gap:var(--s3);align-items:center;padding:10px var(--s2);border-bottom:1px solid var(--line2)}
.dev-list-head{min-height:34px;color:var(--mid);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.dev-list-row{min-height:58px;color:inherit;text-decoration:none}.dev-list-row:hover{background:var(--bg2)}.dev-list-row:focus-visible{outline:2px solid var(--o);outline-offset:-2px}
.dev-title{display:flex;min-width:0;flex-direction:column;gap:3px}.dev-title small,.dev-ticket-ref{color:var(--mid);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.dev-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.dev-status,.dev-priority,.dev-kind{display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:700;line-height:1.4}.dev-status{background:var(--bg2);border:1px solid var(--line2)}.dev-status-in_progress{border-color:color-mix(in srgb,var(--o) 55%,var(--line2));color:var(--o)}.dev-status-in_review{border-color:#8d78c5;color:#a998d4}.dev-status-done{border-color:#53856b;color:#6baa83}
.dev-priority{padding-inline:0;color:var(--mid)}.dev-priority-urgent{color:#ef6a5b}.dev-priority-high{color:var(--o)}.dev-priority-medium{color:#d1ad58}.dev-row-assignee,.dev-assignee{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mid);font-size:12px}
.dev-board{display:grid;grid-template-columns:repeat(6,minmax(200px,1fr));gap:var(--s3);overflow-x:auto;padding-bottom:var(--s4)}.dev-column{min-width:200px}.dev-column>header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--s1) var(--s3);border-bottom:2px solid var(--line2)}.dev-column h2{margin:0;font-size:12px}.dev-column header span{color:var(--mid);font-size:11px}.dev-column>div{display:grid;gap:var(--s2);padding-top:var(--s2)}
.dev-ticket-card{position:relative;min-width:0;overflow:hidden;padding:var(--s3);border:1px solid var(--line2);border-radius:6px;background:var(--bg)}.dev-ticket-card::before{content:"";position:absolute;inset:0 auto 0 0;width:2px;background:var(--line2)}.dev-ticket-card[data-priority=urgent]::before{background:#ef6a5b}.dev-ticket-card[data-priority=high]::before{background:var(--o)}.dev-ticket-card:hover{border-color:var(--edge);transform:translateY(-1px)}
.dev-ticket-link{display:flex;flex-direction:column;gap:6px;color:inherit;text-decoration:none}.dev-ticket-link::after{content:"";position:absolute;inset:0}.dev-ticket-link strong{font-size:13px;line-height:1.45}.dev-ticket-meta{display:flex;gap:var(--s2);margin-top:var(--s4)}.dev-kind{padding-inline:0;color:var(--mid)}.dev-assignee{margin:var(--s2) 0 0}.dev-column-empty{padding:var(--s4);border:1px dashed var(--line2);color:var(--mid);font-size:12px;text-align:center}
.dev-empty{display:grid;justify-items:center;gap:var(--s2);padding:clamp(48px,10vw,110px) var(--s4);text-align:center;border-bottom:1px solid var(--line2)}.dev-empty>span{font-size:34px;color:var(--o)}.dev-empty h2,.dev-empty p{margin:0}.dev-empty p{color:var(--mid)}
.dev-pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--s3);padding:var(--s4) 0}.dev-pagination>span{color:var(--mid);font-size:12px;text-align:center}.dev-pagination>a:last-child{justify-self:end}
.dev-back{display:inline-flex;margin-top:var(--s5);color:var(--mid);text-decoration:none;font-size:12px}.dev-back:hover{color:var(--ink)}.dev-editor-heading{max-width:760px;padding:var(--s6) 0 var(--s4)}.dev-editor{max-width:900px;padding:var(--s5);border:1px solid var(--line2);background:var(--bg2)}
.dev-ticket-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s4)}.dev-ticket-form .f{display:grid;gap:var(--s1)}.dev-ticket-form .dev-form-title,.dev-ticket-form .dev-form-description,.dev-form-actions{grid-column:1/-1}.dev-ticket-form input,.dev-ticket-form select,.dev-ticket-form textarea{width:100%}.dev-ticket-form textarea{resize:vertical}.dev-form-actions{display:flex;gap:var(--s2);margin:0}
.dev-detail-heading{align-items:flex-start}.dev-detail-heading>div{min-width:0;max-width:900px}.dev-detail-heading h1{margin-top:var(--s3);font-size:clamp(1.8rem,4vw,3.4rem)}.dev-detail-kicker{display:flex;align-items:center;gap:var(--s3);color:var(--mid);font-size:11px;font-weight:700;letter-spacing:.06em}.dev-revision{flex:0 0 auto;color:var(--mid);font-size:11px}
.dev-detail-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(290px,.8fr);gap:clamp(var(--s5),5vw,var(--s8));padding-top:var(--s6)}.dev-detail-primary,.dev-detail-grid aside{min-width:0}.dev-description-panel,.dev-conversation,.dev-activity{border-top:1px solid var(--line2);padding-top:var(--s4)}.dev-description{min-height:120px;padding:var(--s4) 0;overflow-wrap:anywhere;line-height:1.7}.dev-description>:first-child{margin-top:0}.dev-description>:last-child{margin-bottom:0}.dev-description h1,.dev-description h2,.dev-description h3{margin:1.25em 0 .45em;font-size:1.15em}.dev-description ul,.dev-description ol{padding-left:1.5em}.dev-description code{padding:.15em .35em;background:var(--bg2);border:1px solid var(--line2);font-size:.9em}.dev-description pre{overflow:auto;padding:var(--s3);background:var(--bg2);border:1px solid var(--line2)}.dev-description pre code{padding:0;border:0}.dev-description a{color:var(--o)}.dev-conversation{margin-top:var(--s6)}.dev-conversation>.sech>span{color:var(--mid);font-size:12px}.dev-conversation>ol,.dev-activity ol{list-style:none;margin:0;padding:0}.dev-conversation>ol>li{padding:var(--s4) 0;border-bottom:1px solid var(--line2)}.dev-conversation li header{display:flex;justify-content:space-between;gap:var(--s3);font-size:12px}.dev-conversation li header time{color:var(--mid)}.dev-conversation li p{margin:var(--s3) 0 0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}.dev-quiet-empty{padding:var(--s5) 0;color:var(--mid)}
.dev-comment-form{display:grid;grid-template-columns:1fr;gap:var(--s2);margin-top:var(--s5);padding:var(--s4);background:var(--bg2);border:1px solid var(--line2)}.dev-comment-form>*{grid-column:1}.dev-comment-form label{font-size:12px;font-weight:700}.dev-comment-form textarea{width:100%;resize:vertical}.dev-comment-form .btn{justify-self:start}
.dev-properties{border-top:1px solid var(--line2)}.dev-properties>summary{padding:var(--s4) 0;cursor:pointer;font-size:12px;font-weight:700}.dev-properties[open]>summary{border-bottom:1px solid var(--line2)}.dev-properties .dev-ticket-form{display:grid;grid-template-columns:1fr;padding:var(--s4) 0}.dev-properties .dev-ticket-form>*{grid-column:1}.dev-properties .dev-form-description textarea{min-height:140px}.dev-activity{margin-top:var(--s6)}.dev-activity li{position:relative;display:flex;gap:var(--s3);padding:0 0 var(--s4)}.dev-activity li::before{content:"";position:absolute;left:4px;top:10px;bottom:-2px;width:1px;background:var(--line2)}.dev-activity li:last-child::before{display:none}.dev-activity-mark{z-index:1;width:9px;height:9px;margin-top:5px;border-radius:50%;background:var(--o);box-shadow:0 0 0 3px var(--bg)}.dev-activity p{margin:0;font-size:12px}.dev-activity small{display:block;margin-top:3px;color:var(--mid)}
.dev-source-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);margin-top:var(--s5);padding:var(--s4);border:1px solid color-mix(in srgb,var(--o) 38%,var(--line2));background:color-mix(in srgb,var(--o) 7%,var(--bg));border-radius:6px}.dev-source-banner p{margin:4px 0 0;color:var(--mid);font-size:12px}.dev-source-banner a{white-space:nowrap}.dev-source-meta{border-top:2px solid var(--o);padding-top:var(--s4)}.dev-source-meta h2{margin:0 0 var(--s4);font-size:14px}.dev-source-meta dl,.dev-source-meta dd{margin:0}.dev-source-meta dl>div{padding:var(--s3) 0;border-bottom:1px solid var(--line2)}.dev-source-meta dt{color:var(--mid);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.dev-source-meta dd{margin-top:5px;overflow-wrap:anywhere;font-size:12px}.dev-source-meta dd span{display:inline-block;margin:2px 4px 2px 0;padding:3px 7px;border:1px solid var(--line2);border-radius:99px}.dev-evidence{margin-top:var(--s6);border-top:1px solid var(--line2);padding-top:var(--s4)}.dev-evidence ol{list-style:none;margin:0;padding:0}.dev-evidence li{display:grid;grid-template-columns:90px minmax(0,1fr) auto;gap:var(--s3);align-items:center;padding:var(--s3) 0;border-bottom:1px solid var(--line2);font-size:12px}.dev-evidence-kind{color:var(--mid);text-transform:capitalize}.dev-evidence a{overflow:hidden;text-overflow:ellipsis;color:inherit;font-weight:700;white-space:nowrap}.dev-evidence time{color:var(--mid)}.dev-comment-markdown{overflow-wrap:anywhere;line-height:1.6}.dev-comment-markdown>:last-child{margin-bottom:0}
@media(max-width:900px){.dev-list{overflow-x:auto}.dev-list-head,.dev-list-row{min-width:850px}.dev-detail-grid{grid-template-columns:1fr}.dev-detail-grid aside{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5)}.dev-activity{margin-top:0}}
@media(max-width:700px){.dev-heading{align-items:flex-start;flex-direction:column}.dev-heading .dev-new{width:100%}.dev-metrics{grid-template-columns:repeat(2,1fr)}.dev-metrics a:nth-child(2){border-right:0}.dev-metrics a:nth-child(-n+2){border-bottom:1px solid var(--line2)}.dev-metrics a:nth-child(3){padding-left:0}.dev-toolbar>*{flex:1 1 calc(50% - var(--s2))}.dev-toolbar .dev-search{flex-basis:100%}.dev-toolbar .dev-view-switch{margin-left:0}.dev-view-switch a{flex:1;text-align:center}.dev-list{overflow:visible}.dev-list-head{display:none}.dev-list-row{min-width:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3);padding:var(--s4) var(--s2)}.dev-list-row .dev-title{grid-column:1/-1}.dev-list-row>span:not(.dev-title)::before{content:attr(data-label);display:block;margin-bottom:4px;color:var(--mid);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.dev-list-row .dev-status,.dev-list-row .dev-priority{display:block;width:auto;padding:0;border:0;background:none;font-size:12px}.dev-list-row .dev-row-assignee,.dev-list-row .dev-updated{overflow:hidden;text-overflow:ellipsis;font-size:12px}.dev-list-row .dev-updated{text-align:left}.dev-editor{margin-inline:calc(-1 * var(--gut));padding:var(--s4) var(--gut);border-inline:0}.dev-ticket-form{grid-template-columns:1fr}.dev-ticket-form>*{grid-column:1}.dev-detail-heading{flex-direction:column}.dev-detail-grid aside{grid-template-columns:1fr}.dev-properties .dev-ticket-form{grid-template-columns:1fr}.dev-detail-grid{padding-top:var(--s5)}}
.support-history p{white-space:normal;overflow-wrap:anywhere}
body[data-customer-view] [data-support-report]{display:none}
.admin-diagnostic-data{white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%;font:inherit;line-height:1.6;padding:var(--s4);margin:0}
/* GCT-489: home starts with its schedule; month view uses the same event colours. */
#calendar-heading{font:inherit;font-weight:700;margin:0}
.hub-calendar-scroll{overflow-x:auto}
.hub-calendar{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));min-width:910px;border-top:1px solid var(--line2);border-left:1px solid var(--line2)}
.hub-calendar-weekday,.hub-calendar-day{padding:12px;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2)}
.hub-calendar-weekday{font-size:12px;font-weight:700;color:var(--mid)}
.hub-calendar-day{min-height:130px}
.hub-calendar-day time{display:block;margin-bottom:10px;font-size:12px;font-weight:700}
.hub-calendar-day.is-outside{background:var(--bg2)}
.hub-calendar-day.is-today{box-shadow:inset 0 3px var(--o)}
.hub-calendar-day .cal-i{white-space:normal;overflow-wrap:anywhere}
.hub-calendar-day .cal-i span{display:block}
.top{padding-inline:var(--gut);max-width:none;width:100%}
.ph{min-height:80px;align-items:center;padding-block:var(--s4);gap:var(--s3) var(--s6)}
.ph h1{font-size:28px;font-weight:800;letter-spacing:var(--hub-title-tracking);line-height:1.1;overflow-wrap:anywhere}
.ph .ctx{display:block;margin-top:var(--s2);font-size:12px;color:var(--mid)}
/* GCT-447: the job header prints a Job's name, not a page title, so it keeps the Demo's compact scale.
   GCT-462: the page title above is sentence case now, so there is no uppercasing left to opt out of. */
.ph.job-header{position:static;min-height:0;padding-block:var(--s2)}
.ph.job-header h1{font-size:clamp(1.2rem,2.2vw,1.65rem);letter-spacing:-.02em;justify-self:start}
@media(min-width:761px){.job-header .job-context{grid-column:1;grid-row:2}.job-header .job-area{grid-column:2;grid-row:2}}
/* GCT-548: one compact header and tab rhythm across every Job and Job section. */
body[data-page="job"] #hub-main>.content{padding-top:0}
.job-header .job-area summary{min-height:32px;padding-block:4px}
.job-workspace>.job-tabs{position:sticky;top:calc(var(--hub-masthead-height,var(--top-h)) + var(--customer-view-banner-height,0px));z-index:50;padding-top:0;background:var(--bg);border-bottom:1px solid var(--line2);scrollbar-width:none}
.job-workspace>.job-tabs::-webkit-scrollbar{display:none}
body[data-page="job"] #hub-main{--sticky-h:calc(var(--hub-masthead-height,var(--top-h)) + var(--customer-view-banner-height,0px) + var(--hub-job-tabs-height,46px) + 8px)}
body[data-page="job"] #hub-main :is(a,button,input,select,textarea,[tabindex]){scroll-margin-top:var(--sticky-h)}
.job-tabs [role="tab"]{min-height:36px;padding-inline:var(--s3)}
.job-workspace>.jpane>[role="tabpanel"]{padding-top:var(--s2)}
.job-workspace>.jpane>[role="tabpanel"]>.sec:first-child{margin-top:0}
@media(max-width:700px),(pointer:coarse){.job-tabs [role="tab"],.job-header .job-area summary{min-height:var(--tap)}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);line-height:1.2;white-space:normal;text-align:center}
.btn-p{font-weight:650;letter-spacing:-.01em}
.btn-p:hover{filter:none;background:var(--ink);border-color:var(--ink);color:var(--bg)}
.btn-p[disabled],.btn-p[aria-disabled="true"]{opacity:1;color:var(--mid);background:var(--bg2);border-color:var(--line2);filter:none}
.form>.f{margin:0}
/* Shared editor fields: quiet surfaces with one complete boundary, not a gray slab and underline.
   Keep native choice controls and dense workbook cells on their existing treatments. */
:where(.form,.panel,.calendar-dialog) :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=hidden]):not([type=file]):not([type=button]):not([type=submit]),select,textarea):not(.ed){background-color:var(--bg);border:1px solid var(--edge);border-radius:4px;box-shadow:none}
:where(.form,.panel,.calendar-dialog) :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=hidden]):not([type=file]):not([type=button]):not([type=submit]),select,textarea):not(.ed):hover{border-color:var(--ink2)}
:where(.form,.panel,.calendar-dialog) :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=hidden]):not([type=file]):not([type=button]):not([type=submit]),select,textarea):not(.ed):focus-visible{border-color:var(--o);outline:2px solid var(--o);outline-offset:2px}
.form>.f:has(>button){align-self:end}
.f>label{font-size:12px;line-height:1.5;letter-spacing:var(--hub-label-tracking);text-transform:uppercase;color:var(--mid)}
.f>label .sub{font-size:inherit;text-transform:none;letter-spacing:normal}
.f>small{font-size:12px;line-height:1.5;color:var(--mid)}
.settings-shell{gap:var(--s6)}
.settings-shell .form{grid-template-columns:repeat(2,minmax(0,1fr));margin-block:var(--s4);align-items:start;gap:var(--s4)}
.settings-shell .form>p{margin:0;min-width:0}
.settings-shell .form>.f-grow,.settings-shell .form>p:has(>button),.settings-shell .settings-note{grid-column:1/-1}
.settings-shell .form>p:has(>button){display:flex;justify-content:flex-start;gap:var(--s2)}
.settings-shell .row>.form{grid-column:1/-1;width:100%}
.settings-shell .sec+.sec{margin-top:var(--s6)}
.settings-shell .pane-hd{min-height:var(--tap);align-items:center}
.invoice-filter-chips{display:flex;gap:var(--s2);flex-wrap:wrap;min-width:0}
.invoice-filter-chips .chip{max-width:100%;white-space:normal;overflow-wrap:anywhere}
.settings-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s4) var(--s6);margin:var(--s4) 0}
.settings-facts>div{min-width:0}
.settings-facts dt{font-size:12px;color:var(--mid);line-height:1.5}
.settings-facts dd{margin:var(--s1) 0 0;overflow-wrap:anywhere;line-height:1.5}
.settings-disclosure{border-top:1px solid var(--line2);margin-top:var(--s4)}
.settings-disclosure>summary{cursor:pointer;min-height:var(--tap);padding:var(--s3) 0;font-weight:600}
.settings-disclosure[open]>summary{margin-bottom:var(--s3)}
.settings-shell [hidden]{display:none!important}
.settings-icon{width:44px;height:44px;min-width:44px;padding:10px;flex-shrink:0}
.settings-icon svg{width:20px;height:20px;stroke:currentColor;stroke-width:1.4}
/* GCT-466: the Access page's tables are the demo's plain `.tw > table`, so the row affordances the
   roster had are keyed on the row marker itself rather than on a Hub-only table class. */
.settings-shell [data-person-row]{cursor:pointer}
.settings-shell [data-person-row]:hover,.settings-shell [data-person-row]:focus-within{background:var(--bg2)}
.settings-shell .tw table{min-width:520px}
.settings-shell .tw th,.settings-shell .tw td{white-space:normal;vertical-align:top}
.settings-shell .tw td .sub{display:block}
.settings-shell .tw td form{display:inline-block;margin-left:var(--s2)}
/* The demo sets these two gaps inline (access.html:100, 106); CSP is `style-src 'self'`, so they are
   rules here instead. */
.settings-access-note{margin:0 0 30px}
.settings-access-kv{margin-bottom:34px}
.settings-person-detail{padding:var(--s3);white-space:normal}
.settings-person-detail h3{font-size:14px;font-weight:600;margin:var(--s3) 0}
.settings-person-detail ul{padding-left:var(--s4);line-height:1.75}
/* GCT-466: the person editor a Contacts card's pencil opens, drawn under the card it belongs to. */
.contact-editor{margin:var(--s2) 0 var(--s4);padding:var(--s3);background:var(--bg2);border:1px solid var(--line2)}
.contact-editor h3{font-size:14px;font-weight:600;margin:0 0 var(--s3)}
.billing-price{font-size:20px;font-weight:650;white-space:nowrap}
.billing-price>.sub{font-size:13px;font-weight:400}
.billing-usage{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s2);margin:var(--s4) 0}
.billing-usage progress{appearance:none;display:block;width:100%;height:8px;border:0;background:var(--line2);color:var(--ink)}
.billing-usage progress::-webkit-progress-bar{background:var(--line2)}
.billing-usage progress::-webkit-progress-value{background:var(--ink)}
.billing-usage progress::-moz-progress-bar{background:var(--ink)}
.settings-checkout-state{border-top:1px solid var(--line2);margin-top:var(--s6);padding-top:var(--s4)}
.settings-checkout-state p{max-width:65ch}
@media(max-width:860px){
  .settings-shell{gap:var(--s3)}
  .settings-shell .side{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;min-width:0;border-top:0;border-bottom:1px solid var(--line2)}
  .settings-shell .side>a,.settings-shell .side>span{flex:0 0 auto;white-space:nowrap;min-height:var(--tap);padding:var(--s2) var(--s3);border-left:0;border-bottom:2px solid transparent}
  .settings-shell .side>[aria-current=page]{border-bottom-color:var(--o)}
  /* GH-409: the strip scrolls, so it has to look like it scrolls. On a phone it ended at
     "Subscrip" against a hard edge, which reads as a broken word rather than as more tabs.
     The mask fades the last thing at the right edge out instead of chopping it. The matching
     right padding is part of the scrolled content, so once the reader reaches the end the fade
     lands on that empty strip and the last tab is whole. Where the tabs already fit, the fade
     falls on empty space and nobody sees it. */
  .settings-shell .side{--tabs-fade:40px;padding-right:var(--tabs-fade);scroll-padding-inline-end:var(--tabs-fade);
    -webkit-mask-image:linear-gradient(to right,#000 calc(100% - var(--tabs-fade)),transparent);
    mask-image:linear-gradient(to right,#000 calc(100% - var(--tabs-fade)),transparent)}
}
@media(max-width:600px){
  .settings-shell .form{grid-template-columns:minmax(0,1fr);gap:var(--s3)}
  .settings-facts{grid-template-columns:minmax(0,1fr);gap:var(--s3)}
  /* GH-409: A SETTINGS TABLE BECOMES ONE CARD PER ROW ON A PHONE.
     Superseding GCT-466's sideways scroll: the Access roster, the plan table and Choose a plan
     were seven, four and four columns wide inside a 390px window, so the reader met a wall of
     cut text — "$1,26" where the plan costs $1,260.00 — with nothing to say the pane scrolled.
     Every column stays. The heading travels with its cell as `data-column` and is drawn beside
     the value, so a card carries the whole row and the reader still knows what each line is.
     Above 600px the table is untouched: it is still the demo's table, column for column. */
  .settings-shell .tw{overflow:visible;max-height:none;background:none}
  .settings-shell .tw>table,.settings-shell .tw>table>tbody,.settings-shell .tw>table>tbody>tr,
  .settings-shell .tw>table>tbody>tr>td{display:block;width:auto;min-width:0}
  /* Each cell draws its own heading below, so the header row would only say everything twice. */
  .settings-shell .tw>table>thead{display:none}
  .settings-shell .tw>table>caption{text-align:left;padding-bottom:var(--s2)}
  .settings-shell .tw>table>tbody>tr{background:var(--bg2);border:1px solid var(--line2);padding:var(--s2) var(--s3);margin-bottom:var(--s3)}
  /* `th,td{height:var(--row)}` is a row's minimum inside a table and a fixed height outside one, which
     cropped a card's second line, so a stacked cell takes the height of what it holds. */
  .settings-shell .tw>table>tbody>tr>td{height:auto;border:0;padding:var(--s2) 0;text-align:left;overflow-wrap:anywhere}
  .settings-shell .tw>table>tbody>tr>td+td{border-top:1px solid var(--line)}
  /* The heading holds column one of the cell and everything the cell already said holds column two,
     one line under the last, so a name still carries its title and a price still carries its rate. */
  .settings-shell .tw>table>tbody>tr>td[data-column]{display:grid;grid-template-columns:minmax(0,10ch) minmax(0,1fr);column-gap:var(--s3);row-gap:var(--s1)}
  .settings-shell .tw>table>tbody>tr>td[data-column]::before{content:attr(data-column);grid-area:1/1;color:var(--mid);font-size:12px;line-height:1.5}
  .settings-shell .tw>table>tbody>tr>td[data-column]>*{grid-column:2}
  .settings-shell .tw>table>tbody>tr>td[data-column]>br{display:none}
  /* A column the table draws empty for this row has nothing to say, and a heading over nothing is
     the one line a card can drop without losing anything. The column itself is untouched. */
  .settings-shell .tw>table>tbody>tr>td[data-column]:empty{display:none}
  /* A cell with no heading of its own holds the row's controls; give them the full width and a
     thumb-sized target rather than a label column they would have to share. */
  .settings-shell .tw>table>tbody>tr>td:not([data-column]) .btn,
  .settings-shell .tw>table>tbody>tr>td:not([data-column]) .go{min-height:var(--tap)}
  .settings-shell .tw>table>tbody>tr>td form{display:block;margin-left:0}
  .settings-person-detail{padding:var(--s2) 0;overflow-wrap:anywhere}
  .billing-overview .sech{flex-wrap:wrap;gap:var(--s2)}
}
.sech{min-height:var(--tap);padding-bottom:var(--s2)}
.sech h2{font-family:var(--sans);font-size:16px;font-weight:650;letter-spacing:-.02em}
thead th{line-height:1.35;vertical-align:middle}
th .sort{width:100%;min-height:var(--tap);justify-content:flex-start;align-items:center;text-align:inherit;white-space:normal;line-height:1.35}
.project-band>summary{padding-inline:var(--row-pad)}
/* The demo styles this band's count and its allowance slot through `.disc.stage`, and the Hub has no
   stages to band by. Same three declarations, keyed to the one band the Hub does have. */
.project-band>summary .gc{font-weight:400;font-size:12.5px;color:var(--mid)}
.project-band>summary .allow-in{margin-left:auto;font-weight:400}
@media(max-width:640px){.project-band>summary .allow-in{margin-left:0}}
/* GCT-462: four bands share the page now, so a per-band scroll box measured off the window height
   would give each of them a pane taller than the window. The demo's `.tw.tw-fit` bands grow to their
   own rows and the page scrolls once, which is the only reading that works with four of them open. */
/* The job number and name are the row's identity while it scrolls sideways, so the frozen column
   gets the demo's measured 372px rather than whatever auto layout leaves it. */
.jobs-table{--c1-w:372px}
/* And the surplus has to be parked somewhere, or auto layout hands most of it to the widest column —
   the identity one — and every other column wraps to pay for it. It goes on the least urgent column
   with the longest values, which every band ends on: Owner. */
.jobs-table .jobs-slack{width:100%}
/* A header must never break across lines: the caret would be orphaned under its own word. The table
   scrolls sideways when it has to, which is the frozen column's job. The tally heading is the one
   header that wants two lines, because its second line names its three integers. */
.jobs-table thead .sort{white-space:nowrap}
.jobs-table thead .tally-col .lbl{white-space:nowrap;font-size:11px;letter-spacing:var(--hub-label-tracking)}
.jobs-table .tally,.jobs-table .scope-tally-legend{display:inline-grid;grid-template-columns:26px 44px 48px;gap:8px;align-items:center;text-align:center}
.jobs-table .tally-part{min-width:0;font-variant-numeric:tabular-nums}
.jobs-table .tally-col{min-width:152px}
.jobs-table .jobs-primary-headings th{vertical-align:top;padding-top:16px;line-height:18px}
.jobs-table .jobs-primary-headings .tally-col{text-align:center;padding-bottom:4px;border-bottom:0}
.jobs-table .jobs-primary-headings .tally-col .sort{justify-content:center}
.jobs-table .jobs-heading{min-height:var(--tap);display:flex;align-items:center;white-space:nowrap}
.jobs-table .jobs-slack{min-width:180px}
.jobs-table .jobs-secondary-headings th{padding-top:0;padding-bottom:10px;border-top:0;text-align:center}
.jobs-table .jobs-secondary-headings .lbl{white-space:nowrap;font-size:11px;letter-spacing:var(--hub-label-tracking)}
.overview-columns{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:36px;align-items:start}
.overview-columns>.sec,.overview-shortcuts>.sec:first-child{margin-top:0}
.overview-shortcuts{min-width:0}
.overview-shortcuts .row{padding-block:10px;min-height:0}
.needs-job>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;min-height:44px;padding:10px 0}
.needs-job>summary::-webkit-details-marker{display:none}
.needs-job>summary:focus-visible{outline:2px solid var(--o);outline-offset:3px}
.needs-job .updates-job-name{flex:1;min-width:0;font-weight:600}
.updates-chevron{flex:none;width:14px;height:14px;transition:transform 120ms ease-out}
.needs-job[open] .updates-chevron{transform:rotate(90deg)}
.updates-count{min-width:28px;padding:3px 7px;border-radius:4px;background:var(--bg2);font-size:12px;text-align:center;font-variant-numeric:tabular-nums}
.updates-job-meta{display:flex;justify-content:space-between;gap:12px;padding:0 0 8px 26px}
.needs-job .needs-task-list{padding-left:26px}
@media(max-width:800px){.overview-columns{grid-template-columns:minmax(0,1fr);gap:24px}.overview-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.overview-shortcuts>.sec{margin-top:0}}
@media(max-width:520px){.overview-shortcuts{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.updates-chevron{transition:none}}
.access-default-row{display:flex;gap:24px;justify-content:space-between;align-items:flex-start;margin:20px 0 32px}
.access-default-row>form{max-width:680px}
.access-default{border:0;padding:0;margin:0}
.access-default legend{font-size:14px;font-weight:600;margin-bottom:12px}
.access-mode-options{display:inline-flex;gap:4px;padding:3px;border:1px solid var(--line);border-radius:6px}
.access-mode-options label{padding:8px 14px;display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:3px}
.access-mode-options label:has(input:checked){background:var(--bg2);box-shadow:inset 0 -2px var(--o)}
.access-mode-options input,.access-permission-options input{width:15px;height:15px;accent-color:var(--o)}
.access-configuration{position:relative}
.access-configuration>summary{display:flex;gap:8px;align-items:center;white-space:nowrap}
.access-configuration-panel{position:absolute;z-index:12;right:0;width:min(430px,calc(100vw - 48px));padding:20px;background:var(--bg);border:1px solid var(--line);box-shadow:0 8px 25px #0004}
.access-configuration-panel h3{margin:0 0 10px}
.access-domain-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.access-template{border-bottom:1px solid var(--line);padding:12px 0}
.access-template>summary{cursor:pointer;font-weight:600;display:flex;gap:20px;justify-content:space-between;align-items:center}
.access-template>summary>span{font-size:12px;color:var(--mid);font-weight:400}
.access-template>form{padding-top:18px;max-width:720px}
.access-permission-options{border:0;padding:0;margin:16px 0;display:grid;grid-template-columns:1fr 1fr;gap:12px 20px}
.access-permission-options legend{font-size:13px;font-weight:600;margin-bottom:12px}
.access-permission-options>p{grid-column:1/-1;margin:0}
.access-permission-options label{display:flex;align-items:center;gap:9px;font-size:13px}
/* GH-408: ADVANCED IS A FOLD, NOT A SECOND PAGE.
   Admission defaults, the blocked list and the permission templates keep every control they had; the
   fold only decides what a company sees first. `.sec` gives it the same rule and rhythm as the
   sections beside it, so an open Advanced reads as more of the same page. */
.access-advanced{border-top:1px solid var(--line2);padding-top:var(--s2)}
/* A fold has to look like one. Without a marker the summary read as a heading nobody could press,
   so it wears the same +/- the page's other disclosures use, in the same accent. */
.access-advanced>summary{cursor:pointer;display:grid;grid-template-columns:14px 1fr;gap:2px var(--s2);align-items:baseline;min-height:var(--tap);padding:var(--s3) 0;list-style:none}
.access-advanced>summary::-webkit-details-marker{display:none}
.access-advanced>summary::before{content:"+";grid-row:1/3;color:var(--o);font-size:16px;line-height:1}
.access-advanced[open]>summary::before{content:"\2212"}
.access-advanced>summary:hover .access-advanced-title{color:var(--o)}
.access-advanced-title{font-size:15px;font-weight:600;color:var(--ink)}
.access-advanced[open]>summary{margin-bottom:var(--s3)}
.access-advanced-body>.sec:first-child,.access-advanced-body>.access-default-row{margin-top:0}
.access-advanced-body .access-default-row{margin-top:0}
/* The one action a new company came for. A closed `.disc` summary is a footnote under a table; the
   add-person form leads its section and its summary reads as the control it opens. */
.access-add-lead{border-bottom:0;margin-bottom:var(--s3)}
.access-add-lead>summary{font-size:14px;font-weight:600;color:var(--ink);min-height:var(--tap)}
.access-add-lead>summary::before{font-size:17px}
.access-add-lead[open]>div{padding-top:var(--s2)}
/* GH-408: Theme and Row spacing, on their own Settings pane. */
/* The section heading is the label; the picker sits under it, at a finger-sized target. */
.display-choice{display:flex;align-items:center;gap:var(--s4);padding:var(--s2) 0}
.display-choice .tpick button{min-width:var(--tap);min-height:var(--tap)}
@media(max-width:700px){.access-default-row{flex-direction:column}.access-configuration-panel{left:0;right:auto}.access-permission-options{grid-template-columns:1fr}}
.project-band .c1 .project-link{font-weight:600}
.jobs-with-pins thead .c1{padding-inline-start:calc(var(--row-pad) + var(--tap) + 4px)}
.jobs-with-pins tbody .c1{white-space:normal}
.jobs-with-pins tbody .c1:has([data-favourite-toggle]){position:sticky;padding-inline-start:calc(var(--row-pad) + var(--tap) + 4px)}
.jobs-with-pins [data-favourite-toggle]{position:absolute;left:var(--row-pad);top:50%;transform:translateY(-50%);width:var(--tap);padding:0}
@media(max-width:700px){.ph{min-height:72px}.ph h1{font-size:24px}}
.admin-view-frame{min-height:100vh;background:var(--bg)}
.admin-view-banner{display:grid;grid-template-columns:minmax(220px,auto) minmax(20ch,1fr) auto;align-items:center;gap:var(--s4);padding:var(--s2) var(--s4);color:var(--ink);background:var(--bg2);border-bottom:1px solid var(--edge);font-size:13px}
.admin-view-banner p{margin:0}
.admin-view-banner strong{font-size:14px}
.admin-view-state{display:inline-flex;align-items:center;min-height:28px;margin-left:var(--s2);padding:0 var(--s2);color:var(--ink);border:1px solid var(--edge);border-radius:999px;font-weight:600}
.admin-view-reason{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mid)}
.admin-view-scope{display:flex;gap:var(--s3);color:var(--mid)}
[data-restored-focus="true"]:focus{outline:2px solid var(--o);outline-offset:2px}
/* Route focus belongs at the heading, not around a page taller than the viewport. */
#hub-main:focus{outline:none}
#hub-main:focus-visible h1{outline:2px solid var(--o);outline-offset:4px}
.content{padding-top:var(--s6)}
.content-columns{padding-top:0}
.count{color:var(--mid);font-size:13px}
.project-link{text-decoration:underline;text-underline-offset:3px}
tbody tr[aria-current="true"]>td:first-child{box-shadow:inset 2px 0 0 var(--o)}
.empty-state{max-width:640px;padding:var(--s8) 0;border-block:1px solid var(--line2)}
.empty-state p{max-width:52ch;color:var(--mid);line-height:1.6}
/* The one action on a new client's first screen. Body copy is --mid, so an unstyled link here was
   the same colour as the sentence around it and carried no underline: nothing marked it clickable.
   Underlined, following .project-link, so colour is not the only signal. */
.empty-state p a:not(.btn),.empty-state .sub a:not(.btn){color:var(--o);text-decoration:underline;text-underline-offset:3px}
.empty-state h1{font-size:clamp(24px,4vw,34px);line-height:1.2;margin:0 0 var(--s4)}
.empty-state details{margin-top:var(--s6);padding-top:var(--s4);border-top:1px solid var(--line)}
.empty-state summary{cursor:pointer;min-height:var(--tap);display:flex;align-items:center;gap:8px}
.empty-state summary::before{content:"+";color:var(--o)}
.empty-state details[open]>summary::before{content:"−"}
.sign-in{max-width:560px;margin:0 auto;padding:32px 24px}
.sign-in .empty-state{border:0;padding:16px 0}
.sign-in .form{display:block}
.sign-in .f{margin:16px 0}
.sign-in [hidden]{display:none!important}
/* DEV-344/DEV-348: the three-stop strip on Email, Company and First package. Done stops turn the
   confirmed green, the current stop the accent; colour is never the only signal (aria-current). */
.onboarding-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s4);margin:0 0 var(--s8);padding:0;list-style:none}
.onboarding-steps li{padding-top:10px;border-top:2px solid var(--line2);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}
.onboarding-steps li.is-done{border-color:var(--ok);color:var(--ok)}
.onboarding-steps li.is-on{border-color:var(--o);color:var(--ink)}
.onboarding-steps small{display:block;margin-top:2px;font-size:12px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--mid)}
.setup-form .help{display:block;margin-top:6px;font-size:12.5px;line-height:1.45;color:var(--mid)}
.setup-form .help b{color:var(--ink2);font-weight:500}
.setup-form .req{color:var(--o)}
.setup-form .btn-p{margin-top:var(--s4)}
.terms-check{display:flex;gap:10px;align-items:flex-start;margin:var(--s4) 0 0;padding-top:var(--s3);border-top:1px solid var(--line);
  cursor:pointer;font-size:13px;line-height:1.45;color:var(--ink2)}
.terms-check input{flex:none;width:18px;height:18px;margin:1px 0 0;accent-color:var(--o)}
.terms-check a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.terms-check.is-invalid input{outline:2px solid var(--danger);outline-offset:1px}
/* An error is one sentence with its icon in the danger register, and stays until it is fixed. */
.sign-in .setup-error{display:flex;gap:8px;align-items:flex-start;max-width:none;margin:var(--s3) 0;padding:var(--s3);
  border:1px solid var(--danger);background:var(--danger-tint);color:var(--ink);font-size:13px;line-height:1.45}
.setup-error svg{flex:none;width:16px;height:16px;margin-top:1px;fill:none;stroke:var(--danger);stroke-width:1.6}
/* Home's Getting started: two items, a count and a thin bar. No tour. */
.getting-started{max-width:880px;padding:var(--s4) var(--s6) var(--s2);border:1px solid var(--line2);background:var(--bg2)}
.gs-h{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);flex-wrap:wrap;margin-bottom:var(--s3)}
.gs-h h1,.gs-h h2{margin:0;font-size:17px;line-height:1.3;text-transform:none;letter-spacing:0}
.gs-count{font-size:12.5px;color:var(--mid)}
.gs-count b{color:var(--ink);font-weight:600}
.gs-count .lnk{color:var(--o);text-decoration:underline;text-underline-offset:3px}
.gs-bar{height:3px;background:var(--line)}
/* The Hub's CSP admits no inline style, so the bar's fill is one of the shares two items can make. */
.gs-bar i{display:block;width:0;height:100%;background:var(--ok)}
.gs-bar[data-progress="50"] i{width:50%}
.gs-bar[data-progress="100"] i{width:100%}
.gs-items{list-style:none;margin:0;padding:0}
.gs-item{display:flex;align-items:center;gap:14px;min-height:60px;padding:12px 0;border-top:1px solid var(--line)}
.gs-item:first-child{border-top:0}
.gs-check{flex:none;width:20px;height:20px;border:1px solid var(--edge);display:grid;place-items:center}
.gs-check svg{width:12px;height:12px;fill:none;stroke:var(--on-o);stroke-width:2;opacity:0}
.gs-item.is-done .gs-check{background:var(--ok);border-color:var(--ok)}
.gs-item.is-done .gs-check svg{opacity:1}
.gs-text{flex:1;min-width:0}
.gs-text b{display:block;font-weight:600}
.gs-text span{display:block;font-size:12.5px;line-height:1.45;color:var(--mid)}
.gs-item.is-done .gs-text b{color:var(--ink2)}
/* An unfilled button keeps a resting border here: it stands alone in a row, not in a toolbar. */
.gs-item .btn:not(.btn-p),.first-package-email .btn,.first-package-later .btn{border-color:var(--edge)}
.gs-choice{display:flex;align-items:center;gap:var(--s4);flex:none}
.gs-choice form{display:flex;align-items:center;gap:var(--s2)}
.gs-choice .lnk,.gs-item>a.lnk{color:var(--o);text-decoration:underline;text-underline-offset:3px}
.getting-started>.hint{margin:var(--s2) 0 var(--s3);font-size:12.5px}
.getting-started .hint a{color:var(--o);text-decoration:underline;text-underline-offset:3px}
@media (max-width:700px){.gs-item{flex-wrap:wrap}.gs-text{flex-basis:calc(100% - 34px)}
  .gs-item>.btn,.gs-item>.lnk,.gs-item>.pill,.gs-item>.gs-choice{margin-left:34px}}
/* The first package page frames the ordinary upload as the last sign-up stop. */
.first-package{max-width:880px}
.first-package h1{margin:0 0 var(--s2)}
.first-package .sub{margin:0 0 var(--s4)}
.first-package-email{max-width:880px;padding:var(--s4) var(--s6);border:1px solid var(--line2);background:var(--bg2)}
.first-package-email h2{margin:0 0 4px;font-size:16px;text-transform:none;letter-spacing:0}
.intake-address{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;margin:var(--s3) 0 0;font-weight:600}
.first-package-later{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;margin-top:var(--s4)}
/* A way in that is not open yet. The visible "In development" tag carries the meaning; this only
   settles the heading back to secondary text so the one route a client can use today reads first.
   No opacity: dimming --mid text measured 3.40:1 against the ground, under the 4.5:1 floor. Both
   rows now sit at --mid, which is 5.89:1, while the open route keeps the full-strength heading. */
.empty-state .intake-building .ttl-s{color:var(--mid);font-weight:400}
.projection-unavailable{padding:var(--s3) 0;color:var(--mid);background:transparent;border:0}
.projection-unavailable p{margin:0;line-height:1.5}
.secondary{min-height:var(--tap);padding:0 var(--s3);color:var(--ink);background:none;border:1px solid transparent;cursor:pointer}
.secondary:hover,.secondary:focus-visible{background:var(--bg2);border-color:var(--edge)}
.menu-p>.menu-out{color:var(--mid)}
.lockup .knockout{fill:#ffffff}
.lockup .wordmark{fill:currentColor}
.menu-p>.menu-out:disabled{cursor:not-allowed;opacity:.75}
/* GH-408: THE AVATAR IS A CIRCLE, NOT TWO LOOSE LETTERS.
   This rule used to strip the border from the summary and the avatar together, and the avatar's only
   shape was that border, so the masthead read "EM Elena Marsh" as plain text. The summary still wears
   no resting border; the avatar gets a filled disc instead, which is --ink on --bg3 (a pair the theme
   contrast test already holds at 4.5:1) so the initials stay legible in dark, dim and light. */
.menu>summary{border:0}
.menu .av{border:1px solid var(--edge);background:var(--bg3);color:var(--ink)}
.menu[open]>summary .av,.menu>summary:hover .av{border-color:var(--o);color:var(--o)}
.menu-p{width:244px;border:0;box-shadow:0 8px 28px rgb(0 0 0 / .2)}
.menu-p .menu-id,.menu-p .menu-sec,.menu-p a,.menu-p button{border:0}
.menu-p .menu-id{padding:12px}
.menu-p .menu-settings{justify-content:flex-start;gap:10px;padding:8px 12px;min-height:36px}
.menu-p .menu-sec{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px}
.topr .menu-sec{position:relative}
.topr .menu-sec::before,.topr .menu-p form::before{content:"";display:block;height:1px;background:linear-gradient(to right,transparent,var(--line2) 25%,var(--line2) 75%,transparent)}
.topr .menu-sec::before{position:absolute;top:0;left:12px;right:12px}
.topr .menu-p form::before{margin-inline:12px}
[data-calendar-open]{cursor:pointer}
.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.calendar-period-controls,.calendar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.calendar-period-controls>.btn{min-width:36px;min-height:36px;padding:6px}
.calendar-jump{position:relative}
.calendar-jump>summary{cursor:pointer;font-size:16px;font-weight:700;padding:8px;list-style:none}
.calendar-jump form{position:absolute;top:100%;left:0;z-index:20;width:min(310px,calc(100vw - 48px));background:var(--bg2);padding:16px;box-shadow:0 6px 24px rgb(0 0 0 / .2)}
.calendar-jump-fields{display:grid;grid-template-columns:1fr 1.6fr 1.2fr;gap:8px}
.calendar-jump label{display:block;font-size:12px}
.calendar-jump input,.calendar-jump select{width:100%;min-width:0}
.calendar-actions select{min-height:36px;width:auto;min-width:130px}
/* GCT-499: lightweight calendar controls and expanded period context. */
.calendar-jump>summary{display:flex;align-items:center;gap:6px}
.calendar-jump>summary .i{flex:none;width:16px;height:16px}
.calendar-jump form{width:min(370px,calc(100vw - 48px))}
.calendar-jump-fields{grid-template-columns:60px minmax(136px,1fr) 86px}
.calendar-jump select{padding-left:10px;padding-right:26px}
.calendar-filter{position:relative;max-width:260px}
.calendar-filter>summary{display:flex;align-items:center;gap:6px;list-style:none;cursor:pointer;max-width:260px}
.calendar-filter>summary::-webkit-details-marker,.calendar-jump>summary::-webkit-details-marker{display:none}
.calendar-filter-panel{position:absolute;right:0;top:100%;z-index:20;width:min(310px,calc(100vw - 48px));padding:12px;background:var(--bg2);box-shadow:0 6px 24px rgb(0 0 0 / .2)}
.calendar-filter-panel a{display:block;padding:8px;text-decoration:none;color:var(--ink)}
.calendar-filter-panel a:hover{background:var(--bg3)}
.calendar-filter-panel a[hidden]{display:none}
.calendar-filter-panel label{display:block;margin-top:10px;font-size:12px}
.calendar-filter-jobs{max-height:260px;overflow-y:auto}
.calendar-filter-panel input{width:100%;margin-block:4px}
.hub-calendar.is-three-week .hub-calendar-day{min-height:245px}
.hub-calendar-day,.calendar-hour{position:relative}
.calendar-add-slot{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer;border-radius:0}
.calendar-add-slot:hover{background:color-mix(in srgb,var(--ink) 3%,transparent)}
.calendar-add-slot:focus-visible{outline:2px solid var(--o);outline-offset:-3px}
.calendar-day-link,.hub-calendar-day>.cal-i,.hub-calendar-day>.calendar-task,.calendar-hour>.calendar-task,.calendar-all-day>.cal-i,.calendar-all-day>.calendar-task{position:relative;z-index:1}
.calendar-day-link{display:inline-block;color:inherit;text-decoration:none;border-radius:3px}
.calendar-day-link:hover{color:var(--o);text-decoration:underline}
.calendar-day-link:focus-visible{outline:2px solid var(--o);outline-offset:3px}
.calendar-hour-scroll{max-height:calc(100vh - 180px);min-height:420px;overflow:auto}
.calendar-time-grid{display:grid;grid-template-columns:64px repeat(7,minmax(130px,1fr));min-width:974px;border-left:1px solid var(--line2);border-top:1px solid var(--line2)}
.calendar-time-grid.is-day{grid-template-columns:64px minmax(0,1fr);min-width:0}
.calendar-time-label,.calendar-hour,.calendar-all-day{border-right:1px solid var(--line2);border-bottom:1px solid var(--line2);padding:8px;min-height:56px}
.calendar-time-label{font-size:11px;color:var(--mid);text-align:right}
.calendar-time-grid>.calendar-time-label:first-child{position:sticky;top:0;z-index:2;background:var(--bg);min-height:100px;display:flex;align-items:flex-end;justify-content:flex-end}
.calendar-all-day{min-height:100px;position:sticky;top:0;background:var(--bg);z-index:1}
.calendar-all-day time{display:block;font-weight:700;font-size:12px;margin-bottom:10px}
.calendar-all-day.is-today{box-shadow:inset 0 3px var(--o)}
.calendar-time-grid .calendar-task{display:block;width:100%;text-align:left;border:0;border-left:2px solid var(--o);padding:4px 8px;background:var(--bg2);color:var(--ink);margin-top:4px;cursor:pointer;font:inherit;font-size:12px;overflow-wrap:anywhere}
.calendar-time-grid .cal-i{white-space:normal;overflow-wrap:anywhere}
.calendar-time-grid .cal-i span{display:block}
.hub-calendar-scroll .cal-i{display:block;-webkit-line-clamp:unset;max-height:none;height:auto;overflow:visible}
/* Full event wording remains readable in the compact Home calendar as well. */
.cal .cal-i{display:block;-webkit-line-clamp:unset;max-height:none;height:auto;overflow:visible;white-space:normal;overflow-wrap:anywhere}
@media(max-width:480px){.calendar-jump-fields{grid-template-columns:52px minmax(108px,1fr) 70px}.calendar-jump form{padding:12px}.calendar-jump-fields{gap:5px}.calendar-filter-panel{right:auto;left:0}.calendar-period-controls{gap:2px}.calendar-jump>summary{font-size:14px}.calendar-hour-scroll{min-height:360px}}
.hub-calendar.is-day{grid-template-columns:1fr;min-width:0}
.hub-calendar.is-day .hub-calendar-day{min-height:280px}
.hub-calendar-day .calendar-task{display:block;width:100%;text-align:left;border:0;border-left:2px solid var(--o);padding:4px 8px;background:var(--bg2);color:var(--ink);margin-top:6px;cursor:pointer;font:inherit;font-size:12px}
.calendar-dialog{width:min(620px,calc(100vw - 32px));max-height:85vh;overflow:auto;background:var(--bg2);color:var(--ink);border:1px solid var(--line2);padding:24px}
.calendar-dialog::backdrop{background:rgb(0 0 0 / .45)}
.calendar-dialog label{display:block;margin-block:10px}
.calendar-dialog input:not([type=checkbox]),.calendar-dialog textarea,.calendar-dialog select{width:100%;background:transparent;border:1px solid var(--line2);border-radius:4px;padding:8px 10px;min-height:36px;color:var(--ink)}
.calendar-dialog input:focus-visible,.calendar-dialog textarea:focus-visible,.calendar-dialog select:focus-visible{outline:2px solid var(--o);outline-offset:2px}
.calendar-dialog .task-title input{font-size:18px}
.calendar-dialog .task-date-fields{display:flex;flex-wrap:wrap;gap:8px;margin-block:16px}
.task-date-picker{position:relative}
.calendar-dialog .task-date-picker summary{display:flex;align-items:center;gap:8px;cursor:pointer;padding:7px 10px;border:1px solid var(--line2);border-radius:4px;list-style:none;font-size:13px}
.calendar-dialog .task-date-picker summary::-webkit-details-marker{display:none}
.calendar-dialog .task-date-picker>label{position:absolute;z-index:4;top:100%;left:0;min-width:195px;padding:12px;margin:4px 0;background:var(--bg2);border:1px solid var(--line2);box-shadow:0 6px 18px rgb(0 0 0 / .16)}
.task-sharing-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.calendar-tag-picker{margin-block:8px;border:1px solid var(--line2);border-radius:4px}
.calendar-tag-picker>summary{display:flex;gap:12px;align-items:baseline;justify-content:space-between;padding:9px 10px;cursor:pointer;font-size:13px}
.calendar-tag-picker>summary>span{font-size:12px;color:var(--mid);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:70%}
.calendar-tag-panel{padding:0 10px 10px}
.calendar-dialog .calendar-tag-panel>label{margin:0 0 8px}
.calendar-tag-options{max-height:190px;overflow:auto}
.calendar-dialog .calendar-tag-options>label{display:flex;align-items:center;gap:8px;margin:0;padding:6px 2px;font-size:13px;min-height:32px}
.calendar-tag-options input[type=checkbox]{flex:0 0 auto;width:15px;height:15px;margin:0;accent-color:var(--o)}
.calendar-tag-options small{margin-left:auto;color:var(--mid);font-size:11px}
.calendar-dialog summary:focus-visible{outline:2px solid var(--o);outline-offset:2px}
@media(max-width:480px){.calendar-dialog{padding:16px}.task-sharing-fields{grid-template-columns:1fr;gap:0}}
.calendar-dialog [hidden]{display:none!important}
.menu-id b{line-height:1.5;overflow-wrap:anywhere}
.menu-id small{margin-top:var(--s1);line-height:1.5;color:var(--mid);overflow-wrap:anywhere}
.menu-sec>.lbl{font-size:12px;line-height:1.5;color:var(--mid);margin:0}
.menu-p .tpick{display:flex;gap:4px;width:auto;border:0;background:none}
.menu-p .tpick button{display:grid;place-items:center;width:30px;height:30px;min-width:30px;min-height:30px;padding:6px;margin:0;border:0;background:none;color:var(--mid)}
.menu-p .tpick button[aria-pressed=true]{background:var(--bg3);color:var(--o)}
.menu-p .tpick button:hover{background:var(--bg3);color:var(--ink)}
.menu-p .tpick .i{width:18px;height:18px}
.menu>summary:focus-visible,.menu-p button:focus-visible,.menu-p a:focus-visible{outline:2px solid var(--o);outline-offset:2px}
.needs-jobs{display:grid;gap:20px}
.needs-job{border-bottom:1px solid var(--line2);padding-bottom:12px}
.needs-job-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px 20px;flex-wrap:wrap;padding:0 0 6px}
.needs-job-heading h3{font-size:15px;margin:0;line-height:1.5}
.needs-job-heading h3 a{color:var(--ink)}
.needs-job-heading .code{margin-right:10px}
.needs-job-due{font-size:12px;color:var(--mid)}
.needs-job-due.is-past{color:var(--o)}
.needs-task-list{list-style:none;margin:0;padding:0 0 0 14px}
.needs-task{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:36px;padding:6px 0;font-size:13px;color:var(--ink);line-height:1.5}
.needs-task:hover{color:var(--o)}
.needs-task .i{flex:none;width:14px;height:14px;color:var(--mid)}
.needs-more>summary{cursor:pointer;margin-left:14px;padding:6px 0;color:var(--mid);font-size:12px}
@media(pointer:coarse){.menu-p .tpick button{width:44px;height:44px;min-width:44px;min-height:44px}.menu-p .menu-settings,.needs-task{min-height:44px}}
.menu-p form{margin:0}
@media(max-width:520px){.menu-p{width:auto}}
.nav>.nav-disabled{display:inline-flex;align-items:center;min-height:var(--tap);padding:0 var(--s2);color:var(--mid)}
.navm>summary{list-style:none}
.navm>summary::-webkit-details-marker{display:none}
details.navm:not([open])>.navm-p{display:none}
details.navm[open]>.navm-p{display:flex}
.side>span{display:flex;align-items:center;min-height:var(--tap);padding:var(--s3);border-bottom:1px solid var(--line);border-left:2px solid transparent;font-size:14px;color:var(--mid)}
.side>span.soon-l{justify-content:space-between}
.side>span.soon-l::after{content:"soon";font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--mid);border:1px solid var(--line2);padding:1px 4px;margin-left:var(--s2)}
.side a[aria-current="page"]{color:var(--ink);font-weight:600;border-left-color:var(--o);background:var(--bg2)}
.settings-shell button,.settings-shell input,.settings-shell select,.settings-shell a[href]{min-height:var(--tap)}
.settings-shell a[href]{display:inline-flex;align-items:center}
.mockbar{position:sticky}
.dens{margin-top:0}
.startup{margin:var(--s6);color:var(--mid)}
.mobile-menu-toggle{display:none}
@media(max-width:900px){
  .top{display:grid;grid-template-columns:minmax(0,1fr) 44px;min-height:56px;padding-block:var(--s1);gap:0 var(--s3)}
  .top>.brand{margin:0}
  .mobile-menu-toggle{display:grid;place-items:center;width:44px;height:44px;padding:10px;border:0;background:none;color:var(--ink);cursor:pointer}
  .mobile-menu-toggle svg{width:24px;height:24px;stroke:currentColor;stroke-width:1.5}
  .top:not([data-navigation-open])>.nav,.top:not([data-navigation-open])>.topr{display:none}
  .top[data-navigation-open]>.nav{display:flex;flex-direction:column;align-items:stretch;grid-column:1/-1;padding-block:var(--s2);gap:0}
  .top[data-navigation-open]>.nav>a,.top[data-navigation-open]>.nav>.nav-disabled{justify-content:flex-start;min-height:44px;padding:var(--s2) 0}
  .top[data-navigation-open]>.nav>.navm{display:block}
  .top[data-navigation-open] .navm-t{min-height:44px;padding-inline:0}
  .top[data-navigation-open] .navm-p{position:static;border:0;min-width:0;width:100%}
  .top[data-navigation-open]>.topr{grid-column:1/-1;display:flex;justify-content:space-between;min-height:52px;border-top:1px solid var(--line2)}
  .top[data-navigation-open] .menu-p{position:absolute;top:100%;bottom:auto;left:auto;right:0;width:min(244px,calc(100vw - 32px));z-index:50}
}
.ph-r>.btn{display:inline-flex;align-items:center;gap:var(--s2);min-height:var(--tap)}
.upload-page{max-width:none}
.hub-upload [hidden]{display:none!important}
.content:has(>.upload-page){padding-top:0}
.upload-page-heading{margin-bottom:var(--s4)}
.upload-page-heading .ph-l{min-width:0;width:100%}
.upload-back{display:inline-flex;align-items:center;min-height:32px;font-size:12px;color:var(--mid);margin-bottom:var(--s1)}
.upload-page-heading h1{position:relative;text-transform:none}
.upload-heading-out{position:absolute;inset:0;pointer-events:none;animation:upload-title-out 90ms ease-out forwards}
.upload-heading-in{display:block;animation:upload-title-in 100ms ease-out 90ms both}
@keyframes upload-title-out{to{opacity:0}}
@keyframes upload-title-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.upload-heading-out{display:none}.upload-heading-in{animation:none}}
.upload-page.sec{margin-top:0}
.hub-upload{max-width:100%;grid-template-columns:minmax(0,1fr);gap:var(--s4)}
.upload-workspace{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);gap:var(--s4) var(--s8);align-items:start}
.upload-entry{display:grid;gap:var(--s4);min-width:0}
.upload-documents{min-width:0;display:grid;gap:var(--s3)}
.upload-documents>[data-upload-files]:empty,.upload-documents>[data-upload-status]:empty,.upload-recovery:not(:has(>.btn:not([hidden]))){display:none}
.hub-upload input,.hub-upload select{min-height:var(--tap)}
.upload-picker{min-width:0}
.upload-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s3);width:100%;min-height:280px;padding:var(--s8);border:1px solid var(--edge);background:var(--bg2);color:var(--ink);font:inherit;text-align:center;cursor:pointer}
.upload-dropzone:hover:not(:disabled),.upload-dropzone[data-dragging="true"]{border-color:var(--o);background:var(--bg3)}
.upload-dropzone:focus-visible{outline:2px solid var(--o);outline-offset:4px}
.upload-dropzone:disabled{cursor:default}
.upload-dropzone:disabled .upload-choose{color:var(--mid)}
.upload-symbol{width:48px;height:48px;margin-bottom:var(--s2);stroke:var(--o);stroke-width:1.5;stroke-linecap:square;stroke-linejoin:miter}
.upload-title{font-family:var(--disp);font-size:24px;line-height:1.2;font-weight:700;letter-spacing:-.025em}
.upload-choose{font-size:14px;color:var(--ink2)}
.upload-choose>span{margin-left:var(--s1);color:var(--o)}
/* GH-406: THE REASON AND THE WAY OUT LIVE INSIDE THE ZONE. The drop area and this panel share one
   border, so a client reading the box reads why it will not take their package and what to do next
   without hunting for a notice above the page. The panel is hidden until there is something to say. */
.upload-zone{display:grid}
.upload-blocked{display:grid;justify-items:center;gap:var(--s3);padding:var(--s4) var(--s8);text-align:center;
  border:1px solid var(--edge);border-top:0;background:var(--bg2);line-height:1.5}
.upload-blocked>p{margin:0}
.upload-blocked .btn{display:inline-flex;align-items:center;min-height:var(--tap)}
/* A shut zone is dimmed, never faded: --mid is 5.89:1 on --bg, while opacity over the working colours
   falls under the 4.5:1 floor. The border drops to the decorative rule so it stops reading as a control,
   the arrow glyph goes with the invitation it belonged to, and the icon greys with the headline. */
.upload-zone[data-blocked="true"] .upload-dropzone{border-color:var(--line2);background:var(--bg);cursor:default}
.upload-zone[data-blocked="true"] .upload-blocked{border-color:var(--line2);background:var(--bg)}
.upload-zone[data-blocked="true"] .upload-symbol{stroke:var(--mid)}
.upload-zone[data-blocked="true"] .upload-title{color:var(--mid)}
.upload-zone[data-blocked="true"] .upload-choose{display:none}
.upload-details{border-top:1px solid var(--line2);margin-top:var(--s2)}
.upload-details>summary{display:flex;align-items:center;gap:var(--s2);min-height:var(--tap);font-size:13px;font-weight:600;cursor:pointer;list-style:none}
.upload-details>summary::before{content:"+";color:var(--mid)}
.upload-details[open]>summary::before{content:"−"}
.upload-details>summary .sub{margin-left:auto;font-size:12px;font-weight:400}
.upload-details>.form{margin-block:var(--s2);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}
.upload-details .upload-detail-wide{grid-column:1/-1}
.upload-details textarea{width:100%;font:inherit;resize:vertical;min-height:64px}
.upload-details>[data-details-status]:empty{display:none}
.upload-details .f{max-width:none}
.upload-files,.intake-files{list-style:none;margin:0;padding:0}
.intake-files li{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--s3);padding-block:var(--s3);border-bottom:1px solid var(--line2)}
.upload-files>.upload-file-row{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:start;min-height:44px;border-bottom:1px solid var(--line2);padding:0;gap:0}
.upload-file-info{display:flex;align-items:center;gap:var(--s2);min-width:0;min-height:44px;font-size:13px}
.upload-file-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550}
.upload-file-state{flex:none;margin-left:auto;color:var(--mid);font-size:12px}
.upload-remove{display:grid;place-items:center;width:44px;height:44px;padding:0;background:none;border:0;color:var(--mid);font:inherit;font-size:22px;cursor:pointer}
.upload-remove:hover{color:var(--ink);background:var(--bg2)}
.upload-remove:focus-visible{outline:2px solid var(--o);outline-offset:-2px}
.upload-file-error{grid-column:1/-1;padding-bottom:var(--s2);color:var(--o);overflow-wrap:anywhere}
.upload-files>.upload-file-pending{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--s2);font-size:13px}
.upload-files small,.intake-files small{display:block;color:var(--mid)}
.upload-actions{display:flex;justify-content:stretch}
.upload-actions .btn,.upload-recovery .btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s3);min-height:var(--tap)}
.upload-actions [data-upload-submit]{width:100%;min-width:0}
.upload-actions [data-upload-submit]:disabled{background:var(--bg3);border-color:var(--line2);color:var(--mid);opacity:1;cursor:not-allowed}
.upload-recovery{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s2)}
.upload-error{padding:var(--s3);background:var(--bg2);border:1px solid var(--o);color:var(--ink);line-height:1.5}
.hub-upload progress{width:100%;accent-color:var(--o)}
.job-intake>p{max-width:70ch;line-height:1.5}
.intake-files small{flex-basis:100%}
@media(max-width:960px){.upload-workspace{grid-template-columns:minmax(0,1fr);grid-template-areas:"picker" "documents" "details";gap:var(--s4)}.upload-entry{display:contents}.upload-picker{grid-area:picker}.upload-documents{grid-area:documents}.upload-details{grid-area:details}}
@media(max-width:520px){.upload-page-heading{min-height:0;padding-block:var(--s2) var(--s3);margin-bottom:var(--s3)}.upload-page-heading h1{font-size:22px}.upload-dropzone{min-height:136px;padding:var(--s4);gap:var(--s2)}.upload-blocked{padding:var(--s3) var(--s4)}.upload-symbol{width:28px;height:28px;margin:0}.upload-title{font-size:18px}.upload-choose{font-size:12px}.upload-documents{gap:var(--s2)}.upload-page{width:100%}.upload-details>.form{grid-template-columns:minmax(0,1fr)}}
.load-failure{padding-top:var(--s8)}
/* GCT-457: THE SCOPES STACK IS TOOLBAR, SHEET TABS, SHEET. Nothing else stands between the Job tabs and
   the first scope row. The workbook-level tab strip that used to lead this stack is gone — `.workbook-tabs`
   with it — and so is the "GC Master Workbook / N sheets" section header under it; the other two workbooks
   are reached where they belong (the Documents Workbook on the Documents tab, the Subcontractor Scope
   Packages as trailing tabs on this strip), not through a fourth bar above the data. `.sheettabs` and
   `.sheet-surface` come from the adopted stylesheet and are used exactly as the demo uses them. */
/* GCT-551: keep every sheet on one line, with arrows and a complete list alongside the strip. */
.workbook-navigation{display:flex;align-items:center;gap:var(--s1);position:relative;min-width:0;border-bottom:1px solid var(--line2);margin-bottom:var(--s2)}
.workbook-navigation .sheettabs{flex:1 1 0;min-width:0;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;margin:0;border:0;overscroll-behavior-inline:contain;scrollbar-width:none}
.workbook-navigation .sheettabs>button{position:relative;flex:0 0 auto;white-space:nowrap}
.workbook-navigation .sheettabs [role=tab] .n{margin-left:0;padding:0;min-width:0;text-align:center;font:600 11.5px/16px Inter,sans-serif;font-variant-numeric:tabular-nums;color:var(--o);background:none}
.workbook-navigation .sheet-arrow,.workbook-navigation .sheet-picker{flex:0 0 auto}
.workbook-navigation .sheet-arrow:disabled{opacity:.3;cursor:default}
.sheet-picker>summary{list-style:none;cursor:pointer}
.sheet-picker>summary::-webkit-details-marker{display:none}
.sheet-picker-list{position:absolute;right:0;top:calc(100% + var(--s1));z-index:90;width:min(380px,100%);max-height:min(65vh,540px);overflow:auto;background:var(--bg2);border:1px solid var(--line2);box-shadow:0 12px 30px #0004;padding:var(--s2)}
.sheet-picker-list section+section{border-top:1px solid var(--line2);margin-top:var(--s2)}
.sheet-picker-list h3{margin:0;padding:var(--s3) var(--s2) var(--s2);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mid)}
.sheet-picker-list button{display:flex;justify-content:space-between;gap:var(--s2);width:100%;text-align:left;padding:var(--s2);min-height:var(--tap);background:transparent;color:var(--ink);border:0;font:inherit;cursor:pointer}
.sheet-picker-list button:hover,.sheet-picker-list button:focus-visible{background:var(--bg3)}
.sheet-picker-list button[aria-current]{color:var(--o);font-weight:600}
.workbook-screen>.sheet-surface{border:0;padding:0;background:transparent;box-shadow:none}
.workbook-grid .wb-scope-cell{display:flex;align-items:flex-start;gap:var(--s1);min-width:0}
.workbook-grid td>.wb-scope-cell{width:0;min-width:100%}
.workbook-grid .wb-scope-cell>.wb-cell-edit{flex:1 1 0;min-width:0}
.workbook-grid .row-history-control{display:inline-flex;align-items:center;justify-content:center;flex:0 0 28px;width:28px;height:28px;min-height:0;margin:0;padding:4px;background:transparent;border:0;color:var(--mid);cursor:pointer}
.workbook-grid .row-history-control:hover,.workbook-grid .row-history-control:focus-visible{color:var(--o);background:var(--bg3)}
.workbook-grid .wb-cell-edit,.workbook-grid .wb-cell-setup{display:block;width:100%;min-width:0;min-height:28px;padding:3px 2px;border:0;border-bottom:1px solid transparent;background:transparent;color:inherit;text-align:inherit;font:inherit;cursor:text}
.workbook-grid .wb-cell-edit:hover,.workbook-grid .wb-cell-edit:focus-visible{border-bottom-color:var(--o);background:var(--bg3);outline:0}
.workbook-grid .wb-cell-setup{cursor:pointer;color:var(--mid)}
.workbook-grid .wb-cell-empty{color:var(--mid)}
.workbook-grid .wb-cell-edit[hidden]{display:none}
.workbook-grid .wb-cell-host:not(.c1){position:relative}
.workbook-grid .wb-cell-active{z-index:6}
.workbook-grid dd.wb-cell-active{min-height:var(--wb-cell-height)}
.workbook-grid .wb-cell-editor{position:absolute;inset:1px;z-index:4;display:flex;align-items:center;min-width:0;margin:0;white-space:normal;background:var(--sheet);outline:2px solid var(--o);outline-offset:-1px}
.workbook-grid .wb-cell-editor textarea,.workbook-grid .wb-cell-editor select{box-sizing:border-box;display:block;width:100%;height:100%;max-height:100%;min-width:0;min-height:0;margin:0;padding:3px 10px;font:inherit;text-align:inherit;line-height:1.4;resize:none;background:var(--sheet);color:var(--ink);border:0;border-radius:0;outline:0;box-shadow:none}
.workbook-grid .wb-coverage-editor{background:var(--bg2);box-shadow:0 8px 20px #0008}
.workbook-grid .wb-coverage-editor select{appearance:none;background:var(--bg2);padding:3px 30px 3px 10px;white-space:nowrap}
.workbook-grid .wb-coverage-editor::after{content:"▾";position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--mid);pointer-events:none}
.workbook-grid .wb-cell-editor textarea{white-space:pre;overflow-wrap:normal;word-break:normal;overflow:auto;scrollbar-width:none}
.workbook-grid table[data-sheet-grid="scope"] :is(th,td).accepted-amount{min-width:128px;padding-right:16px;text-align:right;white-space:nowrap}
.workbook-grid .accept-needed-wrap{display:block;position:relative;width:100%}
.workbook-grid .accept-needed{display:block;box-sizing:border-box;width:100%;height:28px;padding:0 6px;text-align:right;background:transparent;border:1px dashed var(--line2);color:var(--mid);font:400 12px Inter,sans-serif;cursor:not-allowed}
.workbook-grid .accept-needed:focus-visible{outline:1px solid var(--o);outline-offset:1px}
.workbook-grid .accept-needed-hint{display:none;position:absolute;top:calc(100% + 4px);right:0;z-index:8;width:max-content;max-width:240px;padding:6px 8px;background:var(--bg2);border:1px solid var(--edge);color:var(--ink);font-size:12px;line-height:1.35;white-space:normal;text-align:left;box-shadow:0 4px 12px #0004}
.workbook-grid .accept-needed-wrap:focus-within .accept-needed-hint,.workbook-grid .accept-needed-wrap:hover .accept-needed-hint{display:block}
.workbook-grid table[data-sheet-grid="scope"] tbody td.accepted-amount:has(.accept-needed){overflow:visible;position:relative;z-index:2}
.workbook-grid .wb-cell-choice{cursor:pointer;text-align:center}
.workbook-grid .wb-cell-choice:disabled{cursor:default;color:var(--mid)}
.workbook-grid .wb-cell-choice:not(:disabled){position:relative;min-height:44px}
.workbook-grid .wb-cell-choice:not(:disabled)::after{content:"▾";position:absolute;right:5px;top:50%;transform:translateY(-50%);font-size:10px;color:var(--mid);pointer-events:none}
.workbook-grid .column-resizer{width:10px;right:0}
.workbook-grid .column-resizer::after{content:none}
.workbook-grid .column-resizer:focus-visible{outline:2px solid var(--o);outline-offset:-2px}
.workbook-grid [data-workbook-resize-hover],.workbook-grid [data-workbook-resize-hover] *,
.workbook-grid .workbook-resizing,.workbook-grid .workbook-resizing *{cursor:col-resize!important}
.workbook-grid .workbook-resizing{user-select:none}
.workbook-grid .bidder-header .bidder-company{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.workbook-grid table[data-sheet-grid="scope"] tbody tr .cell-preview{white-space:normal;overflow:visible;overflow-wrap:anywhere}
.workbook-grid.pricing-grid .wb-facts{max-width:min(760px,calc(100vw - 440px))}
.scope-footer-amount{display:block;font-weight:600;font-variant-numeric:tabular-nums}
.workbook-print .tw.workbook-grid.tw-grid.pricing-grid{background:transparent}
.workbook-grid .scope-footer-bid-total{overflow:visible!important;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.workbook-grid .scope-footer-bid-total span,.workbook-grid .scope-footer-bid-total small{display:block}
.workbook-grid .scope-footer-bid-total small{font-size:12px;font-weight:400;color:var(--mid)}
.workbook-grid .scope-footer-inline{display:flex;align-items:center;justify-content:space-between;gap:4px;white-space:nowrap}
.workbook-grid .scope-footer-inline>span:first-child{font-size:12px;font-weight:600}
.workbook-grid .scope-footer-value,.workbook-grid .scope-footer-empty{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.workbook-grid .scope-footer-empty{color:var(--mid)}
@media(max-width:600px){.workbook-grid.pricing-grid .wb-facts{max-width:calc(100vw - 48px)}}
.workbook-grid [data-cell-state="saving"]::after{content:"";position:absolute;right:3px;top:3px;width:5px;height:5px;border-radius:50%;background:var(--mid);pointer-events:none;z-index:5}
.workbook-grid [data-cell-state="error"]{box-shadow:inset 0 -2px var(--o)}
.workbook-grid [data-cell-state="error"]::after{content:"Not saved";position:absolute;right:3px;bottom:1px;padding:0 3px;background:var(--sheet);color:var(--o);font-size:10px;pointer-events:none;z-index:5}
/* On phones, the identity column must scroll away so the edited cell has room. */
@media(max-width:600px){.workbook-grid table .c1,.workbook-grid table .pick{position:relative;left:auto}}
.workbook-grid .wb-original-source{margin-top:var(--s2);font-weight:400}
.workbook-grid .wb-original-source summary{cursor:pointer;color:var(--mid);font-size:11px}
.workbook-toolbar{align-items:center;flex-wrap:wrap}
.workbook-primary-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;min-height:32px;margin:0 0 8px}
.workbook-primary-actions>.btn,.workbook-primary-actions .scope-estimate-popover>summary{min-height:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0 12px}
.workbook-primary-actions .scope-estimate-popover>summary{min-width:160px}
.workbook-toolbar .search{flex:1 1 480px;min-width:180px}
.workbook-filter-tags{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s2);margin:0 0 var(--s3)}
.workbook-filter-tags .chip{max-width:100%;white-space:normal;overflow-wrap:anywhere;min-height:var(--tap)}
.filtered-sheet-title{font-size:14px;margin:var(--s4) 0 var(--s2)}
.workbook-toolbar .btn,.workbook-toolbar .search{min-height:var(--tap)}
.workbook-toolbar select{min-height:var(--tap)}
.workbook-toolbar .end{display:flex;align-items:center;gap:var(--s2);margin-left:auto}
.workbook-toolbar .end>details{align-self:center}
.workbook-toolbar .end>details>summary{display:inline-flex;align-items:center;height:40px}
.workbook-save-status{display:inline-flex;align-items:center;justify-content:flex-end;gap:var(--s2);font-size:12px;color:var(--mid);white-space:nowrap}
.workbook-save-status[hidden]{display:none}
.workbook-save-status[data-state=error]{color:var(--red,#b42318)}
.workbook-save-status[data-state=error] [role=status]::before{content:"!"}
.workbook-save-status button{border:0;padding:4px;background:transparent;color:inherit;text-decoration:underline;cursor:pointer;font:inherit}
.workbook-save-status button[hidden]{display:none}
.hub-shell>.toasts{left:auto;right:var(--gut)}
.save-indicator{position:fixed;right:var(--gut);bottom:24px;z-index:90;display:flex;align-items:center;gap:6px;color:var(--ok);font-size:12px;pointer-events:none}
.save-indicator[hidden]{display:none}
.save-indicator svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.save-indicator[data-state=saving] circle{stroke-dasharray:30 14;transform-origin:center;animation:save-spin .7s linear infinite}
.save-indicator[data-state=saving] path{display:none}
.save-indicator[data-state=saved]{animation:save-fade 1.2s ease-out both}
.save-indicator[data-state=saved] circle{opacity:.35}
@keyframes save-spin{to{transform:rotate(360deg)}}
@keyframes save-fade{0%,20%{opacity:1}100%{opacity:0}}
.workbook-disclosure path{transform-box:fill-box;transform-origin:center}
.workbook-disclosure[aria-expanded=true] path{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){.save-indicator[data-state=saving] circle,.save-indicator[data-state=saved]{animation:none}}
/* Filter opens below its icon; Export opens at the toolbar's right edge.
   Both use bottom sheets on phones. Export remains a setup step (GCT-423). */
.workbook-toolbar .fp{position:absolute;left:auto;right:0;top:calc(100% + var(--s2));z-index:70;
  width:min(420px,100%);max-height:min(70vh,520px);overflow:auto;
  padding:var(--s4);background:var(--bg2);border:1px solid var(--edge)}
.workbook-toolbar .fp .form{display:grid;gap:var(--s2)}
.workbook-toolbar .fp .f{margin:0;min-width:0}
.workbook-toolbar .fpanel.workbook-filter,.workbook-toolbar .fpanel.documents-filter{position:relative}
.workbook-toolbar .workbook-filter .fp,.workbook-toolbar .documents-filter .fp{left:auto;right:0;top:calc(100% + 8px);width:min(420px,calc(100vw - 32px))}
@media(max-width:520px){
  .workbook-toolbar .fp,.workbook-toolbar .workbook-filter .fp,.workbook-toolbar .documents-filter .fp{position:fixed;left:var(--s2);right:var(--s2);width:auto;top:auto;bottom:var(--s2)}
}
.workbook-grid{max-width:100%;overflow:auto;overscroll-behavior-inline:contain}
.workbook-section+.workbook-section{margin-top:var(--s4)}
/* A section's own title, at the demo's Summary heading: display face, sentence case, at the sheet's left
   edge. It was an uppercase micro-label inset by --row-pad, which read as a fourth strip of chrome rather
   than as the name of the table under it. */
.workbook-section>h3{margin:var(--s6) 0 var(--s2);padding:0;font-family:var(--disp);font-size:22px;line-height:1.2;font-weight:600;letter-spacing:normal;text-transform:none;color:var(--ink)}
.workbook-section:first-child>h3{margin-top:0}
/* GCT-457: on the Documents tab the Job's own record of the files it received follows the workbook read
   out of them. Two tables with no air between them read as one table that changed its mind. */
.workbook-print+.tw,.workbook-print+p{margin-top:var(--s6)}
/* ==========================================================================
   WORKBOOK COLUMN POLICY (GCT-448)

   WHAT WAS HERE: every cell at `min-width:150px;max-width:360px` with
   `white-space:pre-wrap` and `vertical-align:top`. Three faults, compounding.
   pre-wrap honours the accidental newlines inside extracted source text, so a
   cell rendered its raw line breaks; 150px on every column meant no column
   could be narrow; and 360px of wrapped text meant every column could be six
   lines tall. A Scope sheet came out at ~250px per row - the same rows the
   demo draws as one condensed line each.

   WHAT REPLACES IT: a policy. A collapsed row is ONE LINE per cell, truncated
   with an ellipsis. An expanded row - and only an expanded row - wraps. Width
   comes from the column's ROLE, which view.ts already emits as
   data-column-role, so an identifier is as narrow as an identifier and a
   description is as wide as a description. Nothing here reads the content.
   ========================================================================== */

.workbook-grid table{width:max-content;min-width:100%}
.workbook-grid th,.workbook-grid td{vertical-align:middle}

/* THE SHEET GROWS WITH ITS ROWS; THE PAGE OWNS VERTICAL SCROLLING (GCT-405, GCT-457).

   WHAT WAS HERE: `--tw-h:max(360px,calc(100vh - var(--sticky-h) - 180px))`, a window-height scroll box.
   It put a second scrollbar inside the page, cut every sheet off at the fold whatever its length, and
   left an empty band under a short one. The demo has no such box: `.tw-grid` sets `--tw-h:none` and the
   bid-leveling grid scrolls sideways only, its totals following the final row down the page.

   This is that rule, for the Hub's own grid. `.tw` still resolves max-height from --tw-h, so `none`
   removes the vertical box and leaves the horizontal overflow the wide bidder columns need. The sticky
   thead and the tfoot ride-up go with it, because there is no vertical scroll port left for them to
   stick inside — which is exactly what the demo's `.tw-grid tfoot tr > *{bottom:auto}` says. */
.workbook-grid{--tw-h:none;overscroll-behavior-y:auto}
.workbook-grid tfoot tr>*{bottom:auto}

/* app.css paints `.sheet-surface > .tw` with the sheet's own ground so the
   selected folder tab merges into the pane below it. The Hub wraps each grid
   in .workbook-section, so that child selector never matched and the pane
   painted --bg2 inside a --sheet surface: the merge the demo shows was simply
   absent here. Same result, one level deeper. */
.sheet-surface .workbook-section .workbook-grid,.sheet-surface .workbook-section .workbook-grid>table{background:var(--sheet)}

/* THE SIZING GATE, AND IT IS LOAD-BEARING. A table column is sized by its
   content's MINIMUM width, and the minimum width of a `white-space:nowrap`
   block is the entire string - so with max-width alone the column simply grew
   to the longest description and the ellipsis never fired. A percentage
   min-width is indefinite during intrinsic sizing, so each of these boxes
   contributes 0 to its column and then fills whatever the policy below
   decided. The policy sizes the column; the text never does. */
.workbook-grid td>.workbook-cell-text,.workbook-grid td>.cell-preview,
.workbook-grid td>.wb-rowline,.workbook-grid td>.wb-field,
.workbook-grid td>.source-primary,.workbook-grid td>.wb-notes{width:0;min-width:100%}
.workbook-grid .wb-rowline>.cell-preview{flex:1 1 auto;width:auto;min-width:0}
/* IDENTIFIERS AND FIGURES OPT OUT OF THE GATE. `width:1%` on those two roles means
   "shrink to fit the content", which needs the content to actually report its width.
   Gated to zero they collapsed to nothing and their nowrap text ran straight over the
   next column - a CSI code printed across the scope wording beside it. A code or a
   quantity is short by nature, so letting it size its own column costs nothing. The
   editable affordance still fills its cell; only the plain value opts out. */
.workbook-grid td[data-column-role="id"]>.workbook-cell-text:not(.wb-field):not(.wb-cell-edit),
.workbook-grid td[data-column-role="number"]>.workbook-cell-text:not(.wb-field):not(.wb-cell-edit){width:auto;min-width:0}

/* Collapsed truncates on one line; expanded wraps and top-aligns, because a
   three-line cell whose first line is centred floats away from its row. */
.workbook-grid .cell-preview{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* The row's own text toggles it, so the row has to say so under the pointer. The contract carries this
   as `.row-disclosure tbody tr{cursor:pointer}`, but the Hub's table is `.tbl-froze` and never wore that
   class, so the affordance the demo shows was missing here. Keyed to the rows that actually disclose. */
.workbook-grid tbody tr[data-workbook-row]{cursor:default}
/* The contract hides the "+3" on an opened row, because in the demo opening the row is what reveals the
   sources. Here the row and the source list are two separate disclosures: an opened row still has its
   list closed, so hiding the count would retract the only sign that more evidence exists. Show it until
   the list itself is open. */
.workbook-grid tr.row-expanded>td{vertical-align:top;padding-block:var(--s2)}
.workbook-grid tr.row-expanded .workbook-cell-text{white-space:normal;overflow-wrap:anywhere}
/* An identifier and a figure never wrap, opened or not. Letting them wrap broke
   a CSI code onto three lines ("03 / 30 / 00") and cost the row more height than
   the wording it was opened to read. Only prose gains from wrapping. */
.workbook-grid tr.row-expanded [data-column-role="id"] .workbook-cell-text,
.workbook-grid tr.row-expanded [data-column-role="number"] .workbook-cell-text{white-space:nowrap;overflow-wrap:normal}

/* COLUMN POLICY. width:1% is "as narrow as the content allows" and is kept off
   .c1, whose width is the frozen identity column's --c1-w and must not be
   argued with. ch units, not pixels, so the policy follows the type size. */
.workbook-grid table [data-column-role="id"]:not(.c1){width:1%}
.workbook-grid table [data-column-role="id"]{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600}
.workbook-grid table [data-column-role="number"]:not(.c1){width:1%;min-width:10ch}
.workbook-grid table [data-column-role="number"]{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.workbook-grid th[data-column-role="number"] .sort{justify-content:flex-end}
.workbook-grid table [data-column-role="compact"]:not(.c1){white-space:nowrap;max-width:18ch}
.workbook-grid table [data-column-role="text"]:not(.c1){min-width:16ch;max-width:44ch}
/* --mid on the source column: 5.62:1 on the body ground, 5.43:1 on a sheet,
   7.09:1 light. It is secondary information beside the value it cites. */
/* 20ch, not the 12ch the other roles floor at: with the sizing gate above, cell
   content contributes nothing to its column, so a column gets exactly its floor.
   12ch of a locator is not a citation, it is four characters and an ellipsis. */
.workbook-grid table [data-column-role="source"]:not(.c1){min-width:20ch;max-width:28ch;color:var(--mid)}
/* GCT-460: THE SOURCE LINE HAS TO TRUNCATE, and the contract alone will not do it.
   The demo's authored primary reference is a sheet number - "S2.01" never overflows
   28ch - so `.row-disclosure .source-primary` in app.css needs no ellipsis. A real
   Job's authored primary is a whole locator line ("... drawing set :: sheet S2.03 ::
   PDF page 7"), so without an overflow rule it painted straight across the bid
   columns to its right. The line is a flex box, so min-width:0 is what lets the
   reference shrink far enough to clip. Opened, the row wraps it instead, because an
   expanded row is for reading, and the citation list below it is what opens with it. */
.workbook-grid .source-primary{min-width:0;overflow:hidden}
.workbook-grid .source-primary>:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}
.workbook-grid tr.row-expanded .source-primary{overflow:visible;white-space:normal}
.workbook-grid tr.row-expanded .source-primary>:first-child{overflow:visible;white-space:normal;overflow-wrap:anywhere}
/* An opened row is for reading, and a real Job's citation is a whole locator line, so the list stacks and
   each line wraps inside the Source column rather than painting across the bid blocks to its right. The
   contract sheet styles `.ev` as a flex ROW, which is right for the evidence strip under a card and wrong
   for a citation list inside a 220px column. */
.workbook-grid .source-references{display:block;margin:var(--s1) 0 0;padding:0;list-style:none}
.workbook-grid .source-references li,
.workbook-grid .source-references a{display:block;min-width:0;white-space:normal;overflow-wrap:anywhere}
.workbook-grid table [data-column-role="standard"]:not(.c1){min-width:12ch;max-width:36ch}

/* RULES, ONE STEP STRONGER INSIDE THE SHEET - never zebra (DESIGN.md 19).
   --line2 measures 1.66:1 against the body where --line measures 1.25:1, which
   is what the eye needs to track a row across twelve columns. A rule is
   decorative, so no 3:1 boundary floor applies to it. */
.workbook-grid tbody td{border-bottom-color:var(--line2)}

/* THE QUIET EDITABLE AFFORDANCE. A collapsed row cannot afford a text input
   and an Apply button in every editable cell - that was 300px of controls per
   cell before any data. The value sits on the line as text, wearing the field
   ground and the baseline rule that every other field in this app uses, so it
   reads as editable before the pointer arrives; activating it expands the row
   and focuses the real control. Measured: --edge on --field is 3.27:1 dark /
   4.33:1 dim / 4.16:1 light, all clear of the 3:1 boundary floor; --ink on
   --field is 14.89 / 14.85 / 17.66 and --mid on --field is 4.96 / 5.61 / 7.29,
   all clear of the 4.5:1 text floor. */
.workbook-grid .wb-field{display:block;width:100%;min-width:0;min-height:var(--ctrl-sm);
  text-align:left;font:inherit;color:inherit;padding:0 var(--s1);
  background:var(--field);border:0;border-bottom:1px solid var(--edge);cursor:pointer}
.workbook-grid .wb-field:hover,.workbook-grid .wb-field:focus-visible{border-bottom-color:var(--o)}
.workbook-cell-text{display:block;line-height:1.45}
.workbook-direction{display:grid;grid-template-columns:minmax(12ch,1fr) auto;gap:var(--s2);margin-top:var(--s1);min-width:0}
.workbook-direction input{min-height:var(--ctrl-sm);min-width:0;padding:0 var(--s2)}
.workbook-direction .btn{min-height:var(--ctrl-sm)}
.workbook-all-print{display:none}

/* ==========================================================================
   GCT-460: THE DEMO'S DIVISION GRID CONTROLS

   Everything the demo's `sh-d23` grid paints is already in the contract sheet
   (`.pick`, `.bulk`, `.subgrp`, `.row-pick`, `.attention-slot`, `.column-resizer`,
   `.coverage-*`, `.accept-*`, `.bid-accepted`). What was NOT in it is the bidder
   block header, which the demo carried as page-local CSS inside job.html, and the
   two dialogs the Hub opens from the grid. They live here, because they are the
   Hub's own and the contract sheet is shared with the published Demo.
   ========================================================================== */
.bidder-header{display:flex;align-items:center;gap:var(--s2);width:100%;min-height:44px;
  background:none;border:0;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
.bidder-header:hover{color:var(--o)}
.bidder-header .bidder-slot{color:var(--mid);flex:none}
.bidder-header .bidder-company{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bidder-header .i{width:14px;height:14px;flex:none;margin-left:auto}
.bidder-dialog,.accepts-dialog{box-sizing:border-box;width:min(680px,calc(100vw - 32px));
  max-height:calc(100dvh - 32px);overflow:auto;padding:var(--s5);
  background:var(--bg2);color:var(--ink);border:1px solid var(--edge)}
.bidder-dialog::backdrop,.accepts-dialog::backdrop{background:rgb(10 10 10 / 55%)}
.bidder-dialog h2,.accepts-dialog h2{margin:0;font-size:20px}
.bidder-context{margin:var(--s1) 0 0;color:var(--mid);font-size:12px}
.bidder-manual{font-size:14px;margin:var(--s4) 0 var(--s3)}
.bidder-fields{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}
.bidder-fields .f{margin:0;min-width:0}
.bidder-fields input{width:100%;min-width:0}
.bidder-error,.rp-error{margin:var(--s3) 0 0;color:var(--danger);font-size:13px}
.bidder-error[hidden],.rp-error[hidden]{display:none}
.bidder-dialog .dlg-f,.accepts-dialog .dlg-f,.export-dialog .dlg-f{display:flex;justify-content:flex-end;gap:var(--s2);margin-top:var(--s4)}
@media(max-width:480px){.bidder-fields{grid-template-columns:1fr}}

/* --------------------------------------------------------------------------
   GCT-461: THE REST OF #dlg-bidder, #dlg-export AND THE SCOPE ROW PANEL.

   The demo carries these as page-local CSS in job.html (the combobox, the
   suggestion rows and the export dialog, job.html:70-115); `.panel`, `.toasts`,
   `.finding` and `.ev` are already in the contract sheet, so only what job.html
   kept to itself is repeated here, rule for rule.
   -------------------------------------------------------------------------- */
.bidder-fields select{width:100%;min-width:0}
.bidder-search-wrap{position:relative;margin-bottom:var(--s3)}
.bidder-search{width:100%}
.bidder-dropdown{position:absolute;top:100%;left:0;right:0;z-index:4;max-height:224px;overflow:auto;
  background:var(--bg2);border:1px solid var(--line);box-shadow:0 8px 20px rgb(0 0 0 / 20%)}
.bidder-dropdown[hidden]{display:none}
.bidder-option{padding:var(--s2) var(--s3);min-height:48px;cursor:pointer}
.bidder-option[aria-selected="true"],.bidder-option:hover{background:var(--bg3)}
.bidder-option strong,.bidder-option small{display:block;overflow-wrap:anywhere}
.bidder-option small{color:var(--mid);font-size:12px}
.bidder-suggestions>summary{font-weight:600;cursor:pointer;min-height:44px;align-content:center}
.bidder-results{max-height:208px;overflow:auto;border-block:1px solid var(--line2)}
.bidder-result{display:flex;align-items:center;gap:var(--s2);border-bottom:1px solid var(--line2)}
.bidder-result:last-child{border-bottom:0}
.bidder-result button{display:block;min-width:0;flex:1;min-height:56px;text-align:left;background:none;
  border:0;color:var(--ink);font:inherit;padding:var(--s2);cursor:pointer}
.bidder-result .bidder-action{flex:0 0 44px;text-align:center;font-size:22px;padding:0;color:var(--o)}
.bidder-result .bidder-dismiss{color:var(--danger)}
.bidder-result .bidder-added:disabled{color:var(--ok);opacity:1}
.bidder-result button:hover{background:var(--bg3)}
.bidder-result button:disabled{cursor:default;color:var(--mid)}
.bidder-result strong,.bidder-result small{display:block;overflow-wrap:anywhere}
.bidder-result small{color:var(--mid);font-size:12px;margin-top:2px}
.bidder-match,.bidder-feedback{font-size:12px;color:var(--mid);margin:var(--s2) 0}
.bidder-feedback:empty{display:none}
/* The Contact Directory travels as hidden markup so the dialog can search it with
   no inline script; it is data, never a thing on screen. */
.bidder-directory{display:none}
.export-dialog{box-sizing:border-box;width:min(780px,calc(100vw - 32px));max-height:calc(100dvh - 32px);
  overflow:auto;padding:var(--s5);background:var(--bg2);color:var(--ink);border:1px solid var(--edge)}
.export-dialog::backdrop{background:rgb(10 10 10 / 55%)}
.export-dialog h2{margin:0;font-size:20px}
.export-options{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}
.export-options select{width:100%}
.export-sheets{max-height:260px;overflow:auto;margin:var(--s3) 0}
.export-sheets label{display:flex;align-items:center;gap:var(--s2);font-size:13px}
.export-sheets label[hidden]{display:none}
.export-sheets input{flex:none}
.export-review{padding:var(--s3);background:var(--bg3);margin-top:var(--s3);font-size:13px}
.export-review[hidden]{display:none}
@media(max-width:700px){.export-options{grid-template-columns:1fr}}
/* The demo writes the finding's weight as an inline style on `#rp-finding`; the Hub
   is served under `style-src 'self'`, so the same weight is a class. */
.rp-finding{font-weight:600}
.panel .form{margin-top:var(--s6)}
/* The panel's Sources column is 200px of a fixed rail and a citation is one unbroken
   locator ("A4.02 — Reflected ceiling plan · p.7"), so it has to be allowed to break
   inside a word rather than run out past the edge of the rail. */
.panel .finding-src .ev{min-width:0}
.panel .finding-src .ev a{min-width:0;overflow-wrap:anywhere}
/* A sheet the published workbook always carries is drawn ticked and inert, so it reads
   as a statement about the file rather than as a control that stopped working. */
.export-sheets input:disabled{opacity:.45;cursor:default}
.export-sheets label:has(input:disabled){color:var(--mid);cursor:default}
/* The demo pays for the row chevron in its own column and parks a 44px spacer above
   the row's checkbox so the select-all box lands over the boxes below it. The demo
   writes that spacer as an inline style; the Hub's renderer escapes its output, so
   the same 44px is a class here. */
.row-pick-spacer{width:44px;flex:none}
/* THE RESIZABLE GRID IS FIXED-LAYOUT, so its columns are the `<col>` widths and
   nothing else. The ch-based column policy above sizes an AUTO-layout table and is
   simply not consulted here; these two say so, rather than leaving a reader to work
   out which of the two width models a scope sheet is under. */
.workbook-grid table.row-disclosure.tbl-wide td,
.workbook-grid table.row-disclosure.tbl-wide th{overflow:hidden}
.workbook-grid table.row-disclosure.tbl-wide td.wb-cell-active,
.workbook-grid table.row-disclosure.tbl-wide td:has(dd.wb-cell-active){overflow:visible}
/* A flagged clarification wears the mark beside the words it is about, on one line. */
.workbook-grid .wb-notes{display:flex;align-items:center;gap:var(--s1)}
.workbook-grid .wb-notes>*{min-width:0}
/* The coverage mark and the Accept box fill their cell, which app.css absolutely
   positions inside it, so the cell has to keep a height of its own to fill. */
.workbook-grid .coverage-cell,.workbook-grid .accept-cell{height:var(--tap)}
/* The bulk bar is the demo's, and it sits inside the scroll pane under the grid. */
.workbook-grid .bulk .btnrow{display:flex;gap:var(--s2);flex-wrap:wrap}
.workbook-grid .bulk .btn:disabled{opacity:.55;cursor:not-allowed}
.workbook-grid .scope-bidding-cell{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;padding-block:4px}
.workbook-grid .bidding-packages{display:block;max-width:100%;line-height:1.25}
.workbook-grid .bidding-package-piece{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
.workbook-grid .scope-bidding-package{display:inline;margin:0;border:0;background:none;padding:0;color:var(--ink);font:inherit;font-weight:400;text-align:left;cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.workbook-grid .scope-bidding-package:hover,.workbook-grid .scope-bidding-package:focus-visible{text-decoration:underline;text-underline-offset:3px}
.workbook-grid .scope-bidding-muted,.workbook-grid .scope-bidding-attention,.workbook-grid .scope-bidding-state{display:block;color:var(--mid);font-size:12px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.workbook-grid .scope-bidding-state{color:var(--ink)}
.workbook-grid .scope-bidding-attention{color:var(--o)}
.workbook-grid .bulk .workbook-accept-menu{position:relative}
.workbook-grid .bulk .workbook-accept-menu>summary{list-style:none}
.workbook-grid .bulk .workbook-accept-menu>summary::-webkit-details-marker{display:none}
.workbook-grid .bulk .workbook-accept-options{position:absolute;bottom:100%;left:0;z-index:4;min-width:220px;padding:4px;background:var(--bg2);border:1px solid var(--line);box-shadow:0 8px 20px rgb(0 0 0 / 20%)}
.workbook-grid .bulk .workbook-accept-options button{display:block;width:100%;text-align:left;padding:8px;border:0;background:none;color:var(--ink);font:inherit;cursor:pointer}
.workbook-grid .bulk .workbook-accept-options button:hover{background:var(--bg3)}
.workbook-grid .bulk [data-workbook-bulk-alert]:empty{display:none}
.workbook-grid .bulk [data-workbook-bulk-alert]{color:var(--o);font-size:12px}

/* ==========================================================================
   THE OPENED ROW'S FACTS, AND THE PITCH OF A CLOSED ONE (GCT-457)

   The condensed line carries the demo's columns and nothing else (`sheetLayout`
   in src/portal/view.ts). Everything it takes off the line — CSI, Area, Tags,
   Subscopes, Material, Measurement, Proposed Package, the client-direction
   control and the estimator's own entry fields — comes back the moment the row
   opens, as a labelled list on a row of its own under it. Of its own, because
   it needs the whole measure: stacked inside the 300px frozen column the same
   list ran 580px tall down one side of an otherwise empty grid.
   ========================================================================== */
/* --c1-w is the demo's declared 300px. A scope sheet adds the chevron to it:
   the demo pays for its chevron in a separate column and this grid puts it
   inside the frozen one, so without the extra 44px the scope wording gets
   232px and truncates where the demo's does not. */
.workbook-grid table[data-sheet-grid]{--c1-w:300px}
/* GCT-460: the roll-up parks its slack on Division, which is where the demo's own
   `sh-sum` table parks it: the table is `.tw-fit`, so auto layout hands the slack
   to the widest text column, and that is the division name. This used to park it
   on Status instead, which read as a wide sentence beside a narrow division. */
.workbook-grid tr.row-expanded>td{border-bottom:0}
.workbook-grid tr.row-facts>td{padding-top:0;vertical-align:top}
.workbook-grid tr.row-facts>.c1{background:var(--bg2)}
/* THE SLACK HAS TO BE PARKED, or auto layout hands it to the widest column — which on a scope sheet is
   the frozen identity column, so the Scope column drew at 620px and Qty (docs) sat against the far edge
   of a 1,600px window. The demo's grid never has slack (it is 2,280px wide and overflows), so it never
   says where slack goes. It goes to Notes / clarifications, the one column on the line that is prose and
   reads better wide. `.jobs-table` parks its slack the same way. */
.workbook-grid table[data-sheet-grid="scope"]:not(.row-disclosure) th[data-column-role="text"]:not(.c1),
.workbook-grid table[data-sheet-grid="scope"]:not(.row-disclosure) td[data-column-role="text"]:not(.c1){width:100%;max-width:76ch}
/* The scope item's own name is the row, so it carries the weight the demo's `.rowbtn .nm` carries. */
.workbook-grid table[data-sheet-grid="scope"] tbody .c1 .workbook-cell-text{font-weight:600}
/* A figure column is never narrower than the word above it: "Qty (docs)" broke over two lines at 10ch. */
.workbook-grid th[data-column-role="number"] .sort{white-space:nowrap}
/* The quiet affordance, quieter still. On the Notes / clarifications line the value IS the column's own
   text and the demo prints it plain; the control it opens belongs to the direction lane inside the row.
   Field chrome in every row of a prose column reads as an input the reader is expected to fill. */
.workbook-grid .wb-field.wb-quiet{background:none;border-bottom-color:transparent;padding-inline:0}
.workbook-grid .wb-field.wb-quiet:hover,.workbook-grid .wb-field.wb-quiet:focus-visible{border-bottom-color:var(--o)}
.workbook-grid .wb-facts{width:0;min-width:100%;margin:0 0 var(--s3);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:var(--s3) var(--s6);font-size:12.5px;line-height:1.45}
.workbook-grid .wb-facts>div{min-width:0}
.workbook-grid .wb-facts dt{color:var(--mid);font-size:11px;letter-spacing:var(--hub-label-tracking);text-transform:uppercase}
/* A fact is not a column. The column policy above is written as a descendant
   selector, so it reached these `dd`s too and gave a CSI code `width:1%` with
   `overflow-wrap:anywhere` — "23 05 00" came out one character per line. The
   role stays on the element, because it is true and the print render reads it;
   the WIDTH policy is the thing that belongs to table cells alone. */
.workbook-grid .wb-facts dd[data-column-role]{margin:0;min-width:0;width:auto;max-width:none;
  white-space:normal;overflow-wrap:anywhere;text-align:left}
.workbook-grid .wb-facts .workbook-cell-text{white-space:normal}
.workbook-grid .wb-facts .workbook-direction{margin-top:0}
.workbook-grid .wb-facts + .row-history-control{margin-top:0}

/* CONDENSED DENSITY HAS TO BE CONDENSED. `--row` drops from 48px to 40px and
   `--row-py` from 8px to 4px at condensed, but a scope row is not sized by any
   of them: the chevron is a 44px tap target and the scope text, the source
   summary and the quiet field all floor at `--tap` too, so every density drew
   the same 53px line. Density is a choice the reader made about THIS grid, so
   the floor follows it here and nowhere else — the 44px target stays on every
   control outside the workbook, and at regular and relaxed it stays inside it. */
html[data-density="condensed"] .workbook-grid .row-toggle{width:var(--ctrl-sm);height:var(--ctrl-sm)}
html[data-density="condensed"] .workbook-grid .rowbtn,
html[data-density="condensed"] .workbook-grid .source-primary{min-height:var(--ctrl-sm)}
html[data-density="condensed"] .workbook-grid .wb-field{min-height:calc(var(--ctrl-sm) - 4px)}
html[data-density="condensed"] .workbook-grid tbody td,
html[data-density="condensed"] .workbook-grid tfoot td,
html[data-density="condensed"] .workbook-grid tfoot th{height:auto}

.row-history-control{margin-top:var(--s2)}
.row-history-drawer{box-sizing:border-box;position:fixed;inset:0 0 0 auto;margin:0;width:min(560px,100%);max-width:100%;height:100%;max-height:100%;padding:var(--s6);background:var(--bg2);color:var(--ink);border:1px solid var(--edge);overflow:auto}
.row-history-drawer::backdrop{background:rgb(10 10 10 / 55%)}
.row-history-drawer header{display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}
.row-history-drawer h2{margin:0;font-size:20px}
.row-history-name{overflow-wrap:anywhere}
.row-history-list{list-style:none;margin:0;padding:0}
.row-history-list li{border-top:1px solid var(--line);padding-block:var(--s4)}
.row-history-list h3{font-size:14px;margin:0}
.row-history-list dt{color:var(--mid);margin-top:var(--s3)}
.row-history-list dd{margin:var(--s1) 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
@media print{.row-history-control,.row-history-drawer{display:none!important}}
.job-document-previews{margin-block:var(--s5)}
/* GCT-464: the demo's History table (job.html:1029) — the same frozen first column and the same floor
   under the four columns beside it, so When never wraps and Outcome never crushes. */
.job-history-table{--c1-w:150px;min-width:900px}
/* GCT-464: a phone number that dials. The demo prints it as plain text; a Hub read on a phone is where
   dialling matters most, so it is a link that still reads as the demo's line. */
.ct-tel a{color:inherit;text-decoration:none}
.ct-tel a:hover,.ct-tel a:focus-visible{text-decoration:underline;text-underline-offset:3px}
/* GCT-464: both groups are always drawn, so an account with nobody in one says so where its cards
   would be — the demo never omits a group, and neither does the Hub (Ryan, 2026-09-06). */
.job-contacts .sub{margin-top:var(--s3)}
.job-documents-table{--c1-w:260px}
.job-document-previews summary{padding-block:var(--s3);cursor:pointer;min-height:var(--tap)}
.job-document-previews pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;max-width:75ch;padding:var(--s3);background:var(--bg2)}
.workbook-cell-text.ev{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.workbook-grid tr.unresolved>td{background:color-mix(in srgb,var(--o) 8%,var(--bg2))}
/* GCT-467: THE DEMO'S INLINE "ADD A NOTE" CELL, MADE REAL.
   The demo writes a `span.ed` with an inline `display:inline-block;padding:4px 8px;min-width:110px`
   (job.html). The Hub is served under `style-src 'self'`, so that style attribute could not travel; and
   the demo's span is a placeholder while this one is the field, so it is an `input` carrying `.ed`. The
   rules below are the demo's own three declarations plus what it takes to stop an input looking like a
   form control in the middle of a table: `.ed` in app.css already draws the hover and focus outline that
   says "this is editable", and it is the only thing that should draw one. */
.obligation-note{display:block;margin:0}
.obligation-note input.ed{display:inline-block;min-width:110px;width:100%;padding:4px 8px;
  font:inherit;color:inherit;background:transparent;border:0;border-radius:0}
.obligation-note input.ed::placeholder{color:var(--mid)}
.obligation-note input.ed:focus{outline:1px solid var(--o);outline-offset:-1px}
/* GCT-467: the Received Documents coverage table. Three narrow counts and a revision beside a file name,
   so the counts get the figure column the rest of the Hub's numbers get and nothing else changes. */
.job-coverage-table td.num,.job-coverage-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.job-coverage-table tfoot td{font-variant-numeric:tabular-nums}
.workbook-catalog{margin:var(--s5);color:var(--ink)}
.workbook-catalog>section{margin-top:var(--s7)}
.print-sheet-title{margin:0 0 var(--s3)}
/* GCT-458: THE BOOKEND CHIPS CLAMP TO TWO LINES IN THE REAL HUB, NOT THREE — AND IN THE REAL HUB ONLY.
   The Demo bought its Overdue and Later chips a third line for the date that follows a five-digit job
   number ("26124 Proposal · Aug 20"). A real account has no job number on most jobs, so the chip opens
   with the job's full name and the third line is a third line of name — which makes a bookend the
   tallest cell in the row and stretches all sixteen columns. Two lines there keeps every cell the same
   height; the whole sentence stays on the chip's title and on the job row.

   THE SELECTOR IS SCOPED BECAUSE THIS FILE IS ALSO THE DEMO'S. `src/portal/build.ts` writes
   `app.css` + this file to both outputs, so an unscoped `.cal-end .cal-i` outranked the Demo
   contract's three-line clamp and clipped the Demo's own Later chip to "26124 Proposal · Au…". */
.hub-shell[data-mode="real"] .cal-end .cal-i{-webkit-line-clamp:2}
@media(max-width:520px){.cal-i{min-height:var(--tap)}}
@media(max-width:760px){.admin-view-banner{grid-template-columns:1fr;padding:var(--s3)}.admin-view-reason{white-space:normal}.admin-view-scope{flex-wrap:wrap}.workbook-toolbar .end{width:100%;margin-left:0}.workbook-toolbar .end .btn{flex:1}}
@media(min-width:1101px) and (max-width:1400px){
  .dir-co{overflow-x:visible}
  .dir-co .cg-head,.dir-co .cg-band{min-width:0}
  .dir-co .cg>summary,.dir-co .ct{grid-template-columns:180px minmax(150px,1fr) 135px 110px 130px minmax(170px,1fr) 110px}
}
@media(hover:none){
  details.navm{display:inline-flex}
  details.navm>.navm-p{position:absolute;top:100%;left:0;flex-direction:column;flex-wrap:nowrap;min-width:264px;padding:var(--s2) 0;background:var(--bg2);border:1px solid var(--edge);border-top:0}
}
@media print{
  body *{visibility:hidden}
  .workbook-print,.workbook-print *{visibility:visible}
  .workbook-print{position:absolute;inset:0;width:100%;margin:0;padding:0;border:0}
  .workbook-toolbar,.workbook-direction,.sheettabs{display:none!important}
  .workbook-screen{display:none!important}
  .workbook-all-print{display:block!important}
  .workbook-all-print>.sheet-surface{break-after:page}
  .workbook-all-print>.sheet-surface:last-child{break-after:auto}
  .workbook-grid{overflow:visible;max-width:none;max-height:none}
  .workbook-grid table{width:100%;font-size:8pt}
}
.settings-access-kv .v small { display: block; }
.personal-notifications form{max-width:640px}
.notification-choice{display:flex;align-items:flex-start;gap:12px;padding:16px 0;cursor:pointer;border-bottom:1px solid var(--line)}
.notification-choice input{width:16px;height:16px;flex:0 0 16px;margin:2px 0 0;accent-color:var(--o)}
.notification-choice span{display:grid;gap:5px;line-height:1.4}
.notification-choice strong{font-size:13px;font-weight:600}
.notification-choice small{color:var(--mid);font-size:12px}
.notification-choice:has(input:disabled){cursor:default}
.tbar .jobs-phase{width:auto;min-width:145px;max-width:220px}
.jobs-filter-icon{padding:8px;display:inline-flex;align-items:center;justify-content:center}
.jobs-filter-icon::after{display:none}
.jobs-export-dialog{width:min(620px,calc(100vw - 32px));max-height:85dvh;padding:24px;overflow:auto;color:var(--ink);background:var(--bg);border:1px solid var(--line)}
.jobs-export-dialog form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.jobs-export-dialog h2,.jobs-export-dialog fieldset,.jobs-export-dialog .btnrow,.jobs-export-dialog [role=alert]{grid-column:1/-1}
.jobs-export-dialog .f{margin:0;min-width:0}
.jobs-export-options{border:0;padding:0;max-height:180px;overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:5px 12px}
.jobs-export-options label{display:flex;gap:8px;align-items:center;font-size:13px;padding:4px 0}
.jobs-export-options input{width:15px;height:15px;flex-shrink:0}
@media(max-width:600px){.jobs-export-dialog form,.jobs-export-options{grid-template-columns:1fr}}

/* GCT-550: one job summary above every tab; daily project management leads Overview. */
.ph.job-header-summary{grid-template-columns:minmax(0,1.2fr) minmax(0,1.15fr) minmax(230px,.7fr);align-items:start;gap:20px;padding-block:12px}
.job-header-summary>div,.job-header-summary>dl{min-width:0}
.job-header-summary h1{margin:0;line-height:1.2}
.job-header-summary .job-context{margin-top:6px;font-size:11px;gap:4px 10px}
/* GH-376: Documents views and their toolbars scroll beneath the existing Job navigation. */
.documents-views{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;padding:4px 0 0}
.documents-views>button{appearance:none;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--mid);font:inherit;font-size:12px;font-weight:600;white-space:nowrap;min-height:44px;padding:10px 16px;cursor:pointer}
.documents-views>button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--o)}
.documents-views>button:hover{color:var(--ink);background:var(--bg2)}
.documents-workspace [role="tabpanel"][hidden]{display:none}
.documents-toolbar{position:static;flex-wrap:wrap;gap:8px;padding:12px 0;margin:0}
.documents-toolbar .search{flex:1 1 260px;max-width:520px}
.documents-toolbar>label:not(.vh){font-size:12px;color:var(--mid)}
.documents-toolbar>select{max-width:280px;min-height:36px}
.documents-context{font-size:12px;margin:12px 0 0}
.documents-source-table{min-width:720px}
.documents-reading{font-size:12px;margin:12px 0;color:var(--mid)}
.documents-reading>summary{cursor:pointer;min-height:36px;align-content:center}
.documents-reading ul{list-style:none;padding:0;margin:8px 0}
.documents-reading li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--line)}
.documents-reading strong{font-weight:500}
.project-file-upload{margin:0 0 16px}
.project-file-upload>summary{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;cursor:pointer;list-style:none}
.project-file-upload>summary::-webkit-details-marker{display:none}
.project-file-upload>summary>.count{margin-right:auto}
.project-file-upload>summary>.sub{font-size:11px}
.project-file-upload>summary>.btn{flex:none}
.documents-workspace .workbook-screen table [data-document-column="CSI Division"]{width:100px;min-width:100px;max-width:100px}
.documents-workspace .workbook-screen table [data-document-column="Type"]{min-width:100px;max-width:100px}
.documents-workspace .workbook-screen table [data-document-column="Requirement"]{width:350px;min-width:350px;max-width:420px}
.documents-workspace .workbook-screen table [data-document-column="Timing"]{width:170px;min-width:170px;max-width:200px;white-space:normal}
.documents-workspace .workbook-screen table [data-document-column="Assignment Status"]{min-width:140px;max-width:170px}
.documents-workspace .workbook-screen th[data-document-column] .sort{white-space:normal;overflow:visible;text-align:left}
.documents-workspace .workbook-screen :is([data-document-column="Requirement"],[data-document-column="Timing"],[data-document-column="Type"]) .cell-preview{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
@media(max-width:520px){.documents-workspace .workbook-screen table [data-document-column="Requirement"]{width:250px;min-width:250px;max-width:250px}.project-file-upload>summary{gap:8px;flex-wrap:wrap}.project-file-upload>summary>.sub{font-size:10px}}
@media(max-width:600px){.documents-workspace .workbook-screen table :is(.c1,.pick){position:static;left:auto}}
.project-file-upload-fields{display:grid;gap:12px;max-width:640px;padding:16px 0}
.project-file-upload-fields>label{display:grid;gap:6px;font-size:12px}
.project-file-upload-fields input,.project-file-upload-fields textarea,.project-file-upload-fields select{width:100%;max-width:100%;min-height:40px}
.project-file-upload-fields textarea{min-height:70px;resize:vertical}
.project-file-upload-fields>.btn{justify-self:start;min-height:44px}
.project-file-upload-fields p{margin:0}
.project-files-table{min-width:720px}
.project-files-table th,.project-files-table td{vertical-align:top}
.project-files-table th[scope="row"]{font-weight:500;max-width:340px;overflow-wrap:anywhere}
.project-files-table .sub{display:block;margin:4px 0 0}
.project-files-table td:nth-child(4){max-width:360px;overflow-wrap:anywhere}
.job-document-previews,.job-document-previews [data-document-preview-page]{scroll-margin-top:var(--sticky-h)}
@media(max-width:520px){.documents-views>button{padding-inline:12px}.documents-toolbar .search{flex-basis:100%;max-width:none}.documents-toolbar>select{flex:1;min-width:0}.documents-toolbar .count{width:100%}.project-file-upload-fields{padding-right:4px}}

/* DEV-312: native options inherit a readable palette in both app themes. */
:root{color-scheme:dark;--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='m2 4 4 4 4-4' fill='none' stroke='%238C8C8C' stroke-width='1.5'/%3E%3C/svg%3E")}
html[data-theme="light"],[data-ground="light"]{color-scheme:light;--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='m2 4 4 4 4-4' fill='none' stroke='%23565550' stroke-width='1.5'/%3E%3C/svg%3E")}
select{appearance:none;box-sizing:border-box;min-height:40px;border:1px solid var(--line2);border-radius:0;background-color:var(--bg2);background-image:var(--select-chevron);background-position:right 10px center;background-size:12px 12px;background-repeat:no-repeat;color:var(--ink);padding:0 32px 0 12px}
table select,.workbook-grid .wb-cell-editor select{height:32px;min-height:32px}
select:hover{border-color:var(--mid)}
select:focus-visible,.workbook-grid .wb-cell-editor select:focus-visible{outline:2px solid var(--o);outline-offset:2px}
select:disabled{opacity:.5;cursor:not-allowed}
select option{background:var(--bg2);color:var(--ink)}
select option:checked{background:var(--o-tint,#3a1d10);color:var(--ink)}
select optgroup{color:var(--mid)}
.workbook-grid .wb-cell-editor select{background-color:var(--bg2);background-image:var(--select-chevron);background-position:right 10px center;background-size:12px 12px;padding:0 32px 0 12px;border:1px solid var(--line2)}

/* Money keeps exact text in its title and accessible name while only the visible variant changes. */
.money{display:inline-block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:clip;font-variant-numeric:tabular-nums;vertical-align:bottom}
.money [hidden]{display:none!important}
.workbook-grid .scope-footer-bid-total .money>span{display:inline}
.workbook-grid table.row-disclosure.tbl-wide td:has(.money),.workbook-grid td.scope-footer-bid-total{padding-left:6px;padding-right:6px}
.workbook-grid td.scope-footer-bid-total small{container-type:inline-size;display:block;width:100%}
.workbook-grid td.scope-footer-bid-total .money{font-size:13px;font-weight:600;white-space:nowrap}
.workbook-grid .scope-footer-bid-total small>span{display:inline}
@container (max-width:80px){.workbook-grid .scope-footer-bid-total .priced-word{display:none}}
.workbook-grid button[data-package-cell]{appearance:none;background:transparent;border:0;border-radius:0;color:inherit;font:inherit;width:100%;height:100%;padding:0 6px;cursor:pointer}
.workbook-grid button[data-package-cell="costMinor"]{padding:0;text-align:right}
.workbook-grid button[data-package-cell]:hover{background:var(--bg3)}
.workbook-grid button[data-package-cell]:focus-visible{outline:2px solid var(--o);outline-offset:-2px}
.workbook-grid td:has(.money),.workbook-grid th:has(.money),.package-bidding td:has(.money){white-space:nowrap}
.workbook-grid :is(th,td).bid-select-divider{border-left:1px solid var(--line2)}
.workbook-grid table[data-sheet-grid="scope"] :is(th,td).subgrp,.workbook-grid table[data-sheet-grid="scope"] :is(th,td).bid-group-start{border-left:2px solid var(--edge)}
.workbook-grid table[data-sheet-grid="scope"] tr.scope-row-accepted>td{background:color-mix(in srgb,var(--ok) 8%,var(--sheet));}
.workbook-grid table[data-sheet-grid="scope"] tr.scope-row-accepted>td:first-child{box-shadow:inset 3px 0 var(--ok)}
.workbook-grid table[data-sheet-grid="scope"] tr.scope-row-accepted>td.bid-accepted{background:color-mix(in srgb,var(--ok) 23%,var(--sheet))!important}
.workbook-grid table[data-sheet-grid="scope"] tr.scope-row-accepted.scope-accept-sweep{position:relative}
.workbook-grid table[data-sheet-grid="scope"] tr.scope-row-accepted.scope-accept-sweep::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:color-mix(in srgb,var(--ok) 20%,transparent);transform-origin:left center;animation:scope-accept-sweep 450ms ease-out both}
@keyframes scope-accept-sweep{from{transform:scaleX(0);opacity:.8}to{transform:scaleX(1);opacity:0}}
@media(prefers-reduced-motion:reduce){.workbook-grid table[data-sheet-grid="scope"] tr.scope-accept-sweep::after{animation:none;content:none}}
.workbook-grid table[data-sheet-grid="scope"] th.package-line-leaf.bid-select-divider{text-align:center}
.workbook-grid table[data-sheet-grid="scope"] td.package-line-cell.bid-select-divider{padding-inline:0;text-align:center}
.workbook-grid .package-line-cell.bid-select-divider{text-align:center}
.workbook-grid table[data-sheet-grid="scope"] .scope-alternates-divider>td{height:28px;padding:12px 12px 0;border-top:1px solid var(--edge);color:var(--mid);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;background:var(--sheet)}
.workbook-grid table[data-sheet-grid="scope"] .scope-alternates-divider span{color:var(--o)}
.workbook-grid table[data-sheet-grid="scope"] .scope-alternate-total>*{border-top:1px solid var(--line2);font-size:12px;font-weight:600}
.workbook-grid table[data-sheet-grid="scope"] .scope-alternate-total small{display:block;color:var(--mid);font-weight:400}
.workbook-grid table[data-sheet-grid="scope"] .scope-add-row>td{border-top:1px dashed var(--line2);padding-block:6px}
.workbook-grid .scope-add-row button{border:0;background:none;color:var(--o);font:inherit;min-height:32px;cursor:pointer}
.workbook-grid .scope-add-row form{position:relative;display:flex;align-items:center;gap:4px;min-width:0;flex-wrap:wrap}
.workbook-grid .scope-add-row form[hidden]{display:none}
.workbook-grid .scope-add-row input[name=scope]{box-sizing:border-box;flex:1 1 100%;width:100%;min-width:0;min-height:32px;background:var(--field);color:var(--ink);border:1px solid var(--edge);padding:0 68px 0 8px}
.workbook-grid .scope-add-options input[name=groupName]{box-sizing:border-box;width:100%;min-height:32px;background:var(--field);color:var(--ink);border:1px solid var(--edge);padding:0 8px}
.workbook-grid .scope-add-row select{box-sizing:border-box;width:100%;min-height:32px}
.workbook-grid .scope-add-row .scope-add-actions{position:absolute;right:2px;top:2px;display:flex;gap:2px}
.workbook-grid .scope-add-row .scope-add-actions button{min-width:30px;min-height:28px;color:var(--ink)}
.workbook-grid .scope-add-row .scope-add-actions button[type=submit]{color:var(--ok)}
.workbook-grid table.row-disclosure.tbl-wide tr.scope-add-row td.scope-add-bidding{position:relative;z-index:5;vertical-align:top;overflow:visible}
.workbook-grid .scope-add-choice-cell[hidden]{display:none}
.workbook-grid .scope-add-choice-cell details{width:100%}
.workbook-grid .scope-add-choice-cell summary{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;color:var(--ink);font-size:13px;font-weight:400;list-style:none;padding:8px 6px}
.workbook-grid .scope-add-choice-cell summary::-webkit-details-marker{display:none}
.workbook-grid .scope-add-choice-cell summary::after{content:" ▾";color:var(--mid)}
.workbook-grid .scope-add-options{position:fixed;z-index:100;inset:auto;margin:0;box-sizing:border-box;width:min(360px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow:auto;display:grid;gap:10px;padding:12px;background:var(--bg2);border:1px solid var(--edge);color:var(--ink);box-shadow:0 8px 20px #0005}
.workbook-grid .scope-add-options:not(:popover-open){display:none}
.workbook-grid .scope-add-options label{display:grid;gap:4px;white-space:normal;font-size:11px;color:var(--mid)}
.workbook-grid .scope-add-options input[data-scope-sheet-search]{box-sizing:border-box;width:100%;min-height:32px;padding:0 8px;background:var(--field);border:1px solid var(--edge);color:var(--ink);font:inherit}
.workbook-grid .scope-division-choices{display:grid;max-height:220px;overflow:auto;border:1px solid var(--line2)}
.workbook-grid .scope-division-choices button{min-height:30px;padding:5px 8px;color:var(--ink);text-align:left;font-size:12px;white-space:normal}
.workbook-grid .scope-division-choices button:hover,.workbook-grid .scope-division-choices button:focus-visible{background:var(--bg3)}
.workbook-grid .scope-division-choices button[aria-pressed=true]{color:var(--o);font-weight:600}
.workbook-grid .scope-division-choices button[hidden]{display:none}
.workbook-grid .scope-unassigned,.workbook-grid .scope-manual-tag{color:var(--mid);font-size:11px}
.workbook-grid table[data-sheet-grid="scope"] :is(th,td).scope-csi-tags{border-left:1px solid var(--line2)}
.workbook-grid .scope-csi-tag{display:inline-block;min-width:22px;margin:2px 3px 2px 0;padding:1px 4px;border:1px solid var(--line2);background:var(--bg2);color:var(--mid);font:600 11px Inter,sans-serif;text-align:center;text-decoration:none;cursor:default}
.workbook-grid button.scope-csi-tag{cursor:pointer}
.workbook-grid button.scope-csi-tag:hover,.workbook-grid button.scope-csi-tag:focus-visible{color:var(--o);border-color:var(--o)}
.workbook-grid .scope-manual-tag{display:block;padding:2px 0}
.scope-inline-direction dt{display:flex;align-items:center;justify-content:space-between;gap:8px}
.scope-inline-direction .scope-detail-value{display:block;width:100%;min-height:28px;padding:3px 0;border:0;background:none;color:var(--ink);font:inherit;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;cursor:text}
.scope-inline-direction .scope-detail-value:hover,.scope-inline-direction .scope-detail-value:focus-visible{background:var(--bg3);outline:1px solid var(--line2);outline-offset:2px}
.scope-inline-direction .scope-detail-value[hidden]{display:none}
.scope-inline-direction dt button{border:0;background:none;color:var(--mid);font:18px Inter,sans-serif;cursor:pointer;min-width:32px;min-height:32px}
.scope-inline-direction dt button:hover,.scope-inline-direction dt button:focus-visible{color:var(--o)}
.scope-inline-direction dd p{margin:2px 0 6px}
.scope-inline-direction .scope-extracted{color:var(--mid);font-size:12px}
.scope-inline-direction .scope-extracted small{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.scope-inline-direction form{display:grid;gap:8px;margin-top:8px}
.scope-inline-direction form[hidden]{display:none}
.scope-inline-direction textarea{width:100%;box-sizing:border-box;background:var(--field);border:1px solid var(--edge);color:var(--ink);padding:8px;font:inherit;resize:vertical}
.scope-detail-actions{display:flex;justify-content:flex-end;gap:4px}
.scope-detail-actions button{border:1px solid var(--line2);background:var(--bg2);color:var(--ink);min-width:32px;min-height:28px;padding:2px 6px;cursor:pointer}
.scope-detail-actions button[type=submit]{color:var(--ok)}
.sheet-alt-count{font-size:11px;color:var(--mid)}
.scope-review-queue{display:grid;gap:16px;padding:18px 0}
.scope-review-head{display:flex;align-items:baseline;justify-content:flex-end;gap:20px}
.scope-review-head p{margin:0;color:var(--mid);font-size:12px}
.scope-review-division-chip{justify-self:start;display:flex;align-items:center;gap:8px;border:1px solid var(--line2);padding:3px 8px;color:var(--mid);font-size:12px}
.scope-review-division-chip[hidden]{display:none}
.scope-review-division-chip button{border:0;background:none;color:var(--ink);min-width:24px;min-height:24px;cursor:pointer}
.scope-review-filters{display:flex;gap:8px;flex-wrap:wrap}
.scope-review-filters button{min-height:32px;padding:5px 12px;background:transparent;border:1px solid var(--line2);color:var(--mid);font:inherit;cursor:pointer}
.scope-review-filters button[aria-pressed=true]{border-color:var(--o);color:var(--ink);background:color-mix(in srgb,var(--o) 10%,transparent)}
.scope-review-list{display:grid;gap:8px}
.scope-review-item[hidden]{display:none}
.scope-review-item{border:1px solid var(--line2);background:var(--sheet)}
.scope-review-item summary{display:grid;grid-template-columns:90px minmax(0,2fr) minmax(0,1fr) 90px;align-items:center;gap:12px;list-style:none;min-height:56px;padding:8px 14px;cursor:pointer}
.scope-review-item summary::-webkit-details-marker{display:none}
.scope-review-item summary strong{font-size:13px;font-weight:600}
.scope-review-meta{display:grid;gap:2px}
.scope-review-kind{font-size:10px;font-weight:600;color:var(--mid)}
.scope-review-where,.scope-review-severity{color:var(--mid);font-size:12px}
.scope-review-severity{text-align:right}
.scope-review-status{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--o)}
.scope-review-status-answered{color:var(--ok)}
.scope-review-status-decided{color:var(--mid)}
.scope-review-body{display:grid;gap:14px;padding:16px;border-top:1px solid var(--line2)}
.scope-review-body p{margin:0;font-size:13px;line-height:1.5}
.scope-review-body form{display:grid;gap:8px;max-width:720px}
.scope-review-body form label{font-size:12px;font-weight:600}
.scope-review-body form textarea,.scope-review-body form select{width:100%;box-sizing:border-box;background:var(--field);color:var(--ink);border:1px solid var(--edge);padding:8px;font:inherit}
.scope-review-body form button,.scope-review-body>button{justify-self:start;min-height:32px;border:1px solid var(--line2);background:var(--bg2);color:var(--ink);padding:5px 12px;cursor:pointer}
.scope-review-body a{color:var(--o)}
.scope-drawer-note-label{display:block;font-size:12px;font-weight:600}
.scope-review-source-notes{border-top:1px solid var(--line2);padding-top:12px;color:var(--mid);font-size:12px}
.scope-review-source-notes summary{cursor:pointer}
.scope-review-source-notes article{margin:12px 0 0;padding:12px;border:1px solid var(--line2);background:var(--sheet)}
.scope-review-source-notes h4{margin:0 0 8px;color:var(--ink);font-size:12px}
.scope-review-source-notes dl{display:grid;gap:8px;margin:0}
.scope-review-source-notes dl>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:8px}
.scope-review-source-notes dd{margin:0;color:var(--ink);white-space:pre-wrap}
.workbook-grid .scope-review-target>td{outline:2px solid var(--o);outline-offset:-2px}
@media(max-width:760px){.scope-review-head{display:block}.scope-review-item summary{grid-template-columns:80px 1fr}.scope-review-where,.scope-review-severity{text-align:left}}
.workbook-grid .scope-add-row [data-scope-add-error]{color:var(--danger);font-size:12px}
.scope-table-layout{display:flex;align-items:flex-start;gap:20px;min-width:0}
.scope-table-layout>.workbook-grid{flex:1 1 auto;min-width:0}
.scope-bidder-action{flex:0 0 auto;padding:12px 4px}
.scope-bidder-action button{min-height:36px;border:0;background:transparent;color:var(--mid);font:600 13px Inter,sans-serif;white-space:nowrap;padding:4px 8px;cursor:pointer}
.scope-bidder-action button:hover,.scope-bidder-action button:focus-visible{color:var(--ink)}
@media(max-width:760px){.scope-table-layout{gap:8px}.scope-bidder-action{padding:8px 0}.scope-bidder-action button{padding:4px}}
.workbook-grid table[data-sheet-grid="scope"] th.package-line-leaf.bid-select-divider .column-resizer{width:2px;right:0}
.workbook-grid table[data-sheet-grid="scope"] th.package-line-leaf.bid-select-divider .column-resizer:is(:hover,:focus-visible){width:10px}
.workbook-grid table[data-sheet-grid="scope"] tr>:last-child{border-right:2px solid var(--edge)}
.workbook-grid .package-line-heading{padding:8px 12px;text-align:center;vertical-align:top}
.workbook-grid .package-line-heading small{display:block;color:var(--mid);font-size:12px;font-weight:400;line-height:1.25;white-space:normal;overflow:visible;overflow-wrap:anywhere}
.workbook-grid .package-line-heading .bidder-company{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.workbook-grid :is(.suggested-line-heading,.suggested-line-cell,.suggested-line-leaf){background:var(--bg2);border-top:1px dashed var(--line2);border-bottom:1px dashed var(--line2)}
.workbook-grid .suggested-line-heading{color:var(--mid)}
.workbook-grid table[data-line-suggestions]{--thead-1:112px}
.workbook-grid table[data-line-packages]{--thead-1:64px}
.workbook-grid table[data-line-suggestions] thead tr:first-child>th{height:112px}
.workbook-grid table[data-line-packages] thead tr:first-child>th{height:64px}
.workbook-grid .suggested-line-heading{padding:8px 12px;text-align:center;vertical-align:top;white-space:normal}
.workbook-grid .suggested-line-heading :is(.scope-suggestion-label,.scope-suggestion-company,small,.scope-suggestion-actions){display:block;line-height:1.25;white-space:normal}
.workbook-grid .suggested-line-heading .scope-suggestion-label{font-size:12px;font-weight:600;text-transform:uppercase}
.workbook-grid .suggested-line-heading .scope-suggestion-company{margin-top:4px;font-size:13px;font-weight:600;color:var(--ink);text-transform:none;letter-spacing:0}
.workbook-grid .suggested-line-heading small{margin-top:4px;font-size:12px;font-weight:400;text-transform:none;letter-spacing:0}
.workbook-grid .suggested-line-heading .scope-suggestion-actions{display:flex;gap:12px;margin-top:4px}
.workbook-grid .suggested-line-heading .scope-suggestion-actions button{min-height:28px;border:0;background:none;color:var(--o);font:600 12px Inter,sans-serif;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.workbook-grid .suggested-line-heading .scope-suggestion-actions button:focus-visible{outline:2px solid var(--o);outline-offset:2px}
.workbook-grid .suggested-line-leaf{color:var(--mid)}
.workbook-grid table[data-sheet-grid="scope"] th.bid-cost-leaf{text-align:right;padding-right:6px}
.workbook-grid table[data-sheet-grid="scope"] th.bid-accept-leaf{text-align:center}
.workbook-grid table[data-sheet-grid="scope"] th.package-line-leaf.bid-select-divider{text-align:center}
.workbook-grid table[data-sheet-grid="scope"] th.suggested-line-leaf.bid-select-divider{text-align:center}
.workbook-grid table[data-sheet-grid="scope"] td.suggested-line-cell.bid-accept-cell{text-align:center}
.workbook-grid table[data-sheet-grid="scope"] .bidder-header{position:relative;justify-content:center;text-align:center;padding-right:18px;padding-left:18px}
.workbook-grid table[data-sheet-grid="scope"] .bidder-header .i{position:absolute;right:0;margin-left:0}
.workbook-grid :is(.bid-line-leaf,.package-line-leaf,.suggested-line-leaf){font-size:12px;font-weight:500;letter-spacing:0;text-transform:none;white-space:nowrap;overflow:hidden;text-overflow:clip;padding:0 6px}
.scope-expanded{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:24px;min-width:0;padding:16px 0 24px;white-space:normal}
.workbook-grid:has(table[data-sheet-grid="scope"]){container-type:inline-size}
.scope-expanded.row-breakdown{position:sticky;left:0;box-sizing:border-box;width:min(100%,100cqw);min-width:0;padding:16px 24px 20px 126px;display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);column-gap:24px}
.row-breakdown{background:var(--sheet)}
.workbook-grid table[data-sheet-grid="scope"] tr.row-facts>td{padding:0;overflow:visible}
.scope-expanded>section{min-width:0}
.scope-expanded h4{margin:0 0 12px;font-size:13px;font-weight:600}
.scope-breakdown-list{list-style:none;margin:0;padding:0}
.scope-breakdown-list li{margin:0 0 12px;font-size:14px;line-height:1.4;overflow-wrap:anywhere}
.scope-breakdown-list small{display:block;margin-top:4px;color:var(--mid);font-size:12px;line-height:1.5}
.scope-breakdown-action,.scope-origin-unresolved{color:var(--o)}
.scope-origin{font-size:11px;font-style:normal;text-transform:capitalize;color:var(--mid)}
.scope-origin-stated{color:var(--ink)}
.scope-breakdown-empty{margin:0;color:var(--mid);font-size:12px}
.scope-manual-remove{display:grid;justify-items:start;gap:6px;margin-top:18px;padding-top:12px;border-top:1px solid var(--line2)}
.scope-manual-remove button{border:0;background:none;color:var(--mid);padding:4px 0;font:inherit;font-size:12px;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.scope-manual-remove button:hover,.scope-manual-remove button:focus-visible{color:var(--danger)}
.scope-manual-remove [role="alert"]{color:var(--danger);font-size:12px}
.scope-excluded{display:grid;gap:6px;padding:12px 16px;border-top:1px solid var(--line2);font-size:12px;color:var(--mid)}
.scope-excluded>div{display:flex;align-items:center;gap:12px;justify-content:space-between}
.scope-excluded>div span{overflow-wrap:anywhere}
.scope-excluded button{border:0;background:none;color:var(--o);font:inherit;white-space:nowrap;text-decoration:underline;cursor:pointer}
.scope-excluded [role=alert]{color:var(--danger)}
.scope-expanded .wb-facts{display:grid;grid-template-columns:1fr;gap:12px;margin:0;width:auto;min-width:0}
.scope-expanded .wb-facts>div{min-width:0}
.scope-expanded .wb-facts dd{margin:4px 0 0;white-space:normal;overflow-wrap:anywhere;font-size:14px}
@media(max-width:760px){.scope-expanded.row-breakdown{grid-template-columns:1fr;padding-left:24px}}
.job-description{margin-top:8px;font-size:12px;line-height:1.5;color:var(--mid)}
.job-description summary{display:flex;gap:6px;align-items:baseline;cursor:pointer;list-style:none}
.job-description summary::-webkit-details-marker{display:none}
.job-description summary::before{content:"+";flex:none;color:var(--ink);font-weight:700}
.job-description[open] summary::before{content:"−"}
.job-description summary>span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.job-description[open] summary>span{-webkit-line-clamp:1}
.job-description p{margin:6px 0 0;color:var(--ink);overflow-wrap:anywhere}
.job-header-summary .rl.job-header-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;margin:0;padding-left:20px;border-left:1px solid var(--line);font-size:11px;line-height:1.4}
.job-header-summary .rl.job-header-facts .fct{display:block;border:0;padding:0;min-width:0}
.job-header-summary .rl.job-header-facts .fct:first-child{grid-column:1/-1}
.job-header-summary .rl.job-header-facts dt{font-size:10px;line-height:1.3}
.job-header-summary .rl.job-header-facts dd{text-align:left;font-size:11px;overflow-wrap:anywhere}
.job-header-summary-end{padding-left:20px;border-left:1px solid var(--line)}
.job-header-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:6px}
.job-header-summary .job-status{font-size:11px;justify-content:flex-start}
.job-header-summary .job-area summary{font-size:12px}
.ph.job-header-scopes{min-height:64px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:8px}
.job-header-scopes .job-header-identity{display:flex;align-items:center;gap:16px;min-width:0}
.job-header-scopes h1{font-size:20px;line-height:1.2;font-weight:700;white-space:nowrap}
.job-header-scopes .job-context{display:flex;align-items:center;gap:8px;margin:0;font-size:13px;color:var(--mid);white-space:nowrap}
.job-header-scopes .job-header-summary-end{display:block;flex:none;padding:0;border:0}
.job-header-scopes .job-header-controls{flex-wrap:nowrap;margin:0;gap:16px}
.job-header-scopes .job-status{white-space:nowrap}
@media(max-width:1000px){.ph.job-header-scopes{flex-wrap:wrap}.job-header-scopes .job-header-identity{flex-wrap:wrap}.job-header-scopes .job-context{white-space:normal}}
.job-overview-metrics{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin:0;font-variant-numeric:tabular-nums}
.job-overview-metrics>div{min-width:0;display:grid;grid-template-columns:minmax(90px,.9fr) minmax(0,1.1fr);gap:10px;align-items:baseline}
.job-overview-metrics dt{font-size:10px;line-height:1.4;color:var(--mid)}
.job-overview-metrics dd{font-size:15px;font-weight:650;line-height:1.4;margin:2px 0 0;overflow-wrap:anywhere}
.job-overview-metrics dd small{display:block;font-size:10px;font-weight:400;color:var(--mid)}
@media(max-width:1200px){.job-overview-metrics>div{display:block}.job-overview-metrics>div:last-child{grid-column:1/-1}}
.job-overview-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:32px;padding-top:12px}
.job-overview-main,.job-overview-attention{min-width:0}
.job-overview-attention>.sec,.job-overview-main>.sec{margin-top:0}
.job-overview-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.job-overview-section-head h2{margin:0;font-size:14px;font-weight:650}
.job-overview-section-head h2 small{margin-left:8px;font-size:10px;font-weight:400;color:var(--mid)}
.job-overview-section-head>a{font-size:12px;white-space:nowrap}
.job-overview-attention .sech{padding-bottom:12px}
.job-overview-attention .row-due{grid-template-columns:minmax(0,1fr) 16px;gap:4px 10px;padding:12px 0;min-height:0;background:transparent}
.job-overview-attention .row-due>.due{grid-column:1;grid-row:2;justify-self:start;font-size:11px}
.job-overview-attention .row-due>.i{grid-column:2;grid-row:1/3}
.job-overview-attention .ttl-s{font-size:12px;line-height:1.45}
.job-overview-attention .sub{font-size:11px;line-height:1.5}
.job-overview-attention .rows{border-top:0}
.job-overview-progress{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:18px 0;font-size:12px}
.job-overview-progress>strong{font-size:26px;font-variant-numeric:tabular-nums;line-height:1}
.job-overview-progress progress{flex:1;min-width:80px;max-width:180px;height:6px;accent-color:var(--o);border:0;background:var(--line)}
.job-overview-progress progress::-webkit-progress-bar{background:var(--line)}
.job-overview-progress progress::-webkit-progress-value{background:var(--o)}
.job-overview-progress details{flex-basis:100%;font-size:11px;color:var(--mid)}
.job-overview-progress details summary{cursor:pointer;width:fit-content}
.job-overview-progress details p{margin:6px 0;max-width:75ch}
.job-phase-chart{margin-top:16px}
.job-phase-axis{display:flex;justify-content:space-between;margin-left:170px;margin-bottom:8px;font-size:10px;color:var(--mid);font-variant-numeric:tabular-nums}
.job-phase-row{display:grid;grid-template-columns:154px minmax(0,1fr);gap:16px;align-items:center;min-height:50px;border-bottom:1px solid var(--line)}
.job-phase-label{font-size:12px;font-weight:600;overflow-wrap:anywhere}
.job-phase-label small{display:block;font-size:10px;font-weight:400;color:var(--mid);margin-top:3px}
.job-phase-track{display:block;width:100%;height:40px;overflow:visible;background:var(--bg2)}
.job-phase-bar{fill:var(--line2)}
.job-phase-progress{fill:var(--o)}
.job-phase-today{stroke:var(--ink);stroke-width:1;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}
.job-overview-provenance,.job-overview-baseline,.job-overview-chart-key{font-size:11px;color:var(--mid);line-height:1.5;margin:10px 0}
.job-overview-milestones{margin-top:22px}
.job-overview-milestones h3,.job-overview-roadblocks h3{font-size:12px;margin:0 0 10px;font-weight:650}
.job-overview-milestones ul,.job-overview-attention-list{list-style:none;margin:0;padding:0}
.job-overview-milestones li{display:flex;align-items:baseline;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:8px 0;font-size:12px}
.job-overview-milestones time{white-space:nowrap;color:var(--mid);font-size:11px}
.job-overview-roadblocks{margin-top:22px}
.job-overview-attention-list li{display:grid;gap:4px;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}
.job-overview-attention-list li>span,.job-overview-attention-list li>time{font-size:11px;color:var(--mid)}
.job-overview-empty{font-size:12px;line-height:1.6;color:var(--mid);margin:18px 0}
.job-overview-processing{margin-top:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}
.job-overview-processing>summary{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;min-height:44px;cursor:pointer;font-weight:600;list-style:none}
.job-overview-processing>summary::-webkit-details-marker{display:none}
.job-overview-processing>summary::before{content:"+";color:var(--mid)}
.job-overview-processing[open]>summary::before{content:"−"}
.job-overview-processing>summary>span{font-size:11px;font-weight:400;color:var(--mid);margin-left:auto}
.job-overview-processing>.sec{margin-top:12px}
.job-overview-processing .covl{margin-bottom:12px}
@media(max-width:1200px){.ph.job-header-summary{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 20px}.job-header-summary-end{grid-column:1/-1;display:flex;align-items:center;gap:20px;padding-left:0;border-left:0;border-top:1px solid var(--line);padding-top:8px}.job-overview-metrics{flex:1;grid-template-columns:repeat(4,minmax(0,1fr))}.job-header-controls{margin-top:0;flex:none}.job-overview-grid{gap:24px;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr)}}
@media(max-width:800px){.job-overview-grid{grid-template-columns:minmax(0,1fr);gap:24px}.job-header-summary .rl.job-header-facts{padding-left:12px}.job-header-summary-end{display:block}.job-header-controls{margin-top:8px}.job-overview-attention .row-due{padding-block:10px}}
@media(max-width:520px){.ph.job-header-summary{grid-template-columns:minmax(0,1fr);gap:12px}.job-header-summary .rl.job-header-facts{padding:10px 0 0;border-left:0;border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}.job-header-summary-end{grid-column:auto}.job-overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.job-phase-row{grid-template-columns:110px minmax(0,1fr);gap:10px}.job-phase-axis{margin-left:120px}.job-overview-section-head{align-items:center}.job-overview-processing>summary>span{margin-left:20px;width:100%;padding-bottom:8px}.job-description summary{min-height:44px}.job-header-summary .job-area summary{min-height:44px}}
.dev-evidence li{grid-template-columns:90px minmax(0,1fr) auto auto}.dev-evidence li>span:not(.dev-evidence-kind){padding:2px 6px;border:1px solid var(--line2);border-radius:99px;color:var(--mid);font-size:10px;text-transform:capitalize}
@media(max-width:700px){.dev-source-banner{align-items:stretch;flex-direction:column}.dev-source-banner .btn{width:100%}.dev-evidence li{grid-template-columns:72px minmax(0,1fr) auto}.dev-evidence time{grid-column:2/-1}}
.subscription-dates{display:flex;gap:2rem;flex-wrap:wrap;margin:1rem 0}
.subscription-dates dt{font-size:12px;color:var(--mid)}
.subscription-dates dd{margin:4px 0 0;font-variant-numeric:tabular-nums}
.usage-segments{display:flex;width:100%;height:12px;gap:2px;margin-top:10px;overflow:hidden;background:var(--line2)}
.usage-segments>span{flex:1;min-width:0;background:var(--bg2)}
.usage-segments>span.used{background:var(--o)}
.subscription-comparison .current-plan{background:var(--bg2)}
.subscription-comparison td:last-child{white-space:normal;max-width:26rem}
.subscription-cancel{padding-top:1.5rem}
.btn.btn-danger{background:#b4232e;color:#fff;border:1px solid #b4232e}
.btn.btn-danger:hover:not(:disabled){background:#941c25;border-color:#941c25}
.btn.btn-danger:disabled{opacity:.5}
#subscription-cancel-dialog,#invoice-export-dialog{box-sizing:border-box;width:min(620px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;padding:24px;background:var(--bg);color:var(--ink);border:1px solid var(--line2);border-radius:6px}
#invoice-export-dialog select{box-sizing:border-box;width:100%;min-height:38px;padding:8px 32px 8px 10px;background:transparent;color:var(--ink);border:1px solid var(--line2);border-radius:4px}
#invoice-export-dialog select:focus-visible{outline:2px solid var(--o);outline-offset:2px}
#invoice-export-dialog option{background:var(--bg2);color:var(--ink)}
#invoice-export-dialog label{display:block;margin-bottom:6px;color:var(--mid)}
#subscription-cancel-dialog .sech,#invoice-export-dialog .sech{margin-top:0}
#subscription-cancel-dialog p{line-height:1.55;margin:1rem 0}
#invoice-export-dialog form{display:grid;gap:1rem}
#invoice-export-dialog .f{margin:0}
#invoice-export-dialog .btnrow{margin-top:.5rem}
[data-invoice-selected]{accent-color:var(--o);width:16px;height:16px;vertical-align:middle}
.invoice-export-filters{display:grid;grid-template-columns:1fr 1fr;gap:14px;border:0;padding:0;margin:0}
.invoice-export-filters legend{margin-bottom:12px;font-weight:600}
.invoice-export-filters .f:last-child{grid-column:1/-1}
.invoice-table th{vertical-align:middle}
.invoice-table th .sort,.invoice-heading{display:flex;align-items:center;min-height:var(--tap);white-space:nowrap}
.saved-payment{padding:14px 0;border-bottom:1px solid var(--line2)}
.saved-payment p{margin:6px 0}.payment-label{margin-left:12px;color:var(--mid)}
.payment-editor{max-width:760px;margin-top:16px}
.payment-audience{border:0;padding:12px 0;margin:0;display:grid;gap:8px}
.payment-audience legend{font-weight:600}.payment-audience label{display:flex;align-items:center;gap:8px}
.payment-recipients{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;padding:12px 0}
.payment-audience input{accent-color:var(--o)}
@media(max-width:540px){.invoice-export-filters{grid-template-columns:1fr}}
.saved-payments .saved-payment{padding:0;border-bottom:1px solid var(--line2)}
.payment-method-row{display:grid;grid-template-columns:minmax(150px,1.25fr) minmax(150px,1fr) minmax(125px,.8fr) auto;align-items:center;gap:20px;min-height:76px;padding:14px 0;box-sizing:border-box;list-style:none}
.payment-method-row::-webkit-details-marker{display:none}
summary.payment-method-row{cursor:pointer}
.payment-method-row>span:not(.payment-edit-label){display:flex;flex-direction:column;gap:4px;min-width:0;overflow-wrap:anywhere}
.payment-method-row strong{font-size:14px;font-weight:600}
.saved-payments .payment-label,.payment-method-row small{margin:0;color:var(--mid);font-size:12px;line-height:1.45}
.payment-instrument,.payment-access-state{font-size:13px;line-height:1.45}
.payment-edit-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;white-space:nowrap}
.payment-method-details[open] .payment-edit-label>svg{transform:rotate(180deg)}
summary.payment-method-row:hover .payment-edit-label,.payment-add>summary:hover{color:var(--o)}
.payment-method-row:focus-visible,.payment-add>summary:focus-visible,.payment-audience summary:focus-visible{outline:2px solid var(--o);outline-offset:3px}
.settings-shell .saved-payments .payment-editor{max-width:850px;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;margin:4px 0 20px;padding:16px 0 0;border-top:1px solid var(--line2)}
.payment-editor .payment-access-options{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.payment-editor .payment-audience{min-width:0;padding:8px 0 0;gap:8px}
.payment-audience legend{font-size:13px;padding:0;margin-bottom:4px}
.payment-audience label{font-size:13px;line-height:1.5}
.payment-audience input:is([type=radio],[type=checkbox]){width:16px;height:16px;min-height:0;flex:0 0 16px;margin:0;accent-color:var(--o)}
.payment-audience summary{cursor:pointer;font-size:12px;color:var(--mid);padding:4px 0}
.payment-audience .payment-recipients{grid-template-columns:1fr;gap:8px;max-height:220px;overflow:auto;padding:8px 0}
.payment-editor>.hint,.payment-editor-actions{grid-column:1/-1}
.payment-editor>.hint{font-size:12px;max-width:75ch}
.payment-editor-actions{display:flex;justify-content:flex-start}
.payment-add-actions{display:flex;align-items:flex-start;gap:16px;padding-top:10px}
.payment-add{flex:1;min-width:0}
.payment-add>summary{list-style:none;display:flex;align-items:center;min-height:var(--tap);width:fit-content;cursor:pointer;font-size:13px;font-weight:600}
.payment-add>summary::-webkit-details-marker{display:none}
.payment-add-actions>.btn{flex:none}
.saved-payments>.hint{margin-top:12px;font-size:12px;line-height:1.5;max-width:85ch}
@media(max-width:800px){.payment-method-row{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;gap:12px 20px}.payment-access-state{grid-column:1/3;grid-row:2}.saved-payments .payment-method-row>.payment-access-state{flex-direction:row;align-items:baseline;gap:8px}.payment-edit-label{grid-column:3;grid-row:1}.payment-editor .payment-access-options{grid-template-columns:1fr;gap:16px}}
@media(max-width:520px){.payment-method-row{grid-template-columns:minmax(0,1fr) auto;gap:10px}.payment-instrument{grid-column:1;grid-row:2}.payment-access-state{grid-column:1;grid-row:3}.payment-edit-label{grid-column:2}.settings-shell .saved-payments .payment-editor{grid-template-columns:1fr;gap:14px}.payment-add-actions{gap:8px}}
.date-range{position:relative;max-width:100%;font-size:12px}
.date-range>summary{display:flex;align-items:center;gap:8px;min-height:34px;cursor:pointer;list-style:none;border:1px solid var(--line);padding:7px 10px;color:var(--ink);width:fit-content}
.date-range>summary::-webkit-details-marker{display:none}
.date-range>summary svg{flex-shrink:0}
.date-range-popover{position:fixed;z-index:12;top:8px;left:8px;width:326px;box-sizing:border-box;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:auto;overscroll-behavior:contain;padding:12px;background:var(--bg);border:1px solid var(--line);box-shadow:0 12px 30px #0004}
.date-range button{font:inherit;cursor:pointer;color:var(--ink);background:transparent;border:0;border-radius:3px;min-height:0;box-sizing:border-box}
.date-range button:hover{background:var(--bg2)}
.date-range button:focus-visible,.date-range summary:focus-visible{outline:2px solid var(--o);outline-offset:2px}
.date-range-presets{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding-bottom:12px}
.date-range-presets button{padding:7px 5px;text-align:left}
.date-range-endpoints{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}
.date-range-endpoints button{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:8px;border:1px solid var(--line)}
.date-range-endpoints button[aria-pressed=true]{border-color:var(--o)}
.date-range-endpoints small{color:var(--mid);font-size:10px}
.date-range-month{display:grid;grid-template-columns:28px minmax(100px,1fr) 66px 28px;align-items:center;gap:4px;margin-bottom:8px}
.date-range-month select,.date-range-month input{width:100%;min-width:0;min-height:0;height:30px;padding:3px 5px;font-size:12px;background:transparent;border:1px solid var(--line);color:var(--ink)}
.date-range-month button{height:30px;font-size:22px;line-height:1}
.date-range-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.date-range-grid button,.date-range-grid>span{height:32px;display:flex;align-items:center;justify-content:center}
.date-range-grid .date-range-weekday{font-size:10px;color:var(--mid);height:22px}
.date-range-grid button.in-range{background:color-mix(in srgb,var(--o) 15%,transparent)}
.date-range-grid button[aria-pressed=true]{background:var(--o);color:var(--on-o)}
.date-range-grid button[aria-current=date]{box-shadow:inset 0 0 0 1px var(--o)}
.date-range-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.date-range-footer span{font-size:11px;color:var(--mid)}
.date-range-footer button{padding:6px 10px;color:var(--o)}
@media(pointer:coarse){.date-range button,.date-range-month select,.date-range-month input{min-height:44px}}
.department-field{position:relative}
.department-suggestions{position:absolute;top:100%;left:0;right:0;z-index:30;max-height:280px;overflow:auto;background:var(--bg);border:1px solid var(--line);box-shadow:0 6px 18px rgb(0 0 0 / .18);padding:4px}
.department-suggestions[hidden]{display:none}
.department-suggestions button{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:34px;padding:7px 9px;text-align:left;border:0;background:transparent;color:var(--ink);cursor:pointer;font:inherit}
.department-suggestions button:hover,.department-suggestions button[aria-selected="true"]{background:var(--field)}
.department-suggestions small,.department-suggestions p{font-size:11px;color:var(--mid)}
.department-suggestions p{padding:6px 9px;margin:0}
.departments-page .sech{display:flex;align-items:center;justify-content:space-between;gap:16px}
.department-new{margin:8px 0 12px}
.department-new>summary{width:fit-content;list-style:none;cursor:pointer}
.department-new>summary::-webkit-details-marker,.department-item>summary::-webkit-details-marker{display:none}
.department-item{border-bottom:1px solid var(--line2)}
.department-item>summary{display:grid;grid-template-columns:minmax(0,1fr) auto 16px;align-items:center;gap:24px;min-height:58px;padding:10px 0;box-sizing:border-box;list-style:none;cursor:pointer}
.department-item>summary>strong{font-size:14px;font-weight:600;overflow-wrap:anywhere}
.department-counts{display:grid;grid-template-columns:90px 70px;gap:16px;font-size:12px;color:var(--mid);font-variant-numeric:tabular-nums}
.department-item[open]>summary>svg{transform:rotate(180deg)}
.department-item>summary:hover>strong{color:var(--o)}
.department-item>summary:focus-visible,.department-new>summary:focus-visible{outline:2px solid var(--o);outline-offset:3px}
.settings-shell .department-editor{grid-template-columns:1fr;gap:16px;margin:0 0 20px;padding:12px 0 0;max-width:960px}
.department-editor .department-name{max-width:440px}
.department-selections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.department-selection{min-width:0;margin:0;padding:0;border:0}
.department-selection legend{font-size:13px;font-weight:600;margin-bottom:10px;padding:0}
.department-search{display:block}
.department-search input{width:100%;box-sizing:border-box}
.department-choice-list{max-height:264px;overflow:auto;margin-top:8px}
.department-choice{display:flex;align-items:center;gap:10px;min-height:44px;padding:7px 4px;box-sizing:border-box;cursor:pointer}
.department-choice:hover{background:var(--bg2)}
.department-choice[hidden]{display:none}
.department-choice>input[type=checkbox]{width:16px;height:16px;min-height:0;flex:0 0 16px;margin:0;accent-color:var(--o)}
.department-choice>span{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}
.department-choice strong{font-size:13px;line-height:1.45;font-weight:500}
.department-choice small{font-size:12px;line-height:1.4;color:var(--mid)}
.department-editor-note{font-size:12px;line-height:1.5;max-width:75ch}
.department-editor-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px}
.department-editor-actions>p{margin:0}
@media(max-width:640px){.department-selections{grid-template-columns:1fr;gap:20px}.department-item>summary{gap:12px;grid-template-columns:minmax(0,1fr) 16px}.department-counts{grid-column:1;grid-row:2;grid-template-columns:auto auto;justify-content:start;gap:16px}.department-item>summary>svg{grid-column:2;grid-row:1/3}.department-choice-list{max-height:220px}}
/* GCT-543: the scheduling workspace. Header strip, toolbar, a height-bounded three-pane
   workspace (grid · divider · timeline · inspector) sharing one 30px row, then a footer.
   Theme tokens only; no page grounds hard-coded. `.gantt-*` lives in scheduling-timeline.css. */
.schedule{--schedule-row:30px;--schedule-header:44px;min-width:0;max-width:100%}
.schedule [hidden]{display:none!important}
.schedule h4{margin:var(--s4) 0 var(--s2);font-size:12px;font-weight:600;letter-spacing:var(--hub-label-tracking);text-transform:uppercase;color:var(--mid)}
/* Header strip: title · revision · state chip · summary. */
.schedule-head{gap:var(--s2) var(--s3)}
.schedule-summary{font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums;padding:6px 0}
.schedule-chip{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1;background:var(--bg3);color:var(--ink2)}
.schedule-chip[data-schedule-state="saved"]{background:var(--ok-tint);color:var(--ok)}
.schedule-chip[data-schedule-state="dirty"]{background:var(--o-tint);color:var(--o)}
.schedule-chip[data-schedule-state="saving"]{background:var(--o-tint);color:var(--ink)}
.schedule-chip[data-schedule-state="readonly"]{background:var(--bg3);color:var(--ink2)}
.schedule [role="status"]{min-height:20px;margin:var(--s2) 0;font-size:13px;color:var(--mid)}
.schedule [role="status"]:empty{display:none}
.schedule [role="alert"]{margin:var(--s2) 0;padding:var(--s2) var(--s3);border-left:3px solid var(--danger);background:var(--danger-tint);color:var(--ink);font-size:13px}
/* Controls. Dense: 32px, not the 44px page-level tap height, because a scheduler works in rows. */
.schedule input,.schedule select{min-height:32px;padding:4px 8px;border:1px solid var(--edge);border-radius:4px;background:var(--field);color:var(--ink);font:inherit;font-size:13px;max-width:100%}
.schedule input:focus-visible,.schedule select:focus-visible,.schedule button:focus-visible,.schedule summary:focus-visible{outline:2px solid var(--o);outline-offset:2px}
.schedule input[type="checkbox"]{width:15px;height:15px;min-height:0;padding:0;accent-color:var(--o)}
.schedule button{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:0 10px;border:1px solid var(--edge);border-radius:4px;background:var(--bg2);color:var(--ink);font:inherit;font-size:13px;line-height:1.2;cursor:pointer}
.schedule button:hover{background:var(--bg3)}
.schedule button:disabled{opacity:.55;cursor:default}
.schedule button[aria-pressed="true"]{background:var(--bg3);box-shadow:inset 0 -2px var(--o)}
.schedule fieldset{border:0;padding:0;margin:0;min-width:0}
.schedule-legend-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.schedule-fields{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:end;margin:var(--s3) 0}
.schedule-fields label,.schedule-toolbar>label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--mid);min-width:0}
.schedule-fields label input,.schedule-fields label select{color:var(--ink)}
.schedule .schedule-check{flex-direction:row;align-items:center;gap:6px;min-height:32px;color:var(--ink)}
/* Job navigation owns the pinned band; scheduling controls scroll with their workspace. */
.schedule-toolbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:4px 0;background:var(--bg);border-bottom:1px solid var(--line2)}
.schedule-toolbar [data-schedule-search]{flex:1 1 180px;min-width:140px;max-width:260px;margin-left:auto}
.schedule-toolbar button{min-height:44px;min-width:44px;border-color:transparent;background:transparent}
.schedule-toolbar button:not(:disabled):hover{border-color:var(--edge);background:var(--bg3)}
.schedule-toolbar button:focus-visible{border-color:var(--edge)}
.schedule-toolbar [data-schedule-search]{border-color:transparent;border-bottom-color:var(--edge);border-radius:0;background:var(--field)}
.schedule-toolbar [data-schedule-search]:focus-visible{border-color:var(--edge)}
.schedule-zoom{display:inline-flex;gap:0;align-items:end}
.schedule-zoom button{border-radius:0;margin-left:-1px}
.schedule-zoom button:first-child{border-radius:4px 0 0 4px;margin-left:0}
.schedule-zoom button:last-child{border-radius:0 4px 4px 0}
.schedule-menu{position:relative;flex:none}
.schedule-menu>summary{display:flex;align-items:center;gap:6px;list-style:none;cursor:pointer;min-height:44px;min-width:44px;box-sizing:border-box;padding:6px 9px;border:1px solid transparent;border-radius:3px;font-size:13px;background:transparent;white-space:nowrap}
.schedule-menu>summary::-webkit-details-marker{display:none}
.schedule-menu>summary::after{content:"⌄";color:var(--mid);font-size:12px}
.schedule-menu>summary:hover,.schedule-menu>summary:focus-visible,.schedule-menu[open]>summary{border-color:var(--edge);background:var(--bg3)}
.schedule-menu-value{color:var(--mid);font-size:12px}
.schedule-menu-panel{position:absolute;top:calc(100% + 4px);left:0;z-index:8;display:grid;gap:3px;width:280px;max-width:calc(100vw - 48px);max-height:60vh;overflow:auto;box-sizing:border-box;margin:0;padding:8px;border:1px solid var(--edge);border-radius:4px;background:var(--bg);box-shadow:0 6px 20px #0003}
.schedule-menu-panel label{display:flex;flex-direction:column;gap:4px;width:100%;padding:4px 0;font-size:12px;color:var(--mid)}
.schedule-menu-panel label>select,.schedule-menu-panel label>input:not([type="checkbox"]){width:100%;box-sizing:border-box}
.schedule-toolbar input:not([type="checkbox"]),.schedule-toolbar select{min-height:44px}
.schedule-context{margin:6px 0;font-size:12px;color:var(--mid);overflow-wrap:anywhere}
.schedule-menu-panel button{justify-content:flex-start}
.schedule-menu-panel p{margin:4px;font-size:12px;color:var(--mid);line-height:1.5}
.schedule-menu-section{display:grid;gap:3px;border-bottom:1px solid var(--line2);padding-bottom:6px;margin-bottom:3px}
.schedule-menu-caption{font-size:12px;color:var(--mid);padding-top:6px}
.schedule-menu-actions{display:flex;gap:4px}
.schedule-menu .schedule-check{min-height:44px;padding:0}
/* Workspace: grid pane width is state, applied through the CSSOM as --schedule-grid-width. */
.schedule-workspace{display:grid;grid-template-columns:var(--schedule-grid-width,680px) 6px minmax(0,1fr) auto;height:clamp(400px,calc(100vh - 350px),1100px);min-width:0;border:1px solid var(--line2);background:var(--bg2)}
.schedule-grid{overflow:auto;scrollbar-width:none;min-width:0;border-right:1px solid var(--line2)}
.schedule-grid::-webkit-scrollbar{display:none}
.schedule-grid{scrollbar-width:thin}
.schedule-grid::-webkit-scrollbar{display:block;height:10px;width:10px}
.schedule-grid-table th[draggable="true"]{cursor:grab}
.schedule-grid-table td.cell-selected{background:var(--o-tint);box-shadow:inset 0 0 0 1px var(--o)}
.schedule-grid-table td.cell-cut{outline:1px dashed var(--o);outline-offset:-2px}
.schedule-grid-table td:focus-visible,.schedule-grid-table th:focus-visible{outline:2px solid var(--o);outline-offset:-2px}
.schedule-column-resize{position:absolute;right:0;top:0;width:7px;height:100%;cursor:col-resize;touch-action:none}
.schedule-column-resize:hover,.schedule-column-resize:focus-visible{background:var(--o)}
.schedule-columns-menu{max-height:420px;overflow:auto;width:340px}
.schedule-column-choice{display:flex;align-items:center;gap:3px}
.schedule-column-choice .schedule-check{flex:1;min-width:0;white-space:normal}
.schedule-column-choice button{min-width:26px;padding:0 4px}
.schedule-outline-indent{display:inline-block;flex:none;height:1px}
.schedule-grid-table .col-title{display:flex;align-items:center}
.schedule-grid-table .col-title input{flex:1;min-width:0}
.schedule-grid-table .schedule-outline-toggle{width:20px;height:24px;min-height:0;flex:none;padding:0;border:0;background:transparent}
.schedule-summary-row td{font-weight:600;background:var(--bg3)}
.schedule-summary-row input{font-weight:600}
.schedule-sheet-only{grid-template-columns:minmax(0,1fr) auto}
.schedule-sheet-only>.schedule-divider,.schedule-sheet-only>.schedule-chart{display:none}
.schedule-conflicts p{margin:4px 0;font-size:12px}
.schedule-grid-table tbody td input,.schedule-grid-table tbody td select{width:100%;min-width:0;height:26px;min-height:0;padding:0 4px;border:1px solid transparent;background:transparent;font-size:12px}
.schedule-grid-table tbody td input:focus,.schedule-grid-table tbody td select:focus{background:var(--field);border-color:var(--o)}
.schedule-grid-table .col-num{position:sticky;left:0;z-index:1;background:var(--bg2)}
.schedule-grid-table .col-title:has([data-calendar-task]){padding-right:28px}
.schedule-grid-table .col-title [data-calendar-task]{position:absolute;right:2px;top:3px;width:22px;min-height:24px;padding:0;font-size:0}
.schedule-grid-table .col-title [data-calendar-task]::after{content:"↗";font-size:14px}
.schedule-grid-table .col-title [data-calendar-task]:focus-visible{outline:2px solid var(--o)}
.schedule-import-dialog{max-width:520px;padding:24px;border:1px solid var(--edge);background:var(--bg);color:var(--ink);border-radius:6px}
.schedule-import-dialog::backdrop{background:#0009}
.schedule-import-dialog form{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}
.schedule-import-dialog h2{font-size:20px}
.schedule-grid-table{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed;font-size:12.5px}
.schedule-grid-table thead th{position:sticky;top:0;z-index:2;height:var(--schedule-header);box-sizing:border-box;padding:0 6px;background:var(--bg);color:var(--mid);font-size:11px;font-weight:600;letter-spacing:var(--hub-label-tracking);text-transform:uppercase;text-align:left;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--line2)}
.schedule-grid-table tbody tr{height:var(--schedule-row)}
.schedule-grid-table tbody td{height:var(--schedule-row);box-sizing:border-box;padding:0 6px;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--line);line-height:1.2}
.schedule-grid-table .col-num{width:48px;text-align:right}
.schedule-grid-table .col-dur{width:48px}
.schedule-grid-table .col-start,.schedule-grid-table .col-finish{width:96px;font-size:12px;font-variant-numeric:tabular-nums}
.schedule-grid-table .col-pred{width:84px}
.schedule-grid-table .col-float{width:46px;font-variant-numeric:tabular-nums}
.schedule-grid-table .col-company{width:120px}
.schedule-grid-table .col-week{width:110px}
.schedule-grid-table .col-baseline{width:110px;font-variant-numeric:tabular-nums}
.schedule-grid-table .col-title{position:relative}
/* Grid cell inputs: borderless until hovered or focused, so the grid reads as data, not as a form. */
.schedule-grid-table tbody input{width:100%;min-height:0;height:26px;padding:0 5px;border:1px solid transparent;border-radius:3px;background:transparent;font-size:12.5px}
.schedule-grid-table tbody input:hover{border-color:var(--line2)}
.schedule-grid-table tbody input:focus{border-color:var(--o);background:var(--field);outline:none}
.schedule-grid-table tbody input:disabled{color:var(--ink);opacity:1}
.schedule-grid-table .col-num button{width:100%;height:26px;min-height:0;padding:0 1px;border:0;border-radius:3px;background:transparent;color:var(--mid);font-size:11.5px;font-variant-numeric:tabular-nums;justify-content:flex-end}
.schedule-grid-table .col-num button:hover{background:var(--bg3);color:var(--ink)}
.schedule-grid-table .col-num button:focus-visible{outline-offset:-2px}
.schedule-grid-table .col-company button{min-height:0;height:24px;padding:0 6px;font-size:12px;vertical-align:middle}
.schedule-flag{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--o-tint);color:var(--o);font-size:11px;font-weight:700;pointer-events:auto}
.schedule-grid-table .col-title input{padding-right:24px}
/* Row states. Selection is the accent tint; the critical path is the danger colour on the number rail. */
.schedule-row:hover td{background:var(--bg3)}
.schedule-row.pred td,.schedule-row.succ td{background:var(--bg3)}
.schedule-row.pred .col-num,.schedule-row.succ .col-num{box-shadow:inset 3px 0 var(--o)}
.schedule-row.selected td{background:var(--o-tint)}
.schedule-row.selected .col-num button{color:var(--o);font-weight:700}
.schedule-row.critical .col-num{box-shadow:inset 3px 0 var(--danger)}
.schedule-row.critical .col-float span{color:var(--danger);font-weight:600}
.schedule-row.milestone .col-num button::after{content:"◆";margin-left:4px;font-size:9px;color:var(--ink)}
.schedule-phase-row td{background:var(--bg3);color:var(--ink);font-weight:600;font-size:12px;border-bottom:1px solid var(--line2)}
.schedule-phase-row .meta{margin-left:var(--s3);font-weight:400}
.schedule-empty-row td{color:var(--mid);white-space:normal;height:auto;padding:var(--s3) var(--s2)}
/* Divider. */
.schedule-divider{cursor:col-resize;background:var(--line);touch-action:none}
.schedule-divider:hover,.schedule-divider:focus-visible{background:var(--o);outline:none}
/* Timeline pane: header sticks while the body scrolls both ways; vertical scroll is synced with the grid. */
.schedule-chart{position:relative;overflow:auto;min-width:0;background:var(--bg2)}
.schedule-chart-header{position:sticky;top:0;z-index:1;height:var(--schedule-header);background:var(--bg);border-bottom:1px solid var(--line2);width:max-content;min-width:100%}
.schedule-chart-body{width:max-content;min-width:100%}
.schedule-chart svg{display:block}
/* Inspector: one selected activity in full. */
.schedule-inspector{width:300px;overflow:auto;padding:10px 12px;border-left:1px solid var(--line2);background:var(--bg2);font-size:13px}
.schedule-inspector-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s2)}
.schedule-inspector-head h3{min-width:0;overflow-wrap:anywhere;font-size:14px}
.schedule-inspector-head button,.schedule-date-reasons button,.schedule-date-reasons>summary{min-height:44px}
.schedule-date-reasons>summary{display:flex;align-items:center}
.schedule-date-reasons p{margin:8px 0;line-height:1.5}
.schedule-date-reasons ul{padding-left:18px;margin:8px 0}
.schedule-date-reasons li{margin:6px 0}
.schedule-date-reasons li button{max-width:100%;border-color:transparent;background:transparent;padding:4px 0;text-align:left;text-decoration:underline}
.schedule-date-reasons li span{display:block;color:var(--mid);font-size:12px}
.schedule-inspector .schedule-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin:8px 0}
.schedule-inspector .schedule-fields label{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:center;gap:8px}
.schedule-inspector .schedule-fields .schedule-check{display:flex}
.schedule-inspector .schedule-fields input,.schedule-inspector .schedule-fields select{width:100%}
.schedule-computed{margin:8px 0;font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums}
.schedule-computed>div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:8px;padding:2px 0}
.schedule-computed dt{color:var(--mid)}
.schedule-computed dd{margin:0}
.schedule-inspector-extra{border-top:1px solid var(--line);margin-top:8px}
.schedule-inspector-extra>summary{cursor:pointer;padding:8px 0;font-size:12px;font-weight:600}
.schedule-computed [data-computed="critical"]{font-weight:600}
.schedule-inspector .hint{font-size:12px}
.schedule-dependency{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);padding:var(--s2) 0;border-bottom:1px solid var(--line)}
.schedule-dependency>span{flex:1 1 100%;font-weight:500}
.schedule-dependency label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--mid)}
.schedule-dependency input{width:64px}
.schedule-link{display:flex;gap:var(--s2);margin-top:var(--s2)}
.schedule-link select{flex:1 1 auto;min-width:0}
.schedule-successors{list-style:none;margin:0;padding:0;display:grid;gap:var(--s1)}
.schedule-successors button{width:100%;justify-content:flex-start;text-align:left}
.schedule-subrecord{padding:var(--s2);border:1px solid var(--line);border-radius:4px}
.schedule-danger{border-color:var(--danger);color:var(--danger)}
.schedule-danger:hover{background:var(--danger-tint)}
/* Footer: calendar, legend, hint, save. */
.schedule-footer{display:grid;gap:6px;padding:0 0 var(--s3)}
.schedule-footer>.schedule-summary{order:-2}
.schedule-footer>.schedule-save{order:-1}
.schedule-footer details>summary,.schedule-history>summary{cursor:pointer;min-height:32px;display:flex;align-items:center;font-weight:600;font-size:13px}
.schedule-legend{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);list-style:none;margin:0;padding:0;font-size:12px;color:var(--ink2)}
.schedule-legend li{display:inline-flex;align-items:center;gap:6px}
.schedule-swatch{display:inline-block;width:18px;height:10px;border-radius:2px;background:var(--gantt-bar,var(--ink2))}
.schedule-swatch.is-progress{background:var(--gantt-progress,var(--ink))}
.schedule-swatch.is-critical{background:var(--danger)}
.schedule-swatch.is-milestone{width:10px;height:10px;border-radius:1px;transform:rotate(45deg);background:var(--ink)}
.schedule-swatch.is-baseline{height:4px;background:var(--ink2);opacity:.7}
.schedule-swatch.is-path{height:0;border-top:2px solid var(--o);border-radius:0;background:none}
.schedule-swatch.is-today{width:2px;height:12px;border-radius:0;background:var(--o)}
.schedule-footer .hint{margin:0}
.gantt-summary{fill:var(--ink2);cursor:pointer}
.schedule-planning{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:8px 0}
.schedule-planning label,.schedule-ai>label{display:flex;flex-direction:column;gap:4px}
.schedule-planning p{flex:1;font-size:13px}
.schedule-planning [data-schedule-open-details]{margin-left:auto;min-height:44px;border-color:transparent;background:transparent}
.schedule-planning [data-schedule-open-details]:hover{border-color:var(--edge);background:var(--bg3)}
.schedule-ai{margin-top:16px;padding:12px;border:1px solid var(--line2);border-radius:4px}
.schedule-ai textarea{width:100%;box-sizing:border-box;margin-bottom:8px}
.schedule-proposal{list-style:none;padding:0;max-height:520px;overflow:auto}
.schedule-proposal>li{padding:10px 0;border-bottom:1px solid var(--line2)}
.schedule-proposal p{margin:4px 0;font-size:13px}
.schedule-ai pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow:auto}
.schedule-grid-table [aria-invalid="true"]{outline:1px solid var(--danger);outline-offset:-1px}
/* The save bar sticks to the bottom of the viewport while the workspace is in view, so a reason
   and Save are always one glance away from the chart (critique P8). */
.schedule-save{position:sticky;bottom:0;z-index:4;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 -1px;padding:6px 8px;border:1px solid var(--line2);border-radius:4px;background:var(--bg)}
.schedule-save>input[name="reason"]{flex:1 1 180px;min-width:140px;max-width:420px}
.schedule-save>label{display:flex;flex-direction:column;gap:4px;flex:1 1 240px;max-width:420px;font-size:11.5px;color:var(--mid)}
.schedule-save>label input{color:var(--ink)}
.schedule-capture{flex:0 1 auto;order:3;margin-left:auto}
.schedule-capture[open]{flex:1 1 100%}
.schedule-pending{flex:1 1 100%;order:4;margin:0;font-size:13px}
.schedule-submit{background:var(--ink);border-color:var(--ink);color:var(--bg);font-weight:600}
.schedule-submit:hover{background:var(--ink2);border-color:var(--ink2)}
.schedule-history{margin-top:var(--s3)}
.schedule>button[data-schedule-reload]{margin-top:var(--s2)}
/* Narrow: one column, panes stack, nothing wider than the viewport. */
@media(max-width:700px){
  /* A wrapped toolbar is a third of a phone screen; pinned, it would hide the rows it controls. */
  .schedule-toolbar{align-items:stretch}
  .schedule-menu{position:static}
  .schedule-menu>summary{padding:6px}
  .schedule-menu-value{display:none}
  .schedule-toolbar [data-schedule-search]{max-width:none}
  .schedule-toolbar [data-schedule-search]{order:4;flex:1 1 180px}
  .schedule-zoom button{flex:1 1 auto}
  .schedule-workspace{grid-template-columns:minmax(0,1fr);height:auto}
  .schedule-divider{display:none}
  .schedule-grid{max-height:360px;border-right:0;border-bottom:1px solid var(--line2)}
  /* Chromium keeps display:none columns in a fixed layout; auto layout drops them so the title gets the room. */
  .schedule-grid-table{min-width:0;table-layout:fixed}
  .schedule-grid-table .col-title input{min-width:120px}
  .schedule-chart{height:320px}
  .schedule-inspector{width:auto;max-height:480px;border-left:0;border-top:1px solid var(--line2)}
  .schedule-save>label{max-width:none}
}
.scope-packages{padding-bottom:40px}.scope-package-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:22px}
.scope-package-heading h2{font-size:26px;letter-spacing:-.6px;margin:3px 0 8px}.scope-eyebrow{font-size:10px;letter-spacing:1.8px;color:var(--muted,#a3a3a3);margin:0}
.scope-muted,.scope-footnote{color:var(--muted,#a3a3a3);font-size:12px;line-height:1.6;margin:0}.scope-footnote{margin-top:20px}
.scope-action{border:0;background:none;color:var(--ink);font:inherit;font-size:12px;padding:10px 4px;cursor:pointer;min-height:44px;text-align:left}
.scope-action:disabled{opacity:.5;cursor:wait}.scope-strong{color:var(--o);font-weight:650}
.scope-coming-soon{position:relative;display:inline-flex}
.scope-coming-soon button.scope-action[aria-disabled=true]{color:var(--muted,#a3a3a3);opacity:.6;cursor:not-allowed}
.scope-coming-soon [role=tooltip]{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding:5px 8px;background:var(--bg2);border:1px solid var(--line);color:var(--ink);font-size:11px;white-space:nowrap;visibility:hidden;pointer-events:none;z-index:2}
.scope-coming-soon:hover [role=tooltip],.scope-coming-soon:focus-within [role=tooltip]{visibility:visible}
.scope-heading-actions{display:flex;gap:20px;white-space:nowrap}.scope-heading-actions .scope-action:first-child{color:var(--o)}
.scope-list-tools{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:16px}.scope-summary{display:flex;gap:24px;color:var(--muted,#a3a3a3);font-size:12px}.scope-summary strong{color:var(--ink);font-size:17px;font-weight:550;margin-right:5px}
.scope-list-tools input{width:250px;max-width:100%;font-size:12px;min-height:44px}.scope-list-scroll{overflow-x:auto}
.scope-package-list{width:100%;border-collapse:collapse;min-width:620px}.scope-package-list th,.scope-package-list td{border-bottom:1px solid var(--line,#303030);padding:12px 16px;text-align:left;font-size:12px;vertical-align:middle}.scope-package-list thead th{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.6px;color:var(--muted,#a3a3a3);padding-top:14px;padding-bottom:14px}
.scope-package-list tbody th{width:36%;font-weight:500}.scope-package-list tbody th .scope-action{font-size:14px;font-weight:550;padding:2px 0;min-height:28px}.scope-package-list tbody tr:hover{background:color-mix(in srgb,currentColor 3%,transparent)}.scope-package-list td:last-child{text-align:right}
.scope-package-list small{display:block;font-size:10px;color:var(--muted,#a3a3a3);font-weight:400}.scope-status{display:inline-block;font-size:11px;color:var(--muted,#b4b4b4);padding:4px 0}.scope-status-ready{color:var(--ok)}.scope-attention{color:var(--o);font-size:11px}
.scope-item{border-bottom:1px solid var(--line,#303030)}.scope-item summary{padding:18px 4px;cursor:pointer;display:flex;gap:16px;justify-content:space-between;font-size:13px}.scope-item summary:before{content:'+';color:var(--muted,#a3a3a3)}.scope-item summary span:first-child{flex:1}.scope-item[open] summary:before{content:'−'}.scope-item>div{padding:0 26px 18px;max-width:1000px;font-size:13px;line-height:1.7}
.scope-requirements{margin:22px 0;font-size:12px}.scope-requirements summary{cursor:pointer;color:var(--muted,#aaa);padding:10px 0}.scope-requirements pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit;font-size:12px;line-height:1.65;max-height:360px;overflow:auto;padding:18px;background:color-mix(in srgb,currentColor 4%,transparent);border:1px solid var(--line,#333)}
.scope-bidder{display:flex;align-items:center;gap:18px;border-bottom:1px solid var(--line,#333);padding:20px 0}.scope-company-monogram{width:42px;height:42px;display:grid;place-items:center;background:color-mix(in srgb,currentColor 6%,transparent);color:var(--muted,#aaa);font-size:12px;flex-shrink:0}.scope-bidder-person{flex:1;min-width:0}.scope-bidder h4{font-size:14px;font-weight:550;margin:0 0 6px}.scope-bidder p{font-size:12px;color:var(--muted,#aaa);margin:0;overflow-wrap:anywhere}.scope-bidder small{display:block;font-size:12px}.scope-bidder-actions{display:flex;gap:18px;margin-left:20px}
.scope-request-note{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:32px;padding:22px;border:1px solid var(--line,#333)}.scope-request-note h4{font-size:13px;margin:0 0 8px;font-weight:550}.scope-request-note p{font-size:12px;color:var(--muted,#aaa);margin:0}
.scope-empty{padding:44px 16px;text-align:center;border:1px dashed var(--line,#333);margin-top:20px}.scope-empty h3{font-size:16px;font-weight:500}.scope-empty p{font-size:13px;color:var(--muted,#aaa)}
.scope-dialog{width:min(690px,calc(100vw - 32px));max-height:calc(100vh - 64px);padding:26px;background:var(--bg2);color:var(--ink);border:1px solid var(--line,#444);overflow:auto}.scope-dialog::backdrop{background:#0009}.scope-dialog header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.scope-dialog h2{font-size:21px;margin:0}.scope-dialog h3{font-size:17px}.scope-dialog form{display:block}.scope-field{display:flex;flex-direction:column;gap:8px;font-size:12px;margin:14px 0}.scope-field input,.scope-field textarea{width:100%;font:inherit;padding:10px;min-height:44px;border:1px solid var(--edge);background:var(--bg2);color:inherit;border-radius:0}.scope-field select{width:100%}.scope-field textarea{resize:vertical}.scope-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.scope-dialog-footer{display:flex;justify-content:flex-end;gap:24px;border-top:1px solid var(--line,#333);padding-top:12px;margin-top:20px}.scope-form-error{color:var(--danger);font-size:12px}.scope-feedback{font-size:12px;color:var(--ok)}
.scope-contact-results{max-height:180px;overflow:auto}.scope-contact{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line,#333);background:none;color:inherit;padding:12px 8px;cursor:pointer}.scope-contact[hidden]{display:none}.scope-contact:hover{background:color-mix(in srgb,currentColor 5%,transparent)}.scope-contact strong{font-size:12px}.scope-contact small{display:block;font-size:11px;color:var(--muted,#aaa);margin-top:4px}
.scope-recipient-list{border:1px solid var(--line,#333);padding:12px 16px;margin:20px 0}.scope-recipient-list legend{font-size:12px}.scope-recipient-list label{display:flex;align-items:center;gap:12px;padding:10px 0;font-size:12px}.scope-recipient-list input{width:16px;height:16px;min-height:0}.scope-recipient-list small{display:block;color:var(--muted,#aaa);margin-top:4px}.scope-request-preview dl{display:grid;grid-template-columns:95px 1fr;gap:14px;font-size:12px;line-height:1.6}.scope-request-preview dd{margin:0;overflow-wrap:anywhere}.scope-request-preview dt{color:var(--muted,#aaa)}.scope-message{white-space:pre-wrap;font-size:13px;line-height:1.6}
@media(max-width:700px){.scope-package-heading{align-items:flex-start;flex-direction:column;gap:8px}.scope-heading-actions{gap:20px}.scope-list-tools{align-items:flex-start;flex-direction:column;gap:16px}.scope-summary{gap:18px;flex-wrap:wrap}.scope-package-list th,.scope-package-list td{padding:12px 10px}.scope-package-heading h2{font-size:23px}.scope-bidder{flex-wrap:wrap;gap:12px}.scope-bidder-person{flex-basis:calc(100% - 60px)}.scope-bidder-actions{margin-left:auto}.scope-request-note{flex-direction:column;align-items:flex-start}.scope-form-grid{grid-template-columns:1fr;gap:0}.scope-dialog{padding:20px}.scope-dialog-footer{gap:16px}}

/* DEV-310 Bidding workspace */
.scope-estimate-rail{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-left:auto;min-width:0;white-space:nowrap;color:var(--muted,#a3a3a3);font-size:12px;font-variant-numeric:tabular-nums}
.scope-estimate-rail>button{border:0;background:none;color:inherit;font:inherit;padding:8px 0;cursor:pointer}
.scope-estimate-rail>.scope-attention{color:var(--o)}
.scope-estimate-popover{position:relative;color:var(--ink);font-size:13px}
.scope-estimate-popover summary{cursor:pointer;list-style:none;font-weight:600}
.scope-estimate-popover summary::-webkit-details-marker{display:none}
.scope-estimate-popover summary::after{content:" ▾";font-weight:400}
.scope-estimate-parts{position:absolute;right:0;top:calc(100% + 12px);z-index:35;width:330px;padding:12px 16px;background:var(--bg2);border:1px solid var(--line);box-shadow:0 10px 22px #0005;white-space:normal}
.scope-estimate-parts>div{display:flex;justify-content:space-between;gap:16px;padding:6px 0;font-size:12px}
.scope-estimate-parts strong{font-variant-numeric:tabular-nums;white-space:nowrap}
.scope-estimate-parts .scope-attention{color:var(--o)}
.scope-estimate-total{border-top:1px solid var(--line);margin-top:4px;font-weight:650}
.scope-packages{padding:0 0 40px}
.scope-list-tools{height:40px;margin:0 0 12px;gap:16px}
.scope-filters{display:flex;align-items:center;gap:4px;white-space:nowrap}
.scope-filters button{min-height:36px;padding:6px 9px;border:1px solid transparent;background:none;color:var(--muted,#a3a3a3);font:inherit;font-size:12px;cursor:pointer}
.scope-filters button[aria-pressed=true]{border-color:var(--line);color:var(--ink)}
.scope-filters button:hover{color:var(--ink)}
.scope-list-tools input{width:280px;min-height:36px}
.scope-package-list{min-width:920px;table-layout:fixed}
.scope-package-list th,.scope-package-list td{height:48px;padding:8px 12px;font-size:13px;vertical-align:middle}
.scope-package-list thead th,.scope-bidder-table thead th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#a3a3a3)}
.scope-package-list tbody th{font-weight:400}
.scope-package-list tbody th .scope-action{font-weight:600;min-height:24px;font-size:14px}
.scope-package-list small,.scope-bidder-table small{display:block;font-size:12px;line-height:1.4;font-weight:400;color:var(--muted,#a3a3a3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scope-package-list td:last-child{white-space:nowrap;text-align:right}
.scope-package-list tfoot th,.scope-package-list tfoot td{font-size:12px;border-top:1px solid var(--line);border-bottom:0}
.scope-custom{display:inline-block;margin-left:8px;padding:2px 5px;border:1px solid var(--line);font-size:11px;color:var(--muted,#a3a3a3);vertical-align:middle}
.scope-package-heading{align-items:flex-end;gap:20px;margin:0 0 16px}
.scope-package-heading h2{display:inline-block;margin:0 12px 0 0;font-size:22px;font-weight:600;letter-spacing:-.02em}
.scope-package-heading .scope-muted{display:inline-block;font-size:12px}
.scope-package-heading p{margin:8px 0 0;font-size:13px;font-variant-numeric:tabular-nums}
.scope-heading-actions{align-items:center;gap:20px}
.scope-heading-actions>button[aria-disabled=true]{border:0;background:none;color:var(--muted,#a3a3a3);font:inherit;font-size:12px;cursor:not-allowed}
.scope-export{position:relative;font-size:12px}
.scope-export summary{cursor:pointer;min-height:40px;display:flex;align-items:center}
.scope-export>div{position:absolute;right:0;top:100%;z-index:20;min-width:220px;padding:4px 8px;background:var(--bg2);border:1px solid var(--line)}
.scope-export .scope-action{display:block;width:100%;padding:6px 8px}
.scope-open-items{margin:0 0 16px}
.scope-open-items p{margin:0;padding:6px 0;display:flex;align-items:center;gap:5px;min-height:32px;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scope-open-items .scope-attention{font-size:13px}
.scope-bidder-scroll{overflow-x:auto}
.scope-bidder-table{width:100%;min-width:1204px;table-layout:fixed;border-collapse:collapse}
.scope-bidder-table th,.scope-bidder-table td{position:relative;height:48px;padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:middle;text-align:left;font-size:13px}
.scope-bidder-table thead th{height:40px;background:var(--bg2)}
.scope-bidder-table tbody th{font-weight:400}
.scope-bidder-table tbody th button{font:inherit;font-size:14px;font-weight:600;text-align:left}
.scope-bidder-table button{border:0;background:none;color:var(--ink);padding:2px 0;cursor:pointer}
.scope-bidder-table td>button{display:block;width:100%;text-align:left;font-size:13px}
.scope-bidder-table td>button.scope-money{text-align:right}
.scope-bidder-table select{max-width:100%;font-size:12px}
.scope-bidder-table .scope-money{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.scope-bidder-table input[type=radio],.scope-bidder-table input[type=checkbox]{width:16px;height:16px;accent-color:var(--o)}
.scope-bidder-table .scope-attention{color:var(--o)}
.scope-bidder-table .scope-attention small{color:var(--muted,#a3a3a3)}
.scope-source{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted,#a3a3a3);font-size:12px;margin-top:2px}
.scope-source a{color:inherit;text-decoration:none}
.scope-source a:hover{text-decoration:underline}
.scope-citations{display:inline-block;vertical-align:top;font-size:12px;color:var(--muted,#a3a3a3)}
.scope-citations summary{cursor:pointer}
.scope-citations div{padding:2px 0;white-space:normal}
.scope-citations a{color:inherit}
.scope-bulk-bar{position:sticky;bottom:0;z-index:12;display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-height:48px;padding:4px 12px;background:var(--bg2);border-top:1px solid var(--line);font-size:12px}
.scope-bulk-bar .scope-action{min-height:40px}
.scope-item{display:flex;align-items:center;gap:12px;min-height:48px;padding:8px 0}
.scope-item>button:first-child{border:0;background:none;color:var(--ink);text-align:left;min-width:0;max-width:65%;font:inherit;font-size:14px;cursor:pointer}
.scope-item .scope-source{flex:1}
td:has(>.scope-cost-editor){position:relative}
.scope-cost-editor{position:absolute;inset:0;z-index:8;margin:0;background:var(--bg2);box-shadow:inset 0 0 0 1px var(--o)}
.scope-cost-editor input{box-sizing:border-box;width:100%;height:100%;padding:2px 12px;text-align:right;background:transparent;border:0;outline:0;color:var(--ink);font:inherit;font-size:13px;font-variant-numeric:tabular-nums}
.scope-cost-editor:has([data-package-error]:not(:empty)){box-shadow:inset 0 0 0 1px var(--danger)}
.scope-cost-editor [role=alert]{position:absolute;top:100%;right:0;z-index:9;width:max-content;max-width:230px;padding:5px 8px;border:1px solid var(--danger);background:var(--bg2);font-size:11px;color:var(--danger);white-space:normal}
.scope-cost-editor [role=alert]:empty{display:none}
.scope-cost-editor [data-package-cost-retry]{position:absolute;top:100%;right:0;z-index:10;padding:5px 8px;border:1px solid var(--danger);background:var(--bg2);font-size:11px;text-align:right}
.scope-cost-editor:has([data-package-cost-retry]:not([hidden])) [data-package-error]{right:45px}
.scope-dialog .scope-followup{border:0;border-top:1px solid var(--line);padding:12px 0 0;margin:20px 0 0}
.scope-dialog .scope-followup legend{font-size:13px;font-weight:600}
.scope-add-choice{display:flex;align-items:center;gap:8px;min-height:40px;font-size:13px}
.scope-add-items summary{cursor:pointer;font-size:12px}
.scope-add-items p{font-size:12px;margin:8px 0}
.scope-check{display:flex;align-items:center;gap:8px;font-size:12px;margin:16px 0}
.scope-error,.scope-form-error{color:var(--danger)}
@media(max-width:900px){.scope-list-tools{height:auto;flex-wrap:wrap}.scope-package-heading{align-items:flex-start}.scope-bidder-table{min-width:1040px}}

/* DEV-310 visual review corrections */
.scope-package-list td:last-child{min-width:160px}
.scope-package-list .scope-lowest{display:flex;gap:4px;white-space:nowrap;overflow:hidden}
.scope-package-list .scope-lowest>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scope-bidder-table{min-width:1086px}
.scope-bidder-table tbody tr{border-bottom:1px solid var(--line)}
.scope-bidder-table tbody th,.scope-bidder-table tbody td{border-bottom:0}
.scope-bidder-table td:nth-child(7) button small{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
@media(min-width:1100px){.scope-bidder-scroll{overflow-x:visible}}
.scope-package-heading{display:block;margin-bottom:16px}
.scope-heading-top{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:40px}
.scope-heading-top>div:first-child{display:flex;align-items:center}
.scope-package-heading h2{margin:0;font-size:22px;font-weight:600}
.scope-package-heading h2:focus:not(:focus-visible){outline:none}
.scope-heading-meta{font-size:13px;color:var(--gc-mid,var(--mid,var(--muted,#a3a3a3)));margin-top:0}
.scope-heading-estimate{display:flex;align-items:baseline;gap:8px;margin-top:8px;font-size:13px}
.scope-heading-estimate>span:first-child{font-size:12px;color:var(--muted,#a3a3a3)}
.scope-heading-estimate>strong{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}
.scope-heading-estimate>strong.scope-muted{font-size:13px;font-weight:400}
.scope-heading-estimate .scope-action{min-height:32px;padding:0 4px}
.scope-heading-actions>button[aria-disabled=true]{color:var(--mid,var(--muted,#a3a3a3));min-height:40px}
.scope-source-line{display:flex;align-items:baseline;gap:4px;min-width:0;max-width:100%;font-size:12px;color:var(--muted,#a3a3a3)}
.scope-source-line .scope-source{display:inline-block;flex:0 1 auto;min-width:0;margin:0}
.scope-source-line .scope-citations{display:inline-block;flex:0 0 auto;position:relative;white-space:nowrap}
.scope-source-line .scope-citations summary{list-style:none}
.scope-source-line .scope-citations summary::-webkit-details-marker{display:none}
.scope-source-line .scope-citations[open]{z-index:10}
.scope-source-line .scope-citations[open] div{position:relative;white-space:normal}
.scope-scope-tools{display:flex;justify-content:flex-end;align-items:center;height:40px;margin-bottom:8px}
.scope-scope-tools .scope-action{min-height:40px}
.scope-dialog .scope-add-choice{min-height:32px}
.scope-dialog [data-package-form=add]{display:block}
.scope-dialog [data-package-form=add]>.scope-field{margin:0 0 16px 32px}
.scope-dialog [data-package-form=add]>[data-package-already]{margin:-8px 0 16px 32px}
.scope-dialog [data-package-form=add] button[type=submit]{background:var(--o);color:#fff;border:1px solid var(--o);padding:0 16px;min-height:44px;font-weight:650}
.scope-dialog [data-package-form=add] button[type=submit]:hover{filter:brightness(1.1)}
.scope-dialog [data-package-form=add] input[name=title]:disabled{color:var(--muted,#a3a3a3)}
.scope-empty{border:0}

/* DEV-310 final review */
.scope-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:16px;min-height:56px}
.scope-item>.scope-item-main{min-width:0;max-width:none;padding:0;line-height:normal}
.scope-item-main>button{display:block;max-width:100%;padding:0;border:0;background:none;color:var(--ink);font:inherit;font-size:14px;line-height:1.35;text-align:left;cursor:pointer}
.scope-item-main>button:hover,.scope-item-main>button:focus-visible{text-decoration:underline}
.scope-item-main .scope-source-line{margin-top:4px;font-size:12px}
.scope-item>.scope-action{justify-self:end;white-space:nowrap}
.scope-feedback.scope-error{margin:8px 0 0;font-size:13px;color:var(--danger)}
.scope-feedback.scope-error .scope-attention-icon{margin-right:6px;color:var(--danger)}
.scope-dialog [data-package-form=add] button[type=submit]:disabled{background:none;color:var(--mid,var(--muted,#a3a3a3));border-color:transparent;opacity:1;cursor:not-allowed;filter:none}
.scope-dialog-suggestions{padding:12px 0;border-block:1px solid var(--line2,var(--line));margin:16px 0}
.scope-dialog-suggestions h3{margin:0 0 6px;font-size:13px;font-weight:600}
.scope-dialog-suggestion{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-top:1px solid var(--line)}
.scope-dialog-suggestion strong,.scope-dialog-suggestion small{display:block}
.scope-dialog-suggestion strong{font-size:13px;font-weight:600}
.scope-dialog-suggestion small{font-size:12px;color:var(--mid,var(--muted));line-height:1.4}
.scope-dialog-suggestion .scope-action{white-space:nowrap}
.scope-dialog-suggestion-actions{display:flex;align-items:center;gap:8px;flex:none}
.scope-dialog-suggestion-actions .scope-suggestion-dismiss{color:var(--mid,var(--muted))}
.scope-manual-details{margin:8px 0 0;border-top:1px solid var(--line2,var(--line));padding-top:12px}
.scope-manual-details>summary{font-size:13px;font-weight:600;cursor:pointer;color:var(--ink)}
.scope-manual-details[open]>summary{margin-bottom:12px}
.scope-dialog-footer [data-package-manual-save]:disabled{display:none}
.scope-contact-results:empty{display:none}
.scope-contact-results>p{font-size:12px;margin:8px 0}
.scope-tracking{position:relative;margin:32px 0 24px;padding-top:16px;border-top:1px solid var(--edge);color:var(--ink)}
.scope-tracking-header{position:sticky;top:0;z-index:12;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px;padding:0 0 8px;background:var(--bg2)}
.scope-tracking-header:focus:not(:focus-visible){outline:none}
.scope-tracking-header>[data-tracking-toggle]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-height:40px;padding:0;border:0;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.scope-tracking-header strong{font-size:16px;font-weight:600}
.scope-tracking-header [data-tracking-toggle] span{font-size:13px;color:var(--mid,var(--muted))}
.scope-tracking-scope{display:flex;flex:none;border:1px solid var(--edge,var(--line))}
.scope-tracking-scope button{min-height:34px;padding:4px 10px;border:0;border-right:1px solid var(--edge,var(--line));background:none;color:var(--mid,var(--muted));font:inherit;font-size:12px;cursor:pointer}
.scope-tracking-scope button:last-child{border-right:0}
.scope-tracking-scope button[aria-pressed=true]{background:color-mix(in srgb,var(--accent,var(--o)) 14%,transparent);color:var(--accent,var(--o));font-weight:600}
.scope-tracking-scope button:disabled{opacity:.45;cursor:not-allowed}
.scope-tracking #scope-tracking-body{padding:14px 0 18px}
.scope-tracking #scope-tracking-body[hidden]{display:none}
.scope-tracking .scope-list-tools{height:auto}
.scope-tracking .scope-detail-row>td{padding:16px 16px 20px 40px;text-align:left;white-space:normal}
.scope-tracking .scope-row-expanded>th,.scope-tracking .scope-row-expanded>td{border-bottom:0}
.scope-tracking .scope-package-list tbody th .scope-action[aria-expanded=true]{color:var(--accent,var(--o))}
.scope-tracking .scope-package-list tfoot .scope-money{white-space:nowrap}
.scope-row-actions{display:flex;justify-content:space-between;align-items:center;min-height:40px}
.scope-scope-disclosure{border-top:1px solid var(--line);margin-top:12px}
.scope-scope-disclosure>summary{padding:12px 0;font-size:13px;font-weight:600;cursor:pointer}
.scope-scope-disclosure .scope-item-list{padding:4px 0}
@media(max-width:700px){.scope-tracking-header{align-items:flex-start;flex-direction:column}.scope-tracking #scope-tracking-body{padding:12px 0}.scope-tracking .scope-detail-row>td{padding:16px 16px 20px 40px}}

/* Package interaction refinements */
.scope-package-list{width:100%}
.scope-list-scroll{max-width:100%;overflow-x:auto}
.scope-bidder-table{min-width:1250px}
.scope-bidder-table .scope-response-cell{position:relative}
.scope-response-cell>button{min-height:44px}
.scope-response-cell small{margin-top:2px}
.scope-response-menu{position:fixed;inset:auto;z-index:30;width:280px;margin:0;padding:5px;background:var(--bg2);color:var(--ink);border:1px solid var(--line2,var(--line));box-shadow:0 12px 25px #0004}
.scope-response-menu button{display:block;width:100%;min-height:40px;padding:7px 10px;text-align:left;white-space:normal}
.scope-response-menu button[aria-disabled=true]{color:var(--mid,var(--muted));cursor:not-allowed}
.scope-response-menu button small{display:block;white-space:normal}
.scope-response-menu hr{border:0;border-top:1px solid var(--line2,var(--line));margin:5px 0}
.scope-response-menu [role=group]>span{display:block;padding:5px 10px;color:var(--mid,var(--muted));font-size:11px}
.scope-bidder-table td>button.scope-qualifications{color:var(--mid,var(--muted));font-size:12px}
.scope-qualifications span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2,var(--ink));font-size:12px}
.scope-qualifications span+span{color:var(--mid,var(--muted))}
.scope-bidder-table .scope-use-price,.scope-bidder-table thead th:last-child{text-align:center}
.scope-use-price>button{position:relative;width:56px!important;height:28px;min-width:56px;min-height:28px;margin:auto;padding:0 6px!important;text-align:center!important;color:var(--mid,var(--muted))!important;font-size:12px!important}
.scope-use-price>button::after{content:"";position:absolute;inset:-8px -4px}
.scope-use-price>button{border:1px solid var(--line2,var(--line))!important;background:transparent!important}
.scope-use-price>button[aria-pressed=true]{border-color:var(--o)!important;background:color-mix(in srgb,var(--o) 12%,transparent)!important;color:var(--o)!important}
.scope-use-price>button[aria-disabled=true]{opacity:.55;cursor:not-allowed}
.scope-bidder-table tbody tr.scope-price-selected{box-shadow:inset 2px 0 0 var(--o)}
.scope-will-bid::before{content:"";display:inline-block;width:6px;height:6px;margin-right:6px;background:var(--o);vertical-align:middle}
.scope-invite-split{display:inline-flex;align-items:stretch;height:28px}
.scope-invite-split>button{height:28px;min-height:28px;border:1px solid var(--o);background:transparent;color:var(--o);font-size:12px;font-weight:600}
.scope-invite-split>button:first-child{min-width:72px;padding:0 10px;border-right:0}
.scope-invite-split>button:last-child{width:28px;padding:0;border-left:1px solid var(--o)}
.scope-invite-split>button:hover{background:color-mix(in srgb,var(--o) 12%,transparent)}
.scope-dialog{position:fixed;top:max(32px,8vh);bottom:auto;margin-top:0;margin-bottom:0;max-height:calc(100vh - max(32px,8vh) - 24px)}
.scope-contact-results{max-height:240px;overflow:auto;position:static}
.scope-dialog .scope-manual-details{position:relative}
.scope-invite-banner{padding:10px 12px;border:1px solid var(--line2,var(--line));color:var(--ink2,var(--ink));font-size:12px}
.scope-invite-preview{display:grid;grid-template-columns:70px 1fr;gap:8px 12px;font-size:12px}
.scope-invite-preview dt{color:var(--mid,var(--muted))}.scope-invite-preview dd{margin:0;min-width:0;overflow-wrap:anywhere}
.scope-invite-chip{display:inline-block;padding:5px 8px;border:1px solid var(--line2,var(--line))}
.scope-invite-body{max-height:210px;overflow:auto;padding:12px;border:1px solid var(--line2,var(--line));white-space:pre-wrap;font-size:12px}
.scope-invite-footer{align-items:center;flex-wrap:wrap;gap:12px}
.scope-invite-footer>.scope-action{padding:8px 10px;text-align:center}
.scope-invite-footer>[data-package-close]{margin-right:auto;padding-left:0}
.scope-invite-footer>.scope-invite-primary{border:1px solid var(--o);background:var(--o);color:#fff;font-weight:650}
.scope-invite-footer>[data-package-send-invite][aria-disabled=true]{opacity:.45;cursor:not-allowed}
.scope-suggestion-leaving{animation:scope-suggestion-out 140ms ease-out forwards}
.scope-suggestion-adding{animation:scope-suggestion-add-out 160ms ease-out forwards}
.scope-suggestion-collapsing{overflow:hidden;animation:scope-suggestion-collapse 120ms ease-out forwards}
.scope-suggestion-added{animation:scope-suggestion-added 180ms ease-out,scope-suggestion-tint 1200ms ease-out}
.workbook-grid button[data-package-cell="coverage"]{display:flex;align-items:center;justify-content:center;gap:5px}
.scope-coverage-mark{font-size:15px;line-height:1}
.scope-coverage-caret{font-size:12px;color:var(--mid,var(--muted))}
.scope-coverage-menu{position:fixed;inset:auto;margin:0;z-index:70;width:max-content;min-width:190px;max-width:calc(100vw - 16px);padding:5px;background:var(--bg2);color:var(--ink);border:1px solid var(--line2,var(--line));box-shadow:0 12px 28px #0008}
.scope-coverage-menu button{display:flex;align-items:center;gap:9px;width:100%;min-height:34px;padding:5px 10px;border:0;background:transparent;color:inherit;text-align:left;font:inherit;font-size:12px;cursor:pointer}
.scope-coverage-menu button span{display:inline-grid;place-items:center;width:16px;font-size:15px}
.scope-coverage-menu button:hover,.scope-coverage-menu button:focus-visible{background:var(--bg3)}
.scope-coverage-menu button[aria-checked="true"]{color:var(--o);font-weight:650}
.scope-coverage-menu button:focus-visible{outline:1px solid var(--o);outline-offset:-1px}
.scope-coverage-menu [data-package-error]{margin:5px 8px;color:var(--danger);font-size:11px;max-width:220px}
.scope-coverage-menu [data-package-error]:empty{display:none}
.scope-division-summary{min-width:0;padding:8px 0 28px}
.scope-division-totals{display:flex;align-items:center;flex-wrap:wrap;gap:6px 22px;padding:7px 0 17px;color:var(--mid,var(--muted));font-size:12px}
.scope-division-totals strong{color:var(--ink);font-size:14px;font-weight:650;font-variant-numeric:tabular-nums}
.scope-division-summary button{border:0;background:none;color:var(--o);font:inherit;text-align:left;cursor:pointer;padding:2px 0}
.scope-division-summary button:hover{text-decoration:underline}
.scope-division-summary button:focus-visible{outline:1px solid var(--o);outline-offset:2px}
.scope-division-totals button{color:var(--mid,var(--muted))}
.scope-division-table{width:100%;min-width:1020px;border-collapse:collapse;table-layout:fixed;font-size:12px}
.scope-division-table th,.scope-division-table td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.scope-division-table thead th{color:var(--mid,var(--muted));font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.scope-division-table thead th:nth-child(1){width:19%}.scope-division-table thead th:nth-child(2){width:9%}.scope-division-table thead th:nth-child(3){width:14%}.scope-division-table thead th:nth-child(4){width:18%}.scope-division-table thead th:nth-child(5){width:18%}.scope-division-table thead th:nth-child(6){width:12%}.scope-division-table thead th:nth-child(7){width:10%}
.scope-division-table tbody th{font-weight:600}.scope-division-table small{display:block;color:var(--mid,var(--muted));font-size:11px;line-height:1.45;font-weight:400}
.scope-division-table td:nth-child(3) strong{display:block;font-weight:600;color:var(--ink)}
.scope-division-table td:nth-child(2),.scope-division-table td:nth-child(4),.scope-division-table td:nth-child(5){font-variant-numeric:tabular-nums}
.scope-division-table td:last-child button{display:block}
.scope-division-table td:nth-child(6) button{display:block}
.scope-division-unplaced{margin:12px 0 0;color:var(--mid,var(--muted));font-size:12px}
.scope-summary-source-notes{margin-top:20px;border-top:1px solid var(--line);color:var(--mid,var(--muted));font-size:12px}
.scope-summary-source-notes summary{width:max-content;padding:12px 0;cursor:pointer;color:var(--ink)}
.scope-summary-source-notes section{padding:8px 0 12px}
.scope-summary-source-notes h4{margin:0 0 8px;color:var(--ink);font-size:12px;font-weight:600}
.scope-summary-source-notes dl{display:grid;grid-template-columns:130px minmax(0,1fr);gap:5px 12px;margin:0;padding:10px 0;border-top:1px solid var(--line)}
.scope-summary-source-notes dt{color:var(--mid,var(--muted))}.scope-summary-source-notes dd{margin:0;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:600px){.scope-summary-source-notes dl{grid-template-columns:1fr;gap:3px}.scope-summary-source-notes dt:not(:first-child){margin-top:8px}}
@keyframes scope-suggestion-out{to{opacity:0;transform:translateX(8px)}}
@keyframes scope-suggestion-add-out{to{opacity:0}}
@keyframes scope-suggestion-collapse{to{height:0;padding-block:0;border:0;opacity:0}}
@keyframes scope-suggestion-added{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@keyframes scope-suggestion-tint{from{background:color-mix(in srgb,var(--o) 10%,transparent)}to{background:transparent}}
@media(prefers-reduced-motion:reduce){.scope-suggestion-leaving,.scope-suggestion-adding,.scope-suggestion-collapsing,.scope-suggestion-added{animation:none!important}}
/* GCT-543: Gantt timeline. Every color is a theme token or a --gantt-* custom property; markup carries classes only. */
.schedule{--gantt-bar:#3f7fc4;--gantt-progress:#8fbdf0;--gantt-nonworking:var(--bg);--gantt-nonworking-opacity:.55}
html[data-theme="light"] .schedule{--gantt-bar:#2b5f9e;--gantt-progress:#16437a;--gantt-nonworking:var(--line);--gantt-nonworking-opacity:.35}
.gantt-header,.gantt-body{display:block;font-family:inherit;user-select:none}
.gantt-header{background:var(--bg2)}
.gantt-header text,.gantt-label{pointer-events:none}
.gantt-tick{stroke:var(--line);stroke-width:1}
.gantt-tier1{fill:var(--ink);font-size:12px;font-weight:600}
.gantt-tier2{fill:var(--ink2);font-size:11px}
.gantt-today-col{fill:var(--o-tint)}
.gantt-nonworking{fill:var(--gantt-nonworking);opacity:var(--gantt-nonworking-opacity)}
.gantt-rowline{stroke:var(--line);stroke-width:1}
.gantt-phase-band{fill:var(--bg3)}
.gantt-summary{fill:var(--ink)}
.gantt-today{stroke:var(--o);stroke-width:1.5}
.gantt-link{fill:none;stroke:var(--ink2);stroke-width:1.25;pointer-events:none}
.gantt-link.critical{stroke:var(--danger)}
.gantt-link.path{stroke:var(--o);stroke-width:2}
.gantt-arrowhead{fill:var(--ink2)}
.gantt-arrowhead.critical{fill:var(--danger)}
.gantt-arrowhead.path{fill:var(--o)}
.gantt-row-hit{fill:transparent;cursor:pointer}
.gantt-row.selected .gantt-row-hit{fill:var(--o-tint)}
.gantt-baseline{fill:var(--ink2);opacity:.5;pointer-events:none}
.gantt-bar{fill:var(--gantt-bar)}
.gantt-progress{fill:var(--gantt-progress);pointer-events:none}
.gantt-milestone{fill:var(--ink)}
.gantt-row.critical .gantt-bar,.gantt-row.critical .gantt-milestone{fill:var(--danger)}
.gantt-row.critical .gantt-progress{fill:var(--bg);opacity:.35}
.gantt-row.selected .gantt-bar,.gantt-row.selected .gantt-milestone{stroke:var(--o);stroke-width:2}
.gantt-row.pred .gantt-bar,.gantt-row.pred .gantt-milestone{stroke:var(--o);stroke-width:1.5;stroke-dasharray:3 2}
.gantt-row.succ .gantt-bar,.gantt-row.succ .gantt-milestone{stroke:var(--o);stroke-width:1.5}
.gantt-label{fill:var(--ink2);font-size:11px}
.gantt-row.phase .gantt-label{fill:var(--ink);font-weight:600}
.gantt-handle{fill:transparent;cursor:ew-resize}
.gantt-body.editable .gantt-bar[data-bar],.gantt-body.editable .gantt-milestone[data-bar]{cursor:grab}
.access-mode-options{padding:0;border:0;gap:5px}
.access-mode-options label{position:relative;min-height:30px;padding:5px 13px;background:var(--bg2);color:var(--mid);font-size:12px;border:0;box-shadow:none}
.access-mode-options label:has(input:checked){background:var(--o);color:var(--on-o);box-shadow:none}
.access-mode-options label:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:3px}
.access-mode-options input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.access-mode-options label:has(input:disabled){opacity:.5;cursor:default}
.access-default legend{margin-bottom:8px}
.access-default-row{margin:14px 0 24px;gap:18px}
.access-matrix-scroll{overflow-x:auto}
.access-matrix{width:100%;border-collapse:collapse;font-size:12px}
.access-matrix th,.access-matrix td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.access-matrix th{text-align:left;font-weight:500}
.access-matrix thead th:not(:first-child),.access-matrix td{text-align:center;width:110px}
.access-matrix .sub{font-size:11px}
.access-matrix-choice{display:inline-flex;align-items:center;justify-content:center;min-width:30px;min-height:28px}
.access-matrix-choice input{width:15px;height:15px;accent-color:var(--o);margin:0}
.access-templates .access-template summary{padding:10px 0;min-height:36px}
.access-templates form{padding:10px 0}
.access-templates .f{max-width:340px;margin:0 0 10px}
.access-job-list{display:grid;gap:0;margin:12px 0 22px}
.access-job-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}
.access-job-row>span{flex:1;min-width:0}
.access-job-row[hidden]{display:none}
.access-job-row form,.access-matrix form{margin:0;display:inline-flex;align-items:center;gap:5px}
.access-job-row .btn,.access-matrix .btn{min-height:30px;padding:4px 8px;font-size:12px}
.access-permission-cell{display:flex;align-items:center;justify-content:center;gap:4px}
.access-permission-cell .btn[aria-pressed=true]{background:var(--o);color:var(--on-o)}
.access-job-search{max-width:400px}
.access-template-picks{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}
.access-template-picks label{position:relative;display:flex;align-items:center;gap:6px;font-size:12px;padding:6px 9px;background:var(--bg2)}
.access-template-picks input{accent-color:var(--o);width:14px;height:14px;margin:0}
@media(max-width:600px){.access-matrix th,.access-matrix td{padding:7px 5px}.access-job-row{gap:6px}}
.notice-channel{padding:14px 0;border-bottom:1px solid var(--line2)}
.notice-channel:first-child{padding-top:0}
.notice-channel-switch{display:flex;align-items:center;justify-content:space-between;gap:20px;cursor:pointer}
.notice-channel-switch strong{display:block;font-size:13px;font-weight:600}
.notice-channel-switch small{display:block;color:var(--mid);font-size:12px;margin-top:4px}
.notice-channel-switch input[role="switch"]{appearance:none;display:block;flex:none;width:32px;height:18px;min-height:0;border:0;border-radius:12px;background:var(--mid);padding:3px;cursor:pointer;box-shadow:none}
.notice-channel-switch input[role="switch"]::before{content:"";position:absolute;left:3px;top:3px;display:block;width:12px;height:12px;border-radius:50%;background:var(--bg);box-shadow:none;transform:translateX(0)}
.notice-channel-switch input[role="switch"]::after{content:none}
.notice-channel-switch input[role="switch"]:checked{background:var(--o)}
.notice-channel-switch input[role="switch"]:checked::before{transform:translateX(14px)}
.notice-channel-switch input[role="switch"]:focus-visible{outline:2px solid var(--o);outline-offset:3px}
.notice-channel-switch input[role="switch"]:disabled{opacity:.4;cursor:default}
.notice-options{margin-top:10px}
.notice-options summary{width:fit-content;cursor:pointer;font-size:12px;color:var(--mid);padding:4px 0}
.notice-categories{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px 20px;margin-top:12px}
.notice-category{display:flex;align-items:center;gap:8px;font-size:12px;cursor:pointer;min-height:26px}
.notice-category input{margin:0;flex:none;width:15px;height:15px;min-height:0;accent-color:var(--o)}
/* DEV-352: Contacts › External "Import subcontractors" review (DEV-344 prototype, "Check the columns"). */
.si{margin:var(--s3) 0 var(--s4);padding:var(--s3) 0 var(--s3);border-top:1px solid var(--line2);border-bottom:1px solid var(--line2);max-width:980px}
.si-h{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);flex-wrap:wrap}
.si-h h2{margin:0;font-size:20px}
.si-h h2:focus{outline:none}
.si-lede{margin:6px 0 var(--s2);color:var(--mid);max-width:72ch}
.si-notes{margin:0 0 var(--s2);padding:10px 14px;list-style:none;background:var(--bg2);border-radius:6px;font-size:13px;line-height:1.5}
.si-notes li+li{margin-top:4px}
.si-sheets{display:grid;gap:6px;margin:0 0 var(--s2)}
.si-sheet{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);flex-wrap:wrap;min-height:44px;padding:4px 0;border-bottom:1px solid var(--line2)}
.si-check{display:flex;align-items:center;gap:10px;cursor:pointer}
.si-check input{width:16px;height:16px;min-height:0;margin:0;accent-color:var(--o)}
.si-field{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--mid)}
.si-field select{max-width:340px}
.si-map{margin:var(--s2) 0}
.si-map h3,.si-trades h3,.si-lab{margin:var(--s3) 0 8px;font-size:14px}
.si-mrow{display:grid;grid-template-columns:140px minmax(0,300px) minmax(0,1fr);align-items:center;gap:12px;min-height:44px;border-bottom:1px solid var(--line2)}
.si-mk{font-size:13px;font-weight:600}
.si-mk i{color:var(--o);font-style:normal;margin-left:2px}
.si-mrow select,.si-trades select{width:100%}
.si-mst{display:flex;align-items:center;gap:6px;min-width:0;font-size:13px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.si-mst>span:last-child{overflow:hidden;text-overflow:ellipsis}
.si-ok{color:var(--ok);font-weight:700}
.si-tbl{overflow-x:auto}
.si-tbl table{width:100%;border-collapse:collapse;font-size:13px}
.si-tbl th,.si-tbl td{text-align:left;padding:8px 10px 8px 0;border-bottom:1px solid var(--line2);vertical-align:middle}
.si-tbl thead th{font-size:12px;font-weight:600;color:var(--mid)}
.si-trades tbody th{font-weight:500}
.si-trades td:last-child{width:300px}
.si-trades select.si-open{border-color:var(--o)}
.si-more{margin:8px 0 0;font-size:13px;color:var(--mid)}
.si-facts{display:flex;flex-wrap:wrap;gap:8px 20px;margin:var(--s3) 0 var(--s2);padding:0;list-style:none;font-size:13px}
.si-facts li{line-height:1.6}
.si-facts li .btn{margin-left:6px}
.si-status{margin:var(--s2) 0;font-size:13px}
.si-status p{margin:0 0 8px}
.si-bad{color:var(--danger)}
.si-warn{padding:10px 14px;border-left:3px solid var(--o);background:var(--bg2)}
.si-tag{margin-left:6px;font-size:11px;white-space:nowrap}
.si-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:var(--s2)}
@media(max-width:640px){.si-mrow{grid-template-columns:1fr;gap:4px;padding:8px 0}.si-trades td:last-child{width:auto}.si-field{flex-wrap:wrap}}
