/* The Lab: shared interaction language for every activity. Restrained, paper and ink. */
.lab-activity{
  --lab-paper:#fcfbf8;--lab-surface:#f3f2ec;--lab-surface-2:#eceae2;--lab-ink:#202520;--lab-muted:#5b5e57;--lab-line:#d4d5cc;
  --lab-heat:#b5482f;--lab-heat-text:#9a3a24;--lab-heat-soft:#f3ddd5;
  --lab-tech:#2e7f96;--lab-tech-text:#1f6275;--lab-tech-soft:#d6e9ee;
  --lab-facility:#2d4f73;--lab-facility-text:#2d4f73;--lab-facility-soft:#dae3ee;
  --lab-air:#7d877c;--lab-air-text:#55604f;--lab-air-soft:#e4e8e0;
  --lab-focus:#202520;
  color:var(--lab-ink);font:16px/1.6 var(--sans,Inter,Arial,sans-serif);
  max-width:1040px;margin:0 auto;
}
.lab-activity *{box-sizing:border-box}
.lab-activity :where(h2,h3,h4){font-family:var(--display,Georgia,serif);font-weight:400;letter-spacing:-.015em;line-height:1.1;margin:0}
.lab-activity :where(p){margin:0 0 .8em}
.lab-sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* One-line instruction above the stage */
.lab-instruction{font-size:15px;color:var(--lab-muted);margin:0 0 14px;max-width:60ch}

/* The stage: diagram, schematic or cards */
.lab-stage{background:var(--lab-surface);border:1px solid var(--lab-line);padding:clamp(14px,2.2vw,24px);position:relative}
.lab-stage svg{display:block;width:100%;height:auto}
.lab-figure-caption{font-size:13px;color:var(--lab-muted);margin:10px 0 0}

/* Controls */
.lab-controls{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end;margin:16px 0}
.lab-controls fieldset{border:0;padding:0;margin:0;min-width:0}
.lab-controls legend,.lab-label{font-size:13px;font-weight:600;letter-spacing:.01em;margin:0 0 8px;padding:0}
.lab-segmented{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--lab-ink)}
.lab-segmented>*{flex:1 1 auto}
.lab-button,.lab-choice,.lab-segmented button{
  appearance:none;-webkit-appearance:none;font:600 14px/1.25 var(--sans,Inter,Arial,sans-serif);color:var(--lab-ink);
  background:var(--lab-paper);border:1px solid var(--lab-ink);border-radius:0;min-height:44px;min-width:44px;padding:10px 16px;cursor:pointer;text-align:left
}
.lab-segmented button{border:0;border-right:1px solid var(--lab-ink);text-align:center}
.lab-segmented button:last-child{border-right:0}
.lab-button:hover,.lab-choice:hover,.lab-segmented button:hover{background:var(--lab-surface-2)}
.lab-button[aria-pressed=true],.lab-choice[aria-pressed=true],.lab-segmented button[aria-pressed=true],.lab-button.is-primary{background:var(--lab-ink);color:var(--lab-paper)}
.lab-button:disabled,.lab-choice:disabled{opacity:.45;cursor:not-allowed}
.lab-choice{display:block;width:100%;font-weight:500;padding:14px 16px}
.lab-choice strong{display:block;font-weight:650;margin-bottom:2px}
.lab-choice small{display:block;font-size:13px;font-weight:400;line-height:1.45;opacity:.85}
.lab-choices{display:grid;gap:10px}
@media(min-width:720px){.lab-choices.is-two{grid-template-columns:1fr 1fr}}
.lab-activity :focus-visible{outline:3px solid var(--lab-focus);outline-offset:3px}
.lab-activity .lab-button[aria-pressed=true]:focus-visible,.lab-activity .lab-segmented button[aria-pressed=true]:focus-visible{outline-color:var(--lab-heat)}

/* Range inputs */
.lab-range{display:grid;gap:6px;min-width:min(100%,260px);flex:1 1 260px}
.lab-range label{display:flex;justify-content:space-between;gap:12px;font-size:13px;font-weight:600}
.lab-range output{font-variant-numeric:tabular-nums;font-weight:650}
.lab-range input[type=range]{width:100%;min-height:44px;accent-color:var(--lab-ink);margin:0}

