/* adaptive-planning (2026-10-05): the planning workbook.
   Linked only from article-adaptive-planning.html. The article is a
   spreadsheet: a formula bar pinned under the masthead, one sheet per
   section with column letters and row numbers, prose living in merged
   cells, and the sheet tabs along the bottom edge. Navy marks the
   selected cell and input cells; gold is the recalculation flash. */

.apw{
  --ink:#16150f; --ink2:#33312a; --mut:#6b6660; --paper:#f7f5f0; --paper2:#efece4;
  --navy:#0e1330; --nv:#16304F; --red2:#A93A3A; --gold:#B8862F;
  --gl:#e3ded3; --gl2:#cdc6b7; --hdr:#ebe7dd; --hdr2:#ddd6c6;
  --inp:#f4eddc; --hard:#efe3c6; --reb:#f3dfda; --rebt:#8f2f2f;
  background:var(--paper);
}
.apw .ap-main ::selection{background:var(--nv);color:var(--paper);}
.apw .ap-main a:focus-visible,.apw .ap-main button:focus-visible,.apw .ap-main select:focus-visible,.apw .ap-main [tabindex]:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.apw .art-rail{display:none !important;}
.ap-wrap,.ap-sheet,.ap-bar-in,.ap-tabs ol{width:min(1180px,calc(100vw - 32px));margin-left:auto;margin-right:auto;}

/* ---------- top ---------- */
.apw .ap-top{padding:clamp(1.4rem,3vw,2.2rem) 0 1.2rem;}
.ap-kind{margin:.8rem 0 0;font-family:var(--sans);font-size:.88rem;color:var(--mut);}

/* ---------- formula bar ---------- */
.ap-bar{position:sticky;top:var(--hh,64px);z-index:30;background:var(--paper);}
.ap-bar-in{display:grid;grid-template-columns:5.6rem 2.6rem minmax(0,1fr);height:2.5rem;border:1px solid var(--gl2);background:var(--paper);}
#ap-nb{display:flex;align-items:center;padding:0 .75rem;border-right:1px solid var(--gl2);font-family:var(--sans);font-size:.84rem;font-variant-numeric:tabular-nums;color:var(--ink);}
.ap-fxl{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--gl2);font-family:var(--serif);font-style:italic;font-size:1.05rem;color:var(--mut);}
#ap-fx{display:block;padding:0 .9rem;line-height:2.4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--sans);font-size:.88rem;color:var(--ink2);}

/* ---------- a sheet ---------- */
.ap-sheet{padding-top:clamp(2.6rem,6vw,4.6rem);scroll-margin-top:calc(var(--hh,64px) + 2.5rem);}
.ap-first{padding-top:0;}
.ap-g{counter-reset:apr;border-left:1px solid var(--gl2);border-right:1px solid var(--gl2);background:var(--paper);
  --cols:200px repeat(3,minmax(0,1fr)) 150px 150px;}
.ap-g.g-st{--cols:210px repeat(5,minmax(0,1fr)) 140px;}
.ap-g.g-sc{--cols:minmax(0,1fr) 96px 170px 130px;}
.ap-g.g-ls{--cols:220px minmax(0,1.7fr) minmax(0,1fr) minmax(0,1fr);}
.ap-g.g-mp{--cols:minmax(0,1fr) minmax(0,1fr) 150px minmax(0,1.2fr);}
.ap-r,.ap-hd{display:grid;grid-template-columns:44px var(--cols);}
.ap-r{counter-increment:apr;}
.ap-r::before{content:counter(apr) / "";padding:.85rem .55rem 0 0;text-align:right;background:var(--hdr);border-right:1px solid var(--gl2);border-bottom:1px solid var(--gl);
  font-family:var(--sans);font-size:.72rem;font-variant-numeric:tabular-nums;color:var(--mut);}
.ap-r.on::before{background:var(--hdr2);color:var(--ink);font-weight:600;}
.ap-hd{position:relative;border-top:1px solid var(--gl2);}
.ap-hd::before{content:"";background:var(--hdr);border-right:1px solid var(--gl2);border-bottom:1px solid var(--gl2);}
.ap-hd span{display:block;padding:.28rem 0;text-align:center;background:var(--hdr);border-right:1px solid var(--gl);border-bottom:1px solid var(--gl2);
  font-family:var(--sans);font-size:.72rem;color:var(--mut);}
