/* Shadow-mode report. Loaded after kh-system.css + page.css. Rounded system, flat surfaces.
   Blocked = solid amber, held = amber outline, allowed = neutral grey. */
.sh-hero{padding:clamp(28px,5vh,56px) 0 clamp(64px,9vh,96px)}
.sh-hero__grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:var(--sp8);align-items:center}
.sh-hero h1{max-width:16ch;font-size:clamp(40px,4.6vw,64px)}
.sh-hero h1 .n{color:var(--ink)}
.meta{margin-top:20px;font:400 var(--xs)/1.6 var(--mono);color:var(--dim);max-width:62ch}
.meta code{font-size:1em;color:var(--soft)}

/* the hero aside: week strip + ledger */
.ledger{padding:0}
.ledger .pane{padding:18px 20px 20px}
.ledger .wk{margin-top:0}
.ledger .week{height:48px}
.ledger .wk__days{font-size:13.5px}
.lgs{margin-top:16px;border-top:1px solid var(--line)}
.lg{padding:12px 0;border-bottom:1px solid var(--line)}
.lg__top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.lg__v{display:inline-flex;align-items:center;gap:8px;font-weight:500;font-size:15.5px}
.lg__v::before{content:"";width:10px;height:10px;border-radius:2px;background:var(--bar)}
.lg--blocked .lg__v::before{background:var(--acc)}
.lg--held .lg__v::before{background:transparent;box-shadow:inset 0 0 0 1px var(--acc)}
.lg__n{font:500 18px/1 var(--sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.lg ul{list-style:none;margin:6px 0 0;padding:0 0 0 18px;display:grid;gap:2px;font-size:14px;color:var(--soft)}
.lg li{display:flex;justify-content:space-between;gap:12px}
.lg li b{font:500 13.5px/1.5 var(--mono);color:var(--ink);white-space:nowrap}
.lg li i{font-style:normal;color:var(--mute);white-space:nowrap}
.chain-badge{margin-top:14px;width:100%;display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 14px;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line2);color:var(--soft);font:500 13.5px/1.4 var(--mono);text-align:left;cursor:pointer;transition:color .2s,background .2s}
.chain-badge:hover{background:rgb(255 255 255 / .04)}
.chain-badge__dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--mute)}
.chain-badge.is-busy .chain-badge__dot{background:var(--soft)}
.chain-badge.is-ok{color:var(--ink)}
.chain-badge.is-ok .chain-badge__dot{background:var(--ok)}
.chain-badge.is-bad{color:var(--acc);box-shadow:inset 0 0 0 1px var(--acc)}
.chain-badge.is-bad .chain-badge__dot{background:var(--acc)}

/* sections */
.sec{padding:var(--section) 0;border-top:1px solid var(--line)}
.sec__head{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:var(--sp7);align-items:end;margin-bottom:var(--sp7)}
.sec__head p{color:var(--soft);font-size:var(--t-lg);max-width:54ch}

/* timeline */
.tl-scroll{overflow-x:auto;scrollbar-width:thin}
.tl{position:relative;min-width:660px;padding:30px 20px 12px 100px}
.tl__lanes{position:relative}
.lane{position:relative;height:46px;border-bottom:1px dashed var(--line)}
.lane:last-child{border-bottom:0}
.lane__lab{position:absolute;left:-100px;top:50%;transform:translateY(-50%);font-size:13.5px;font-weight:500;display:flex;align-items:center;gap:8px;color:var(--soft)}
.lane__lab::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--bar)}
.lane--blocked .lane__lab::before{background:var(--acc)}
.lane--held .lane__lab::before{background:transparent;box-shadow:inset 0 0 0 1px var(--acc)}
.dayline{position:absolute;top:-22px;bottom:-12px;width:1px;background:var(--line);pointer-events:none}
.daylab{position:absolute;transform:translate(6px,-4px);font:500 13.5px/1 var(--mono);color:var(--dim);white-space:nowrap;pointer-events:none}
.tm{position:absolute;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;border:0;border-radius:50%;padding:0;background:var(--bar)}
.tm--held{background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--acc)}
.tm--blocked{background:var(--acc)}
.tm--big{width:12px;height:12px;margin:-6px 0 0 -6px}
button.tm{cursor:pointer;transition:transform .2s}
button.tm::after{content:"";position:absolute;inset:-9px}
button.tm:hover,button.tm:focus-visible{transform:scale(1.5);outline:none;z-index:2;box-shadow:0 0 0 2px var(--ink)}
.tip{position:absolute;z-index:5;pointer-events:none;background:var(--bg);border-radius:var(--r3);box-shadow:inset 0 0 0 1px var(--line3);padding:12px 14px;font-size:13.5px;line-height:1.45;color:var(--ink);max-width:280px;opacity:0;transition:opacity .15s}
.tip.is-on{opacity:1}
.tip .mono{color:var(--mute);font:400 13.5px/1.4 var(--mono);display:block}
.days{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));margin-top:16px;border-top:1px solid var(--line2)}
.day{padding:14px 12px 16px 0;font-size:13.5px}
.day + .day{padding-left:12px;border-left:1px solid var(--line)}
.day__d{font:500 13.5px/1 var(--mono);color:var(--mute)}
.day__bars{display:flex;align-items:flex-end;gap:3px;height:44px;margin:10px 0 8px}
.day__bars i{flex:1;min-height:2px;transform-origin:50% 100%}
.day__bars .b{background:var(--acc)} .day__bars .h{background:transparent;box-shadow:inset 0 0 0 1px var(--acc)} .day__bars .a{background:var(--bar)}
.day__n{display:flex;gap:10px;font:400 13.5px/1.4 var(--mono);color:var(--soft);flex-wrap:wrap}
.day__usd{font:400 13.5px/1.4 var(--mono);color:var(--dim);margin-top:2px}

