/* Playbook kit styles over /style.css and its .page-main frame; site tokens only. Text is ink, muted or faint
   (5:1 or more on the ground); control edges use --faint (3:1 or more), --rule is decoration only. Focus is a 1px ink
   outline 3px out, as on the site. Controls are 44px or more. */
.pb-page{overflow-x:clip}
.pb-chapter{--pb-shift:0rem;--pb-stage-w:min(72rem,calc(100vw - 2 * var(--gutter)));container-type:inline-size;position:relative;width:min(100%,calc(var(--markcol-page) + var(--gap) + var(--wide) + 2 * var(--gutter)));margin-inline:auto;padding-inline:var(--gutter)}
.page-main > .pb-chapter{display:block}
.pb-chapter > *,.pb-chapter section > *{max-width:var(--measure)}
.pb-chapter > .pb-figure,.pb-chapter > section{max-width:none}
.pb-chapter section{margin-top:clamp(3rem,6vw,5rem)}
.pb-chapter h2{font-size:var(--t-section);line-height:1.25;margin-bottom:1rem}
.pb-chapter p + p{margin-top:1rem}
.pb-chapter ul{margin:0;padding:0;list-style:none}
@media (min-width:48rem){
  .pb-chapter{--pb-shift:calc((var(--markcol-page) + var(--gap)) / 2);padding-left:calc(var(--gutter) + var(--markcol-page) + var(--gap))}
  .pb-chapter > .pb-mark{position:absolute;top:.4rem;left:calc(var(--gutter) + (var(--markcol-page) - 4.5rem) / 2);margin:0}
}
.pb-mark .mark{display:block}
.pb-head .pb-part,.pb-label,.pb-meter-label,.pb-assumptions legend,.pb-tag{color:var(--muted);font-size:var(--t-meta)}
.pb-head h1{margin-top:.5rem}
.pb-frame{margin-top:2.5rem}
.pb-frame blockquote{margin:0;font-size:var(--t-lede);line-height:1.45;padding-left:1.25rem;border-left:1px solid var(--rule)}
.pb-frame .source{margin-top:.6rem;padding-left:1.25rem}
.pb-head + .pb-figure{margin-top:clamp(1.5rem,3vw,2.5rem)}
.pb-lede{font-size:var(--t-lede);line-height:1.45;margin-top:1.5rem}
.pb-lede + .pb-lede{margin-top:1rem}

/* the stage: wider than the column and centred on the page; full width less the gutter on phones. The still shows
   until .pb-live, then the canvas or .pb-layer takes its place. */
.pb-figure{position:relative;width:var(--pb-stage-w);max-width:none;margin:clamp(2.5rem,5vw,4rem) 0 0 calc((100% - var(--pb-stage-w)) / 2 - var(--pb-shift))}
.pb-figure > figcaption,.pb-figure > .pb-controls,.pb-figure > .pb-assumptions{margin-left:calc((var(--pb-stage-w) - 100cqw) / 2 + var(--pb-shift))}
.pb-stage{position:relative}
.pb-still{display:block;width:100%;height:auto}
.pb-stage > canvas,.pb-stage > .pb-layer{position:absolute;inset:0;width:100%;height:100%;display:none}
.pb-live .pb-stage > .pb-still{visibility:hidden}
.pb-live .pb-stage > canvas,.pb-live .pb-stage > .pb-layer{display:block}
.pb-figure figcaption,.pb-chartbox figcaption{color:var(--muted);font-size:var(--t-meta);line-height:1.5;margin-top:1rem;max-width:min(var(--measure),66ch)}
.pb-still .pb-line{fill:none;stroke:var(--trail);stroke-width:2.4;vector-effect:non-scaling-stroke;stroke-linecap:square}
.pb-still .pb-lit{fill:var(--spark)}
.pb-still .pb-dim{fill:var(--ground);stroke:var(--faint);stroke-width:1.5;vector-effect:non-scaling-stroke}

/* controls: hairline edges, square corners, the site's face, no caps */
.pb-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-top:1.25rem}
.pb-btn,.pb-toggle,.pb-chip{font:inherit;font-size:var(--t-meta);line-height:1.3;color:var(--ink);background:none;border:1px solid var(--faint);border-radius:0;min-height:44px;min-width:44px;padding:.55rem 1rem;cursor:pointer}@media (prefers-reduced-motion:no-preference){.pb-btn,.pb-toggle,.pb-chip{transition:border-color .2s,background-color .2s}}
.pb-btn:hover,.pb-toggle:hover,.pb-chip:hover,.pb-toggle[aria-pressed="true"],.pb-chip.is-carried,.pb-chip.is-dragging,.pb-zone.is-target{border-color:var(--ink)}
.pb-toggle[aria-pressed="true"],.pb-chip.is-carried,.pb-chip.is-dragging,.pb-zone.is-target{background:var(--ground-raised)}
.pb-btn:focus-visible,.pb-toggle:focus-visible,.pb-chip:focus-visible,.pb-dial:focus-visible,.pb-chapter [tabindex]:not(.pb-point):focus-visible{outline:1px solid var(--ink);outline-offset:3px}
.pb-toggle{display:inline-flex;align-items:center;gap:.6rem}
.pb-toggle::before{content:"";width:.55rem;height:.55rem;border:1px solid var(--faint)}@media (prefers-reduced-motion:no-preference){.pb-toggle::before{transition:background-color .3s}}
.pb-toggle[aria-pressed="true"]::before{background:var(--spark);border-color:var(--spark)}
.pb-chip{position:relative;touch-action:none;user-select:none;-webkit-user-select:none}
.pb-chip.is-dragging{z-index:5;cursor:grabbing;transition:none}
.pb-chip.is-carried{border-color:var(--spark)}
.pb-zone{border:1px solid var(--faint);padding:.75rem;min-height:5rem}@media (prefers-reduced-motion:no-preference){.pb-zone{transition:border-color .2s,background-color .2s}}
.pb-zone [data-zone-items]{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem;min-height:44px}
.pb-zones{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:1rem}