.ap-hd span:last-child{border-right:0;}
.ap-hd span.on{background:var(--hdr2);color:var(--ink);font-weight:600;box-shadow:inset 0 -2px 0 var(--nv);}

.ap-c{position:relative;min-width:0;padding:.78rem .95rem;border-right:1px solid var(--gl);border-bottom:1px solid var(--gl);
  font-family:var(--sans);font-size:.92rem;line-height:1.45;color:var(--ink2);}
.ap-c:last-child{border-right:0;}
.ap-c.s2{grid-column:span 2;} .ap-c.s3{grid-column:span 3;} .ap-c.s4{grid-column:span 4;}
.ap-c.s5{grid-column:span 5;} .ap-c.s6{grid-column:span 6;}
.ap-c.sa{grid-column:2 / -1;border-right:0;}
.ap-c p{margin:0;}
.ap-c p + p{margin-top:.8em;}
.ap-c a:not(.btn){color:var(--nv);text-decoration:underline;text-decoration-color:rgba(22,48,79,.35);text-underline-offset:3px;}
.ap-c a:not(.btn):hover{text-decoration-color:var(--nv);}

/* cell kinds */
.ap-p{font-family:var(--serif);font-size:1.12rem;line-height:1.6;color:var(--ink2);}
.ap-p p{max-width:68ch;}
.ap-k{font-weight:600;color:var(--ink);}
.ap-m{color:var(--mut);}
.ap-n{text-align:right;font-variant-numeric:tabular-nums;}
.ap-big{font-size:1.5rem;font-weight:600;color:var(--ink);line-height:1.2;}
.ap-no{display:block;margin-bottom:.2rem;font-weight:500;font-size:.78rem;color:var(--mut);font-variant-numeric:tabular-nums;}
.ap-q{font-family:var(--serif);font-size:clamp(1.3rem,2.2vw,1.6rem);line-height:1.32;font-weight:500;color:var(--ink);padding-top:1.3rem;padding-bottom:1.3rem;}
.ap-th .ap-c{padding-top:.55rem;padding-bottom:.55rem;background:var(--paper2);border-bottom:1px solid var(--ink2);font-size:.8rem;font-weight:600;color:var(--ink);}
.ap-blank .ap-c{height:1.9rem;padding:0;}

/* selected cell: navy frame and fill handle */
.ap-c.sel{outline:2px solid var(--nv);outline-offset:-1px;z-index:2;}
.ap-c.sel::after{content:"";position:absolute;right:-4px;bottom:-4px;width:7px;height:7px;background:var(--nv);border:1px solid var(--paper);}
.ap-f{cursor:default;}
.ap-f:hover{background:rgba(22,48,79,.04);}

/* titles */
.ap-t .ap-c{padding:clamp(1.6rem,3.4vw,2.6rem) .95rem clamp(1rem,2vw,1.4rem);}
.apw .ap-t h2{margin:0;max-width:22ch;font-family:var(--serif);font-size:clamp(1.9rem,3.6vw,2.85rem);font-weight:500;line-height:1.08;letter-spacing:-.022em;color:var(--ink);}
.ap-h1 .ap-c{padding:clamp(1.8rem,4vw,3.2rem) clamp(.95rem,2vw,1.6rem) clamp(1.4rem,3vw,2.2rem);}
.apw .ap-h1 h1{margin:0;max-width:17ch;font-family:var(--serif);font-size:clamp(2.4rem,5.6vw,4.6rem);font-weight:500;line-height:1.02;letter-spacing:-.03em;color:var(--ink);}
.apw .ap-g .dek{margin:0;max-width:40ch;font-family:var(--serif);font-size:clamp(1.18rem,2vw,1.42rem);line-height:1.42;color:var(--ink2);}
.ap-meta .ap-c{font-size:.86rem;}
.ap-sum .ap-q{padding-top:1.5rem;padding-bottom:1.5rem;}