/* actions */
.filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:24px}
.chip{height:36px;padding:0 16px;border-radius:var(--r-pill);box-shadow:inset 0 0 0 1px var(--line2);color:var(--soft);font:500 14px/1 var(--sans);display:inline-flex;align-items:center;gap:8px;transition:color var(--t-fast),background-color var(--t-fast),transform .3s var(--spring)}
.chip span{font:400 13.5px/1 var(--mono);color:var(--mute)}
.chip:hover{color:var(--ink);background:var(--hover);transform:translateY(-1px)}
.chip:active{transform:scale(.97);transition-duration:.08s}
.chip:focus-visible,.chain-badge:focus-visible{outline:0;box-shadow:inset 0 0 0 1px var(--line3),var(--ring)}
.chip[aria-pressed="true"]{background:var(--ink);color:#000;box-shadow:none}
.chip[aria-pressed="true"] span{color:#000}
.acts-grid,.acts[data-acts]{align-items:stretch;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:0}
.act{background:var(--bg);border-radius:var(--r);box-shadow:inset 0 0 0 1px var(--line2);padding:var(--sp5) var(--sp5) var(--sp5);display:flex;flex-direction:column;gap:12px;min-width:0}
.act.is-flash{animation:flash 1.6s ease-out}
@keyframes flash{0%,30%{box-shadow:inset 0 0 0 2px var(--ink)}100%{box-shadow:inset 0 0 0 1px var(--line2)}}
.act__top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.act h3{font-size:18px;font-weight:500;letter-spacing:-.015em;line-height:1.25}
.act__amt{font:500 17px/1.2 var(--mono);white-space:nowrap;color:var(--ink);text-align:right}
.act__amt small{display:block;font-size:13.5px;color:var(--mute);font-weight:400}
.v{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-pill);font:600 13.5px/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;margin-bottom:8px}
.v--blocked{background:var(--acc);color:var(--acc-ink)}
.v--held{color:var(--acc);box-shadow:inset 0 0 0 1px var(--acc)}
.act__meta{font:400 13.5px/1.6 var(--mono);color:var(--mute);overflow-wrap:anywhere}
.diff{margin-inline:calc(var(--sp5) * -1);border-top:1px solid var(--line);border-bottom:1px solid var(--line);font:400 13.5px/1.5 var(--mono)}
.dr{display:grid;grid-template-columns:22px minmax(84px,auto) minmax(0,1fr);gap:4px 10px;padding:8px var(--sp5) 8px 16px;align-items:baseline}
.dr + .dr{border-top:1px solid var(--line)}
.dr__s{text-align:center;font-weight:600}
.dr__k{color:var(--soft)}
.dr__v{color:var(--ink);overflow-wrap:anywhere}
.dr__n{grid-column:3;font-size:13.5px;color:var(--mute)}
.dr__n a{color:var(--mute);text-decoration:underline;text-decoration-color:var(--line2);text-underline-offset:3px}
.dr__n a:hover{color:var(--ink)}
.dr--del{background:rgb(242 181 68 / .06)} .dr--del .dr__s{color:var(--acc)}
.dr--add .dr__s{color:var(--ink)}
.act__why{font-size:14px;color:var(--soft)}
.act__why em{font-style:normal;color:var(--acc)}
.act details{font-size:13.5px;color:var(--mute)}
.act summary{cursor:pointer;width:fit-content;min-height:32px;display:flex;align-items:center}
.act summary:hover{color:var(--ink)}
.act pre{margin:12px 0 0;padding:0;background:var(--bg);font:400 13.5px/1.55 var(--mono);color:var(--soft);white-space:pre-wrap;overflow-wrap:anywhere}
.more{margin-top:20px}

/* policy file + rules */
.pol{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--sp8);align-items:start}
.pol__text p{color:var(--soft);margin-top:18px;max-width:52ch}
.rules-wrap{overflow-x:auto;max-width:100%;margin-top:28px;border-radius:var(--r2);box-shadow:inset 0 0 0 1px var(--line2)}
.rules{width:100%;min-width:480px;border-collapse:collapse;font-size:14px}
.rules th{text-align:left;font:500 13.5px/1 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--mute);padding:12px;border-bottom:1px solid var(--line2)}
.rules td{padding:12px;border-bottom:1px solid var(--line);vertical-align:top}
.rules td.n,.rules th.n{text-align:right;font-family:var(--mono);white-space:nowrap}
.rules a code{transition:color .2s}
.rules a:hover code{color:#fff;text-decoration:underline}
.rules .cat{display:block;font-size:13.5px;color:var(--mute);margin-top:2px}
.file{font:400 13.5px/1.75 var(--mono)}
.file__h{display:flex;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);color:var(--mute);font-size:13.5px}
.file__body{padding:10px 0;overflow-x:auto}
.pl{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:12px;padding:0 14px 0 0;white-space:pre;scroll-margin-top:120px;width:max-content;min-width:100%}
.pl .ln{text-align:right;color:var(--mute);user-select:none}
.pl .tx{color:var(--soft)}
.pl .tx .c{color:var(--dim)} .pl .tx .k{color:var(--ink)} .pl .tx .num{color:var(--ink);font-weight:500}
.pl .hit{font-size:13.5px;color:var(--mute)}
.pl.is-hit{background:rgb(242 181 68 / .06);box-shadow:inset 2px 0 0 var(--acc)}
.pl.is-hit .ln,.pl.is-hit .hit{color:var(--ink)}
.pl.is-new .ln::before{content:"+";color:var(--ink);margin-right:4px}
.pl.is-flash{animation:lflash 1.6s ease-out}
@keyframes lflash{0%,30%{background:rgb(255 255 255 / .12)}}

