/* Product Engineer profile. Same pixel language as the job map: dark LCD bands alternating with
   paper bands, monospace labels, 12x12 sprites. Discipline colours come from the PE Loop symbol and
   appear in sections 03 (the loop) and 07, always with a legend. */
.pp{--ink:#171918;--paper:#f3f0e7;--lcd:#1f2a1c;--lime:#d4ed98;--lime-deep:#4f6a1c;--muted:#545850;--line:#17191833;
  --d-user:#edcd42;--d-product:#8fae54;--d-tech:#6084d0;--eng:#6252bc;--px:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.pp .label{font:700 12px var(--px);letter-spacing:2px;opacity:.8;margin:0 0 10px}
.pp h2{font-size:clamp(28px,4vw,52px);line-height:1.02;letter-spacing:-.04em;font-weight:600;margin:0 0 16px;max-width:900px}
.pp h3{margin:0}
.pp-inner{max-width:1180px;margin:0 auto}
.pp-intro{font-size:clamp(16px,1.4vw,19px);line-height:1.55;max-width:680px;margin:0 0 32px}
.pp a{color:inherit;text-underline-offset:3px}

/* Hero */
.pp-hero{background:var(--ink);color:var(--paper);padding:34px 5% 64px;background-image:radial-gradient(#ffffff0d 1px,transparent 1px);background-size:6px 6px}
.pp-hero__top{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font:11px var(--px);letter-spacing:1.2px;color:#c8ccc5}
.pp-badge{border:1px solid var(--lime);color:var(--lime);padding:3px 8px}
.pp-hero h1{margin:28px 0 22px;font-size:clamp(42px,7vw,104px);line-height:.95;letter-spacing:-.06em;font-weight:600;max-width:1100px}
.pp-hero h1 em,.pp-hero--end h2{font-style:normal;color:var(--lime)}
/* Two fixed lines: the size follows the viewport so "The Product Engineer" never wraps. */
.pp-hero h1.pp-hero__title{font-size:min(104px,8.6vw)}
.pp-hero__title>span,.pp-hero__title>em{display:block;white-space:nowrap}
.pp-hero__sub{margin:-6px 0 22px;font-size:clamp(22px,2.6vw,34px);line-height:1.2;letter-spacing:-.02em;font-weight:500;color:#e8eae3;max-width:900px}
.pp-lede{max-width:660px;font-size:clamp(17px,1.6vw,21px);line-height:1.5;color:#ced0c9;margin:0 0 16px}
.pp-hero__note{font-size:13px;color:#a9ada5;margin:0}
.pp-loopmark{margin-top:40px}
.pp-loopmark .pp-sprite rect{fill:#3a4a33}
.pp-loopmark--lit .pp-sprite rect{fill:var(--lime)}
.pp-hero--end{padding-top:56px}
.pp-hero--end h3{font:700 13px var(--px);letter-spacing:2px;color:var(--lime);margin:36px 0 10px}
/* Same panel as the definition in FN02: light card, lime rule on the left. */
.pp-definition{max-width:880px;margin:28px 0 18px;padding:26px 30px;background:#fdfcf6;border-left:7px solid var(--lime)}
.pp-definition__label{margin:0 0 12px;font:700 13px var(--px);letter-spacing:2px;color:#56651f}
.pp-definition blockquote{margin:0;font-size:clamp(19px,2vw,26px);line-height:1.5;color:#1d1f1c}
@media (max-width:600px){.pp-definition{padding:20px}}
.pp-open{max-width:720px;padding-left:20px;line-height:1.6;color:#ced0c9}
.pp-play{all:unset;cursor:pointer;display:inline-flex;gap:10px;margin-top:28px;padding:14px 18px;background:var(--lime);color:var(--ink);font:700 13px var(--px);letter-spacing:1.5px;box-shadow:4px 4px 0 #6f8f2a}
.pp-play:focus-visible,.pp-linkbtn:focus-visible{outline:3px solid var(--lime);outline-offset:3px}
.pp-linkbtn{all:unset;cursor:pointer;text-decoration:underline;text-underline-offset:3px;font-weight:600}

/* Bands */
.pp-band{padding:72px 5%}
.pp-band--paper{background:var(--paper);color:var(--ink)}
.pp-band--ink{background:#20251d;color:var(--paper)}
.pp-band--ink .pp-intro{color:#ced0c9}
.pp-sprite rect{fill:currentColor}
.pp-sprite rect.acc{fill:var(--lime)}
.pp-band--paper .pp-sprite rect.acc{fill:var(--lime-deep)}

/* 01 Voices */
.pp-types{display:flex;flex-wrap:wrap;gap:10px 22px;margin:0 0 24px;font:13px var(--px)}
.pp-type{display:inline-flex;align-items:center;gap:8px}
.pp-roster{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.pp-voice a{display:flex;gap:12px;align-items:center;padding:12px;border:2px solid var(--ink);text-decoration:none;background:#fffdf6;min-height:64px}
.pp-voice a:hover,.pp-voice a:focus-visible{background:var(--lime);outline:none}
.pp-voice b{display:block;font-size:15px}
.pp-voice small{font:12px var(--px);color:var(--muted)}
.pp-voice em{font-style:normal;background:var(--ink);color:var(--paper);padding:0 4px}

/* 02 Path */
.pp-path{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.pp-step{position:relative;background:var(--lcd);border:3px solid #0b0d0a;box-shadow:0 0 0 3px #3a4a33;padding:18px;display:flex;flex-direction:column;gap:12px}
.pp-step:not(:last-child)::after{content:"▶";position:absolute;right:-16px;top:40px;color:var(--lime);font:14px var(--px);z-index:1}
.pp-step__head{display:flex;justify-content:space-between;align-items:flex-start;color:var(--lime)}
.pp-step__n{font:700 22px var(--px);color:#6f8f2a}
.pp-step h3{font-size:19px;line-height:1.2;color:var(--paper)}
.pp-step__count{margin:0;font:12px var(--px);color:#c8ccc5;display:grid;gap:6px}
.pp-step__count b{color:var(--lime);font-size:15px}
.pp-step__quote{margin:0;font-size:15px;line-height:1.45;color:#e3e5df}
.pp q{quotes:"“" "”"}
.pp-cite{font:12px var(--px);color:#a9ada5}
.pp-band--paper .pp-cite{color:var(--muted)}
.pp details summary{cursor:pointer;font:12px var(--px);letter-spacing:.5px}
.pp details ul{margin:10px 0 0;padding-left:18px;display:grid;gap:8px;font-size:14px;line-height:1.45}
.pp-step details summary{color:var(--lime)}

/* cell meters (one cell per source) */
.pp-cells{display:inline-grid;gap:2px;width:min(100%,230px);height:8px;vertical-align:middle}
.pp-cells i{background:#2f3d2a}
.pp-cells i.on{background:var(--lime)}
.pp-band--paper .pp-cells i{background:#d9d5c8}
.pp-band--paper .pp-cells i.on{background:var(--ink)}

/* 03 Loop */
.pp-loop{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,.6fr) minmax(0,.8fr);gap:14px;align-items:start}
.pp-phase{border:2px solid var(--ink);padding:14px;background:#fffdf6}
.pp-phase h3{font:700 13px var(--px);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:12px;display:flex;justify-content:space-between}
.pp-phase--across,.pp-phase--outside{border-style:dashed;background:transparent}
.pp-dots{display:flex;flex-wrap:wrap;gap:4px}
.pp-dot{all:unset;cursor:pointer;width:16px;height:16px;background:var(--ink);box-sizing:border-box}
.pp-dot:hover,.pp-dot:focus-visible{background:var(--lime);outline:2px solid var(--ink);outline-offset:1px}
.pp-phase--outside .pp-dot,.pp-phase--across .pp-dot{background:transparent;border:2px solid var(--ink)}
.pp-readout{margin:18px 0 0;min-height:3.2em;font-size:16px;line-height:1.5;border-left:4px solid var(--lime-deep);padding:6px 0 6px 14px;max-width:900px}
.pp-band--ink .pp-readout{border-color:var(--lime)}
.pp-tag{display:inline-block;font:11px var(--px);letter-spacing:1px;text-transform:uppercase;border:1px solid currentColor;padding:1px 6px;margin-left:6px}

/* 04 Practices */
.pp-practices{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.pp-card details{background:#141b12;border:2px solid #2f3d2a;padding:14px;height:100%;box-sizing:border-box}
.pp-card details[open]{border-color:var(--lime)}
.pp-card summary{list-style:none;display:grid;grid-template-columns:auto 1fr;gap:6px 12px;align-items:start;color:var(--lime)}
.pp-card summary::-webkit-details-marker{display:none}
.pp-card summary:focus-visible{outline:3px solid var(--lime);outline-offset:4px}
.pp-card__n{font:700 12px var(--px);color:#6f8f2a;justify-self:end}
.pp-card__t{grid-column:1/-1;font:600 17px/1.25 system-ui,sans-serif;color:var(--paper)}
.pp-card__m{grid-column:1/-1;display:grid;gap:6px}
.pp-card__m small{font:12px var(--px);color:#c8ccc5}
.pp-card__m b{color:var(--lime)}
.pp-card p{font-size:14px;line-height:1.5;color:#ced0c9}

/* 05 Cherny */
.pp-quote{margin:0 0 22px;font-size:clamp(22px,2.6vw,34px);line-height:1.2;letter-spacing:-.02em;max-width:820px}
.pp-quote cite{display:block;font:12px var(--px);font-style:normal;margin-top:10px;color:var(--muted)}
.pp-stages{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.pp-stage{border:2px solid var(--ink);background:#fffdf6;padding:14px;display:flex;flex-direction:column;gap:10px}
.pp-stage__n{margin:0;font:700 12px var(--px);color:var(--muted)}
.pp-stage h3{font:700 15px var(--px);letter-spacing:1px;text-transform:uppercase}
.pp-stage__def{margin:0;font-size:13px;line-height:1.45;color:var(--muted);min-height:5.8em}
.pp-stage__count{margin:0;font:12px var(--px);display:grid;gap:6px}
.pp-phasebar{display:grid;gap:4px}
.pp-phasebar__row{display:grid;grid-template-columns:56px 1fr 18px;gap:6px;align-items:center;font:11px var(--px)}
.pp-phasebar__track{height:8px;background:#e4e0d4}
.pp-phasebar__track i{display:block;height:100%;background:var(--ink);border-radius:0 4px 4px 0}
.pp-callout{margin:24px 0 0;padding:18px 20px;background:var(--ink);color:var(--paper);font-size:17px;line-height:1.55;max-width:900px}
.pp-callout b{color:var(--lime)}

/* 06 Compare */
.pp-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.pp-filters button{all:unset;cursor:pointer;font:12px var(--px);padding:6px 10px;border:1px solid #4a5a43;color:#c8ccc5}
.pp-filters button[aria-pressed="true"]{background:var(--lime);color:var(--ink);border-color:var(--lime)}
.pp-filters button:focus-visible{outline:2px solid var(--lime);outline-offset:2px}
.pp-matrix-wrap{overflow-x:auto;padding-bottom:6px}
.pp-matrix{display:grid;grid-template-columns:minmax(170px,230px) repeat(var(--cols),22px);gap:3px;min-width:max-content;padding-right:96px}
.pp-m__col{position:relative;height:92px}
/* labels at 45°: anchored at the column's bottom centre, rising to the right */
.pp-m__col span{position:absolute;left:50%;bottom:4px;transform-origin:0 100%;transform:rotate(-45deg);font:11px var(--px);color:#c8ccc5;white-space:nowrap}
.pp-m__row{font-size:13px;line-height:1.2;color:#e3e5df;align-self:center;padding-right:8px}
.pp-m__cell{width:22px;height:22px;background:#2a3326;box-sizing:border-box}
button.pp-m__cell{all:unset;cursor:pointer;width:22px;height:22px;background:var(--lime);box-sizing:border-box}
button.pp-m__cell:hover,button.pp-m__cell:focus-visible{outline:2px solid var(--paper);outline-offset:1px}
/* filter: sources of other kinds fade; the chosen kind's columns get a lime header */
.pp-matrix .is-dim{opacity:.15}
.pp-matrix .is-pick span{color:var(--lime);font-weight:700}

/* 07 Disciplines */
.pp-legend{display:flex;gap:18px;flex-wrap:wrap;margin:0 0 18px;font:13px var(--px)}
.pp-legend__item{display:inline-flex;align-items:center;gap:8px}
.pp-legend__item i{width:14px;height:14px;display:inline-block}
.d-user-design{background:var(--d-user)}
.d-product{background:var(--d-product)}
.d-tech{background:var(--d-tech)}
.pp-disc{display:grid;gap:10px;max-width:900px}
.pp-disc__row{display:grid;grid-template-columns:minmax(150px,260px) 1fr 92px;gap:12px;align-items:center}
.pp-disc__t{font-size:14px}
.pp-disc__bar{display:flex;gap:2px;height:18px}
.pp-disc__bar i{display:block;height:100%}
.pp-disc__bar i:first-child{border-radius:4px 0 0 4px}
.pp-disc__bar i:last-child{border-radius:0 4px 4px 0}
.pp-disc__top{font:12px var(--px);color:var(--muted)}

/* 08 Tensions */
.pp-tensions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.pp-tension{background:var(--lcd);border:3px solid #0b0d0a;box-shadow:0 0 0 3px #3a4a33;padding:18px}
.pp-tension h3{font:700 13px var(--px);letter-spacing:2px;text-transform:uppercase;color:var(--lime);margin-bottom:14px}
.pp-tension p{margin:0;font-size:15px;line-height:1.45}
.pp-tension .pp-vs{font:700 12px var(--px);color:#6f8f2a;margin:10px 0}
.pp-tension .pp-tension__note{margin-top:16px;color:#a9ada5;font-size:14px}

/* Method + no-JS table */
.pp-method p{max-width:820px;line-height:1.6}
.pp-table{border-collapse:collapse;margin-top:24px;font-size:14px;width:100%;max-width:960px}
.pp-table caption{text-align:left;font:12px var(--px);margin-bottom:8px;color:var(--muted)}
.pp-table th,.pp-table td{border-bottom:1px solid var(--line);padding:8px 10px 8px 0;text-align:left;vertical-align:top}
.pp-table td:nth-child(2),.pp-table td:nth-child(3){font-family:var(--px)}

@media (max-width:900px){
  .pp-path,.pp-tensions{grid-template-columns:1fr}
  .pp-step:not(:last-child)::after{content:"▼";right:auto;left:50%;top:auto;bottom:-18px}
  .pp-loop{grid-template-columns:1fr}
  .pp-stages{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .pp-stages{grid-template-columns:1fr}
  .pp-disc__row{grid-template-columns:1fr 70px}
  .pp-disc__t{grid-column:1/-1}
  .pp-hero,.pp-band{padding-left:16px;padding-right:16px}
}
@media (prefers-reduced-motion:reduce){.pp *{transition:none!important}}
@media (forced-colors:active){.pp-m__cell.on,.pp-dot{forced-color-adjust:none;border:1px solid CanvasText}}

/* Keep the wide comparison matrix from widening the page: it scrolls inside its own box. */
.pp{display:block;max-width:100vw;overflow-x:clip}
.pp>section,.pp-inner,.pp-path>li,.pp-loop>div,.pp-stages>article,.pp-tensions>article{min-width:0}
.pp-matrix-wrap{max-width:100%}

/* WHY THIS PIC? — game-style dialog behind a "?" button, as on the job map */
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pp-why{--c:var(--lime);width:22px;height:22px;padding:0;border:2px solid var(--c);border-radius:0;background:#0b0d0a;color:var(--c);font:700 12px/1 var(--px);cursor:pointer;box-shadow:2px 2px 0 #000;flex:none}
.pp-why:hover,.pp-why[aria-expanded="true"]{background:var(--c);color:#0b0d0a}
.pp-why:focus-visible,.pp-why__ok:focus-visible{outline:3px solid var(--lime);outline-offset:2px}
.pp-why__box{--c:var(--lime);position:absolute;z-index:5;left:6px;right:6px;top:52px;min-width:220px;padding:12px 14px 10px;background:#0b0d0a;color:var(--paper);font:12px/1.55 var(--px);text-align:left;
  border:3px solid var(--c);box-shadow:0 0 0 3px #0b0d0a,0 0 0 6px var(--c),6px 6px 0 6px #000;
  background-image:repeating-linear-gradient(0deg,#ffffff07 0 2px,transparent 2px 4px)}
.pp-why__box[hidden]{display:none}
.pp-why__title{margin:0 0 6px;color:var(--c);font-weight:700;letter-spacing:.12em;font-size:11px}
.pp-why__text{margin:0}
.pp-why__ok{display:block;margin:8px 0 0 auto;padding:2px 6px;border:0;background:none;color:var(--c);font:700 11px/1 var(--px);letter-spacing:.1em;cursor:pointer;animation:pp-blink 1s steps(2,start) infinite}
@keyframes pp-blink{to{visibility:hidden}}
@media (prefers-reduced-motion:reduce){.pp-why__ok{animation:none}}
/* placement: practice cards and path steps (top right), source-type legend and loop mark (inline) */
.pp-card{position:relative}
.pp-card>.pp-why{position:absolute;top:14px;right:44px}
.pp-step__head{gap:10px}
.pp-step__head .pp-why{margin-left:auto;order:2}
.pp-step__head .pp-step__n{order:3}
.pp-type{position:relative}
.pp-type .pp-why{margin-left:2px;width:18px;height:18px;font-size:11px}
.pp-type .pp-why__box{left:0;right:auto;width:260px;top:30px}
.pp-loopmark{position:relative;display:flex;align-items:flex-start;gap:10px;max-width:420px}
.pp-loopmark .pp-why__box{top:72px;left:0;right:auto;width:300px}

/* 03 Loop as a pixel infinity: discipline colours on the squares, ink frame so yellow reads on paper */
.pp-loop{display:block}
.pp-loop__legend{justify-content:center;margin-bottom:8px}
.pp-legend__note{color:var(--muted)}
.pp-loop__fig{margin:0 auto;max-width:860px;text-align:center}
.pp-loop__svg{display:block;width:100%;height:auto;overflow:visible}
/* monochrome until hovered, focused or tapped; then the square shows its discipline colours */
.pp-loop__svg .pp-sq rect{shape-rendering:crispEdges}
.pp-orbit{fill:none;stroke:#17191833;stroke-width:1.5;stroke-dasharray:2 6}
.pp-sq--move .pp-sq__frame,.pp-sq--orbit .pp-sq__frame{stroke:var(--paper);stroke-width:2}
.pp-sq{cursor:pointer;outline:none}
.pp-sq__frame{fill:none;stroke:var(--paper);stroke-width:1.5}
.pp-sq:is(:hover,:focus-visible,.is-on) .pp-sq__frame{stroke:var(--ink);stroke-width:3}
.pp-loop__label{font:700 13px var(--px);letter-spacing:2px;fill:var(--ink);stroke:var(--paper);stroke-width:6px;paint-order:stroke;stroke-linejoin:round}
.pp-loop__fig figcaption{font:12px var(--px);color:var(--muted);margin-top:6px}
.pp-loop__others{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:860px;margin:22px auto 0}
@media (max-width:560px){.pp-loop__others{grid-template-columns:1fr}.pp-loop__label{font-size:18px}}
.pp-sq__empty{fill:none;stroke:#17191840;stroke-width:1.5;stroke-dasharray:3 2}

/* 03 on the hero's dark dotted grid: light monochrome squares, colours still on hover/focus/tap */
.pp-band--grid{background:var(--ink);color:var(--paper);background-image:radial-gradient(#ffffff0d 1px,transparent 1px);background-size:6px 6px}
.pp-band--grid .pp-intro{color:#ced0c9}
.pp-band--grid .pp-linkbtn{color:var(--lime)}
.pp-band--grid .pp-legend__note,.pp-band--grid .pp-loop__fig figcaption,.pp-band--grid .pp-cite{color:#a9ada5}
.pp-band--grid .pp-readout{border-color:var(--lime)}
.pp-band--grid .pp-sq__frame{stroke:var(--ink)}
.pp-band--grid .pp-sq:is(:hover,:focus-visible,.is-on) .pp-sq__frame{stroke:var(--lime)}
.pp-band--grid .pp-sq--move .pp-sq__frame,.pp-band--grid .pp-sq--orbit .pp-sq__frame{stroke:var(--ink)}
.pp-band--grid .pp-sq__empty{stroke:#f3f0e740}
.pp-band--grid .pp-orbit{stroke:#f3f0e733}
.pp-band--grid .pp-loop__label{fill:var(--lime);stroke:var(--ink)}

/* Loop squares, every kind (on the track, travelling, orbiting): a base square in the band's
   monochrome, discipline strips hidden until hover, focus or tap. Kept last so it wins over band rules. */
.pp-loop__svg .pp-sq .pp-sq__base{fill:var(--ink)}
.pp-band--grid .pp-loop__svg .pp-sq .pp-sq__base{fill:var(--paper)}
.pp-loop__svg .pp-sq .pp-sq__strip{fill:none;transition:fill .15s steps(2)}
.pp-loop__svg .pp-sq:is(:hover,:focus-visible,.is-on) .pp-sq__strip.d-user-design{fill:var(--d-user)}
.pp-loop__svg .pp-sq:is(:hover,:focus-visible,.is-on) .pp-sq__strip.d-product{fill:var(--d-product)}
.pp-loop__svg .pp-sq:is(:hover,:focus-visible,.is-on) .pp-sq__strip.d-tech{fill:var(--d-tech)}

/* column highlight on hover/focus: the whole source column and its name */
.pp-m__col span{cursor:default}
.pp-m__cell.is-col{background:#4f5f47}
button.pp-m__cell.is-col{background:var(--lime);box-shadow:0 0 0 2px #9a9e96}
.pp-m__col.is-col span{color:var(--lime);font-weight:700}
.pp-m__col.is-col::after{content:"";position:absolute;left:50%;bottom:0;width:2px;height:6px;background:var(--lime)}

/* spare cells on the lobes: a faint pixel, so the loop still reads as one line */
.pp-band--grid .pp-sq__empty{stroke:none;fill:#f3f0e72e}
.pp-loop__label{font-size:20px}

/* small loop pixels: a thin grey frame on hover so the discipline colours stay visible,
   and the readout repeats them as labelled chips */
.pp-loop__svg .pp-sq:is(:hover,:focus-visible,.is-on) .pp-sq__frame,
.pp-band--grid .pp-loop__svg .pp-sq:is(:hover,:focus-visible,.is-on) .pp-sq__frame{stroke:#9a9e96;stroke-width:1}
.pp-chip{display:inline-flex;align-items:center;gap:6px;font:12px var(--px);margin-left:8px;white-space:nowrap}
.pp-chip i{width:12px;height:12px;display:inline-block}
.pp-loop__label{font-size:17px}

/* 04B ownership end to end: a four-step path per source */
.pp-own{display:grid;gap:6px;max-width:720px;margin-bottom:28px}
.pp-own__head,.pp-own__row{display:grid;grid-template-columns:minmax(120px,170px) 1fr 14px 1fr 14px 1fr 14px 1fr;gap:6px;align-items:center}
.pp-own__head span{font:11px var(--px);letter-spacing:1px;text-transform:uppercase;color:var(--muted);text-align:center}
.pp-own__head span:first-child{text-align:left}
.pp-own__head i,.pp-own__row i{font:12px var(--px);color:var(--muted);text-align:center;font-style:normal}
.pp-own__src{font:13px var(--px)}
.pp-own__src b{color:var(--lime-deep)}
.pp-own__step{height:16px;background:#e4e0d4}
.pp-own__step.on{background:var(--ink)}
.pp-own__row.is-full .pp-own__step.on{background:var(--lime-deep)}
.pp-own__h{font:700 13px var(--px);letter-spacing:2px;text-transform:uppercase;margin:0 0 12px}
.pp-own__quotes{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.pp-own__quotes p{margin:0;padding:14px;border:2px solid var(--ink);background:#fffdf6;font-size:15px;line-height:1.45}
@media (max-width:560px){.pp-own__head,.pp-own__row{grid-template-columns:96px 1fr 8px 1fr 8px 1fr 8px 1fr;gap:4px}.pp-own__src{font-size:11px}}

/* ownership grid: lit steps are buttons; hover/focus highlights row, column and that source's quotes */
.pp-own button.pp-own__step{all:unset;box-sizing:border-box;height:16px;cursor:pointer;background:var(--ink)}
.pp-own__row.is-full button.pp-own__step{background:var(--lime-deep)}
.pp-own__row.is-row .pp-own__src{font-weight:700}
.pp-own__row.is-row{background:#17191812}
.pp-own .pp-own__step.is-col{outline:2px solid #9a9e96;outline-offset:1px}
.pp-own button.pp-own__step:hover,.pp-own button.pp-own__step:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.pp-own__quotes p.is-hit{border-color:var(--lime-deep);box-shadow:4px 4px 0 var(--lime-deep)}
.pp-own__readout{margin:-12px 0 28px}
.pp-next{margin:28px 0 0;font:700 14px var(--px);letter-spacing:1px}
.pp-next a{color:var(--lime);text-decoration:underline;text-underline-offset:4px}
.pp-band--paper .pp-next a{color:var(--ink)}

/* disciplines: each coloured segment is a button that shows what was said */
.pp-disc__seg{all:unset;display:block;height:100%;cursor:pointer;box-sizing:border-box}
.pp-disc__seg.d-user-design{background:var(--d-user)}
.pp-disc__seg.d-product{background:var(--d-product)}
.pp-disc__seg.d-tech{background:var(--d-tech)}
.pp-disc__bar .pp-disc__seg:first-child{border-radius:4px 0 0 4px}
.pp-disc__bar .pp-disc__seg:last-child{border-radius:0 4px 4px 0}
.pp-disc__seg:hover,.pp-disc__seg:focus-visible,.pp-disc__seg.is-on{outline:3px solid var(--ink);outline-offset:2px}
#pp-disc-readout{max-width:900px}

/* compare: practice names stay frozen while the voice columns scroll sideways */
.pp-m__row,.pp-m__corner{position:sticky;left:0;z-index:2;background:#20251d;box-shadow:6px 0 6px -4px #0008}
.pp-m__row{padding:2px 10px 2px 0}
@media (max-width:560px){.pp-matrix{grid-template-columns:minmax(120px,140px) repeat(var(--cols),22px)}.pp-m__row{font-size:12px}}
.pp-m__row{align-self:stretch;display:flex;align-items:center}

/* voices: each card opens its excerpts; the source link sits at the end, in a new window */
.pp-voice details{border:2px solid var(--ink);background:#fffdf6;height:100%;box-sizing:border-box}
.pp-voice summary{list-style:none;display:flex;gap:12px;align-items:center;padding:12px;min-height:64px;cursor:pointer}
.pp-voice summary::-webkit-details-marker{display:none}
.pp-voice summary:hover,.pp-voice summary:focus-visible{background:var(--lime);outline:none}
.pp-voice details[open] summary{background:var(--lime)}
.pp-voice .pp-voice__n{display:block;margin-top:2px}
.pp-voice details ul{margin:0;padding:10px 14px 4px 30px;display:grid;gap:8px;font-size:14px;line-height:1.45}
.pp-voice__src{display:inline-block;margin:6px 14px 12px;font:700 12px var(--px);color:var(--ink)}
.pp-roster{align-items:start}.pp-voice details{height:auto}

/* 06 Disciplines, arcade variant (profile page only, opt-in with .pp-arcade): the Vertical Slice
   game's look. Black CRT screen with scanlines, Press Start 2P / VT323, bevelled bricks in the game's
   tech/design/product colours, one brick per excerpt and discipline. */
.pp-arcade{--a-black:#000;--a-ink:#e8e8e8;--a-dim:#8a8a8a;--a-yellow:#e8e05c;--a-green:#5cc85c;--a-blue:#4c70d8;
  --a-pixel:'Press Start 2P',ui-monospace,monospace;--a-term:'VT323',ui-monospace,monospace;
  background:repeating-linear-gradient(90deg,#2a1a0e 0 6px,#24160c 6px 12px);padding:56px 5%}
.pp-arcade__screen{position:relative;overflow:hidden;background:var(--a-black);color:var(--a-ink);border:10px solid #111;border-radius:18px;
  box-shadow:inset 0 0 80px rgba(76,112,216,.15),0 0 0 3px #3a2a1a,0 20px 40px rgba(0,0,0,.6);padding:clamp(18px,3vw,36px)}
.pp-arcade__crt{pointer-events:none;position:absolute;inset:0;z-index:2;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.35) 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.55) 100%)}
.pp-arcade .label{font:10px var(--a-pixel);letter-spacing:1px;color:var(--a-dim);opacity:1;text-transform:uppercase}
.pp-arcade h2{font:clamp(16px,2.4vw,26px)/1.4 var(--a-pixel);letter-spacing:0;text-transform:uppercase;color:var(--a-yellow);text-shadow:4px 4px 0 #8c5c2c}
.pp-arcade .pp-intro{font:clamp(20px,1.9vw,24px)/1.15 var(--a-term);color:var(--a-ink)}
.pp-arcade .pp-legend{font:9px var(--a-pixel);text-transform:uppercase;color:var(--a-ink);gap:18px}
.pp-arcade .pp-legend i{width:14px;height:14px;border-radius:0;box-shadow:inset -3px -3px 0 rgba(0,0,0,.3),inset 3px 3px 0 rgba(255,255,255,.25)}
.pp-arcade .pp-legend .d-user-design{background:var(--a-yellow)}
.pp-arcade .pp-legend .d-product{background:var(--a-green)}
.pp-arcade .pp-legend .d-tech{background:var(--a-blue)}
.pp-arcade__note{font:20px/1.15 var(--a-term);color:var(--a-dim);margin:10px 0 26px}
.pp-arcade .pp-disc{gap:14px;max-width:none}
.pp-arcade .pp-disc__row{grid-template-columns:minmax(150px,240px) 1fr 104px;gap:16px;padding-bottom:12px;border-bottom:2px dashed #222}
.pp-arcade .pp-disc__t{font:22px/1 var(--a-term);color:var(--a-ink)}
.pp-arcade .pp-disc__bar{height:auto;flex-wrap:wrap;gap:10px;align-items:center}
.pp-arcade .pp-disc__bar .pp-disc__seg{flex:none;display:flex;flex-wrap:wrap;gap:3px;height:auto;padding:3px;background:none;border-radius:0}
.pp-arcade .pp-brick{display:block;width:18px;height:18px;background:var(--c);box-shadow:inset -4px -4px 0 rgba(0,0,0,.3),inset 4px 4px 0 rgba(255,255,255,.25)}
.pp-arcade .pp-disc__seg.d-user-design{--c:var(--a-yellow)}
.pp-arcade .pp-disc__seg.d-product{--c:var(--a-green)}
.pp-arcade .pp-disc__seg.d-tech{--c:var(--a-blue)}
.pp-arcade .pp-disc__seg:hover,.pp-arcade .pp-disc__seg:focus-visible,.pp-arcade .pp-disc__seg.is-on{outline:2px dashed var(--a-yellow);outline-offset:2px}
.pp-arcade .pp-disc__seg.is-on .pp-brick{animation:pp-arcade-blink .8s steps(1) 2}
@keyframes pp-arcade-blink{50%{opacity:.35}}
.pp-arcade .pp-disc__top{font:9px/1.4 var(--a-pixel);text-transform:uppercase;color:var(--a-dim)}
.pp-arcade .pp-readout{position:relative;z-index:3;margin-top:24px;max-width:none;background:var(--a-black);color:var(--a-ink);border:4px solid var(--a-blue);border-radius:0;padding:14px 16px;font:21px/1.2 var(--a-term)}
.pp-arcade .pp-readout::before{content:'\25B6\FE0E  ';color:var(--a-yellow)}
.pp-arcade .pp-readout .pp-tag{font:9px var(--a-pixel);text-transform:uppercase;background:var(--a-yellow);color:#000;border-radius:0}
.pp-arcade .pp-readout .pp-cite,.pp-arcade .pp-readout .pp-cite a{color:#4cc8d8}
@media (max-width:640px){.pp-arcade .pp-disc__row{grid-template-columns:1fr 90px}.pp-arcade .pp-disc__t{grid-column:1/-1}.pp-arcade .pp-brick{width:14px;height:14px}}
@media (prefers-reduced-motion:reduce){.pp-arcade .pp-disc__seg.is-on .pp-brick{animation:none}}