/* trailing empty rows fade into the paper */
.ap-fade{-webkit-mask-image:linear-gradient(#000,transparent);mask-image:linear-gradient(#000,transparent);}
.ap-fade .ap-c{height:2.1rem;padding:0;}
.ap-fade .ap-r::before{padding-top:.6rem;}

/* timeline: in-cell data bars */
.ap-db i{position:absolute;left:.45rem;right:.45rem;top:.55rem;bottom:.55rem;background:var(--hard);transform-origin:left center;transform:scaleX(var(--v,1));}
.ap-db span{position:relative;font-size:1.05rem;font-weight:600;color:var(--ink);}

/* decisions */
.ap-dec .ap-c{padding-top:1.05rem;}
.ap-o{font-size:.88rem;}
.ap-out{color:var(--rebt);font-weight:600;}
.ap-late .ap-c{background:rgba(239,236,228,.55);}
.ap-late .ap-p{font-size:1.02rem;}
.ap-lk{font-size:.82rem;font-weight:600;color:var(--rebt);}
.ap-lk::after{content:"";position:absolute;top:0;right:0;border-style:solid;border-width:0 7px 7px 0;border-color:transparent var(--red2) transparent transparent;}
.ap-calc1 .ap-c{padding-top:.55rem;padding-bottom:.55rem;font-size:.86rem;}
.ap-calc1 .ap-n{font-size:1rem;font-weight:600;color:var(--ink);}
.ap-tot .ap-c{padding-top:1.1rem;padding-bottom:1.1rem;}

/* mapping */
.ap-fit{font-weight:600;color:var(--ink);}
.ap-jam .ap-c{background:var(--reb);}
.ap-jam .ap-fit,.ap-jam .ap-ad{color:var(--rebt);}

/* stages: driver, matrix, counts */
.ap-in{background:var(--inp);padding:0;}
.ap-in select{display:block;width:100%;height:100%;min-height:2.9rem;margin:0;padding:.6rem 2rem .6rem .95rem;border:0;border-radius:0;background:transparent;-webkit-appearance:none;appearance:none;
  font-family:var(--sans);font-size:.95rem;font-weight:600;color:var(--nv);cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--nv) 50%),linear-gradient(135deg,var(--nv) 50%,transparent 50%);
  background-position:calc(100% - 1.05rem) 50%,calc(100% - .7rem) 50%;background-size:.35rem .35rem;background-repeat:no-repeat;}
.ap-in select:focus-visible{outline:2px solid var(--gold);outline-offset:-2px;}
.ap-hint{display:block;margin-top:.25rem;font-weight:400;font-size:.8rem;color:var(--mut);}
.ap-drv .ap-c{display:flex;flex-direction:column;justify-content:center;}
.ap-drv .ap-in{display:block;}
.ap-sh{font-family:var(--serif);font-size:1.2rem;font-weight:500;color:var(--ink);}
.ap-st{font-size:.84rem;text-align:center;}
.ap-st[data-s="h"],.ap-sw[data-s="h"]{background:var(--hard);color:var(--ink);}
.ap-st[data-s="l"],.ap-sw[data-s="l"]{background:var(--reb);color:var(--rebt);font-weight:600;}
.ap-st.cur{box-shadow:inset 2px 0 0 var(--nv),inset -2px 0 0 var(--nv);}
.ap-th .ap-c.cur{box-shadow:inset 0 -3px 0 var(--nv);color:var(--nv);}
.ap-now{font-weight:600;}
.ap-th .ap-nowh,.ap-now{border-left:1px solid var(--ink2);}
.ap-sw{display:inline-block;width:.8rem;height:.8rem;margin-right:.5rem;vertical-align:-.08rem;border:1px solid var(--gl2);background:var(--paper);}
.ap-ct{font-size:1.05rem;font-weight:600;color:var(--ink);}
.ap-cost .ap-p{font-size:1.06rem;}
.ap-ctl .ap-c{padding-top:.5rem;padding-bottom:.5rem;}
.ap-skip{padding:0;border:0;background:none;font-family:var(--sans);font-size:.86rem;color:var(--nv);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}

/* scorer */
.ap-qt{font-family:var(--serif);font-size:1.06rem;line-height:1.5;color:var(--ink2);}
.ap-qt label{cursor:pointer;}
.ap-gate{font-size:.8rem;font-weight:600;color:var(--rebt);}
.ap-pt{font-weight:600;color:var(--ink);}
.ap-verd .ap-c{padding-top:1.2rem;padding-bottom:1.3rem;}
.ap-vt{font-family:var(--serif);font-size:1.35rem;font-weight:500;color:var(--ink);}
.ap-c .ap-vt + .ap-vm{margin-top:.35rem;max-width:72ch;font-size:.95rem;line-height:1.55;}
.ap-verd.r .ap-vt{color:var(--rebt);}