/* chain */
.chain{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--sp8);align-items:start}
.chain__text p{color:var(--soft);margin:18px 0 0;max-width:52ch}
.chain__text .acts{margin-top:24px}
.chain__status{margin-top:20px !important;min-height:3.2em;font:400 13.5px/1.5 var(--mono);color:var(--soft) !important}
.chain__status.is-ok{color:var(--ink) !important} .chain__status.is-bad{color:var(--acc) !important}
.entries{list-style:none;margin:0;padding:0;font:400 13.5px/1.5 var(--mono)}
.en{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:4px 14px;padding:12px 16px;border-bottom:1px solid var(--line);transition:background .25s}
.en:last-child{border-bottom:0}
.en__seq{color:var(--mute)}
.en__body{color:var(--ink);overflow-wrap:anywhere}
.en__body .w-blocked,.en__body .w-held{color:var(--acc)} .en__body .w-allowed{color:var(--soft)}
.en__h{grid-column:2 / 4;color:var(--dim);font-size:13.5px;overflow-wrap:anywhere}
.en__h b{font-weight:500;color:var(--soft)}
.en__ok{color:var(--mute)}
.en.is-ok .en__ok{color:var(--ok)}
.en.is-bad{background:rgb(242 181 68 / .08)}
.en.is-bad .en__ok{color:var(--acc)}
.en.is-edit .en__body{text-decoration:underline wavy var(--acc);text-underline-offset:4px}

@media (max-width:1080px){
  .sh-hero__grid,.sec__head,.pol,.chain{grid-template-columns:minmax(0,1fr);gap:32px}
  .acts[data-acts]{grid-template-columns:minmax(0,1fr)}
  .days{grid-template-columns:repeat(4,minmax(0,1fr))}
  .day:nth-child(5){padding-left:0;border-left:0}
  .day:nth-child(n+5){border-top:1px solid var(--line)}
}
@media (max-width:720px){
  .act{padding:var(--sp4)}
  .diff{margin-inline:calc(var(--sp4) * -1)}
  .dr{grid-template-columns:18px minmax(0,1fr);padding:8px 16px 8px 10px}
  .dr__v,.dr__n{grid-column:2}
  .act__top{flex-direction:column;gap:6px}
  .act__amt{text-align:left}
  .days{grid-template-columns:repeat(2,minmax(0,1fr))}
  .day:nth-child(odd){padding-left:0;border-left:0}
  .day:nth-child(n+3){border-top:1px solid var(--line)}
  .en{grid-template-columns:44px minmax(0,1fr) auto;padding:12px}
  .lg li{flex-wrap:wrap}
}

