




: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:var(--s2);
  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;border-bottom:0;
  margin-bottom:-1px;
  cursor:pointer;
  transition:color var(--t-hover) var(--ease);
}
.tabs [role="tab"]:hover{color:var(--ink)}
.tabs [role="tab"][aria-selected="true"]{
  color:var(--ink);
  background:var(--bg2);
  border-color:var(--edge);
  box-shadow:inset 0 2px 0 var(--o);
  padding-bottom:1px;
}
.tabs [role="tab"] .n{font-size:12.5px;color:var(--mid);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:var(--s2);
  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;border-bottom:0;margin-bottom:-1px}
.sheettabs button:hover{color:var(--ink)}
.sheettabs button[aria-selected="true"]{
  background:var(--sheet);color:var(--ink);
  border-color:var(--edge);
  border-bottom:1px solid var(--sheet);
  position:relative;z-index:1;
}

.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{font-size:11.5px;color:var(--mid);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}
.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{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{padding-top:0}
.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)}
}
@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)}
  /* GCT-466: the Access tables are seven columns wide, so a narrow screen scrolls `.tw` — the
     demo's own answer to a wide table — rather than dropping a column the reader came for. */
  .settings-shell .tw table{min-width:640px}
  .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}
@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}
/* 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}
.menu>summary,.menu .av{border:0}
.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}
@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)}
.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,.upload-notice{padding:var(--s3);background:var(--bg2);border:1px solid var(--edge);line-height:1.5}
.upload-error{color:var(--ink);border-color:var(--o)}
.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-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{flex:0 0 auto;white-space:nowrap}
.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-cell-editor textarea{white-space:pre;overflow-wrap:normal;word-break:normal;overflow:auto;scrollbar-width:none}
.workbook-grid .wb-cell-choice{cursor:pointer;text-align:center}
.workbook-grid .wb-cell-choice:disabled{cursor:default;color:var(--mid)}
.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-toolbar .btn,.workbook-toolbar .search{min-height:var(--tap)}
.workbook-toolbar select{min-height:var(--tap)}
.workbook-toolbar .end{display:flex;gap:var(--s2);margin-left:auto}
/* THE TOOLBAR DISCLOSURES. The Hub emits <div class="fp"> for the Filter and
   Export panels and nothing styled it, so an open panel rendered as inline
   content and shoved the rest of the strip sideways. Give it the contract's
   overlay treatment. Export sits in .end, at the far right of the strip, so
   its panel is anchored to the toolbar's RIGHT edge - anchored left it opened
   past the viewport on a narrow window, which is the exact failure app.css
   records against .fpanel-p. .tbar .fpanel is position:static in the contract,
   so both panels resolve against the toolbar and can never be wider than it.
   No files are generated by Export; this is the setup step only (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-filter .fp{left:0;right:auto}
@media(max-width:520px){
  .workbook-toolbar .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>.tw,.sheet-surface .workbook-section>.tw>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}

/* ==========================================================================
   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}
.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}
.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}}
.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, sticky 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)}
/* Sticky toolbar. Sticks under the masthead, not at 0: at 0 it would slide beneath the Hub's own
   sticky masthead and vanish the moment it mattered. */
.schedule-toolbar{position:sticky;top:var(--top-h,0px);z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;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>select{flex:0 1 170px;min-width:120px}
.schedule-toolbar>[data-schedule-anchor]{flex:0 0 142px;width:142px;min-width:0}
.schedule-toolbar>label>select{min-width:120px}
.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{cursor:pointer;min-height:32px;box-sizing:border-box;padding:6px 10px;border:1px solid var(--edge);border-radius:4px;font-size:13px;background:var(--bg2);white-space:nowrap}
.schedule-menu[open]>summary{background:var(--bg3)}
.schedule-menu-panel{position:absolute;top:calc(100% + 4px);right:0;z-index:8;display:grid;gap:6px;width:240px;max-width:calc(100vw - 48px);margin:0;padding:10px;border:1px solid var(--edge);border-radius:4px;background:var(--bg);box-shadow:0 6px 20px #0003}
.schedule-menu-panel label{width:100%}
.schedule-menu-panel button{justify-content:flex-start}
.schedule-menu[data-schedule-disclosure="scale"] .schedule-menu-panel{left:0;right:auto;width:max-content}
/* 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-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 .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}
/* 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;position:static}
  .schedule-toolbar>select{flex:1 1 140px}
  .schedule-toolbar [data-schedule-search]{max-width:none}
  .schedule-toolbar [data-schedule-search]{order:4;flex:1 1 100%}
  .schedule-menu[data-schedule-disclosure="filters"] .schedule-menu-panel{left:0;right:auto}
  .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:auto}
  .schedule-grid-table .col-title input{min-width:120px}
  .schedule-grid-table .col-pred,.schedule-grid-table .col-float,.schedule-grid-table .col-company,.schedule-grid-table .col-start{display:none}
  .schedule-grid-table .col-title{width:auto}
  .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}
}
/* 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)}