/* practices, lessons, 90-day, scorecard */
.ap-ai .ap-c{background:var(--paper2);}
.ap-cs{font-weight:600;color:var(--ink);}
.ap-fx2{color:var(--ink2);}
.ap-cause{font-family:var(--sans);font-size:.86rem;color:var(--mut);}
.ap-box{display:inline-block;width:.9rem;height:.9rem;margin-right:.6rem;vertical-align:-.12rem;border:1.5px solid var(--ink2);}
.ap-chk .ap-k{color:var(--mut);font-variant-numeric:tabular-nums;}
.ap-res .ap-big{text-align:left;}
.ap-bad .ap-big{color:var(--rebt);}
.ap-blankc{height:2.6rem;}
.ap-scr .ap-c{padding-top:.6rem;padding-bottom:.6rem;}
.ap-scr .ap-k .ap-no{display:inline-block;width:1.4rem;margin:0;}
.ap-dl .cta-row{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.8rem 1.4rem;}
.ap-dl .ap-c{padding-top:1.3rem;padding-bottom:1.3rem;}
.ap-src{font-size:1rem;}

/* ---------- sheet tabs ---------- */
.ap-tabs{position:sticky;bottom:0;z-index:30;margin-top:clamp(2.6rem,6vw,4.4rem);background:var(--paper2);border-top:1px solid var(--gl2);}
.ap-tabs ol{position:relative;display:flex;margin-top:0;margin-bottom:0;padding:0;list-style:none;overflow-x:auto;scrollbar-width:none;border-left:1px solid var(--gl2);}
.ap-tabs ol::-webkit-scrollbar{display:none;}
.ap-tabs li{flex:none;margin:0;}
.ap-tabs a{display:block;padding:.6rem 1.05rem .65rem;border-right:1px solid var(--gl2);font-family:var(--sans);font-size:.84rem;line-height:1.2;color:var(--ink2);text-decoration:none;white-space:nowrap;}
.ap-tabs a:hover{background:var(--hdr);}
.ap-tabs a[aria-current]{background:var(--paper);color:var(--nv);font-weight:600;box-shadow:inset 0 -3px 0 var(--nv);margin-top:-1px;padding-top:calc(.6rem + 1px);}
.ap-tabs a:focus-visible{outline:2px solid var(--gold);outline-offset:-2px;}

.ap-cta{padding:clamp(3rem,6vw,4.6rem) 0 clamp(3rem,6vw,4.6rem);}

/* ---------- medium ---------- */
@media (max-width:1100px){
  .ap-g{--cols:160px repeat(3,minmax(0,1fr)) 116px 116px;}
  .ap-g.g-st{--cols:170px repeat(5,minmax(0,1fr)) 110px;}
  .ap-g.g-ls{--cols:170px minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr);}
  .ap-in select{padding-left:.7rem;padding-right:1.5rem;font-size:.86rem;background-position:calc(100% - .85rem) 50%,calc(100% - .5rem) 50%;}
}