/* Live readouts */
.lab-readout{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0;border-top:1px solid var(--lab-ink);margin:20px 0 0}
.lab-readout>div{padding:12px 14px 12px 0;border-bottom:1px solid var(--lab-line)}
.lab-readout dt{font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--lab-muted);margin:0 0 4px}
.lab-readout dd{margin:0;font:400 clamp(22px,2.8vw,28px)/1.1 var(--display,Georgia,serif);font-variant-numeric:tabular-nums}
.lab-readout dd small{font:500 13px/1.3 var(--sans,Inter,Arial,sans-serif);margin-left:4px;color:var(--lab-muted)}
.lab-readout .is-heat dd{color:var(--lab-heat-text)}
.lab-readout .is-tech dd{color:var(--lab-tech-text)}
.lab-readout .is-facility dd{color:var(--lab-facility-text)}
.lab-readout .is-air dd{color:var(--lab-air-text)}

/* Stage text beside or under a diagram */
.lab-step-text{max-width:62ch}
.lab-step-text h3{font-size:clamp(22px,2.5vw,27px);margin:0 0 10px}
.lab-step-count{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--lab-muted);margin:0 0 6px}
.lab-step-nav{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 0}
.lab-step-list{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:14px 0 0;counter-reset:labstep}
.lab-step-list button{font:500 13px/1.2 var(--sans,Inter,Arial,sans-serif);min-height:44px;padding:8px 12px;background:transparent;border:1px solid var(--lab-line);color:var(--lab-ink);cursor:pointer}
.lab-step-list button[aria-current=step]{border-color:var(--lab-ink);background:var(--lab-paper);font-weight:650}

/* Consequence and reasoning panels */
.lab-consequence{border-left:3px solid var(--lab-ink);padding:4px 0 4px 18px;margin:20px 0}
.lab-consequence h3{font-size:22px;margin:0 0 8px}
.lab-reasoning{background:var(--lab-paper);border:1px solid var(--lab-ink);padding:clamp(18px,2.5vw,24px);margin:20px 0}
.lab-reasoning h3{font-size:clamp(22px,2.5vw,27px);margin:0 0 12px}
.lab-reasoning p{max-width:64ch}
.lab-reasoning .lab-ref{font-size:13px;color:var(--lab-muted);margin:12px 0 0}
.lab-feedback{font-size:15px;margin:12px 0 0;padding:10px 14px;background:var(--lab-surface-2);border-left:3px solid var(--lab-muted)}
.lab-feedback.is-right{border-left-color:var(--lab-tech)}

/* Try-this prompts */
.lab-try{border-top:1px solid var(--lab-line);margin:22px 0 0;padding-top:14px}
.lab-try summary{font-weight:600;cursor:pointer;min-height:44px;display:flex;align-items:center}
.lab-try li{margin:0 0 8px}

/* Tables (summaries and comparisons) */
.lab-table{width:100%;border-collapse:collapse;font-size:15px;margin:12px 0}
.lab-table caption{text-align:left;font-size:13px;color:var(--lab-muted);padding:0 0 8px}
.lab-table th,.lab-table td{text-align:left;padding:10px 12px 10px 0;border-bottom:1px solid var(--lab-line);vertical-align:top}
.lab-table thead th{font-size:13px;font-weight:650;letter-spacing:.02em;border-bottom:1px solid var(--lab-ink)}
.lab-table td{font-variant-numeric:tabular-nums}
@media(max-width:560px){.lab-table{font-size:14px}.lab-table th,.lab-table td{padding-right:8px}}

/* Actions */
.lab-actions{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0 0}
.lab-note{font-size:13px;color:var(--lab-muted);margin:14px 0 0;max-width:70ch}
.lab-tag{display:inline-block;font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--lab-muted)}

/* Motion: short and optional */
.lab-activity [data-motion]{transition:transform .28s ease,opacity .28s ease}
@media (prefers-reduced-motion:reduce){.lab-activity *,.lab-activity *::before,.lab-activity *::after{transition:none!important;animation:none!important}}
.lab-activity.is-reduced *,.lab-activity.is-reduced *::before,.lab-activity.is-reduced *::after{transition:none!important;animation:none!important}

@media(max-width:600px){
  .lab-activity{font-size:16px}
  .lab-controls{gap:12px}
  .lab-segmented{width:100%}
  .lab-actions .lab-button{flex:1 1 auto;text-align:center}
}