/* SVG points: an invisible hit circle of 44px or more; focus and drag draw a 1px ink ring */
.pb-point{cursor:grab;outline:none}
.pb-point.is-dragging{cursor:grabbing}
.pb-point .pb-hit{fill:transparent}
.pb-point .pb-dot,.pb-dial-knob{fill:var(--spark)}
.pb-point .pb-ring{fill:none;stroke:transparent;vector-effect:non-scaling-stroke}
.pb-point:focus-visible .pb-ring,.pb-point.is-dragging .pb-ring{stroke:var(--ink)}
.pb-dial{display:inline-block;position:relative;cursor:pointer;touch-action:none;min-width:44px;min-height:44px}
.pb-dial svg{display:block;overflow:visible}
.pb-dial-line{width:min(100%,18rem)}
.pb-dial-line svg{width:100%;height:44px}
.pb-dial-circle svg{width:7.5rem;height:7.5rem}
.pb-dial-ring,.pb-dial-track,.pb-dial-tick{fill:none;stroke:var(--faint);vector-effect:non-scaling-stroke}@media (prefers-reduced-motion:no-preference){.pb-dial-ring,.pb-dial-track,.pb-dial-tick{transition:stroke .3s}}
.pb-dial-fill,.pb-dial-tick.is-on{stroke:var(--ink);stroke-width:2;vector-effect:non-scaling-stroke}
.pb-dial-tick.is-on{stroke:var(--spark)}

/* a meter: set --v from 0 to 1 on .pb-meter-track; its value sits beside it as text */
.pb-meter{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem 1rem;max-width:var(--measure)}
.pb-meter-label{grid-column:1 / -1}
.pb-meter-track{position:relative;height:3px;background:var(--rule)}
.pb-meter-track::after{content:"";position:absolute;inset:0;transform:scaleX(var(--v,0));transform-origin:0 50%;background:var(--ink)}@media (prefers-reduced-motion:no-preference){.pb-meter-track::after{transition:transform .4s var(--ease-draw)}}
[data-pb-tier="still"] .pb-meter-track::after{transition:none}
.pb-meter-value,.pb-chart text{font-variant-numeric:lining-nums tabular-nums}
.pb-assumptions{border:0;border-top:1px solid var(--rule);margin:1.75rem 0 0;padding:1rem 0 0;max-width:var(--measure)}
.pb-assumptions > div{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.25rem 1rem;margin-top:.75rem}

/* charts from chart.js */
.pb-chartbox{margin:2rem 0 0;max-width:var(--measure)}
.pb-chartbox .chart-title{font-size:1.125rem;line-height:1.35;margin-bottom:.9rem}
.pb-chart{display:block;width:100%;max-width:26rem;height:auto;overflow:visible}
.pb-chart text{font-family:var(--font);fill:var(--muted)}
.pb-chart .bar-fill,.pb-chart .pt{fill:var(--faint)}
.pb-chart .hi{fill:var(--ink)}
.pb-chart .grid{stroke:var(--rule);vector-effect:non-scaling-stroke}
.pb-chart .line{fill:none;stroke:var(--ink);stroke-width:1.75;stroke-linejoin:round}
.pb-chartbox table{white-space:normal}

/* where I used it, the credit, the nav, the index */
.pb-used li,.pb-parts li{padding:.6rem 0;border-top:1px solid var(--rule);line-height:1.4}
.pb-tag{display:block;margin-top:.2rem}
.pb-credit{margin-top:clamp(3rem,6vw,5rem);padding-top:1rem;border-top:1px solid var(--rule);color:var(--muted);font-size:var(--t-meta);line-height:1.5}
.pb-nav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;margin-top:2.5rem;font-size:var(--t-meta);color:var(--muted)}
.pb-nav a,.pb-parts li a{display:inline-block;min-height:44px;padding-block:.6rem;color:var(--ink)}
.pb-coming{color:var(--faint);font-size:var(--t-meta);margin-left:.6rem}
.pb-spine-parts{position:relative;height:1.6rem;margin-top:.5rem;color:var(--muted);font-size:.8125rem}
.pb-spine-parts span{position:absolute;transform:translateX(-50%);white-space:nowrap}
.pb-parts{margin-top:clamp(3rem,6vw,4.5rem)}
.pb-parts > section{margin-top:2.75rem;max-width:var(--measure)}
.pb-parts > section:first-child{margin-top:0}
.pb-parts h2{margin:0}
.pb-parts .pb-part-line{color:var(--muted);margin-top:.35rem}
.pb-parts ol{margin-top:.9rem}
.pb-parts li.is-coming{color:var(--muted)}
.pb-ledger .pb-row{position:relative;display:grid;grid-template-columns:2.5rem minmax(0,1fr);column-gap:1rem;align-items:center;border-top:0}
.pb-runmark{width:2.5rem;height:1.5rem;overflow:visible}
.pb-runmark polyline{fill:none;stroke:var(--faint);stroke-width:1.5;stroke-linecap:square;stroke-linejoin:miter}
.pb-runmark circle{fill:var(--spark)}
.pb-row.is-coming .pb-runmark circle{fill:var(--faint)}
.pb-parts li:has(a){padding-block:0}
/* a hidden data table keeps its 1px box on a phone (a table's min-content would otherwise widen the page) */
.pb-figure table.visually-hidden{table-layout:fixed;width:1px}