/* ---------- phone: rows stack, the gutter stays ---------- */
@media (max-width:760px){
  .ap-r{display:block;position:relative;padding-left:30px;}
  .ap-r::before{position:absolute;left:0;top:0;bottom:0;width:30px;padding:.8rem .35rem 0 0;box-sizing:border-box;}
  .ap-hd{display:flex;padding-left:30px;}
  .ap-hd::before{position:absolute;left:0;top:0;bottom:0;width:30px;}
  .ap-hd span{flex:1;}
  .ap-c{border-right:0;}
  .ap-c:empty:not(.ap-blankc):not(.sel){display:none;}
  .ap-c[data-h]::before{content:attr(data-h);display:block;margin-bottom:.15rem;font-family:var(--sans);font-size:.75rem;font-weight:500;color:var(--mut);text-align:left;}
  .ap-th{display:none;}
  .ap-n{text-align:left;}
  .ap-c.sa{border-right:0;}
  .ap-blank{display:none;}
  .ap-p{font-size:1.06rem;}
  .ap-dec .ap-o{display:inline-block;width:50%;vertical-align:top;}
  .ap-scr{display:grid;grid-template-columns:1fr 1fr 1fr;}
  .ap-scr .ap-c:empty{display:block;}
  .ap-scr .ap-c:nth-child(n+4){display:none;}
  .ap-qr .ap-gate{display:inline-block;padding-right:0;border-bottom:0;}
  .ap-qr .ap-in{border-top:1px solid var(--gl);}
  .ap-tl,.ap-mp{display:grid;grid-template-columns:1fr 1fr;}
  .ap-tl .ap-c:nth-child(-n+2){grid-column:1 / -1;}
  .ap-tl .ap-db{text-align:left;}
  .ap-tl .ap-db i{right:auto;width:calc(100% - 1rem);}
  .ap-tl .ap-c:last-child{padding-top:2rem;}
  .ap-mp .ap-c:nth-child(4){grid-column:1 / -1;}
  /* the stage matrix keeps its columns and scrolls inside the sheet */
  .ap-x{overflow-x:auto;}
  .ap-x-in{min-width:690px;}
  .ap-x .ap-st{padding-left:.3rem;padding-right:.3rem;font-size:.78rem;}
  .ap-x .ap-r{display:grid;grid-template-columns:30px 150px repeat(5,minmax(0,1fr)) 90px;padding-left:0;}
  .ap-x .ap-r::before{position:static;width:auto;}
  .ap-x .ap-th{display:grid;}
  .ap-x .ap-c{border-right:1px solid var(--gl);}
  .ap-x .ap-c.s5{grid-column:span 5;}
  .ap-x .ap-c:empty{display:block;}
  .ap-x .ap-n{text-align:right;}
  .ap-drv .ap-in{border-top:1px solid var(--gl);}
  /* QA 2026-10-05: the Now column and its counts stay in view while the matrix scrolls, so the recalculation is visible on a phone */
  .ap-x .ap-nowh,.ap-x .ap-now,.ap-x .ap-ct{position:sticky;right:0;z-index:1;box-shadow:-6px 0 8px -6px rgba(22,21,15,.25);}
  .ap-x .ap-nowh{background:var(--paper2);}
  .ap-x .ap-cnt .ap-c.s5:empty{display:block;}
  .ap-x .ap-now:not([data-s="h"]):not([data-s="l"]),.ap-x .ap-ct{background-color:var(--paper);}
  /* QA 2026-10-05: scorecard keeps its three columns and their heads on a phone */
  .ap-th.ap-sct{display:grid;}
  .ap-scr,.ap-sct{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,.75fr);}
  .ap-scr .ap-c.s2,.ap-sct .ap-c.s2{grid-column:auto;}
  .ap-sct .ap-c:nth-child(n+4){display:none;}
  .ap-scr .ap-c:nth-child(2),.ap-scr .ap-c:nth-child(3),.ap-sct .ap-c:nth-child(2),.ap-sct .ap-c:nth-child(3){border-left:1px solid var(--gl);}
  .ap-scr .ap-k .ap-no{width:1.1rem;}
  .ap-tabs a{padding:.6rem .85rem;}
}


/* ---------- pictures (2026-10-05): images placed on the sheet the way a
   spreadsheet holds them. A picture floats over empty gridlines with its
   selection handles showing; on the Mapping sheet it sits hard left with the
   caption in the open column. */
.ap-pic{counter-increment:none;}
.ap-pic::before{content:"";background-color:var(--hdr);background-image:repeating-linear-gradient(to bottom,transparent 0 calc(2.1rem - 1px),var(--gl) calc(2.1rem - 1px) 2.1rem);}
.ap-pic > .ap-c{padding:2.1rem .95rem 2.1rem;}
.ap-pc{background-image:repeating-linear-gradient(to bottom,transparent 0 calc(2.1rem - 1px),var(--gl) calc(2.1rem - 1px) 2.1rem);}
.ap-obj{margin:0 0 0 clamp(0px,8%,7rem);width:min(680px,100%);}
.ap-sh2{position:relative;display:block;outline:1px solid var(--nv);outline-offset:0;}
.ap-obj img,.ap-asym img{display:block;width:100%;height:auto;}
.ap-sh2::before,.ap-sh2::after,.ap-hdl::before,.ap-hdl::after{content:"";position:absolute;width:7px;height:7px;background:var(--paper);border:1px solid var(--nv);box-sizing:border-box;}
.ap-sh2::before{left:-4px;top:-4px;}
.ap-sh2::after{right:-4px;bottom:-4px;}
.ap-hdl{position:absolute;inset:0;pointer-events:none;}
.ap-hdl::before{right:-4px;top:-4px;}
.ap-hdl::after{left:-4px;bottom:-4px;}
.ap-obj figcaption,.ap-asym figcaption{margin-top:.9rem;max-width:46ch;padding:.35rem .6rem;background:var(--paper);font-family:var(--sans);font-size:.88rem;line-height:1.45;color:var(--mut);}
.ap-obj figcaption{display:inline-block;}
.ap-asym{display:grid;grid-template-columns:minmax(0,680px) minmax(0,1fr);gap:0 2.2rem;align-items:end;margin:0;}
.ap-asym figcaption{margin:0;padding:.7rem 0 .2rem;border-top:1px solid var(--ink2);background:none;max-width:24ch;font-family:var(--serif);font-size:1.1rem;line-height:1.45;color:var(--ink2);}
@media (max-width:760px){
  .ap-pic > .ap-c{padding:1rem .6rem 1.1rem;}
  .ap-obj{margin:0;width:100%;}
  .ap-asym{display:block;}
  .ap-asym figcaption{margin-top:.8rem;max-width:none;}
}
@media print{
  .ap-pic{break-inside:avoid;}
  .ap-obj{width:min(520px,100%);}
}

