/* ══ WEEKLY PAGES — Monday Kickoff, Friday Roundup, the roundup index and the weekly template ══
   Moved here from each page's own <style> block on 2026-10-28, byte for byte from kickoff-index.html
   (the newest of the three copies; the template had drifted to older, lower-contrast values).

   WHY IT EXISTS: a page built from the template without its own copy of this block rendered with no box,
   no rail and no decision frame, and every gate passed. The rules now live here once, and
   check_layout.py asserts they are applied.

   WHY IT IS NOT IN roundup.css: these are global selectors (.wrap h2, .proj, .tagr, .card, .num). Moved
   into the shared stylesheet they shifted 25 of 41 pages, including closed records. Only weekly pages
   link this file. Link it AFTER roundup.css:
       <link rel="stylesheet" href="/review/roundup-weekly.css?v=1">
   and add the file to the cp line in deploy.sh (its missing-asset guard fails the deploy if you forget). ══ */

/* ── Page-specific. Strips, Context and counts come from the standard; this
      file controls density and rhythm, which is where the last version failed:
      six full-size pending strips stacked = a wall of yellow. ───────────── */


section[id],.box[id]{scroll-margin-top:calc(var(--hibar,46px) + 20px)}
[tabindex="-1"]:focus{outline:none}
[tabindex="-1"]:focus-visible{outline:2px solid var(--ink);outline-offset:4px}

/* section rules — type does the work, not boxes */


/* the six — a numbered list, not six slabs. The strip is the approved
   mechanic and is untouched; what changes is its density in this context. */