/* ---------------- review fixes 12 Nov ---------------- */
/* cards size to their own content: opening one never stretches its neighbour */
.acts-grid,.acts[data-acts]{align-items:stretch;grid-auto-flow:row dense}
.act.is-open{grid-column:1 / -1}
.act summary{gap:8px}
.act summary::-webkit-details-marker{display:none}
.act summary{list-style:none}
.act summary::before{content:"";flex:none;width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .2s var(--out)}
.act details[open] summary::before{transform:rotate(45deg)}
/* rules table fits its column: rule keys wrap at the dots, money never clips */
.rules-wrap{overflow-x:visible}
.rules{min-width:0}
.rules td:first-child{overflow-wrap:break-word}
/* policy file: long lines wrap inside the panel; the hit counter keeps its own column */
.file__body{overflow-x:visible}
.pl{white-space:normal;width:auto;min-width:0}
.pl .tx{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}
.pl .hit{white-space:nowrap}
/* a cited line is a tinted band with breathing room and an accent edge, not a box inside the panel */
.pl.is-hit{position:relative;padding-top:3px;padding-bottom:3px;box-shadow:none}
.pl.is-hit::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--acc)}
/* narrow: a trailing comment drops to its own line under the key; the alignment spaces go away, so nothing hangs past the panel */
@media (max-width:720px){.pl .tx .gap{display:none}.pl .tx .c:has(.gap){display:block}.rules td:first-child{overflow-wrap:anywhere}
  /* the verdict cell already carries the count ("7 blocked"), so the narrow table drops the bare Calls column */
  .rules th:nth-child(2),.rules td:nth-child(2){display:none}}
.wk__last::before{display:none}

/* ---------------- review fixes 12 Nov, round 2 ---------------- */
/* hero lead: blocked and held on their own labelled lines */
.sh-hero .lead .ld{display:block}
.sh-hero .lead .ld + .ld{margin-top:8px}
.sh-hero .lead .ld b{color:var(--ink);font-weight:500}
/* rules table: a key breaks only after a dot, never inside an identifier */
.rules code{word-break:keep-all;overflow-wrap:normal;hyphens:none}
.rules td:first-child{overflow-wrap:normal}
/* policy file: a trailing comment wraps inside its own column (hanging indent), the key and value never wrap */
@media (min-width:721px){
  .pl .tx.has-c{display:grid;grid-template-columns:minmax(32ch,max-content) minmax(0,1fr);column-gap:0}
  .pl .tx.has-c .cd{white-space:pre}
  .pl .tx.has-c .c{white-space:normal;overflow-wrap:break-word;text-wrap:balance}
}
@media (max-width:720px){
  .pl .tx.has-c .c{display:block;padding-left:2ch;white-space:normal;overflow-wrap:break-word}
}/* phones: each rule is a row of its own, the key on top (whole, breaking only after a dot), verdict and money under it */
@media (max-width:720px){
  .rules td:first-child{overflow-wrap:normal}
  .rules thead{display:none}
  .rules tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px;border-bottom:1px solid var(--line)}
  .rules tbody tr:last-child{border-bottom:0}
  .rules tbody td{border-bottom:0}
  .rules tbody td:first-child{grid-column:1 / -1;padding-bottom:6px}
  .rules tbody td:nth-child(3){grid-column:1;text-align:left;padding-top:0}
  .rules tbody td:nth-child(4){grid-column:2;padding-top:0}
}/* the ledger bar carries the date range; on narrower two-column widths the 'observe-only' note (also in the meta line) gives way */
@media (max-width:1280px){.ledger .bar .hs{display:none}}

/* Split section header rule (founder 11-13, identical on all four demos): heading left, lead right, top-aligned so the
   lead's first line starts level with the heading's cap height. Geist metrics: ascent 1.01em, descent .30em, cap .71em.
   Cap top below the line-box top = size * ((line-height - 1.31) / 2 + .30): h2 at 1.04 -> .165em, lead 18px/1.55 -> 7.56px.
   Lead stays 18px. Below 1081px the head stacks and keeps its normal spacing. */
@media (min-width:1081px){.sec__head{align-items:start}.sec__head > p:last-child{margin-top:calc(var(--t-h2) * .165 - 7.56px)}}