/* ===== Host pages: the Lab index, activity pages, invitations (site chrome, not activities) ===== */
.lab-page{padding-bottom:72px}
.lab-index-heading,.lab-heading{max-width:820px;padding:44px 0 28px}
.lab-index-heading h1,.lab-heading h1{font:400 clamp(44px,6.4vw,78px)/.98 var(--display);letter-spacing:-.035em;margin:10px 0 18px}
.lab-index-heading .standfirst,.lab-heading .standfirst{font:400 clamp(19px,2.1vw,23px)/1.45 var(--serif,Georgia,serif);color:#3b3f39;max-width:40ch;margin:0}
.lab-meta{font-size:13px;color:#5b5e57;margin:16px 0 0;letter-spacing:.01em}
.lab-intro{font-size:17px;max-width:62ch;margin:0 0 26px}
.lab-crumbs{padding-top:26px;display:flex;flex-wrap:wrap;align-items:center}
.lab-page .back-link{display:inline-flex;align-items:center;min-height:44px;font-size:13px;margin-right:22px}
.return-link{font-weight:600;margin-right:22px}
.return-crumbs{display:flex;flex-wrap:wrap;align-items:center}
.lab-index .return-crumbs{padding-top:26px}
.lab-host{margin:0 0 56px}
.lab-static{border-top:1px solid #202520;padding:20px 0 0;max-width:68ch}
.lab-static h2{font:400 26px/1.15 var(--display);margin:0 0 12px}
.lab-static-details{max-width:68ch;margin:28px 0 0;border-top:1px solid #d4d5cc;padding-top:6px}
.lab-static-details summary{cursor:pointer;font-weight:600;font-size:15px;min-height:44px;display:flex;align-items:center;gap:16px;list-style:none}
.lab-static-details summary::-webkit-details-marker{display:none}
/* The cue is visual only (empty alternative text); the disclosure already announces its state. */
.lab-static-details summary::after{content:'Show';content:'Show' / '';margin-left:auto;font-weight:400;font-size:14px;text-decoration:underline;text-underline-offset:3px}
.lab-static-details[open] summary::after{content:'Hide';content:'Hide' / ''}
.lab-static-details p{font-size:16px}
.lab-load-note{font-size:15px;background:#f3f2ec;border-left:3px solid #5b5e57;padding:10px 14px;margin:0 0 18px}
.lab-method,.lab-related,.lab-more{border-top:1px solid #202520;padding:22px 0 0;margin:0 0 48px}
.lab-method h2,.lab-related h2,.lab-more h2{font:400 clamp(26px,3vw,32px)/1.1 var(--display);margin:0 0 16px}
.lab-assumptions{max-width:70ch;padding-left:18px;margin:0 0 20px;font-size:15px}
.lab-assumptions li{margin:0 0 6px}
.lab-sources{font-size:14px;max-width:80ch;padding-left:22px;margin:0}
.lab-sources li{margin:0 0 10px}
.lab-related ul{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.lab-related li{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;font-size:16px}
.lab-related-kind{font-size:12px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:#5b5e57;min-width:84px}
.lab-related-note{font-size:13px;color:#5b5e57}
.lab-related a,.lab-sources a{text-decoration:underline;text-decoration-color:#9a9c93;text-decoration-thickness:1px;text-underline-offset:4px}
.lab-related a:hover,.lab-sources a:hover{text-decoration-color:currentColor;color:#a13e29}
@media(min-width:900px){.lab-method{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:48px}.lab-method h2{grid-column:1/-1}}

/* Cards */
.lab-cards{list-style:none;padding:0;margin:0 0 40px;display:grid;grid-template-columns:1fr;gap:0 40px}
@media(min-width:760px){.lab-cards{grid-template-columns:1fr 1fr}}
@media(min-width:1100px){.lab-cards.is-feature{grid-template-columns:repeat(4,minmax(0,1fr))}}
.lab-card{border-top:1px solid #202520}
.lab-card-link{display:grid;grid-template-columns:auto 1fr;column-gap:18px;row-gap:4px;padding:22px 0 26px;color:inherit;text-decoration:none;min-height:44px}
.lab-card-number{grid-row:1/span 4;font:400 30px/1 var(--display);color:#8a8c84;padding-top:2px}
.lab-card-kicker{font-size:12px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--accent,#a13e29)}
.lab-card-title{font:400 clamp(26px,2.6vw,32px)/1.08 var(--display);letter-spacing:-.02em}
.lab-card-text{font-size:15px;line-height:1.55;color:#3b3f39;max-width:44ch}
.lab-card-meta{font-size:13px;color:#5b5e57;margin-top:6px}
.lab-card-explored{margin-left:12px;font-weight:650;color:#1f6275}
.lab-card-link:hover .lab-card-title,.lab-card-link:focus-visible .lab-card-title{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.lab-card-link:focus-visible{outline:3px solid #202520;outline-offset:4px}
.lab-cards.is-compact .lab-card-title{font-size:24px}
.lab-cards.is-feature .lab-card-link{grid-template-columns:1fr}
.lab-cards.is-feature .lab-card-number{grid-row:auto;font-size:24px;margin-bottom:6px}
.lab-index-notes{max-width:66ch;font-size:15px;color:#3b3f39;border-top:1px solid #d4d5cc;padding-top:18px}
.lab-progress-note .text-button{min-height:44px;padding:0 6px;text-decoration:underline;text-underline-offset:3px;background:none;border:0;cursor:pointer;font:inherit;font-weight:600;color:inherit}
.lab-feature{margin:0 0 72px}
.lab-feature-intro{font-size:17px;max-width:56ch;margin:0 0 18px;color:#3b3f39}

/* Invitations in stories and film pages */
.lab-invite{border:1px solid #202520;background:#f3f2ec;padding:22px 24px 24px;margin:36px 0 40px;max-width:640px;font-family:var(--sans,Inter,Arial,sans-serif);scroll-margin-top:24px}
.lab-invite .lab-invite-kicker{font-size:12px;line-height:1.3;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--accent,#a13e29);margin:0 0 8px}
.lab-invite h2{font:400 clamp(26px,3vw,32px)/1.1 var(--display);margin:0 0 10px}
.lab-invite p{font-size:16px;margin:0 0 14px}
.lab-invite .lab-invite-link{font-family:var(--sans,Inter,Arial,sans-serif);display:inline-flex;align-items:center;min-height:44px;padding:0 18px;background:#202520;color:#fcfbf8;font-weight:600;font-size:14px;text-decoration:none}
.lab-invite-link:hover{background:#3a3f3a}
.lab-invite-link:focus-visible{outline:3px solid #202520;outline-offset:3px}
.film-summary-title{font:400 24px/1.15 var(--display);margin:28px 0 10px}
.film-summary-note,.film-captions{font-size:13px;color:#5b5e57}
.film-captions strong{color:#202520}
.film-lab-link{margin:22px 0 0}
.film-lab-link a{display:inline-block;font:400 22px/1.2 var(--display);margin-top:4px}

/* Navigation with the Lab link on phones */
/* Revealed reasoning scrolls its heading near the top, clear of the edge. */
.lab-activity .lab-reasoning h3{scroll-margin-top:24px}

/* A shared instrument finish: clear controls and quiet, state-led feedback. */
.lab-activity{--lab-control-radius:4px;--lab-rule-soft:#dcded7;--lab-copper:#a9603f;--lab-console-rule:#466064}
.lab-activity :where(.lab-button,.lab-choice,.lab-segmented){border-radius:var(--lab-control-radius)}
.lab-activity :where(.lab-button,.lab-choice){transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease;touch-action:manipulation}
.lab-activity :where(.lab-button,.lab-choice):focus-visible{outline-width:2px;outline-offset:4px}
.lab-activity :where(.lab-segmented){overflow:clip;border-color:var(--lab-line)}
.lab-activity :where(.lab-segmented button){border-right-color:var(--lab-line)}
.lab-activity :where(.lab-segmented):has(:focus-visible){outline:2px solid var(--lab-focus);outline-offset:4px}
.lab-activity :where(.lab-range output){font-variant-numeric:tabular-nums lining-nums;letter-spacing:-.015em}
.lab-activity :where(.lab-readout dt){letter-spacing:0;line-height:1.4}
.lab-activity :where(.lab-readout dd){letter-spacing:-.025em}
.lab-activity :where(.lab-readout dd small){letter-spacing:0}
.lab-activity :where(.lab-feedback){border-left-width:2px;border-radius:0 5px 5px 0;padding:14px 16px}
.lab-activity :where(.lab-reasoning){border-color:var(--lab-rule-soft)}
@media(prefers-reduced-motion:no-preference){
  html[data-motion=on] .lab-activity:not(.lab-follow-the-heat) :is(.lab-feedback,.lab-reasoning):not([hidden]){animation:lab-content-reveal 180ms ease-out both}
}
@keyframes lab-content-reveal{from{opacity:.55;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
.lab-activity.is-reduced :is(.lab-feedback,.lab-reasoning){animation:none!important}

/* Event responses only: the same quiet confirmation language across the three desks. */
.lab-activity{--lab-cyan:#82d4d9;--lab-copper-on:#df9b7a;--lab-desk:#10262f;--lab-desk-raised:#18343d}
@keyframes lab-reading-arrive{from{opacity:.55;translate:0 2px}to{opacity:1;translate:0 0}}
@keyframes lab-mark-confirm{from{opacity:.42}to{opacity:1}}