/* ---------- recalculation flash (motion only) ---------- */
.ap-v{display:inline-block;}
.ap-fl{position:absolute;inset:0;background:var(--gold);opacity:0;pointer-events:none;}
@media screen and (prefers-reduced-motion:no-preference){
  .ap-armed .ap-ghost .ap-now,.ap-armed .ap-ghost .ap-ct,.ap-armed .ap-ghost #ap-cost p,.ap-armed .ap-ghost .ap-sh{opacity:.2;}
  .ap-armed .ap-now,.ap-armed .ap-ct,.ap-armed #ap-cost p,.ap-armed .ap-sh{transition:opacity .3s ease;}
  .ap-armed .hit > .ap-fl{animation:apfl .9s ease-out;}
  .ap-armed .hit > .ap-v{animation:apv .45s cubic-bezier(.2,.7,.2,1);}
  @keyframes apfl{0%{opacity:.42}100%{opacity:0}}
  @keyframes apv{0%{opacity:0;transform:translateY(-.45em)}100%{opacity:1;transform:none}}
}

@media print{
  .apw .reveal{opacity:1 !important;transform:none !important;}
  .ap-bar,.ap-tabs,.ap-skip{display:none !important;}
  .ap-sheet{break-inside:auto;padding-top:1.6rem;}
  .ap-r{break-inside:avoid;}
  .ap-fade{display:none;}
  .ap-in select{padding-left:.6rem;padding-right:1.3rem;font-size:.82rem;}
}

/* ---------- Color 2026-10-09: navy and electric blue lead, red for cost,
   gold for hardening, green only for a pass. The workbook gains the colors a
   finance model actually carries: a blue selection, conditional formatting,
   colored data bars and a dark desk under the recalculation sheet. ---------- */