.six{counter-reset:d}
.dec{border-top:1px solid var(--line);padding:20px 0 6px;position:relative}
.dec:first-child{border-top:2px solid var(--ink)}
.dec::before{counter-increment:d;content:counter(d,decimal-leading-zero);position:absolute;left:0;top:22px;
  font-family:var(--mono);font-size:10.5px;color:#b0b0b0}
.dec .inner{padding-left:42px}
.dec h3{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:20px;line-height:1.25;
  letter-spacing:-.015em;margin:0 0 3px;max-width:30ch}
.dec .who{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#8a8a8a;margin:0 0 10px}

/* compact strips inside the summary: one line, no wash, no repetition */
.six .hiap{background:transparent!important;border:none!important;padding:0!important;margin:0 0 4px!important}
.six .hiap .hq{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:17px;line-height:1.3;letter-spacing:-.01em;margin:0 0 9px;max-width:42ch;color:var(--ink)}
.six .hiap .row{gap:14px;min-height:0}
.six .hiap .seg button{min-width:96px;padding:8px 12px;font-size:12px}
.six .hiap .nf input{font-size:13.5px;padding:7px 2px}
.six .hiap .tagr{font-size:9.5px;padding:4px 8px}
.six details.hi-context{margin:6px 0 0;border-top:none}
.six details.hi-context>summary{padding:8px 0}

/* boxes — the name is the object; borders recede */
.boxes{display:grid;grid-template-columns:1fr;gap:20px}


/* the card, with the Roundup's accent rail carrying state */
.box{position:relative;border:1px solid var(--line);background:var(--paper);
  padding:22px 24px 18px;display:flex;flex-direction:column;border-left:4px solid var(--grey-hi)}
.box.b-block{border-left-color:var(--red)}
.box.b-wait{border-left-color:var(--yellow)}
.box.b-quiet{border-left-color:var(--ink)}
.box .bh{display:flex;align-items:baseline;gap:11px;margin:0 0 12px;flex-wrap:wrap}
.box .bh .who{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:24px;letter-spacing:-.025em;line-height:1}
.box .bh .role{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#767676}

/* the update, as the Roundup's railed callout block */
.box .update{font-size:14.5px;line-height:1.6;color:#2f2f2f;margin:0}

.proj{margin:16px 0 0;padding:14px 0 0;border-top:1px solid var(--line)}
.proj h4{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:16px;letter-spacing:-.01em;margin:0 0 4px}
.proj p{font-size:13.5px;line-height:1.55;color:#5a5a5a;margin:0 0 9px;max-width:56ch}
/* black mono button, as on the Roundup */
.proj a.go{display:inline-block;font-family:var(--mono);font-size:12px;text-decoration:none;
  background:var(--ink);color:var(--paper);padding:9px 15px;border:1px solid var(--ink)}
.proj a.go:hover{background:var(--red);border-color:var(--red)}
.boxqa{margin:16px 0 0;padding:16px 0 0;border-top:1px solid var(--line)}   /* 15 + the 1px rule = 16 */
/* the container owns the rhythm: 16 above the rule, 16 below it, 16 under
   Context. The pieces inside contribute none of their own. */
.boxqa .qitem{padding:0;border-bottom:none}
.boxqa .qitem+.qitem{padding-top:16px;margin-top:16px;border-top:1px solid var(--line)}
.boxqa .qitem details.hi-context{margin-bottom:0}   /* beats .qitem details.hi-context, which sets 6 */
.boxqa .qitem details.hi-context>summary{padding-bottom:0}
.boxqa .lb{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#a2a2a2;margin:0 0 6px}

/* the foot: mono credit with the red dot, state chip right — the record strip */
.box .bf{margin-top:auto;padding-top:14px;margin-top:16px;border-top:1px solid var(--line);
  display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.box .bf .credit{margin:0}
.box .bf .spacer{flex:1}
.box .bf .tagr{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:5px 10px;border-radius:2px;white-space:nowrap;background:rgba(17,17,17,.06);color:#5a5a5a}

/* executive summary — one line per name, the same order as the boxes below */
.exec{background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--ink);padding:6px 22px 4px}
.exec .exrow:last-child{border-bottom:none}
.exrow{border-bottom:1px solid var(--line);padding:15px 0;display:grid;
  grid-template-columns:132px 1fr;gap:16px;align-items:baseline}
.exrow .nm{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:19px;
  letter-spacing:-.02em;color:var(--ink);text-decoration:none;border-bottom:2px solid transparent;justify-self:start}
.exrow .nm:hover{border-bottom-color:var(--red)}
.exrow .up{font-size:14px;line-height:1.55;color:#3f3f3f;margin:0;max-width:70ch}

@media(max-width:760px){.exrow{grid-template-columns:1fr;gap:6px}}

.sub-sec{margin:30px 0 4px}
.mini{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#9a9a9a;margin:0}
.stand{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:21px;line-height:1.35;
  letter-spacing:-.015em;max-width:34ch;margin:0 0 28px}
.stand b{background:linear-gradient(transparent 60%,var(--yellow) 60%)}

/* quick approvals — their own section, numbered, one tap each */
.qa{background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--ink);padding:2px 22px}
.qa.qa-empty-state{padding:16px 22px}
.qa-empty{margin:0;font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:15px;letter-spacing:-.01em;color:var(--ink)}
.qitem{background:transparent;border:none;border-bottom:1px solid var(--line);padding:18px 0 12px;margin:0}
.qitem:last-child{border-bottom:none}
.qitem .hiap{margin:0!important}

.qowner{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#767676;margin:0 0 8px}
.qitem .hiap .hq{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:17px;line-height:1.3;
  letter-spacing:-.01em;margin:0 0 9px;max-width:46ch;color:var(--ink)}
.qitem .hiap .row{gap:14px;min-height:0}
.qitem .hiap .seg button{min-width:96px;padding:8px 12px;font-size:12px}
.qitem .hiap .nf input{font-size:13.5px;padding:7px 2px}
.qitem .hiap .tagr{font-size:9.5px;padding:4px 8px}
.qitem>.hq{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:17px;line-height:1.3;letter-spacing:-.01em;margin:0 0 9px;max-width:46ch;color:var(--ink)}
.qitem details.hi-context{margin:0 0 6px;border-top:none}
.qitem details.hi-context>summary{padding:8px 0}

.backtop{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:#9a9a9a;text-decoration:none}
.backtop:hover{color:var(--ink)}
[data-count]{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.03em;white-space:nowrap;
  border-bottom:2px solid var(--line);padding-bottom:1px}
[data-count].c-open{color:var(--ochre,#6F5F00);border-bottom-color:var(--yellow,#EFD865)}
[data-count].c-done{color:#2f5c42;border-bottom-color:#9CC4A9}
[data-count].c-err{color:#a8331d;border-bottom-color:var(--red,#FF3821)}

/* one vertical rhythm: every grey label sits the same distance below the box
   above it. Was two different gaps — 34px between Clients and Agents (same
   <section>), 98px elsewhere (section margin + the standard's h2 margin). */
section{margin:0}
body:not([class*="rs-legacy"]) .wrap h2{margin:52px 0 12px}
body:not([class*="rs-legacy"]) .wrap section:first-of-type h2{margin-top:23px}
.exec,.qa,.boxes{margin:0}
.boxes+h2{margin-top:52px}
.when{color:var(--grey-deep);font-weight:400}
.box>.proj:first-child{margin-top:0;padding-top:0;border-top:none}
.box .proj ul{margin:6px 0 0;padding:0;list-style:none}
.box .proj li{font-size:13.5px;line-height:1.55;color:#5a5a5a;margin:0 0 9px;padding-left:16px;position:relative;max-width:70ch}
.box .proj li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:2px;background:var(--yellow)}
.box .proj li b{color:var(--ink)}
/* a section label with a subtitle occupies the same vertical space as one without */
body:not([class*="rs-legacy"]) .wrap h2:has(+p){margin-bottom:2px}
body:not([class*="rs-legacy"]) .wrap h2+p{font-size:13.5px;line-height:1.5;color:#666;margin:0 0 10px}
.dot-unassigned{background:transparent;box-shadow:inset 0 0 0 1.5px #c4c4c4}