.apw{--blue:#0003cc;--bt:#ececfb;--bd:#0002a8;--red:#e5322d;--redt:#FDF3F3;--goldd:#8A6413;--gt:#FBF3E0;--grn:#2E7D5B;--grt:#F1F8F4;}
.apw .ap-main{overflow-x:clip;}
.apw .ap-main ::selection{background:var(--blue);color:#fff;}

/* selection system in blue: selected cell, its column letter and row number */
.ap-c.sel{outline-color:var(--blue);}
.ap-c.sel::after{background:var(--blue);}
.ap-sh2{outline-color:var(--blue);}
.ap-sh2::before,.ap-sh2::after,.ap-hdl::before,.ap-hdl::after{border-color:var(--blue);}
.ap-hd span.on{background:var(--bt);color:var(--bd);box-shadow:inset 0 -2px 0 var(--blue);}
.ap-r.on::before{background:var(--bt);color:var(--bd);}
.ap-fxl{color:var(--blue);}
.ap-th .ap-c{color:var(--nv);border-bottom-color:var(--nv);}
.ap-no{color:var(--blue);}

/* timeline: colored data bars with the figure set on the bar */
.ap-tl .ap-db{text-align:left;padding-left:.95rem;}
.ap-tl .ap-db i{top:.4rem;bottom:.4rem;left:.4rem;right:.4rem;}
.ap-tl .ap-db span{display:inline-block;padding-left:.35rem;font-family:var(--serif);font-size:1.45rem;font-weight:500;line-height:1.1;}
.ap-db-pub i{background:repeating-linear-gradient(135deg,var(--paper2) 0 5px,var(--hdr2) 5px 6px);}
.ap-db-pub span{color:var(--mut);text-decoration:line-through;text-decoration-thickness:1.5px;text-decoration-color:var(--red);}
.ap-db-fp i{background:var(--bt);}
.ap-db-fp span{color:var(--bd);}
.ap-db-me i{background:var(--blue);}
.ap-db-me span{color:#fff;}
.ap-db-max i{background:var(--nv);}
.ap-db-max span{color:#fff;}
.ap-tl.on .ap-k{color:var(--blue);}

/* decisions: build team chips, and the 5 of 8 as a segmented bar */
.ap-dec .ap-o[data-h="Build team"]{color:var(--bd);font-weight:600;}
.ap-dec .ap-o.ap-out{color:var(--red2);}
.ap-lk{color:var(--red2);}
.ap-tot .ap-big{font-family:var(--serif);font-size:clamp(2.2rem,4vw,3rem);font-weight:500;letter-spacing:-.02em;color:var(--red2);}
.ap-tot .ap-big{display:flex;align-items:center;justify-content:flex-end;}
#ap-total{color:var(--blue);}
.ap-seg{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:3px;max-width:34rem;margin-top:1.1rem;}
.ap-seg span{display:block;padding:.42rem 0 .38rem;text-align:center;font-family:var(--sans);font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1;color:#fff;}
.ap-seg .i{background:var(--blue);}
.ap-seg .o{background:var(--red2);}
.ap-c .ap-segk{display:flex;gap:1.4rem;margin-top:.55rem;font-family:var(--sans);font-size:.8rem;color:var(--mut);}
.ap-segk span::before{content:"";display:inline-block;width:.7rem;height:.7rem;margin-right:.4rem;vertical-align:-.06rem;}
.ap-segk .i::before{background:var(--blue);}
.ap-segk .o::before{background:var(--red2);}

/* mapping: fit as a status */
.ap-mp .ap-fit{color:var(--grn);}
.ap-mp .ap-fit::before{content:"";display:inline-block;width:.55rem;height:.55rem;margin-right:.45rem;border-radius:50%;background:var(--grn);vertical-align:.05rem;}
.ap-jam .ap-fit{color:var(--red2);}
.ap-jam .ap-fit::before{background:var(--red);border-radius:0;}

/* stages: the sheet sits on a dark navy desk ruled like graph paper */
#stages{position:relative;isolation:isolate;padding-bottom:clamp(2.6rem,6vw,4.4rem);}
#stages::before{content:"";position:absolute;z-index:-1;left:50%;width:100vw;top:clamp(1.3rem,3vw,2.3rem);bottom:0;transform:translateX(-50%);
  background-color:var(--nv);
  background-image:linear-gradient(rgba(236,236,251,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(236,236,251,.07) 1px,transparent 1px);
  background-size:28px 28px;}
#stages .ap-g{border-color:var(--nv);}
#stages .ap-fade{display:none;}
#stages + .ap-sheet{padding-top:clamp(3rem,7vw,5.2rem);}
/* three-tone conditional formatting */
.ap-st[data-s="o"],.ap-sw[data-s="o"]{background:var(--bt);color:var(--bd);}
.ap-st[data-s="h"],.ap-sw[data-s="h"]{background:var(--gt);color:var(--goldd);font-weight:600;}
.ap-st[data-s="l"],.ap-sw[data-s="l"]{background:#f3dfda;color:var(--red2);}
.ap-st.cur{box-shadow:inset 2px 0 0 var(--blue),inset -2px 0 0 var(--blue);}
.ap-th .ap-c.cur{box-shadow:inset 0 -3px 0 var(--blue);color:var(--blue);}
.ap-in{background:var(--bt);}
.ap-in select{color:var(--bd);background-image:linear-gradient(45deg,transparent 50%,var(--blue) 50%),linear-gradient(135deg,var(--blue) 50%,transparent 50%);}
.ap-sh{color:var(--nv);}
/* counts drawn as bars that grow from the count toward the left */
.ap-cnt .ap-c.s5{position:relative;}
.ap-cbar{position:absolute;right:.6rem;top:50%;height:.62rem;margin-top:-.31rem;width:calc(100% - 1.2rem);transform-origin:right center;transform:scaleX(var(--n,0));}
.ap-cnt:nth-of-type(1) .ap-cbar,.ap-cnt .ap-cbar{background:var(--bt);}
.ap-cnt .ap-ct[data-s="o"]{color:var(--bd);}
.ap-cnt .ap-ct[data-s="h"]{color:var(--goldd);}
.ap-cnt .ap-ct[data-s="l"]{color:var(--red2);}
.ap-cnt .ap-ct{font-family:var(--serif);font-size:1.35rem;font-weight:500;}
.ap-cnt:has(.ap-sw[data-s="o"]) .ap-cbar{background:var(--blue);}
.ap-cnt:has(.ap-sw[data-s="h"]) .ap-cbar{background:var(--gold);}
.ap-cnt:has(.ap-sw[data-s="l"]) .ap-cbar{background:var(--red2);}
.ap-cost .ap-k{color:var(--red2);}

/* scorer */
#ap-gates{font-weight:600;}
#ap-gates.ap-opn{color:var(--red2);}
#ap-gates.ap-clr{color:var(--grn);}
.ap-gate{color:var(--red2);}
.ap-pt{color:var(--blue);}
.ap-verd .ap-vt{color:var(--nv);}

/* practices: the figures read as figures */
#practices .ap-m[data-h]{font-family:var(--serif);font-size:1.18rem;font-weight:500;color:var(--blue);}
.ap-ai .ap-c{background:var(--bt);}
.ap-ai .ap-k{color:var(--bd);}

/* lessons: cost in red, the computed one highlighted */
.ap-cs{color:var(--red2);}
.ap-cs.sel{background:var(--redt);}
#lessons .ap-no{font-family:var(--serif);font-size:1.5rem;font-weight:500;line-height:1;margin-bottom:.45rem;}

/* 90-day test */
.ap-box{border-color:var(--blue);}
.ap-chk .ap-k{color:var(--bd);}
.ap-res .ap-big{font-family:var(--serif);font-size:clamp(2rem,3.4vw,2.6rem);font-weight:500;}
.ap-good .ap-c{background:var(--grt);}
.ap-good .ap-big{color:var(--grn);}
.ap-bad .ap-c{background:var(--redt);}
.ap-bad .ap-big{color:var(--red2);}

/* sheet tabs: the current tab in navy */
.ap-tabs{border-top-color:var(--nv);}
.ap-tabs a[aria-current]{background:var(--nv);color:#fff;box-shadow:inset 0 -3px 0 var(--blue);}

@media screen and (prefers-reduced-motion:no-preference){
  .ap-armed .ap-cbar{transition:transform .7s cubic-bezier(.2,.7,.2,1);}
  .ap-armed .ap-ghost .ap-cbar{opacity:.2;}
}
@media (max-width:760px){
  .ap-tot .ap-big{justify-content:flex-start;}
  .ap-seg span{font-size:.75rem;}
  .ap-x .ap-cnt .ap-c.s5{display:block;}
}
@media print{
  #stages::before{display:none;}
  .ap-db i,.ap-seg span,.ap-segk span::before,.ap-st,.ap-sw,.ap-cbar,.ap-good .ap-c,.ap-bad .ap-c,.ap-in,.ap-mp .ap-fit::before,.ap-ai .ap-c{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
}
.ap-tl .ap-db i{top:.55rem;bottom:auto;height:2.1rem;}
.ap-tl .ap-db span{line-height:2.1rem;margin-top:-.2rem;}
#timeline .ap-th .ap-n{text-align:left;}
@media (max-width:760px){.ap-tl .ap-db i{top:2rem;}.ap-tl .ap-db span{margin-top:0;}}
#ap-total{white-space:nowrap;font-size:clamp(1.7rem,2.6vw,2.2rem);}

/* QA 2026-10-10 (layout after the color pass) */
@media (max-width:760px){
  /* The count bars were anchored to the right end of a five-column cell, which on a
     phone sits under the pinned Now column, so the bars never showed. They now grow
     from the left inside the one stage column that stays in view. */
  .ap-x .ap-cbar{left:.5rem;right:auto;width:calc(84px - 1rem);transform-origin:left center;}
  /* Hidden column-head rows stopped counting, so on a phone every row number below a
     head ran one short of the cell the formula bar names (row 20 shown, E21 named). */
  .ap-th:not(.ap-sct) + .ap-r{counter-increment:apr 2;}
  .ap-x .ap-th + .ap-r{counter-increment:apr;}
}
