/* Canonical Examplicity shared design components.
   Edit this file, then sync the guide, authoring bundle and published labs.
   Compatibility selectors retain the reviewed labs; use the public API for new labs. */

/* working-progression */
#answerForm{padding:12px;border:1px solid var(--lab-needed-line,#d8c36a);border-radius:8px;background:var(--lab-needed-surface,#fffdf4)}
#answerForm[data-work-state="good"]{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
#answerForm[data-work-state="bad"]{border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
#answerForm .answer-label::before{content:"●";margin-right:8px;color:var(--lab-needed-ink,#735100)}
#answerForm[data-work-state="good"] .answer-label::before{content:"✓";color:var(--lab-good-ink,#225f43)}
#answerForm[data-work-state="bad"] .answer-label::before{content:"✕";color:var(--lab-bad-ink,#853b34)}
#answerForm .feedback{padding:8px 0 0;border:0;background:transparent}
.inspector .decision-card,.inspector .frontier-section,.inspector .relaxation,.inspector .settled-section{margin:10px 0 0;padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:8px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none}
.inspector .decision-card.needed{border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.inspector .decision-card.good,.inspector .settled-section[data-complete="true"]{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.inspector .decision-card.bad{border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.inspector .relax-card{padding:0;border:0;background:transparent;box-shadow:none}
.evidence .working-chain{display:grid;gap:10px}
.evidence .readout-line,.evidence .readout-line.owned{margin:0;padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:8px;background:var(--lab-surface-muted,#f7f8fa)}
.evidence .readout-line.owned{border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.evidence .readout-line.owned.correct{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.evidence .readout-line.owned.incorrect{border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.evidence .working-chain{gap:10px}
.evidence .output-card,.evidence .output-card.complete,.evidence .output-card.working-required{margin:0;padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:8px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none}
.evidence .output-card.working-required.in-progress{border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.evidence .output-card.working-required.correct{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.evidence .output-card.working-required.incorrect{border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.evidence .output-card.working-required.in-progress::after{content:"●";font-size:12px}
.evidence .output-head{padding-right:18px}
.work-progress{display:flex;align-items:center;gap:8px;margin:10px 0;padding:12px;border:1px solid var(--lab-needed-line,#d8c36a);border-radius:8px;background:var(--lab-needed-surface,#fffdf4);color:var(--lab-ink,#242428);font-size:14px;line-height:1.45;box-shadow:none}
.work-progress[data-complete="true"]{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.work-progress .progress-mark{color:var(--lab-needed-ink,#735100);font-size:12px}
.work-progress[data-complete="true"] .progress-mark{color:var(--lab-good-ink,#225f43)}
.calc-panel .calc-flow{gap:10px}
.calc-panel .calc-step{position:relative;padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:8px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none}
.calc-panel .calc-step.pending{border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.calc-panel .calc-step.good{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.calc-panel .calc-step.bad{border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.calc-panel .calc-step.locked{opacity:1}
.calc-panel .calc-step .step-head{padding-right:20px}
.calc-panel .calc-step::after{content:attr(data-progress-mark);position:absolute;top:12px;right:12px;font-size:12px;color:var(--lab-needed-ink,#735100)}
.calc-panel .calc-step.good::after{color:var(--lab-good-ink,#225f43)}
.calc-panel .calc-step.bad::after{color:var(--lab-bad-ink,#853b34)}
.calc-panel .calc-step.locked::after{color:var(--lab-muted,#666670)}

/* rounded-settings */
/* Working and exam settings share one softly rounded segmented control. */
.lab-working-toggle,.lab-activity-bar .lab-working-toggle,.pill-toggle{display:inline-flex;align-items:center;gap:2px;height:42px;padding:3px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:999px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:0 1px 3px rgba(29,29,31,.08)}
.lab-working-toggle button,.lab-activity-bar .lab-working-toggle button,.pill-toggle button{width:auto;min-width:40px;min-height:34px;padding:0 12px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--lab-ink-secondary,#424245);font-size:12px;font-weight:400;line-height:1.2;box-shadow:none}
.lab-working-toggle button[aria-pressed="true"],.pill-toggle button[aria-checked="true"]{border-color:transparent;border-radius:999px;background:var(--lab-ink-secondary,#424245);color:#fff;font-weight:400;box-shadow:none}
.pill-toggle.level-toggle button[aria-checked="true"]{background:var(--lab-accent-hover,#4569aa);color:var(--lab-on-accent,#fff)}

/* top-panel-controls */
/* Activity controls share a light boundary and restrained elevation. */
.lab-working-toggle,.lab-activity-bar .lab-working-toggle,.pill-toggle{border-color:var(--lab-line,#d2d2d7)}
/* Activity controls share a light boundary and restrained elevation. */
.lab-working-toggle,.lab-activity-bar .lab-working-toggle,.pill-toggle{border-color:var(--lab-line,#d2d2d7)}
.lab-activity-bar .lab-activity-task>button,.lab-activity-bar .run-actions>button,.lab-activity-bar>button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:40px;padding:8px 14px;border:1px solid var(--lab-ink-secondary,#424245);border-radius:var(--lab-control-radius,8px);background:var(--lab-muted,#6e6e73);color:#fff;font-size:12px;font-weight:400;line-height:1.3;box-shadow:0 1px 3px rgba(29,29,31,.08)}
.lab-activity-bar .lab-activity-task>button:hover,.lab-activity-bar .run-actions>button:hover,.lab-activity-bar>button:hover{background:var(--lab-ink-secondary,#424245)}
.lab-activity-bar .run-actions>button.active{background:var(--lab-accent-hover,#4569aa);border-color:var(--lab-accent-hover,#4569aa);color:#fff}
.lab-activity-bar .run-actions>button.algorithm-button{border-color:var(--lab-accent-pressed,#3a5d99);background:var(--lab-accent-hover,#4569aa);color:#fff}
.lab-activity-bar .run-actions>button.algorithm-button:hover{background:var(--lab-accent-pressed,#3a5d99)}
.lab-activity-bar .algorithm-button span,.lab-activity-bar .algorithm-button small{color:inherit}
.lab-activity-bar button:disabled{cursor:default}
.lab-activity-bar .run-actions>button.algorithm-button{flex-direction:column}.lab-activity-bar .algorithm-button span{font-size:12px;font-weight:400}.lab-activity-bar .algorithm-button small{font-size:11px;font-weight:400}

/* action-hierarchy */
/* Action hierarchy: blue primary, white/blue secondary, muted disabled. */
.lab-activity-bar .lab-activity-task>button,.lab-activity-bar .run-actions>button,.lab-activity-bar .activity-actions>button,.lab-activity-bar>button{min-height:40px;padding:8px 14px;border:1px solid var(--lab-accent-line,#9fb4d6);border-radius:var(--lab-control-radius,8px);background:#fff;color:var(--lab-accent-ink,#315b91);font-size:12px;font-weight:400;box-shadow:0 1px 3px rgba(29,29,31,.08)}
.lab-activity-bar .lab-activity-task>button:hover,.lab-activity-bar .run-actions>button:hover,.lab-activity-bar .activity-actions>button:hover,.lab-activity-bar>button:hover{background:var(--lab-accent-soft,#eef2fa)}
.lab-activity-bar #newButton,.lab-activity-bar #newProblemBtn{border-color:var(--lab-accent-pressed,#3a5d99);background:var(--lab-accent-hover,#4569aa);color:#fff}
.lab-activity-bar #newButton:hover,.lab-activity-bar #newProblemBtn:hover{background:var(--lab-accent-pressed,#3a5d99)}
.lab-activity-bar button:disabled:not([aria-pressed]):not([aria-checked]){border-color:var(--lab-line,#d2d2d7);background:var(--lab-surface-strong,#eef1f3);color:var(--lab-muted,#6e6e73);box-shadow:none;opacity:1;cursor:not-allowed}
.lab-mode-toggle{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--lab-line,#d2d2d7);border-radius:999px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:0 1px 3px rgba(29,29,31,.08)}
.lab-activity-bar .lab-mode-toggle>button.algorithm-button{display:inline-flex;align-items:center;justify-content:center;min-width:80px;min-height:34px;padding:0 12px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--lab-accent-ink,#315b91);font-size:12px;font-weight:400;box-shadow:none}
.lab-activity-bar .lab-mode-toggle>button.algorithm-button[aria-pressed="true"]{background:var(--lab-accent-hover,#4569aa);color:#fff}
.lab-activity-bar .lab-mode-toggle>button:disabled{opacity:.55;cursor:not-allowed}

/* disabled-actions */
/* Disabled actions override primary colours and hover without resembling an active secondary action. */
.lab-activity-bar button:disabled:not([aria-pressed]):not([aria-checked]),.lab-activity-bar #newButton:disabled,.lab-activity-bar #newProblemBtn:disabled,.lab-activity-bar .lab-mode-toggle>button.algorithm-button:disabled{
  border-color:var(--lab-line,#d2d2d7);background:var(--lab-surface-strong,#eef1f3);color:var(--lab-muted,#6e6e73);box-shadow:none;opacity:1;cursor:not-allowed;transform:none;
}

/* task-heading */
/* Task headings are quiet, readable anchors above the model. */
.lab-activity-bar .lab-activity-task>strong,.lab-activity-bar .lab-activity-task h2,.lab-activity-bar .lab-activity-task h3,.lab-activity-bar .mission-copy>strong,.lab-activity-bar #goalTitle{margin:0;color:var(--lab-accent-ink,#315b91);font-family:var(--lab-font-sans,inherit);font-size:16px;font-weight:400;line-height:1.5;letter-spacing:normal;text-transform:none;text-wrap:balance}

/* flat-mathematics */
/* Compact concept-tinted backing distinguishes displayed mathematics. */
.calc-panel .term-chip,.calc-panel .worked-value,.calc-panel .flat-expression{padding:3px 7px;border:0;border-radius:4px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);color:var(--lab-ink,#1d1d1f);box-shadow:none}
.calc-panel .flat-expression{width:fit-content}
.calc-panel .flat-expression .worked-value{padding:0;background:transparent}

/* working-attention */
/* Unattempted working draws attention through its border, never moving the content. */
.calc-panel .calc-step.pending:not([data-interacted="true"]),.calc-panel .work-progress:not([data-complete="true"]):not([data-interacted="true"]){animation:workingBorderPulse 2s ease-in-out infinite}
@keyframes workingBorderPulse{0%,100%{outline:2px solid var(--lab-work-attention,var(--lab-needed,#946200));outline-offset:3px;box-shadow:0 0 0 4px color-mix(in srgb,var(--lab-work-attention,var(--lab-needed,#946200)) 10%,transparent)}50%{outline:2px solid var(--lab-work-attention,var(--lab-needed,#946200));outline-offset:3px;box-shadow:0 0 0 9px color-mix(in srgb,var(--lab-work-attention,var(--lab-needed,#946200)) 22%,transparent)}}
@media(prefers-reduced-motion:reduce){.calc-panel .calc-step,.calc-panel .work-progress{animation:none!important}}

/* working-refinements */
#answerForm[data-work-state="current"]:not([data-attention-used="true"]){animation:workingAttention 2s ease-in-out infinite}
@keyframes workingAttention{0%,100%{outline:2px solid var(--lab-work-attention,var(--lab-needed,#946200));outline-offset:3px;box-shadow:0 0 0 4px color-mix(in srgb,var(--lab-work-attention,var(--lab-needed,#946200)) 10%,transparent)}50%{outline:2px solid var(--lab-work-attention,var(--lab-needed,#946200));outline-offset:3px;box-shadow:0 0 0 9px color-mix(in srgb,var(--lab-work-attention,var(--lab-needed,#946200)) 22%,transparent)}}
@media(prefers-reduced-motion:reduce){#answerForm[data-work-state="current"]{animation:none!important}}
.decision-card.needed:not([data-attention-used="true"]){animation:workingAttention 2s ease-in-out infinite}

@media(prefers-reduced-motion:reduce){.decision-card.needed{animation:none!important}}
#relax-equation{padding:3px 7px;border:0;border-radius:4px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);box-shadow:none}
.readout-line.owned:not(.correct):not(.incorrect):not([data-attention-used="true"]),.work-progress:not([data-complete="true"]):not([data-attention-used="true"]){animation:workingAttention 2s ease-in-out infinite}

@media(prefers-reduced-motion:reduce){.readout-line.owned:not(.correct):not(.incorrect),.work-progress:not([data-complete="true"]){animation:none!important}}
.auto-value{padding:3px 7px;border:0;border-radius:4px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);box-shadow:none}
.output-card.working-required.in-progress:not([data-attention-used="true"]),.work-progress:not([data-complete="true"]):not([data-attention-used="true"]){animation:workingAttention 2s ease-in-out infinite}

@media(prefers-reduced-motion:reduce){.output-card.working-required.in-progress,.work-progress:not([data-complete="true"]){animation:none!important}}
.product-line:not(:has(input)){padding:3px 7px;border:0;border-radius:4px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);box-shadow:none}
.working-panel .work-step.current:not([data-attention-used="true"]){animation:workingAttention 2s ease-in-out infinite}

.working-panel .step-value{width:fit-content;padding:3px 7px;border:0;border-radius:4px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);box-shadow:none}
@media(prefers-reduced-motion:reduce){.working-panel .work-step{animation:none!important}}

/* field-feedback-only */
.evidence .output-card:has(.answer-entry)::after{content:none}
.evidence .output-card:has(.answer-entry) .output-head{padding-right:0}
.calc-panel .calc-step:has(.work-entry)::after{content:none}
.calc-panel .calc-step:has(.work-entry) .step-head{padding-right:0}
.working-panel .work-step:has(input) .step-head>.step-status{display:none}

/* Public component API for new labs. */
.lab-toggle{display:inline-flex;align-items:center;gap:2px;height:42px;padding:3px;border:1px solid var(--lab-line,#d2d2d7);border-radius:999px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:0 1px 3px rgba(29,29,31,.08)}
.lab-toggle>button{min-width:40px;min-height:34px;padding:0 12px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--lab-ink-secondary,#424245);font:400 12px/1.2 var(--lab-font-sans,sans-serif);box-shadow:none}
.lab-toggle>button:is([aria-pressed="true"],[aria-checked="true"]){background:var(--lab-ink-secondary,#424245);color:#fff}
.lab-toggle[data-kind="exam"]>button:is([aria-pressed="true"],[aria-checked="true"]),.lab-toggle[data-kind="mode"]>button:is([aria-pressed="true"],[aria-checked="true"]){background:var(--lab-accent-hover,#4569aa);color:#fff}
.lab-action{min-height:40px;padding:8px 14px;border:1px solid var(--lab-accent-line,#9fb4d6);border-radius:8px;background:#fff;color:var(--lab-accent-ink,#315b91);font:400 12px/1.3 var(--lab-font-sans,sans-serif);box-shadow:0 1px 3px rgba(29,29,31,.08)}
.lab-action:hover{background:var(--lab-accent-soft,#eef2fa)}
.lab-action[data-priority="primary"]{background:var(--lab-accent-hover,#4569aa);border-color:var(--lab-accent-pressed,#3a5d99);color:#fff}
.lab-action:disabled,.lab-action[data-priority="primary"]:disabled{background:var(--lab-surface-strong,#eef1f3);color:var(--lab-muted,#6e6e73);border-color:var(--lab-line,#d2d2d7);box-shadow:none;opacity:1;cursor:not-allowed}
.lab-math-surface{display:inline-block;padding:3px 7px;border:0;border-radius:4px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);color:var(--lab-ink,#1d1d1f);box-shadow:none}
.lab-work-card{padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:8px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none}
.lab-work-card[data-work-state="needed"]{border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.lab-work-card[data-work-state="good"]{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-work-card[data-work-state="bad"]{border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.lab-work-card[data-work-state="needed"]:not([data-interacted="true"]){animation:workingAttention 2s ease-in-out infinite}
/* Red attention is reserved for an actionable correction, not every mistake. */
.lab-work-card[data-work-state="bad"],.lab-sequence-target:is(.bad,.incorrect,[data-state="mistake"],[data-work-state="bad"]){--lab-work-attention:var(--lab-bad,#b42318)}
.lab-work-card[data-work-state="bad"][data-lab-attention="true"]:not([data-interacted="true"]){animation:workingAttention 2s ease-in-out infinite}
.lab-work-card:has(input) .lab-card-status{display:none}
.lab-stage-surface{border:1px solid var(--lab-line,#d2d2d7);border-radius:12px;background:var(--lab-surface-muted,#f7f8fa)}
.lab-stage-heading{display:flex;flex-direction:column;gap:4px;padding:12px 12px 8px;font:400 12px/1.45 var(--lab-font-sans,sans-serif)}
.lab-guide-target{border-radius:12px;outline:2px solid var(--lab-accent,#5277b8);outline-offset:3px;animation:labGuideAttention 2s ease-in-out infinite}
@keyframes labGuideAttention{0%,100%{box-shadow:0 0 0 4px rgba(82,119,184,.10)}50%{box-shadow:0 0 0 9px rgba(82,119,184,.22)}}
@media(prefers-reduced-motion:reduce){.lab-work-card,.lab-guide-target{animation:none!important}.lab-guide-target{box-shadow:0 0 0 5px rgba(82,119,184,.16)}}


/* Field focus follows the existing border's colour family, without a second outline. */
:is(input,textarea,select):focus{outline:none!important;box-shadow:none!important;border-color:var(--lab-field-focus,var(--lab-line-strong,#a7a7ad))!important}
:is(.work-entry,.answer-entry,.working-input,.calc-input,.lab-work-card input){--lab-field-focus:var(--lab-needed,#946200)}
:is(input.good,input.correct){--lab-field-focus:var(--lab-good-ink,#225f43)}
:is(input.bad,input.incorrect,[aria-invalid="true"]){--lab-field-focus:var(--lab-bad-ink,#853b34)}

/* Legacy adoption surface: opt in once; keep only model geometry in the lab. */
.lab-adopt-v3{color:var(--lab-ink,#1d1d1f)}
.lab-adopt-v3 .panel{border:1px solid var(--lab-line,#d2d2d7);border-radius:12px;background:var(--lab-surface,#fff);box-shadow:none}
.lab-adopt-v3 :is(.mission,.goal-panel).lab-activity-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px 24px;padding:20px 24px;margin:0;border-bottom-color:var(--lab-line-subtle,#e7e8eb);border-radius:12px 12px 0 0;background:#fff}
.lab-adopt-v3 .lab-activity-bar :is(.goal-top,.goal-meta){display:contents}
.lab-adopt-v3 .lab-activity-bar :is(.mission-copy,.goal-copy){flex:1 1 300px;min-width:0}
.lab-adopt-v3 .lab-activity-bar :is(.mission-copy,.goal-copy)>strong{display:block;font-size:16px;font-weight:400;line-height:1.5;color:var(--lab-accent-ink,#315b91);letter-spacing:normal;text-wrap:balance}
.lab-adopt-v3 .lab-activity-bar :is(.mission-copy,.goal-copy)>span{font-size:12px;font-weight:400;line-height:1.45;color:var(--lab-ink-secondary,#424245)}
.lab-adopt-v3 :is(.setup-meta,.goal-kicker,.step-label,.complexity-help,.calc-badge,.method-badge,.complexity-copy>span,.calc-head>p,.method-head>p){display:none}
.lab-adopt-v3 :is(.mission-actions,.mission-tools,.case-actions){display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-left:auto}
.lab-adopt-v3 :is(.complexity,.ownership){display:flex;align-items:center;gap:8px;background:transparent;border:0;padding:0;box-shadow:none}
.lab-adopt-v3 :is(.complexity-copy strong,.ownership>span){color:var(--lab-ink,#1d1d1f);font-size:14px;font-weight:400;white-space:nowrap}
.lab-adopt-v3 .lab-activity-bar .lab-toggle{display:inline-flex;flex:none;padding:3px;border:1px solid var(--lab-line,#d2d2d7);border-radius:999px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:0 1px 3px rgba(29,29,31,.08);height:42px;gap:2px}
.lab-adopt-v3 .lab-activity-bar .lab-toggle>button{width:auto;min-height:34px;min-width:40px;padding:0 12px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--lab-ink-secondary,#424245);font:400 12px/1.2 var(--lab-font-sans,sans-serif);box-shadow:none}
.lab-adopt-v3 .lab-activity-bar .lab-toggle>button[aria-pressed="true"]{background:var(--lab-ink-secondary,#424245);color:#fff}
.lab-adopt-v3 .lab-activity-bar .lab-toggle[data-kind="mode"]>button[aria-pressed="true"]{background:var(--lab-accent-hover,#4569aa);color:#fff}
.lab-adopt-v3 .lab-activity-bar+:is(.lab,.workbench){margin-top:0;border-top:0;border-radius:0 0 12px 12px;padding:20px 24px;position:relative}
.lab-adopt-v3:not(.lab-computing) :is(.workspace,.recurring-workspace){display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,320px);gap:24px;align-items:start}
.lab-adopt-v3 :is(.stage-wrap,.interaction-pane){min-width:0;position:relative}
.lab-adopt-v3 :is(.calc-panel,.method-panel){padding:0 0 0 20px;min-width:0;border:0;border-left:1px solid var(--lab-line-subtle,#e7e8eb);background:transparent}
.lab-adopt-v3 :is(.calc-head,.method-head){padding:0 0 12px;border:0;background:transparent}
.lab-adopt-v3 :is(.calc-head,.method-head) strong{font-size:14px;font-weight:500;color:var(--lab-ink,#1d1d1f)}
.lab-adopt-v3 :is(.calc-flow,.solve-chain){display:grid;gap:10px;margin-top:10px;padding:0}
.lab-adopt-v3 .calc-flow::before,.lab-adopt-v3 .calc-step::before{display:none}
.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step,.proof-rule,.compare-rule){padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:8px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none;opacity:1}
.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step):has(input:not(:disabled)){border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step):has(input):is(.good,.complete,.correct),.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step):has(input.good):not(:has(input:not(.good))){border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step):has(input):is(.bad,.incorrect),.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step):has(input.bad,input.incorrect){border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step):has(input:not(:disabled)):not(.good,.complete,.correct,.bad,.incorrect):not(:has(input.bad,input.incorrect)):not([data-interacted="true"]){animation:workingAttention 2s ease-in-out infinite}
.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step):has(input)::after,.lab-adopt-v3 .step-head em{display:none}
.lab-adopt-v3 :is(.step-head span,.solve-card>span,.derive-step-head strong,.calc-label,.reference-strip>span,.solve-label){font-size:12px;line-height:1.45;font-weight:400;text-transform:none;letter-spacing:normal;color:var(--lab-ink-secondary,#424245)}
.lab-adopt-v3 :is(.step-note,.derive-note,.work-feedback,.working-row,.method-panel p,.reference-strip em,.calc-intro,.proof-body,.compare-rule,.gate-caption,.bridge-caption){font-size:14px;font-weight:400;line-height:1.45;color:var(--lab-ink-secondary,#424245)}
.lab-adopt-v3 :is(.step-value,.solve-card>strong,.formula-band,.derive-equation,.calc-equation,.proof-rule code):not(:has(input)){width:fit-content;max-width:100%;padding:3px 7px;border:0;border-radius:4px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);color:var(--lab-ink,#1d1d1f);font-size:14px;font-weight:400;line-height:1.45;box-shadow:none;overflow-wrap:anywhere}
.lab-adopt-v3 :is(.reference-strip,.proof-head){padding:12px;border:0;border-radius:8px;background:var(--lab-surface-muted,#f7f8fa);font-size:12px;line-height:1.45}
.lab-adopt-v3 input:not([type="range"]):not([type="checkbox"]):not([type="radio"]){min-height:40px;padding:6px 9px;border-width:1px;border-radius:8px;font-size:14px;font-weight:400;line-height:1.4}
.lab-adopt-v3 :is(input.good,input.correct){border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-adopt-v3 :is(input.bad,input.incorrect){border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.lab-adopt-v3 :is(.solve-arrow,.derive-num){font-size:12px;font-weight:400;color:var(--lab-muted,#6e6e73)}
.lab-adopt-v3 :is(.solve-arrow small,.projection-head span,.visual-copy span,.trace-note){font-size:12px;font-weight:400;line-height:1.45}
.lab-adopt-v3 .lab-action{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 14px;border:1px solid var(--lab-accent-line,#9fb4d6);border-radius:8px;background:#fff;color:var(--lab-accent-ink,#315b91);font-size:12px;font-weight:400;line-height:1.3;box-shadow:0 1px 3px rgba(29,29,31,.08)}
.lab-adopt-v3 .lab-action[data-priority="primary"]{background:var(--lab-accent-hover,#4569aa);border-color:var(--lab-accent-pressed,#3a5d99);color:#fff}
.lab-adopt-v3 .lab-action:disabled{background:var(--lab-surface-strong,#eef1f3);color:var(--lab-muted,#6e6e73);border-color:var(--lab-line,#d2d2d7);box-shadow:none;opacity:1}
.lab-adopt-v3 .next-card{position:absolute;top:16px;right:16px;bottom:auto;left:auto;width:min(320px,calc(100% - 32px));max-width:none;padding:16px;border:1px solid var(--lab-good-line,#9cc7aa);border-radius:12px;background:var(--lab-good-surface,#f7fcf8);box-shadow:0 6px 18px rgba(29,29,31,.12);z-index:30;transform:none}
.lab-adopt-v3 .next-card>strong{display:block;padding-right:30px;color:var(--lab-ink,#1d1d1f);font-size:14px;font-weight:500;line-height:1.4}
.lab-adopt-v3 .next-card span{font-size:14px;line-height:1.45;font-weight:400}
.lab-adopt-v3 .next-card .next-actions{display:flex;justify-content:center;gap:8px}
.lab-adopt-v3 .next-card button:not(.lab-dialog-move){min-height:40px;padding:10px 18px;font-size:11px;font-weight:600;border-radius:8px}
.lab-adopt-v3 .next-card .lab-dialog-move{position:absolute;top:6px;right:6px;width:32px;min-width:32px;height:32px;min-height:32px;margin:0;padding:0;border:0;border-radius:8px;background:transparent;color:var(--lab-muted,#6e6e73);cursor:grab;touch-action:none;font-size:16px;font-weight:400}
.lab-adopt-v3 .next-card .lab-dialog-move:active{cursor:grabbing}
.lab-adopt-v3 .goal-editor{flex-basis:100%;font-size:14px}
@media(max-width:900px){.lab-adopt-v3:not(.lab-computing) :is(.workspace,.recurring-workspace){grid-template-columns:minmax(0,1fr)}.lab-adopt-v3 :is(.calc-panel,.method-panel){padding:18px 0 0;border-left:0;border-top:1px solid var(--lab-line-subtle,#e7e8eb)}}
@media(max-width:620px){.lab-adopt-v3 :is(.mission,.goal-panel).lab-activity-bar,.lab-adopt-v3 .lab-activity-bar+:is(.lab,.workbench){padding:16px}.lab-adopt-v3 :is(.mission-actions,.mission-tools,.case-actions){margin-left:0;justify-content:flex-end;width:100%}.lab-adopt-v3 .lab-activity-bar .lab-toggle>button{padding-inline:9px}}
@media(prefers-reduced-motion:reduce){.lab-adopt-v3 :is(.calc-step,.solve-card,.derive-step){animation:none!important}}

.lab-adopt-v3 :is(.mission-actions,.mission-tools,.case-actions)>button{order:-1}
.lab-adopt-v3 .goal-meta>.reset{order:1}.lab-adopt-v3 .goal-meta>.complexity{order:2}
.lab-adopt-v3 .lab-activity-bar>.complexity{margin-left:auto}
.lab-adopt-v3 .method-panel .solve-card.final:not(:has(input)){border-color:var(--lab-line-subtle,#e7e8eb);background:var(--lab-surface-muted,#f7f8fa)}

.lab-adopt-v3:not(.lab-geometry) .calc-panel .calc-step:not(:has(input)){border-color:var(--lab-line-subtle,#e7e8eb);background:var(--lab-surface-muted,#f7f8fa);box-shadow:none}
.lab-adopt-v3 :is(.proof-head strong,.compare-rule strong,.gate-core strong,.projection-head strong,.verifier-head strong){font-size:14px;font-weight:500;line-height:1.45}
.lab-adopt-v3 :is(.gate-top,.gate-period,.gate-rate,.percent-step-label,.method-head span){font-size:12px;font-weight:400;line-height:1.4}
.lab-adopt-v3 .next-card.has-upgrade{display:block}
.lab-adopt-v3 .next-card .next-upgrade{margin-top:12px;padding-top:12px;border:0;border-top:1px solid var(--lab-line-subtle,#e7e8eb);background:transparent}

.lab-adopt-v3 .next-card[hidden]{display:none!important}

/* Review refinements: the model fits its space; the page owns vertical flow. */
:is(.stage-shell,.stageShell,.chain-scroll,.division-scroll){overflow:visible;height:auto;max-height:none;min-width:0}
:is(.stage-shell,.stageShell)>svg{display:block;width:100%;min-width:0;max-width:100%;height:auto}
.lab-adopt-v3 :is(.stage-wrap,.stage-shell,.stage,.board-scroll){background:transparent;border:0;border-radius:0}
.lab-adopt-v3 .stage :is(.stage-bg,.bed){fill:#fff;stroke:none}
.lab-adopt-v3 :is(.complexity-copy strong,.ownership>span){font:400 12px/1.4 var(--lab-font-sans,sans-serif);text-transform:none;letter-spacing:normal}
.lab-adopt-v3 [hidden]{display:none!important}
.lab-adopt-v3 :is(.working-row,.step-value,.solve-card,.solve-entry,.derive-equation,.calc-equation,.reference-strip strong,.proof-body,.locked-value,.calc-panel input,.method-panel input){font-family:var(--lab-font-sans,sans-serif);font-weight:400}
.lab-adopt-v3 :is(.calc-panel,.method-panel,.proof-body,.compress,.target-strip,.alignment-board,.verifier) strong{font-weight:500}
.lab-adopt-v3 :is(.solve-entry>span:not(.field-status),.num-field>span:not(.field-status),.locked-field>span,.proof-rule strong,.bound-pair strong,.goal-step-label strong,.goal-step-label span,.verifier-head span){font:400 12px/1.45 var(--lab-font-sans,sans-serif);text-transform:none;letter-spacing:normal}
.lab-adopt-v3 :is(.digit-cell,.target-value,.row-label,.row-factor,.trace-digit,.decimal-prefix,.digit-out,.remainder-node strong,.equation-main,.equation-sub){font-family:var(--lab-font-sans,sans-serif);font-weight:400}
.lab-adopt-v3 :is(.lab-work-card p,.proof-message,.method-reveal){font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-work-card>strong{font-size:14px;font-weight:500}
.lab-work-card p{margin:8px 0 0}
.lab-adopt-v3 .solve-label{display:none}
.lab-adopt-v3 .next-card .lab-dialog-move{display:grid;place-items:center}
.lab-dialog-move svg{width:20px;height:20px;pointer-events:none}

/* Fit the causal sequence within its canvas; keep the model horizontal. */
.lab-adopt-v3 .chain{display:grid;width:100%;min-width:0;padding:0;gap:16px;grid-auto-flow:row;grid-auto-columns:auto}

/* Prediction choices use selection blue; assessed outcomes belong to the card. */
.lab-prediction-options{display:grid;gap:8px;margin:12px 0}
.lab-adopt-v3 .lab-prediction-options .lab-action,.lab-prediction-options .lab-action{display:block;width:100%;text-align:left;padding:10px 12px}
.lab-prediction-options button span{display:block;margin-top:4px;font-size:12px;font-weight:400}
.lab-adopt-v3 .lab-prediction-options [aria-pressed="true"],.lab-prediction-options [aria-pressed="true"]{background:var(--lab-accent-soft,#eef2fa);border-color:var(--lab-accent,#5277b8);color:var(--lab-accent-ink,#315b91)}
.lab-adopt-v3 .lab-proof-sidebar{padding:0 0 0 20px;margin:0;border:0;border-left:1px solid var(--lab-line-subtle,#e7e8eb);background:transparent;overflow:visible}
.lab-proof-sidebar .proof-head{padding:0 0 12px;background:transparent}
.lab-proof-sidebar .proof-body{display:grid;gap:12px;padding:0}
.lab-proof-sidebar :is(.bound-entry-grid,.equation-work){display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:start}
.lab-proof-sidebar .equation-work{padding:12px;border-radius:8px;background:var(--lab-surface-muted,#f7f8fa)}
.lab-proof-sidebar .eq-label{font-size:14px;text-align:center}
.lab-proof-sidebar .num-field.speed{max-width:none}
.lab-proof-sidebar .locked-value{height:auto;min-height:36px;border:0;border-radius:4px;font-size:14px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white)}
.lab-proof-sidebar .proof-message:empty{display:none}
.lab-bounds-chart .lab-chart-heading{font:500 20px var(--lab-font-sans,sans-serif);fill:var(--lab-ink,#1d1d1f)}
.lab-bounds-chart .lab-chart-label{font:400 16px var(--lab-font-sans,sans-serif);fill:var(--lab-ink-secondary,#424245)}
.lab-bounds-chart .lab-chart-value{font:400 20px var(--lab-font-sans,sans-serif);fill:var(--lab-ink,#1d1d1f)}
.lab-motion-chart :is(.tick,.axis-label,.track-label,.gate-title,.gate-value,.handle-label,.limit-label,.endpoint-text,.triangle-text,.dwell-text){font-size:19px;font-weight:400;letter-spacing:normal}
.lab-motion-chart .plot-title{font-size:20px;font-weight:500}
.lab-motion-chart :is(.plot-sub,.relation-box,.relation-main,.relation-sub){display:none}
.lab-adopt-v3 .visual-head{padding:0 0 12px;border:0;gap:12px}
.lab-adopt-v3 .visual-copy strong{font-size:14px;font-weight:500}

/* Remainder evidence wraps without shrinking the readable calculation text. */
.lab-adopt-v3 .division-scroll{border:0;background:transparent}
.lab-adopt-v3 .division-stage{width:100%;min-width:0;padding:16px 0}
.lab-adopt-v3 .division-line{width:100%;display:flex;flex-wrap:wrap;gap:12px 8px;justify-content:center}
.lab-adopt-v3 .division-step{width:116px;padding:8px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);border:0}
.lab-adopt-v3 .division-step .op{font:400 12px/1.45 var(--lab-font-sans,sans-serif)}
.lab-adopt-v3 .remainder-node{width:76px;height:76px}
.lab-adopt-v3 .remainder-node span{font-size:11px;font-weight:400}
.lab-adopt-v3 .remainder-node strong{font-size:18px;font-weight:400}
.lab-adopt-v3 .cycle-endpoint{border-color:var(--lab-concept-violet,#7563a7);box-shadow:0 0 0 3px color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white)}
.lab-adopt-v3 .repeat-bracket{position:static;width:auto;height:auto;margin:16px 0 0;border:0;text-align:center}
.lab-adopt-v3 .repeat-bracket span{position:static;transform:none;font:400 12px/1.45 var(--lab-font-sans,sans-serif);white-space:normal}
.lab-adopt-v3 .decimal-build{flex-wrap:wrap;width:auto}
.lab-adopt-v3 .decimal-build-label{font-size:12px;font-weight:400;text-transform:none}
.lab-adopt-v3 .verifier-head{gap:16px;flex-wrap:wrap}
.lab-adopt-v3 .factor-box{padding:12px;background:var(--lab-surface-muted,#f7f8fa);font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-adopt-v3 .factor-box :is(strong,code,span,p){font-family:var(--lab-font-sans,sans-serif);font-size:14px;font-weight:400;line-height:1.45}
@media(max-width:900px){.lab-adopt-v3 .lab-proof-sidebar{padding:18px 0 0;border-left:0;border-top:1px solid var(--lab-line-subtle,#e7e8eb)}}

/* Direct manipulation cues belong to the operated object, not a second control. */
.lab-bar-action{cursor:grab;touch-action:none;user-select:none}
.lab-bar-action:active{cursor:grabbing}
.lab-bar-action .bar-fill{transition:none;background:var(--lab-concept-blue,#4779b7)}
.lab-bar-action .bar-fill::after{content:"";position:absolute;left:-3px;right:-3px;top:-4px;height:8px;border:1px solid var(--lab-accent,#5277b8);border-radius:999px;background:#fff}
.lab-bar-action:not([data-interacted="true"]) .bar-fill::after{animation:labGuideAttention 2s ease-in-out infinite}
.lab-bar-target{position:absolute;left:0;right:0;border-top:2px dashed var(--lab-accent,#5277b8);pointer-events:none}
.lab-checkpoints{display:flex;align-items:center;gap:10px}
.lab-adopt-v3 .lab-checkpoint{width:12px;min-width:12px;height:12px;min-height:12px;padding:0;border:1px solid var(--lab-line-strong,#a7a7ad);border-radius:50%;background:#fff;opacity:1;box-shadow:none}
.lab-adopt-v3 .lab-checkpoint[aria-current="true"]{border-color:var(--lab-accent,#5277b8);box-shadow:inset 0 0 0 3px #fff;background:var(--lab-accent,#5277b8)}
.lab-adopt-v3 .lab-checkpoint[data-complete="true"]{border-color:var(--lab-good,#18794e);background:var(--lab-good,#18794e)}
.lab-bounds-restored :is(.bound-label,.certificate,.phase-chip,.phase-text){display:none}
.lab-bounds-restored :is(.bound-value,.smallmono,.mono){font:400 18px var(--lab-font-sans,sans-serif);letter-spacing:normal;text-transform:none}
.lab-bounds-restored :is(.distance-handle,.time-drag-control){cursor:grab}
.lab-proof-sidebar .verdict-group{display:grid;gap:8px}
.lab-adopt-v3 .lab-proof-sidebar .proof-body>p{font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-motion-chart :is(.track-label,.gate-title,.gate-value,.readout-text,.speed-sign-text,.endpoint-text){font:400 18px var(--lab-font-sans,sans-serif);letter-spacing:normal}
.lab-motion-chart .endpoint-text{text-anchor:start}
.lab-motion-chart .plot-title{font-size:18px}
.lab-adopt-v3 .visual-head:has(.visual-copy[hidden]){display:flex;justify-content:flex-end}
.lab-recurring{--cycle-a:var(--lab-concept-blue,#4779b7);--cycle-b:var(--lab-concept-violet,#7563a7);--cycle-c:var(--lab-concept-amber,#c9782c);--cycle-a-soft:color-mix(in srgb,var(--cycle-a) 25%,white);--cycle-b-soft:color-mix(in srgb,var(--cycle-b) 25%,white);--cycle-c-soft:color-mix(in srgb,var(--cycle-c) 25%,white);--match:var(--lab-concept-teal,#2d8792);--match-soft:color-mix(in srgb,var(--match) 20%,white)}
.lab-recurring :is(.target-label,.row-name strong,.row-name code,.subtract-operator-copy strong,.subtract-operator-copy span,.shift-tools button){font:400 12px/1.45 var(--lab-font-sans,sans-serif);letter-spacing:normal;text-transform:none}
.lab-recurring :is(.digit-cell,.trace-digit).cycle-0{background:var(--cycle-a-soft);border-color:var(--cycle-a);color:var(--lab-ink,#1d1d1f)}
.lab-recurring :is(.digit-cell,.trace-digit).cycle-1{background:var(--cycle-b-soft);border-color:var(--cycle-b);color:var(--lab-ink,#1d1d1f)}
.lab-recurring :is(.digit-cell,.trace-digit).cycle-2{background:var(--cycle-c-soft);border-color:var(--cycle-c);color:var(--lab-ink,#1d1d1f)}
.lab-recurring .row-note{display:none}
.lab-recurring .row-panel.fixed .row-note{display:block;font-size:11px;font-weight:400}
.lab-recurring .track-shell.cued .tape-track{border-radius:8px;outline:1px solid var(--lab-accent,#5277b8);outline-offset:3px;animation:labGuideAttention 2s ease-in-out infinite}
.lab-recurring .subtract-track.ready:not(.dragging):not([data-interacted="true"]) .subtract-handle{border-color:var(--lab-accent,#5277b8);color:var(--lab-accent,#5277b8);background:#fff;animation:labGuideAttention 2s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.lab-bar-action .bar-fill::after,.lab-recurring .track-shell.cued .tape-track,.lab-recurring .subtract-track.ready .subtract-handle{animation:none!important;box-shadow:0 0 0 3px var(--lab-accent-soft,#eef2fa)}}

.lab-recurring .goal-mini-tail i{background:var(--cycle-a);border-left:18px solid var(--cycle-b);border-right:18px solid var(--cycle-c)}
.lab-recurring .subtract-operator-copy span{display:none}

/* Card headings: a modest size hierarchy, without bold or uppercase labels. */
.lab-card-title,.lab-work-card>strong,.lab-adopt-v3 :is(.reference-strip>span,.step-head>span,.derive-step-head strong,.solve-card:not(.solve-entry)>span,.lab-work-card>strong,.bound-pair>strong),.calc-panel .step-head>span,.working-panel .step-head>strong,.decision-card>strong{
  font:400 15px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink,#1d1d1f);letter-spacing:normal;text-transform:none;margin-block:0 6px;
}

/* Target-anchored introduction, shared by every newly required operation. */
.lab-intro-card{position:fixed;z-index:100;width:min(260px,calc(100vw - 16px));padding:12px 14px;border:1px solid var(--lab-accent-line,#9fb4d6);border-radius:12px;background:var(--lab-accent-soft,#eef2fa);color:var(--lab-ink,#1d1d1f);box-shadow:0 4px 14px rgba(29,29,31,.12);pointer-events:none}
.lab-intro-card[hidden]{display:none}
.lab-intro-card strong{display:block;margin-bottom:6px;font:400 15px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-accent-ink,#315b91)}
.lab-intro-card>span{display:block;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-intro-target{outline:1px solid var(--lab-accent,#5277b8);outline-offset:3px;border-radius:8px;animation:labGuideAttention 2s ease-in-out infinite}
svg .lab-intro-target{outline:none;animation:labSvgIntroAttention 2s ease-in-out infinite}
@keyframes labSvgIntroAttention{0%,100%{filter:drop-shadow(0 0 3px rgba(82,119,184,.35))}50%{filter:drop-shadow(0 0 7px rgba(82,119,184,.8))}}
.lab-is-dragging,.lab-is-dragging *{cursor:grabbing!important}
.lab-motion-chart :is(.handle-hit,.vertex-hit){cursor:grab}
@media(prefers-reduced-motion:reduce){.lab-intro-target{animation:none!important;box-shadow:0 0 0 3px var(--lab-accent-soft,#eef2fa)}svg .lab-intro-target{filter:drop-shadow(0 0 4px rgba(82,119,184,.6));box-shadow:none}}

/* Preserve the percentage model's single horizontal sequence at the available width. */
.lab-adopt-v3 .lab-percentage-chain{gap:8px;align-items:start;grid-auto-flow:row;min-width:0;padding:0}
.lab-percentage-chain .gate-card{align-self:center}
.lab-percentage-chain :is(.state-card,.gate-card){width:auto;min-width:0;padding:6px}
.lab-percentage-chain .state-card{background:#fff}
.lab-percentage-chain .state-head{display:grid;gap:4px}
.lab-percentage-chain .state-head :is(span,strong){text-align:left;font:400 12px/1.4 var(--lab-font-sans,sans-serif);overflow-wrap:anywhere}
.lab-percentage-chain .bar-stage{height:210px;padding:0}
.lab-percentage-chain .bar-track{left:6px;right:6px;background:#fff}
.lab-percentage-chain .bar-fill{background:var(--lab-concept-blue,#4779b7)}
.lab-percentage-chain .add-slice{background:var(--lab-concept-amber,#c9782c)}
.lab-percentage-chain .gate-core{width:100%;min-width:0;padding:8px;background:var(--lab-surface-muted,#f7f8fa);border:1px solid var(--lab-line,#d2d2d7);box-shadow:none}
.lab-percentage-chain :is(.gate-top,.calc-equation){display:flex;flex-direction:column;align-items:stretch;gap:4px}
.lab-percentage-chain :is(.calc-line,.gate-note,.lock-copy,.rate-readout,.state-foot){font:400 12px/1.4 var(--lab-font-sans,sans-serif);overflow-wrap:anywhere}
.lab-percentage-chain .calc-line{padding:6px 0;border:0;background:transparent}
.lab-percentage-chain :is(.calc-expression,.calc-result-label){white-space:normal;overflow:visible;text-overflow:clip;font-size:12px}
.lab-percentage-chain .calc-equation input{width:100%;min-width:0}
.lab-percentage-chain .state-foot{min-height:0}
.lab-percentage-chain .state-foot:empty{display:none}
.lab-percentage-chain .target-line span{position:static;display:block;font-size:11px;font-weight:400;white-space:normal;border:0;background:#fff}
@media(max-width:620px){.lab-adopt-v3 .lab-percentage-chain{gap:3px}.lab-percentage-chain :is(.state-card,.gate-card,.gate-core){padding:3px}.lab-percentage-chain .bar-track{left:2px;right:2px}.lab-percentage-chain :is(.bar-fill,.removed-slice){left:2px;right:2px}.lab-percentage-chain .bar-stage{height:170px}.lab-percentage-chain .gate-period{overflow-wrap:anywhere}}

/* Field introductions preserve the existing field-border focus language. */
input.lab-intro-target{outline:none;animation:none}
.lab-motion-chart :is(.handle,.vertex):not(.locked){cursor:grab}
.lab-bounds-restored [data-drag]{cursor:grab}


/* Geometry adoption: common working and presentation, with model layout kept local. */
.lab-geometry :is(.mission-top){display:contents}
.lab-geometry :is(.progress-meta,.mission-tools){display:flex;align-items:center;flex-wrap:wrap;gap:12px}
.lab-geometry :is(.progress-count,.case-meta,.stage-kicker,.problem-kicker,.work-badge,.working-badge,.work-head>span,.strategy-strip,.ownership-note,.problem-family-note,.method-spine,.process-rail,.scope-chip,.scope-badge,.step-tag,.guide-kicker){display:none}
.lab-geometry :is(#goalHint,#missionHint,.visual-copy,#visualHint,.diagram-title,.stage-head>div:first-child,.stage-note:not(svg .stage-note)){display:none}
.lab-geometry :is(.stage-side,.diagram-shell,.rotor-side,.graph-side){min-width:0;padding:0;border:0;background:transparent}
.lab-geometry :is(.stage-shell,.svg-wrap,.diagram-scroll,.diagram-frame){min-width:0;max-width:100%;overflow:visible;aspect-ratio:auto;background:transparent;border:0}
.lab-geometry :is(svg.stage,#geometry,.diagram-frame svg){display:block;width:100%;min-width:0;height:auto;max-height:none;background:transparent}
.lab-geometry .lab{overflow:visible}
.lab-geometry :is(.work-panel,.working,.working-panel,.workspace>.evidence,.sidebar){min-width:0;padding:0 0 0 20px;border:0;border-left:1px solid var(--lab-line-subtle,#e7e8eb);background:transparent;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-geometry .sidebar .calc-panel{border:0;padding:0}
.lab-geometry :is(.work-head,.working-head,.calc-head){padding:0 0 10px;border:0;display:block}
.lab-geometry :is(.work-head strong,.working-head strong,.calc-head strong){font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.lab-geometry :is(.work-panel,.working,.working-panel,.sidebar,.workspace>.evidence) :is(p,.step-copy,.step-body,.step-note,.work-feedback,.reference-copy,.ratio-note,.transition-note,.progress-summary,.family-note,.work-description,.realisation){font:400 14px/1.45 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245)}
.lab-geometry :is(.work-panel,.working,.working-panel,.sidebar,.workspace>.evidence) :is(div,span,strong,b,label,output,code){font-family:var(--lab-font-sans,sans-serif);font-size:inherit;font-weight:400;line-height:1.45;letter-spacing:normal;text-transform:none}
.lab-geometry :is(.ratio-evidence-card,.ratio-choice,.role-copy,.role-auto,.worked-result-row){font-size:14px}
.lab-geometry :is(.ratio-evidence-card,.role-copy,.role-auto,.worked-result-row)>span{font-size:12px}
.lab-geometry :is(.reference-choice,.scale-check){padding:0;border:0;background:transparent;font-size:14px}
.lab-geometry .scale-check{display:grid;gap:8px}
.lab-geometry .choice-action,.lab-geometry .step-head>:is(.work-status,.step-status),.lab-circle #status{display:none}
.lab-geometry .role-buttons{display:flex;gap:4px;flex-wrap:wrap}
.lab-geometry .role-buttons button{min-width:32px;padding:6px;font-size:12px}
.lab-geometry .lab-action.correct{background:var(--lab-good-surface,#f7fcf8);border-color:var(--lab-good,#18794e);color:var(--lab-good,#18794e)}
.lab-geometry .lab-action.wrong{background:var(--lab-bad-surface,#fff8f7);border-color:var(--lab-bad,#b42318);color:var(--lab-bad,#b42318)}
.lab-geometry :is(.work-step,.working-step,.calc-step){margin:0 0 10px;padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:12px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none;opacity:1;min-width:0}
.lab-geometry :is(.work-step,.working-step,.calc-step):is(.current,.pending,.needed,.needs-working,.work-pending){border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.lab-geometry :is(.work-step,.working-step,.calc-step):is(.good,.done,.work-good,.work-done){border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8);box-shadow:none}
.lab-geometry :is(.work-step,.working-step,.calc-step):is(.bad,.work-bad),.lab-geometry :is(.work-step,.working-step,.calc-step):has(.entry.bad,input.bad){border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7);box-shadow:none}
.lab-geometry :is(.work-step,.working-step,.calc-step):is(.current,.pending,.needed,.needs-working,.work-pending):not([data-interacted="true"]):not(:has(.bad)){animation:workingAttention 2s ease-in-out infinite}
.lab-geometry :is(.work-step,.working-step,.calc-step):has(input,textarea) :is(.step-status,.status-pill){display:none}
.lab-geometry :is(.work-step,.working-step,.calc-step)::after{display:none}
.lab-geometry .step-head{display:flex;align-items:baseline;gap:8px;margin-bottom:6px;padding:0;flex-wrap:wrap}
.lab-geometry .step-head :is(strong,.step-title){font:400 15px/1.4 var(--lab-font-sans,sans-serif);letter-spacing:normal;text-transform:none;color:var(--lab-ink,#1d1d1f)}
.lab-geometry :is(.step-num,.step-status,.status-pill){font:400 11px/1.4 var(--lab-font-sans,sans-serif);text-transform:none;letter-spacing:normal}
.lab-geometry :is(.working-equation,.step-equation,.calc-line strong,.ratio-values strong,.evidence-cell strong,.auto-value-line strong,.work-box.auto>strong,.pair-box strong){font:400 14px/1.45 var(--lab-font-sans,sans-serif);background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);border:0;border-radius:4px;padding:3px 7px;box-shadow:none;overflow-wrap:anywhere;max-width:100%}
.lab-geometry :is(.step-equation,.working-equation):has(input,button){background:transparent;padding:0}
.lab-geometry :is(.work-box,.entry-row,.evidence-cell,.pair-box,.ratio-evidence,.transition-note,.progress-summary){padding:8px;border:0;border-radius:8px;box-shadow:none;font-size:14px}
.lab-geometry :is(.work-box>span,.entry-row label,.calc-line>span,.pair-box span,.evidence-cell>span,.candidate-row .head,.field-label,.field-shell .field-symbol,.given-chip,.legend,.evidence-row){font:400 12px/1.4 var(--lab-font-sans,sans-serif);letter-spacing:normal;text-transform:none}
.lab-geometry :is(.work-box,.entry-row):focus-within{outline:none;box-shadow:none}
.lab-geometry :is(input,textarea){font:400 14px/1.4 var(--lab-font-sans,sans-serif);max-width:100%}
.lab-geometry textarea{min-height:64px;padding:8px;border-radius:8px;resize:vertical}
.lab-geometry :is(.work-entry-line input,.mini-work input,.entry-wrap input){border:1px solid var(--lab-needed-line,#d8c36a);background:white;padding:6px 26px 6px 8px}
.lab-geometry :is(.good input,input.good){border-color:var(--lab-good-line,#9cc7aa)}
.lab-geometry :is(.bad input,input.bad){border-color:var(--lab-bad-line,#d8aaa4)}
.lab-geometry :is(.work-status,.mini-status,.auto-mark){background:none!important;border:0!important;color:inherit!important;font:400 14px/1 var(--lab-font-sans,sans-serif)}
.lab-geometry :is(.role-options,.role-choice,.ratio-choice,.ratio-choices){display:flex;gap:6px;flex-wrap:wrap}
.lab-geometry :is(.role-options,.role-choice,.ratio-choice,.ratio-choices) button{flex:1 1 60px;font:400 12px/1.4 var(--lab-font-sans,sans-serif);padding:8px;min-height:40px}
.lab-geometry :is(.ratio-choice,.ratio-choices) button span{font-size:11px;font-weight:400}
.lab-geometry .lab-action:is(.selected,.active,[aria-pressed="true"]):not(.bad,.good){background:var(--lab-accent-soft,#eef2fa);border-color:var(--lab-accent,#5277b8);color:var(--lab-accent-ink,#315b91)}
.lab-geometry .lab-action.good{background:var(--lab-good-surface,#f7fcf8);border-color:var(--lab-good,#18794e);color:var(--lab-good,#18794e)}
.lab-geometry .lab-action.bad{background:var(--lab-bad-surface,#fff8f7);border-color:var(--lab-bad,#b42318);color:var(--lab-bad,#b42318)}
.lab-geometry .working-body,.lab-geometry .calc-flow{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.lab-geometry :is(.stage-head,.visual-head,.diagram-head){background:transparent;border:0;padding:0;margin:0 0 12px;min-height:0}
.lab-geometry svg text{font-family:var(--lab-font-sans,sans-serif);font-weight:400}
.lab-geometry :is(svg.stage,#geometry,.diagram-frame svg) text{font-size:20px}
.lab-geometry :is(.probe-cue,.rotor-drag-label,#angleHandleLabel){display:none}
.lab-geometry .interaction-guide,.lab-three #guideCard{display:none!important}
.lab-geometry .angle-hit.lab-intro-target{stroke:var(--lab-accent,#5277b8);stroke-opacity:.22;stroke-width:16px}
.lab-geometry .completion-layer{inset:0;background:transparent!important;pointer-events:none!important}
.lab-geometry .completion-layer .next-card{pointer-events:auto;padding:16px!important;width:min(320px,calc(100% - 32px))!important;border:1px solid var(--lab-good-line,#9cc7aa)!important;background:var(--lab-good-surface,#f7fcf8)!important;box-shadow:0 6px 18px rgba(29,29,31,.12)!important;text-align:left!important}
.lab-geometry .completion-layer .next-card :is(span,.next-realisation,.next-insight){font-size:14px;line-height:1.45;font-weight:400}
.lab-geometry .phase-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.lab-geometry .phase-kicker{display:none}
.lab-geometry .phase-modal :is(span,b,strong,label,output){font-family:var(--lab-font-sans,sans-serif);font-weight:400;font-size:14px}
.lab-geometry .unfold-control{grid-template-columns:1fr;gap:8px;font-size:12px}
.lab-geometry .unfold-control input{min-width:0}
.lab-geometry .phase-modal.unfold{background:var(--lab-accent-soft,#eef2fa);border-color:var(--lab-accent-line,#9fb4d6)}
.lab-trigonometric .workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;margin:0;padding:20px 24px;border-top:0;border-radius:0 0 12px 12px;overflow:visible}
.lab-trigonometric .visual-system{grid-template-columns:minmax(220px,.65fr) minmax(0,1fr);align-items:start;gap:16px;min-width:0}
.lab-trigonometric .working-panel{grid-column:2;grid-row:1/3}
.lab-trigonometric .workspace>.evidence{grid-column:1;grid-row:2;border:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.lab-trigonometric .evidence-box:nth-child(2){display:none}
.lab-trigonometric .visual-head :is(strong,span){font-size:12px;font-weight:400;line-height:1.4}
.lab-trigonometric :is(#rotorSvg,#graphSvg){width:100%;min-width:0;height:310px;display:block;background:transparent}
.lab-trigonometric svg text{font-size:12px}
.lab-trigonometric .live-pill{background:transparent;border:0;font-size:12px}
.lab-trigonometric .evidence-box{border:0;padding:12px;border-radius:12px;background:var(--lab-surface-muted,#f7f8fa);font-size:14px}
.lab-trigonometric :is(.evidence-label,.sweep-status,.inverse-copy,.solution-chip){font-size:12px;font-weight:400;line-height:1.45}
@media(max-width:980px){.lab-geometry .workspace{grid-template-columns:1fr}.lab-geometry :is(.work-panel,.working,.working-panel,.workspace>.evidence,.sidebar){border-left:0;padding:18px 0 0;border-top:1px solid var(--lab-line-subtle,#e7e8eb)}.lab-geometry .sidebar{grid-template-columns:1fr}.lab-trigonometric .working-panel,.lab-trigonometric .workspace>.evidence{grid-column:1;grid-row:auto}.lab-trigonometric .visual-system{grid-template-columns:minmax(240px,.7fr) minmax(0,1fr)}}
@media(max-width:620px){.lab-trigonometric .visual-system{grid-template-columns:1fr}.lab-trigonometric .workspace>.evidence{grid-template-columns:1fr}.lab-geometry :is(.work-grid,.candidate-row){min-width:0}.lab-geometry :is(svg.stage,#geometry,.diagram-frame svg) text{font-size:24px}}
@media(prefers-reduced-motion:reduce){.lab-geometry :is(.work-step,.working-step,.calc-step){animation:none!important}}
.lab-geometry svg[data-lab-readable-chart] text{font:400 var(--lab-chart-text-size,14px) var(--lab-font-sans,sans-serif)!important}
.lab-geometry .phase-modal :is(span,b,strong,label,output){text-transform:none;letter-spacing:normal}
.lab-non :is(.working-description,#constructionStatus,#feedback,#rayLabel){display:none}
.lab-geometry .work-control{display:flex;flex-direction:row;align-items:center;gap:8px}
.lab-geometry .work-control>span{font:400 12px/1.4 var(--lab-font-sans,sans-serif);text-transform:none;letter-spacing:normal;color:var(--lab-ink-secondary,#424245)}
.lab-geometry .live-pill :is(small,span){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-geometry .calc-step .step-equation:has(.lock-copy){padding:0;background:transparent}
.lab-trigonometric :is(.svg-title,.svg-sub,#graphSub,#workingStatus){display:none}
.lab-trigonometric .sweep-key{background:var(--lab-concept-violet,#7563a7)}
.lab-trigonometric .svg-range{fill:color-mix(in srgb,var(--lab-concept-blue,#4779b7) 8%,white)}
.lab-geometry{--pair-a:var(--lab-concept-amber,#c9782c);--pair-b:var(--lab-concept-violet,#7563a7);--height:var(--lab-concept-teal,#2d8792);--principal:var(--lab-concept-blue,#4779b7);--supp:var(--lab-concept-amber,#c9782c);--probe:var(--lab-accent,#5277b8);--grid:var(--lab-line-subtle,#e7e8eb);--sweep:var(--lab-concept-violet,#7563a7)}
.lab-geometry :is(.pair-box.a,.given-chip.a){background:color-mix(in srgb,var(--lab-concept-amber,#c9782c) 20%,white)}
.lab-geometry :is(.pair-box.b,.given-chip.b){background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white)}
.lab-geometry .measure-circle{stroke:var(--lab-concept-amber,#c9782c)}
.lab-geometry :is(.side-label.a,.angle-label-a){fill:var(--lab-concept-amber,#c9782c)}
.lab-geometry :is(.side-label.b,.point-label.c){fill:var(--lab-concept-violet,#7563a7)}
.lab-geometry :is(.height-label,.foot-label){fill:var(--lab-concept-teal,#2d8792)}
.lab-geometry svg[tabindex]:focus-visible{outline:1px solid var(--lab-accent,#5277b8);outline-offset:3px}
.lab-geometry .next-card .lab-action[data-priority="primary"]:not(:disabled){background:var(--lab-accent-hover,#4569aa)!important;border-color:var(--lab-accent-pressed,#3a5d99)!important;color:#fff!important}
.lab-geometry .next-card>strong{text-align:left;font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.lab-geometry .next-card>span{text-align:left;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-geometry .legend :is(span,b,i){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-geometry .sidebar h2{font:400 15px/1.4 var(--lab-font-sans,sans-serif);margin:0 0 10px}
.lab-geometry svg [tabindex]:focus-visible{outline:none;filter:drop-shadow(0 0 4px var(--lab-accent,#5277b8))}
.lab-geometry svg text[data-ref]{cursor:pointer}
.lab-geometry .next-card{animation:none}
.lab-geometry .lab-checkpoints{order:3}
.lab-checkpoint{position:relative}
.lab-checkpoint-detail{display:none;position:absolute;z-index:45;right:-8px;top:24px;width:min(280px,calc(100vw - 32px));padding:12px 14px;border:1px solid var(--lab-line,#d2d2d7);border-radius:12px;background:#fff;color:var(--lab-ink,#1d1d1f);box-shadow:0 4px 14px rgba(29,29,31,.12);text-align:left;white-space:normal;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-checkpoint-detail strong{display:block;margin-bottom:6px;font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.lab-checkpoint-detail span{display:block;margin-top:6px}
.lab-checkpoint:is(:hover,:focus-within)>.lab-checkpoint-detail{display:block}
.lab-non #workingIntro{display:none}
.lab-geometry .candidate-row{display:grid;grid-template-columns:minmax(58px,.8fr) minmax(38px,.7fr) minmax(80px,1.4fr) minmax(38px,.6fr);gap:6px;padding:8px 0}
.lab-geometry .working .candidate-row>div{font-size:12px;min-width:0;white-space:normal;overflow-wrap:anywhere}

.lab-circle #reason,.lab-geometry .next-card>span:empty,.lab-geometry .step-copy:empty{display:none}

/* Flat calculation surfaces; feedback belongs to the complete field, never a side rail. */
.lab-geometry :is(.work-box,.mini-work){border:0!important;box-shadow:none!important}
/* Choose concept colours that remain distinct from green success feedback. */
.lab-geometry.lab-three{--height:var(--lab-concept-amber,#c9782c);--laser:var(--lab-concept-blue,#4779b7);--projection:var(--lab-concept-blue,#4779b7);--cable:var(--lab-concept-violet,#7563a7);--plumb:var(--lab-good,#18794e)}
.lab-three .laser-ghost{stroke:color-mix(in srgb,var(--laser) 28%,transparent)}
.lab-three .beam-halo{fill:color-mix(in srgb,var(--laser) 12%,transparent);stroke:color-mix(in srgb,var(--laser) 28%,transparent)}
.lab-three :is(.edge-label.height,.flat-label.height){fill:var(--height)}
.lab-three :is(.edge-label.projection,.flat-label.shared){fill:var(--projection)}
.lab-three :is(.edge-label.cable,.flat-label.cable){fill:var(--cable)}

/* Instrument readouts preserve the displayed precision, including trailing zeros. */
.lab-digital-display{color:var(--lab-concept-blue,#4779b7)}
.lab-digital-display.time{color:var(--lab-concept-violet,#7563a7)}
.lab-digital-face{fill:color-mix(in srgb,currentColor 12%,white);stroke:none}
.lab-digital-segment{fill:currentColor;opacity:.1}
.lab-digital-segment.is-on{opacity:1}
.lab-digital-display text{font:400 12px var(--lab-font-sans,sans-serif);fill:var(--lab-ink-secondary,#424245)}
.lab-digital-display .lab-digital-unit{font-size:14px;fill:currentColor}
.lab-bounds-restored .lab-chart-heading{font-size:14px;font-weight:400}
.lab-bounds-restored :is(.lab-chart-label,.bound-value,.smallmono,.mono){font-size:12px}

.lab-proof-marker{fill:var(--lab-concept-blue,#4779b7);stroke:white;stroke-width:2}
.lab-proof-marker.time{fill:var(--lab-concept-violet,#7563a7)}
.lab-proof-sidebar :is(.num-field input,.proof-rule code){font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-proof-sidebar .lab-work-card>.num-field{margin-top:8px}

.lab-interval-end{stroke:var(--lab-ink-secondary,#424245);stroke-width:1.5}
.lab-interval-end.included{fill:var(--lab-ink-secondary,#424245)}
.lab-interval-end.excluded{fill:white}
.lab-interval-caption{font:400 11px var(--lab-font-sans,sans-serif);fill:var(--lab-ink-secondary,#424245)}
/* Investigation adoption: shared shell, readable evidence and flat working surfaces. */
.lab-context{margin:0 0 16px;padding:12px 16px;border:0;border-radius:10px;background:color-mix(in srgb,var(--lab-concept-blue,#4779b7) 10%,white);color:var(--lab-ink,#1d1d1f)}
.lab-context-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px 16px;flex-wrap:wrap}
.lab-context h2{margin:0;font:400 15px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-accent-ink,#315b91)}
.lab-context p{margin:6px 0 0;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-context .lab-context-detail{color:var(--lab-ink-secondary,#424245)}
.lab-context .mechanism-chip{margin:0;padding:0;border:0;background:none;box-shadow:none;font:400 12px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245)}
.lab-context .mechanism-chip i{display:none}
.lab-adopt-v3 .lab-sidebar .relationship{padding:8px 0 0;border:0;background:transparent;box-shadow:none;border-radius:0}
.lab-investigation .lab-sidebar .work-box:is(.auto,.fixed){padding:8px 10px}
.lab-investigation .lab-activity-bar+:is(.workspace,.system,.board){margin-top:0;border-top:0;border-radius:0 0 12px 12px}
.lab-investigation .lab-solid-layout{margin-top:0}
.lab-adopt-v3 .lab-activity-bar #missionTitle{margin:0;font:400 16px/1.5 var(--lab-font-sans,sans-serif);color:var(--lab-accent-ink,#315b91)}
.lab-adopt-v3 .op-index{display:inline-grid;place-items:center;align-self:center;flex:0 0 28px;width:28px;height:28px;margin:0;padding:0;text-align:center;font:400 12px/1 var(--lab-font-sans,sans-serif)}
.lab-adopt-v3 .single-operation strong{font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.lab-adopt-v3 :is(.single-operation>div>span,.op-drag-note){display:none}
.lab-adopt-v3 .single-operation .op-live{font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-vectors #stage{aspect-ratio:auto}
.lab-vectors .command-strip:empty{display:none}
.lab-vectors .program:has(.command-strip:empty) .program-head{border-bottom:0}
.lab-timetable .person-role{text-transform:none;letter-spacing:normal}
.lab-sets #ruleCue,.lab-sets .drag-guide,.lab-replacement #actionCopy{display:none}
.lab-investigation{--conc:var(--lab-concept-amber,#c9782c);--water:var(--lab-concept-blue,#4779b7)}
.lab-investigation :is(button,input,select,textarea){font-family:var(--lab-font-sans,sans-serif);font-weight:400}
.lab-investigation button:where(:not(.counter,.person-card,.lab-dialog-move)){min-height:40px;padding:8px 14px;border:1px solid var(--lab-accent-line,#9fb4d6);border-radius:8px;background:#fff;color:var(--lab-accent-ink,#315b91);font-size:12px;line-height:1.3;box-shadow:0 1px 3px #1d1d1f14}
.lab-investigation button:is(.primary,.send):not(:disabled),.lab-investigation :is(#nextProblem,#nextDataset,#nextStageBtn,#nextRoute,#nextButton):not(:disabled){background:var(--lab-accent-hover,#4569aa);border-color:var(--lab-accent-pressed,#3a5d99);color:#fff}
.lab-investigation button:is(.selected,.active,[aria-pressed="true"]):not(.counter){background:var(--lab-accent-soft,#eef2fa);color:var(--lab-accent-ink,#315b91)}
.lab-investigation button:disabled:not(.counter){background:var(--lab-surface-strong,#eef1f3);color:var(--lab-muted,#6e6e73);border-color:var(--lab-line,#d2d2d7);box-shadow:none;opacity:1;cursor:not-allowed}
.lab-investigation :is(.mission-kicker,.setup-meta,.problem-meta,.goal-kicker,.working-badge,.work-badge,.working-copy>span,.difficulty-copy>span,.work-scope,.work-head p,.work-head-top>span,.work-head>span,.modal-kicker,.action-kicker,.stage-footer,#canvasCue,#mapCue,.pump-cue,.work-intro,.working-intro){display:none}
.lab-investigation :is(#missionHint,.visual-copy,.visual-title,#visualHint,.work-head>p,.stage-note,.stage-caption,.handle-instruction,.control-label,.explore-banner,.interaction-guide){display:none!important}
.lab-investigation .lab-activity-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 24px;padding:20px 24px;margin:0;border-radius:12px 12px 0 0;background:#fff}
.lab-investigation .lab-activity-bar :is(.mission-copy,.request-copy,.problem-bar>div:first-child){flex:1 1 350px;min-width:0}
.lab-investigation .lab-activity-bar :is(.request-copy>strong,#problemText){font:400 16px/1.5 var(--lab-font-sans,sans-serif);color:var(--lab-accent-ink,#315b91)}
.lab-investigation .lab-activity-bar :is(.complexity,.difficulty-copy,.difficulty-bar,.mission-tools,.request-tools){display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lab-investigation .lab-activity-bar :is(.complexity-copy>strong,.complexity>span,.difficulty-copy>strong){font:400 12px/1.4 var(--lab-font-sans,sans-serif);white-space:nowrap}
.lab-investigation .lab-activity-bar .lab-toggle button.active{background:var(--lab-ink-secondary,#424245);color:#fff}
.lab-investigation .lab-activity-bar .lab-toggle[data-kind="mode"] button.active{background:var(--lab-accent-hover,#4569aa);color:#fff}
.lab-investigation :is(.stage-shell,.plot-shell,.canvas-wrap,.canvas-frame,.solid-shell,.skin-shell,.venn-scroll){min-width:0;max-width:100%;overflow:visible;border:0;background:transparent;aspect-ratio:auto}
.lab-investigation :is(#stage,#plot,#stageSvg,#solidSvg,#skinSvg,#plant,#venn){display:block;width:100%;min-width:0;height:auto;max-height:none;overflow:visible;background:transparent}
.lab-investigation svg[data-lab-readable-chart] text{font:400 var(--lab-chart-text-size,12px) var(--lab-font-sans,sans-serif)!important}
.lab-investigation svg :is(.stage-bg,.plot-bg){fill:white}
.lab-investigation svg :is([data-drag],.handle-hit,.control-hit){cursor:grab;touch-action:none}
.lab-investigation :is(.stage-side,.stage-wrap,.visual-shell,.visual-panel){min-width:0;padding:0;border:0;background:transparent}
.lab-investigation :is(.visual-head,.skin-head){padding:0 0 10px;border:0;background:none;gap:8px;min-height:0}
.lab-investigation :is(.visual-head,.skin-head,.legend) :is(strong,span){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-investigation .lab-sidebar{display:block;min-width:0;padding:0 0 0 20px;border:0;border-left:1px solid var(--lab-line-subtle,#e7e8eb);background:transparent;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-investigation .lab-sidebar :is(div,p,span,b,strong,label,output,code,small){font-family:var(--lab-font-sans,sans-serif);font-size:inherit;font-weight:400;letter-spacing:normal;text-transform:none;line-height:1.45}
.lab-investigation .lab-sidebar :is(.eyebrow,.side-head>strong,.working-head>strong,.work-step-head strong,.work-step-title strong,.step-head strong,.card-head strong,.work-head strong){font:400 15px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink,#1d1d1f)}
.lab-investigation .lab-sidebar :is(.side-card,.work-section,.evidence-section,.working-head,.work-head,.side-head){padding:0;margin:0 0 12px;border:0;background:transparent;box-shadow:none}
.lab-investigation .lab-sidebar :is(.work-step,.working-step,.calc-step,.work-section,.evidence-section,.work-block,.evidence-card){padding:12px;margin:0 0 10px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:12px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none;min-width:0;opacity:1}
.lab-investigation .lab-sidebar :is(.work-step,.working-step,.calc-step,.work-section,.evidence-section,.work-block):is(.current,.pending,.needed,.work-pending,[data-state="needed"],[data-work-state="needed"]){border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.lab-investigation .lab-sidebar :is(.work-step,.working-step,.calc-step,.work-section,.evidence-section,.work-block):is(.good,.done,.work-done,[data-state="correct"],[data-work-state="good"]){border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-investigation .lab-sidebar :is(.work-step,.working-step,.calc-step,.work-section,.evidence-section,.work-block):is(.bad,.work-bad,[data-state="mistake"],[data-work-state="bad"]){border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.lab-investigation .lab-sidebar :is(.work-step,.working-step,.calc-step,.work-section,.evidence-section,.work-block):is(.current,.pending,.needed,.work-pending,[data-state="needed"],[data-work-state="needed"]):not([data-interacted="true"]){animation:workingAttention 2s ease-in-out infinite}
.lab-investigation .lab-sidebar :is(.work-step,.working-step,.calc-step):has(input,select,textarea)>:is(.lab-kit-work-state,.work-step-head>.lab-kit-work-state){display:none}
.lab-investigation .lab-sidebar :is(.work-step,.working-step,.calc-step):has(input,select,textarea)::after{display:none}
.lab-investigation .lab-sidebar :is(.work-formula,.working-equation,.evidence-formula,.claim-equation>strong,.forecast-equation,.work-formula-line,.operand,.result-value,.expression){width:fit-content;max-width:100%;padding:3px 7px;border:0;border-radius:5px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white);font-size:14px;box-shadow:none;overflow-wrap:anywhere}
.lab-investigation .lab-sidebar :is(.work-values,.working-fields,.work-chain,.resultant-grid,.work-grid,.working-grid){display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
.lab-investigation .lab-sidebar :is(.work-box,.calc-value,.formula-row,.work-entry,.result-box,.mag-box,.entry-row){border:0;box-shadow:none;border-radius:8px;min-width:0;padding:6px 0}
.lab-investigation .lab-sidebar :is(.step-num,.work-step-num,.work-box>span,.working-field>span,.formula-label,.work-entry>label,.live-stat>span,.comparison-stat>span,.compare-row>span,.evidence-copy>span){font-size:12px}
.lab-investigation .lab-sidebar :is(.work-entry input,.work-box input,.working-field input,.answer-row input,.result-box input,.mag-box input){min-width:0;max-width:100%;border:1px solid var(--lab-needed-line,#d8c36a);background:#fff;font:400 14px/1.4 var(--lab-font-sans,sans-serif)}
.lab-investigation .lab-sidebar :is(input[data-state="correct"],.good input,.check-correct input,input.good){border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-investigation .lab-sidebar :is(input[data-state="mistake"],.bad input,.check-wrong input,input.bad){border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.lab-investigation :is(input,textarea,select):focus-visible{outline:none!important;box-shadow:none!important;border-color:var(--lab-needed,#946200)!important}
.lab-investigation select{appearance:none;max-width:100%;min-height:40px;padding:8px 34px 8px 14px;border:1px solid var(--lab-line,#d2d2d7);border-radius:999px;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%236e6e73' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;color:var(--lab-ink,#1d1d1f);font:400 12px/1.4 var(--lab-font-sans,sans-serif);box-shadow:0 1px 3px #1d1d1f14}
.lab-investigation select:hover{border-color:var(--lab-line-strong,#a7a7ad)}
.lab-investigation select:disabled{background-color:var(--lab-surface-strong,#eef1f3);color:var(--lab-muted,#6e6e73);box-shadow:none}
.lab-investigation .next-card :is(strong,span,button){font-weight:400}
.lab-investigation .next-card :is(.next-actions,.completion-actions){display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.lab-investigation .completion-layer{background:transparent;pointer-events:none}
.lab-investigation .completion-layer .next-card{pointer-events:auto}
.lab-investigation .lab-checkpoints{display:flex;gap:10px;align-items:center;order:3}
.lab-investigation .lab-sidebar :is(.step-head,.work-step-head){display:flex;align-items:baseline;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.lab-investigation :is(.stepRail,.progress-rail){display:flex;gap:10px}
.lab-investigation .progress-rail .progress-line{display:none}
.lab-investigation .progress-step{position:relative;min-width:12px;width:12px;height:12px;padding:0;border:1px solid var(--lab-line-strong,#a7a7ad);border-radius:50%;background:white;font-size:0}
.lab-investigation .progress-step :is(i,span){display:none}
.lab-investigation .progress-step.current{background:var(--lab-accent,#5277b8);box-shadow:inset 0 0 0 3px white}
.lab-investigation .progress-step.done{background:var(--lab-good,#18794e);border-color:var(--lab-good,#18794e)}
/* Local composition classes describe relationships, while shared cards remain identical. */
.lab-blend .system{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;padding:20px 24px;border-top:0;border-radius:0 0 12px 12px;overflow:visible}
.lab-blend .stage-wrap{grid-column:1;grid-row:1;aspect-ratio:1120/650}
.lab-blend #workingDock{grid-column:2;grid-row:1/3}
.lab-blend .evidence{grid-column:1;padding:8px 0;border:0;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-blend .pump-control{border-radius:12px;padding:6px;box-shadow:none}
.lab-blend .pump-top :is(strong,output){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-blend .pump-scale{font-size:11px}
.lab-frequency #phaseDock{position:static;padding:0;margin:0 0 12px}
.lab-frequency #phaseModal{display:block;position:static;width:auto;padding:12px;border:1px solid var(--lab-needed-line,#d8c36a);border-radius:12px;background:var(--lab-needed-surface,#fffdf4);box-shadow:none}
.lab-frequency #phaseModal[data-tone="good"]{background:var(--lab-good-surface,#f7fcf8);border-color:var(--lab-good-line,#9cc7aa)}
.lab-frequency #phaseModal[data-tone="bad"]{background:var(--lab-bad-surface,#fff8f7);border-color:var(--lab-bad-line,#d8aaa4)}
.lab-frequency #phaseModal :is(h2,.modal-copy p){font:400 14px/1.45 var(--lab-font-sans,sans-serif);margin:0 0 8px}
.lab-frequency #phaseModal h2{font-size:15px}
.lab-frequency :is(.modal-work,.modal-evidence,.modal-actions){display:flex;flex-direction:column;gap:8px;min-width:0}
.lab-frequency .modal-evidence{padding:0;border:0;background:none}
.lab-frequency .modal-actions button{flex:0 0 auto;min-height:40px}
.lab-frequency .formula{display:flex;flex-wrap:wrap;gap:5px}
.lab-frequency .formula input{width:80px}
.lab-replacement-layout,.lab-set-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start}
.lab-replacement #nextAction{padding:0 0 14px;border:0;background:none;box-shadow:none}
.lab-replacement #actionTitle,.lab-replacement #actionKicker{display:none}
.lab-replacement #actionCopy,.lab-replacement #problemSub{font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-replacement .phenomenon{grid-template-columns:1fr 1fr;gap:14px}
.lab-replacement :is(.bag-card,.draw-card){padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:12px;background:white}
.lab-replacement :is(.draw-state,.card-head span,.bag-evidence){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-replacement .action-drop{border-radius:12px;background:var(--lab-accent-soft,#eef2fa);border:1px dashed var(--lab-accent-line,#9fb4d6)}
.lab-replacement .drop-icon,.lab-replacement .rule-coach{display:none!important}
.lab-replacement #workArea{display:block;height:auto!important;min-height:0!important;max-height:none!important;margin:0!important;padding:0 0 0 20px!important;overflow:visible;animation:none;box-shadow:none;background:transparent;border-radius:0}
.lab-replacement .work-shell{height:auto;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto!important;gap:12px!important;align-items:start}
.lab-replacement .work-shell>*{grid-column:auto!important;grid-row:auto!important;min-width:0}
.lab-replacement .work-main{padding:12px;border:1px solid var(--lab-needed-line,#d8c36a);border-radius:12px;background:var(--lab-needed-surface,#fffdf4)}
.lab-replacement .complete .work-main{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-replacement .work-main>strong{font-size:15px!important}
.lab-replacement :is(.work-main>p,.work-status,#actionCopy){font:400 14px/1.45 var(--lab-font-sans,sans-serif)!important}
.lab-replacement .work-evidence{grid-template-columns:1fr 1fr!important;grid-auto-rows:auto!important;gap:8px!important}
.lab-replacement .work-chip{display:block!important;height:auto;min-height:0;padding:8px;border:0;border-radius:6px;background:var(--lab-surface-muted,#f7f8fa)}
.lab-replacement .work-chip :is(span,strong){font:400 12px/1.4 var(--lab-font-sans,sans-serif)!important}
.lab-replacement .live-prob{width:auto!important;min-width:0!important;height:auto!important;padding:12px!important;border:0;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white)}
.lab-replacement .live-prob .prob-frac{font-size:20px!important}
.lab-replacement .live-prob :is(.prob-label,.prob-simplified){font:400 12px/1.4 var(--lab-font-sans,sans-serif)!important}
.lab-replacement :is(.work-kicker,.action-drop>span){display:none}
.lab-replacement .action-drop strong{font:400 14px/1.4 var(--lab-font-sans,sans-serif)!important}
.lab-replacement .next-problem{min-height:40px!important;font-size:12px!important}
.lab-replacement .work-area :is(.work-grid,.comparison-grid){display:grid;grid-template-columns:minmax(0,1fr)}
.lab-replacement .step-rail{margin:0;display:flex;gap:10px;order:3}
.lab-sets .board{padding:20px 24px;border-top:0;border-radius:0 0 12px 12px}
.lab-sets .flow{margin-bottom:20px}
.lab-sets .venn-stage{min-width:0;width:100%}
.lab-sets .inspection{display:block;grid-column:2;grid-row:1/3}
.lab-sets .recipient-row{grid-column:1;border:0;background:none;padding:12px 0}
.lab-sets :is(.move-controls,.rule-controls){display:flex;gap:6px;flex-wrap:wrap}
.lab-sets :is(.flow-kicker,.goal-target-label,.recipient-count-note,.trace-note){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-sets :is(.trace-top,.trace-note,.rule-cue,.action-line){font-size:14px;font-weight:400}
.lab-sets :is(.message-card,.rule-card,.recipient-card){padding:12px;border-radius:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);background:var(--lab-surface-muted,#f7f8fa);box-shadow:none}
.lab-sets .case-tabs{gap:6px}
.lab-sets .case-tab{font-size:12px}
.lab-solid-layout{padding:20px 24px;border:1px solid var(--lab-line,#d2d2d7);border-top:0;border-radius:0 0 12px 12px;background:white}
.lab-solid-models{min-width:0;display:grid;gap:16px}
.lab-solids #workingDock{margin:0;grid-template-columns:1fr}
.lab-solids :is(.working-top,.working-intro,.work-intro,.work-heading){display:none}
.lab-solids .work-flow{grid-template-columns:minmax(0,1fr);gap:0}
.lab-solids .work-values{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.lab-solids :is(.working-head,.working-summary,.work-explain,.work-note,.handle-label){display:none}
.lab-solids :is(.work-box.auto,.work-box.fixed) .work-status{display:none}
.lab-solids .work-formula{margin:6px 0}
.lab-solids .lab-sidebar .work-step{height:auto}
.lab-solids .evidence{font:400 14px/1.45 var(--lab-font-sans,sans-serif);padding:12px 0;border:0;background:none}
.lab-timetable .workspace{display:block;margin:0;border-top:0;border-radius:0 0 12px 12px;padding:20px 24px;position:relative}
.lab-timetable .lab-layout{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:24px}
.lab-timetable .request-copy>span,.lab-timetable #workspaceHint,.lab-timetable .place-cue,.lab-timetable .method-completion{display:none}
.lab-timetable .meeting-token{padding:8px 12px;border-radius:12px;background:var(--lab-accent-soft,#eef2fa);border:1px solid var(--lab-accent-line,#9fb4d6);box-shadow:none}
.lab-timetable .meeting-token :is(span,small){font:400 11px/1.4 var(--lab-font-sans,sans-serif)}
.lab-timetable .meeting-token strong{font:400 14px/1.4 var(--lab-font-sans,sans-serif)}
.lab-timetable .meeting-token{order:-1}
.lab-timetable .lab-sidebar .step-head{justify-content:flex-start}
.lab-timetable .cal-grid{min-width:0;gap:12px;grid-template-columns:minmax(0,1fr)}
.lab-timetable .calendar-card.organizer{grid-column:auto}
.lab-timetable .calendar-card-head :is(span,strong),.lab-timetable :is(.axis-tick,.availability-label,.date-band,.person-state,.calendar-response,.calendar-response strong,.calendar-response span){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-timetable .calendar-card-head .person-city{font-size:15px}
.lab-timetable .availability{background:color-mix(in srgb,var(--lab-good,#18794e) 16%,white)}
.lab-timetable .availability::before{font-weight:400;font-size:11px;text-transform:none;letter-spacing:normal}
.lab-timetable .formula-operand{white-space:normal;overflow-wrap:anywhere;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 16%,white)}
.lab-timetable .calc-panel[data-working-level="0"] .calc-step:not(.work-good) .formula-list{display:none}
.lab-timetable .calendar-side{background:transparent;align-self:start}
.lab-solids :is(.solid-shell,.skin-shell){background:transparent}
.lab-solids .work-box.auto{background:color-mix(in srgb,var(--lab-concept-blue,#4779b7) 16%,white);color:var(--lab-ink,#1d1d1f)}
.lab-solids .work-box.auto strong{color:inherit}
.lab-solids :is(.goal-band span,.goal-band strong){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-solids #solidHeadNote{display:none}
.lab-investigation .lab-sidebar .lab-reference{background:var(--lab-surface-muted,#f7f8fa);border-color:var(--lab-line-subtle,#e7e8eb)}
.lab-timetable :is(.person-name,.city,.calendar-head strong,.summary strong){font:400 14px/1.4 var(--lab-font-sans,sans-serif)}
.lab-timetable :is(.calendar-head span,.calendar-head small,.source-note,.proposal-readout,.timeline-label,.hour-label){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-timetable .formula-row{display:flex;flex-wrap:wrap;gap:6px}
.lab-timetable .formula-line{display:flex;flex-wrap:wrap;gap:5px}
.lab-timetable .work-time{display:flex;flex-wrap:wrap;gap:6px}
.lab-timetable .work-time select{width:100%}
.lab-timetable .final-inequality{display:flex;flex-wrap:wrap;gap:6px}
.lab-transformations .mission-top{display:contents}
.lab-transformations .difficulty-bar{margin:0;padding:0;border:0}
.lab-transformations .route-panel{order:4}
.lab-transformations .difficulty-actions{order:-1}
.lab-transformations .progress-line{display:none}
.lab-transformations .completion-modal{min-width:0;max-width:320px}
.lab-transformations :is(.command-card,.evidence-card){border:0;padding:0}
.lab-transformations .support-band{display:grid;grid-template-columns:1fr;gap:8px;padding:12px 0;background:none;border:0}
.lab-transformations .support-item strong{font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-vectors .program{border-radius:12px;background:var(--lab-surface-muted,#f7f8fa);border:1px solid var(--lab-line-subtle,#e7e8eb);padding:12px}
.lab-vectors :is(.program-head,.command-strip){flex-wrap:wrap;min-width:0}
.lab-vectors .status{padding:12px 0;background:none;border:0;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-vectors .column-values{font-style:normal}
.lab-scatter :is(.work-flow,.work-step)::before,.lab-similarity .evidence-card::before{display:none}
.lab-similarity .workspace{height:auto;align-items:start}
.lab-similarity .stage-side{display:block;height:auto}
.lab-similarity :is(.evidence-side,.relationship-dock,.stage-record,.progress-dock,.record-list){height:auto;overflow:visible!important}
.lab-similarity .stage-footer{display:grid!important;grid-template-columns:minmax(0,1fr);grid-template-rows:auto;grid-template-areas:none;height:auto;min-height:0;padding:12px 0;gap:12px;border:0;background:transparent;overflow:visible}
.lab-similarity .stage-footer>*{grid-area:auto}
.lab-similarity .prediction-options button{font-size:12px;min-height:36px}
.lab-similarity .work-step:has([data-predict]) .work-step-head>.lab-kit-work-state{display:none}
.lab-investigation .lab-sidebar button{font:400 12px/1.3 var(--lab-font-sans,sans-serif)}
.lab-investigation input.good:focus-visible{border-color:var(--lab-good,#18794e)!important}
.lab-investigation input.bad:focus-visible{border-color:var(--lab-bad,#b42318)!important}
.lab-similarity :is(.relationship-dock,.stage-record,.progress-dock){padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:12px;background:var(--lab-surface-muted,#f7f8fa);height:auto;min-height:0;overflow:visible}
.lab-similarity .progress-dock{margin-top:12px}
.lab-similarity .progress-copy{display:none}
.lab-similarity .stage-record{display:block}
.lab-similarity .stage-record .record-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-template-rows:auto;height:auto!important;max-height:none;overflow:visible;gap:8px;margin-top:8px!important}
.lab-similarity .stage-record :is(.record-row,.record-empty){height:auto!important;min-height:0;min-width:0;width:auto;overflow:visible}
.lab-similarity .stage-footer :is(strong,span,b,div){font:400 12px/1.45 var(--lab-font-sans,sans-serif)}
.lab-similarity .stage-footer :is(.relationship-mini,.record-values){display:flex;flex-wrap:wrap;gap:6px}
.lab-similarity .stage-footer .relationship-grid{grid-template-columns:minmax(0,1fr)}
.lab-similarity .stage-footer .relationship-dock:empty{display:none}
.lab-scatter .step-value{background:transparent;padding:0}
.lab-scatter :is(.handle-label,.handle-label-bg){display:none}
.lab-scatter .handle.tilt{fill:var(--lab-concept-violet,#7563a7)}
.lab-investigation .lab-activity-bar .difficulty-copy strong{font:400 12px/1.4 var(--lab-font-sans,sans-serif);text-transform:none;letter-spacing:normal}
.lab-investigation .lab-sidebar .work-good{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-transformations .ownership-note{display:none}
.lab-timetable .method-value.example{background:var(--lab-surface-muted,#f7f8fa);border-color:transparent;color:var(--lab-ink-secondary,#424245)}
.lab-replacement .work-fraction{flex-wrap:wrap}
.lab-replacement .bag.rule-drop{background:var(--lab-accent-soft,#eef2fa)}
.lab-scatter .work-step.active{border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.lab-investigation .lab-sidebar :is(.evidence-boundary,.work-note){border-left:0;box-shadow:none}
.lab-investigation .lab-activity-bar :is(.difficulty-copy,.working-copy,.complexity-copy){text-transform:none;letter-spacing:normal}
.lab-transformations :is(.visual-step,.side-head,.work-summary,#statusBar){display:none}
.lab-transformations .support-item:first-child{display:none}
.lab-transformations .support-item>span{font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-transformations .canvas-frame{border:0}
.lab-transformations .route-panel{order:4}
.lab-vectors :is(.source-move-label,.source-scale-label){display:none}
.lab-vectors #status:not(.bad,.warn,.good){display:none}
.lab-vectors #status :is(strong,span){font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-vectors .program-title strong{font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.lab-vectors :is(.program-title span,.command-empty){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-sets :is(.action-line,.flow-hint,.recipient-count-note,.trace-note){display:none}
.lab-sets :is(.flow,.recipient-row) :is(strong,span,small){font-weight:400;letter-spacing:normal;text-transform:none}
.lab-sets .flow :is(.flow-kicker,.flow-label){font-size:12px}
@media(max-width:980px){.lab-blend .system,.lab-replacement-layout,.lab-set-layout,.lab-timetable .lab-layout{grid-template-columns:minmax(0,1fr)}.lab-investigation .lab-sidebar{border-left:0;border-top:1px solid var(--lab-line-subtle,#e7e8eb);padding:18px 0 0}.lab-blend #workingDock,.lab-blend .stage-wrap,.lab-blend .evidence,.lab-sets .inspection,.lab-sets .recipient-row{grid-column:1;grid-row:auto}.lab-blend #workingDock{order:2}}
@media(prefers-reduced-motion:reduce){.lab-investigation .lab-sidebar *{animation:none!important}}

/* Simulation adoption: task-driven evidence uses the same visual hierarchy as working. */
.lab-simulation{--ink:var(--lab-ink,#1d1d1f);--muted:var(--lab-ink-secondary,#424245);--font:var(--lab-font-sans,sans-serif);font-family:var(--lab-font-sans,sans-serif)}
.lab-simulation .sim-legacy{display:none!important}
.lab-simulation .sim-top{display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin:0;padding:20px 24px;border:1px solid var(--lab-line,#d2d2d7);border-radius:12px 12px 0 0;background:white;box-shadow:none}
.lab-simulation .sim-top .lab-activity-task{flex:1 1 340px;min-width:0}
.lab-simulation .sim-top .lab-activity-task>strong{display:block;font:400 16px/1.5 var(--lab-font-sans,sans-serif);color:var(--lab-accent-ink,#315b91)}
.lab-simulation .sim-top-tools{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px;max-width:100%}
.lab-simulation .sim-top-tools>:is(div,.play){height:auto;margin:0;min-width:0}
.lab-simulation .lab-toggle{width:auto;flex:none;display:flex;flex-wrap:wrap;gap:3px;align-items:center;justify-content:center;padding:4px}
.lab-simulation .lab-toggle button{min-width:0;flex:0 1 auto;min-height:34px;padding:7px 12px;font:400 12px/1.3 var(--lab-font-sans,sans-serif);border-radius:999px;white-space:normal}
.lab-simulation .lab-toggle button :is(strong,small){font:inherit}
.lab-simulation .lab-toggle button :is(small,strong+span){display:none}
.lab-simulation .lab-toggle button.active-tool{background:var(--lab-accent,#5277b8);color:white;border-color:var(--lab-accent,#5277b8)}
.lab-simulation .lab-toggle button:disabled{opacity:1;background:var(--lab-surface-strong,#eef1f3);color:var(--lab-muted,#6e6e73);border-color:transparent;box-shadow:none}
.lab-simulation .lab-checkpoints{display:flex;align-items:center;gap:9px;margin:0;flex-wrap:wrap}
.lab-simulation .sim-tool-row{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:0;padding:16px 24px;background:white;border-top:0;border-radius:0;box-shadow:none;min-width:0}
.lab-simulation .sim-tool-row>:is(.field,.toggles){flex:0 1 auto;min-width:0;max-width:100%}
.lab-simulation .sim-tool-row :is(label,.field>label){font:400 12px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245)}
.lab-simulation select,.lab-menu-select{appearance:none;max-width:100%;height:auto;min-height:40px;padding:8px 34px 8px 14px;border:1px solid var(--lab-line,#d2d2d7);border-radius:999px;background:var(--lab-surface,#fff) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%236e6e73' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 10px center;color:var(--lab-ink,#1d1d1f);font:400 12px/1.4 var(--lab-font-sans,sans-serif);box-shadow:0 1px 3px #1d1d1f14}
.lab-simulation select:hover{border-color:var(--lab-line-strong,#a7a7ad)}
.lab-simulation :is(input:not([type=checkbox]),textarea,select):focus-visible{outline:none!important;box-shadow:none!important;border-color:var(--lab-accent-pressed,#3a5d99)!important}
.lab-simulation :is(.sim-composition,.lab-grid){margin:0;border-top:0;border-radius:0 0 12px 12px;background:white}
.lab-simulation .sim-composition{display:grid;grid-template-columns:minmax(0,1fr) 300px;column-gap:24px;row-gap:0;padding:20px 24px;align-items:start}
.lab-simulation .sim-composition>*{grid-column:1;min-width:0}
.lab-simulation .sim-composition>.lab-sidebar{grid-column:2;grid-row:1/span 10}
.lab-simulation .lab-sidebar{position:static;min-width:0;max-width:100%;height:auto;padding:0 0 0 20px;border:0;border-left:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:0;background:white;box-shadow:none;overflow:visible;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-simulation .lab-evidence-card{margin:0 0 16px;padding:12px;border:1px solid var(--lab-line-subtle,#e7e8eb);border-radius:12px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none;min-width:0;overflow-wrap:anywhere}
.lab-simulation .lab-evidence-card:has(>[hidden]){display:none}
.lab-simulation .lab-evidence-card>h2{margin:0 0 8px;font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.lab-simulation .lab-evidence-card :is(strong,p,span,code){font-family:inherit;font-size:14px;font-weight:400;line-height:1.45;letter-spacing:normal;text-transform:none}
.lab-simulation .lab-evidence-card>:not(h2){position:static;display:block;margin:0;padding:0;border:0;background:none;box-shadow:none;min-height:0;max-width:100%}
.lab-simulation .lab-evidence-card[data-work-state=needed]{border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.lab-simulation .lab-evidence-card[data-work-state=good]{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-simulation .lab-evidence-card[data-work-state=bad]{border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.lab-simulation .lab-sidebar :is(.dock-head,.planner-head,.palette-head,.panel-head,.station-title){padding:0 0 12px;border:0;background:none}
.lab-simulation :is(.panel-head,.station-title,.palette-head,.dock-head,.planner-head) strong{font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.lab-simulation .lab-sidebar :is(.planner-label,.section-label,.field,.legend-row,.part-copy,.plan-feedback,.address-intro,.address-list,.summary-intro,.result-detail,.decoded,.reconstruction-note){font:400 12px/1.45 var(--lab-font-sans,sans-serif);letter-spacing:normal;text-transform:none}
.lab-simulation .lab-sidebar :is(.key-top strong,.key-group-title strong,.result-title,.reconstruction>strong){font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.lab-simulation .lab-sidebar :is(.key-top small,.key-group-title span){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-simulation .lab-sidebar :is(.feedback,.plan-feedback,.story-card,.rail-result,.status-strip,.takeaway){border:0;padding:8px 0;background:none;box-shadow:none;grid-template-columns:1fr}
.lab-simulation .lab-sidebar :is(.feedback strong,.story-card strong,.takeaway strong,.status-copy strong){font-size:15px;font-weight:400}
.lab-simulation .lab-sidebar :is(.feedback span,.story-card span,.takeaway span,.status-copy span){font-size:14px;font-weight:400}
.lab-simulation:not(.sim-network-topology):not(.sim-packet-switching):not(.sim-tcp-ip-encapsulation) :is(.shell,.canvas-shell,.board-shell,.network-canvas,.canvas-wrap){min-width:0;max-width:100%;overflow:visible;background:transparent;border:0;border-radius:0}
.lab-simulation:not(.sim-network-topology):not(.sim-packet-switching):not(.sim-tcp-ip-encapsulation) :is(#canvas,#networkCanvas,#board){background-image:none!important;background-color:transparent;border:0;border-radius:0}
.lab-simulation .footer{font:400 11px/1.45 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245)}
.lab-simulation :is(.stage-note,.component-head span,.panel-head>span,.station-title>span){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
/* Preserve model-specific geometry; only the composition around it is shared. */
.sim-csma-cd #canvas{min-width:0;min-height:325px}
.sim-csma-cd .station{width:28%;min-height:155px;background:white;box-shadow:none}
.sim-csma-cd .station-head{height:auto;min-height:40px;flex-wrap:wrap;background:white;padding:8px}
.sim-csma-cd :is(.station-name,.station-state,.station-frame){font-size:12px;font-weight:400}
.sim-csma-cd .station-thought{font-size:14px;min-height:70px}
.sim-csma-cd #narration{inset:auto;display:block}
.sim-csma-cd :is(#stepCount,.narration-phase,.visual-key>b){display:none}
.sim-csma-cd .visual-key{font-size:12px;margin-top:12px}
.sim-data-transmission-methods .stage-head{grid-column:1;margin:0;padding:0}
.sim-data-transmission-methods .toolbar-actions{display:flex;flex-wrap:wrap;gap:8px}
.sim-data-transmission-methods .lab-evidence-card .live-copy{display:block}
.sim-data-transmission-methods .lab-evidence-card .live-dot{display:none}
.sim-data-transmission-methods .lab-evidence-card .legend{display:grid;gap:12px}
.sim-dns-web-page-retrieval .architecture{grid-template-columns:minmax(0,1fr);grid-template-rows:auto;grid-template-areas:'browser' 'dnsbus' 'dns' 'webbus' 'servers';gap:20px}
.sim-dns-web-page-retrieval :is(.browser-frame,.browser-engine,.dns-chain-shell,.rack-shell){height:auto;min-height:0;overflow:visible}
.sim-dns-web-page-retrieval .viewport{height:300px}
.sim-dns-web-page-retrieval .component-head>div>span,.sim-dns-web-page-retrieval .server-note{display:none}
.sim-dns-web-page-retrieval .bus-cluster{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sim-dns-web-page-retrieval .bus-group-title{grid-column:1/-1;font-size:12px;font-weight:400}
.sim-dns-web-page-retrieval :is(.dns-edit,.cache-row,.directory-row,.engine-block strong,.bus-header,.bus-value,.mini-value){font-size:12px;font-weight:400}
.sim-dns-web-page-retrieval .state-chip{font-size:11px!important;font-weight:400!important}
.sim-dns-web-page-retrieval :is(.browser-toolbar,.bookmarks,.engine-grid){min-width:0;flex-wrap:wrap}
.sim-encryption-in-data-transmission .lab-grid,.sim-ipv4-subnetting .lab-grid{grid-template-columns:minmax(0,1fr) 320px;gap:24px;padding:20px 24px;border:1px solid var(--lab-line,#d2d2d7);border-top:0}
.sim-encryption-in-data-transmission .workspace,.sim-ipv4-subnetting .network-panel{border:0;background:none;box-shadow:none;padding:0;overflow:visible}
.sim-encryption-in-data-transmission .goal-lights{display:flex!important;align-items:center;flex-direction:row;gap:8px;justify-content:start}
.sim-ipv4-subnetting .lab-evidence-card :is(.metrics,.takeaway){display:grid;grid-template-columns:1fr;gap:8px}
.sim-ipv4-subnetting .metric{padding:8px 0;border:0;border-radius:0;background:none}
.sim-ipv4-subnetting :is(#stepKicker,.takeaway-stat){display:none}
.sim-ipv4-subnetting #ipToggle small{display:none}
.sim-ipv4-subnetting #ipToggle{font-size:12px;font-weight:400}
.sim-ipv4-subnetting .ip-workbench{padding:12px;margin:0 0 16px;border:0;background:var(--lab-surface-muted,#f7f8fa)}
.sim-ipv4-subnetting :is(.ip-read-grid,.ip-workbench-grid){grid-template-columns:1fr;gap:8px}
.sim-ipv4-subnetting :is(.ip-decision-panel,.ip-read-panel,.ip-envelope-panel){border:0;background:none;padding:8px 0}
.sim-packet-switching .lab-grid{display:grid;grid-template-columns:240px minmax(500px,1fr) 250px;gap:16px;padding:20px 24px;border:1px solid var(--lab-line,#d2d2d7);border-top:0}
.sim-packet-switching .network-panel{grid-column:2;grid-row:1;border:0;box-shadow:none;background:none}
.sim-packet-switching .device-a{grid-column:1;grid-row:1}
.sim-packet-switching .device-b{grid-column:3;grid-row:1}
.sim-packet-switching .panel-head>span{font-size:12px}
.sim-packet-switching .network-panel .panel-head>span{display:none}
.sim-packet-switching .network-toolbar{padding:8px 0 12px}
.sim-packet-switching #networkCanvas{min-height:570px}
.sim-packet-switching .packet-list{max-height:none;overflow:visible}
.sim-packet-switching .lab-evidence-card .overview-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sim-packet-switching .lab-evidence-card .metric{padding:8px 0;border:0;background:none}
.sim-parity-arq .transmission-panel{padding:20px 24px;border-radius:0;border-top:0;box-shadow:none}
.sim-parity-arq .transmission-layout{grid-template-columns:minmax(0,1fr) 300px;gap:24px}
.sim-parity-arq .stage-panel{margin:0;padding:8px 24px 16px;border-top:0;box-shadow:none}
.sim-parity-arq .sim-parity-grid{grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr) 20px minmax(0,1fr)}
.sim-parity-arq :is(.stage-title,.stage-title-line,.access-chip){font-size:12px;font-weight:400}
.sim-parity-arq .rail-result{border:1px solid var(--lab-line-subtle,#e7e8eb);padding:12px;border-radius:12px;background:var(--lab-surface-muted,#f7f8fa)}
.sim-parity-arq :is(.blocks,.block,.stage){min-width:0;max-width:100%;overflow:visible}
.sim-sound-sampling .wave-head{display:block;margin-bottom:12px}
.sim-sound-sampling .zoom-tools{display:flex;flex-wrap:wrap;margin-top:12px}
.sim-sound-sampling .toggles{height:auto;flex-wrap:wrap;white-space:normal}
.sim-sound-sampling .lab-sidebar #status{display:grid;gap:12px}
.sim-sound-sampling .lab-sidebar #status>strong{padding:7px;border:0;border-radius:6px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 20%,white)}
.sim-sound-sampling #wave{height:420px}
.sim-sound-sampling .bits{white-space:normal;overflow-wrap:anywhere}
.sim-sound-sampling .window-label{min-width:0}
@media(max-width:1000px){
 .lab-simulation .sim-top{padding:16px}
 .lab-simulation .sim-composition,.sim-encryption-in-data-transmission .lab-grid,.sim-ipv4-subnetting .lab-grid,.sim-packet-switching .lab-grid,.sim-parity-arq .transmission-layout{grid-template-columns:minmax(0,1fr)}
 .lab-simulation .sim-composition>.lab-sidebar,.sim-packet-switching .device-a,.sim-packet-switching .device-b,.sim-packet-switching .network-panel{grid-column:1;grid-row:auto}.sim-packet-switching .network-panel{grid-row:1}
 .lab-simulation .lab-sidebar{border-left:0;border-top:1px solid var(--lab-line-subtle,#e7e8eb);padding:16px 0 0}
 .lab-simulation .sim-composition>.lab-sidebar{margin-top:16px}
}
@media(max-width:650px){
 .lab-simulation .sim-top-tools{justify-content:flex-start;gap:8px}
 .lab-simulation .sim-top .lab-activity-task{flex-basis:100%}
 .lab-simulation .sim-composition,.lab-simulation .sim-tool-row,.sim-packet-switching .lab-grid,.sim-encryption-in-data-transmission .lab-grid,.sim-ipv4-subnetting .lab-grid,.sim-parity-arq :is(.stage-panel,.transmission-panel){padding:16px}
 .sim-csma-cd .station{width:30%;min-height:200px}
 .sim-csma-cd :is(.station-name,.station-state,.station-frame){font-size:11px;white-space:normal}
 .sim-csma-cd .station-thought{font-size:12px}
 .sim-dns-web-page-retrieval :is(.dns-chain,.engine-grid){display:flex;flex-direction:column;gap:12px}
 .sim-dns-web-page-retrieval .viewport{height:320px;overflow:auto}
 .sim-dns-web-page-retrieval .browser-toolbar{display:flex;flex-wrap:wrap}
 .sim-dns-web-page-retrieval .address-shell{flex:1 1 200px}
 .sim-dns-web-page-retrieval .server-list{min-width:0}
 .sim-parity-arq .sim-parity-grid{grid-template-columns:1fr;gap:16px}
 .sim-parity-arq .flow-arrow{display:none}
 .sim-sound-sampling .example{min-width:0}
}
/* Simulation layout refinements: device internals keep their visual identities. */
.lab-simulation .workspace{display:block}
.lab-simulation .lab-evidence-card{font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-simulation .lab-evidence-card :is(.rule,.teaching-note,.phase-label,#phaseLabel,#microStatus,#operationTitle){font:inherit}
.lab-simulation .lab-evidence-card .visual-key{display:flex;flex-wrap:wrap;gap:8px;justify-content:start}
.lab-simulation .lab-evidence-card .visual-key>span{display:inline-flex;align-items:center;gap:5px;font-size:12px}
.lab-simulation .lab-evidence-card .visual-key i{display:inline-block;flex:none}
.lab-simulation .lab-toggle .lab-action{background:transparent;border-color:transparent;box-shadow:none}
.lab-simulation :is(.lab-sidebar .part-copy strong,.lab-sidebar .part-copy span,.lab-sidebar .part-count,.planner-head>span,.dock-head>span){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-simulation .lab-action :is(strong,span){font:inherit}
.sim-data-transmission-methods #canvas{min-width:0}
.sim-data-transmission-methods #canvas::before{display:none}
.sim-data-transmission-methods .legend{justify-content:start!important}
.sim-data-transmission-methods .legend-item{justify-content:start}
.sim-data-transmission-methods :is(.ruler-x,.group-label){font:400 11px var(--lab-font-sans,sans-serif)}
.sim-data-transmission-methods .device{width:240px;min-height:270px}
.sim-data-transmission-methods :is(.device-name,.byte-row label,.bit-cell){font-size:12px;font-weight:400;letter-spacing:normal}
.sim-data-transmission-methods :is(.protocol-screen,.device-status,.count-control>span){font:400 11px/1.3 var(--lab-font-sans,sans-serif)}
.sim-data-transmission-methods .transceiver-title{display:none}
.sim-data-transmission-methods .byte-row{grid-template-columns:20px 1fr}
.sim-data-transmission-methods .bit-cell{height:24px}
.sim-data-transmission-methods .callout{font:400 12px/1.35 var(--lab-font-sans,sans-serif)}
.sim-dns-web-page-retrieval .arch-panel{display:block}
.sim-dns-web-page-retrieval .architecture{grid-template-columns:minmax(400px,1.3fr) 112px minmax(400px,.9fr);grid-template-rows:auto auto;grid-template-areas:'browser dnsbus dns' 'browser webbus servers';gap:18px}
.sim-dns-web-page-retrieval .browser>.lab-sidebar{border:0;padding:16px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sim-dns-web-page-retrieval .bus-cluster{display:flex;flex-direction:column;justify-content:center;gap:16px}
.sim-dns-web-page-retrieval .browser-frame{border-radius:12px;overflow:hidden}
.sim-dns-web-page-retrieval :is(.bus-header .dir,.engine-head>span,.bookmark-label,.browser-dots,.url-parts,.rack-head){display:none}
.sim-dns-web-page-retrieval :is(.component-head strong,.engine-head strong,.blank-page h2){font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.sim-dns-web-page-retrieval :is(.bookmark-copy strong,.cache-row,.directory-row,.dns-top strong,.mini-value,.bus-value,.server-copy strong){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.sim-dns-web-page-retrieval :is(.dns-top span,.dns-top small,.engine-block small,.mini-label,.cache-title,.dns-table-title,.server-copy small,.server-copy span,.blank-page p){font:400 11px/1.4 var(--lab-font-sans,sans-serif);letter-spacing:normal;text-transform:none}
.sim-dns-web-page-retrieval .engine-grid{grid-template-columns:1fr 1fr;gap:10px}
.sim-dns-web-page-retrieval .engine-arrow{display:none}
.sim-dns-web-page-retrieval .dns-chain{grid-template-columns:minmax(0,1fr) 66px minmax(0,1fr);gap:8px}
.sim-dns-web-page-retrieval .dns1-dns2{display:flex;justify-content:center;gap:12px}
.sim-dns-web-page-retrieval .dns-node{min-height:0;background:var(--lab-surface-muted,#f7f8fa)}
.sim-dns-web-page-retrieval .dns-chain-shell{min-height:0;padding:0;background:none;border:0}
.sim-dns-web-page-retrieval .server-list{gap:10px}
.sim-dns-web-page-retrieval .server-card{min-height:70px}
.sim-encryption-in-data-transmission :is(.device-head strong,.screen-title,.send-copy strong,.bay-copy strong,.bay-empty){font:400 14px/1.3 var(--lab-font-sans,sans-serif);letter-spacing:normal;text-transform:none}
.sim-encryption-in-data-transmission :is(.device-head span,.send-copy span,.bay-copy span,.gate-key,.gate-key strong){font:400 12px/1.3 var(--lab-font-sans,sans-serif);letter-spacing:normal;text-transform:none}
.sim-encryption-in-data-transmission .screen-title{font-size:12px}
.sim-encryption-in-data-transmission .key-token{border-left-width:1px;box-shadow:none}
.sim-encryption-in-data-transmission .key-group{background:var(--lab-surface-muted,#f7f8fa);border:0;border-radius:12px;padding:12px}
.sim-ipv4-subnetting #canvasCaption{display:none}
.sim-ipv4-subnetting .locked-planner{min-height:0;padding:12px;border:0;background:var(--lab-surface-muted,#f7f8fa);text-align:left}
.sim-ipv4-subnetting .locked-icon{display:none}
.sim-ipv4-subnetting .locked-planner :is(strong,span){font:400 12px/1.45 var(--lab-font-sans,sans-serif);margin:0}
.sim-ipv4-subnetting .lab-evidence-card .story-card>strong{font-size:15px}
.sim-ipv4-subnetting .lab-evidence-card .story-card>span{font-size:14px}

.sim-packet-switching .queue-section{margin-top:20px}
.sim-packet-switching .queue-section .packet-list{display:grid;grid-template-columns:1fr;gap:8px}
.sim-packet-switching :is(.packet-card strong,.toggle-copy strong,.options-head strong,.nic-head strong){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.sim-packet-switching :is(.packet-card,.packet-card small,.toggle-copy small,.queue-section,.nic-head span,.options-head span){font:400 11px/1.4 var(--lab-font-sans,sans-serif)}
.sim-packet-switching .toggle-grid{grid-template-columns:1fr}
.sim-packet-switching .packet-options{padding:12px;border:0;background:var(--lab-surface-muted,#f7f8fa)}
.sim-packet-switching .processing-toggle{border:0;padding:7px 0;background:none}
.sim-parity-arq .transmission-layout{display:block}
.sim-parity-arq .transmission-main{min-height:0}
.sim-parity-arq #receiverStage>.lab-sidebar{margin-top:16px;padding:16px 0 0;border-left:0;border-top:1px solid var(--lab-line,#d2d2d7)}
.sim-parity-arq :is(.block-head,.bit,.cell,.row-label,.col-label,.decoded-value,.decoded-original,.decoded-label,.decoded-note){font-family:var(--lab-font-sans,sans-serif);font-size:12px;font-weight:400}
.sim-parity-arq .stage-note{font-size:11px}
.sim-parity-arq .stage-panel{border-radius:0 0 12px 12px}
.sim-parity-arq .rail-result[data-work-state=bad]{background:var(--lab-bad-surface,#fff8f7);border-color:var(--lab-bad-line,#d8aaa4)}
.sim-parity-arq .rail-result[data-work-state=good]{background:var(--lab-good-surface,#f7fcf8);border-color:var(--lab-good-line,#9cc7aa)}
@media(max-width:1000px){
 .sim-dns-web-page-retrieval .architecture{grid-template-columns:1fr;grid-template-areas:'browser' 'dnsbus' 'dns' 'webbus' 'servers'}
 .sim-dns-web-page-retrieval .bus-cluster{display:grid;grid-template-columns:1fr 1fr}
 .sim-dns-web-page-retrieval .dns-chain{grid-template-columns:1fr 60px 1fr}
 .sim-packet-switching .network-panel{grid-row:1}
}
@media(max-width:650px){
 .sim-data-transmission-methods #canvas{min-height:680px}
 .sim-data-transmission-methods .device{width:142px;min-height:305px}
 .sim-data-transmission-methods .device-body{grid-template-columns:23px 1fr 23px;gap:2px;padding:6px 2px}
 .sim-data-transmission-methods .count-button{width:22px}
 .sim-data-transmission-methods .byte-row{grid-template-columns:1fr}
 .sim-data-transmission-methods .bit-register{grid-template-columns:repeat(4,1fr)}
 .sim-data-transmission-methods .device-head{padding:4px}
 .sim-data-transmission-methods .device-delete{width:16px}
 .sim-data-transmission-methods .device-status{display:none}
 .sim-dns-web-page-retrieval .browser>.lab-sidebar,.sim-dns-web-page-retrieval .dns-chain{display:flex;flex-direction:column}
 .sim-packet-switching .queue-section .packet-list{grid-template-columns:1fr 1fr}
}
.lab-simulation .lab-toggle button :is(strong,span){font:inherit}
.sim-dns-web-page-retrieval .browser-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;height:auto}
.sim-dns-web-page-retrieval #goBtn{width:auto;min-width:100px;flex:none;font-weight:400}
.sim-dns-web-page-retrieval #urlInput{font:400 12px var(--lab-font-sans,sans-serif)}
.sim-dns-web-page-retrieval :is(.dns-node-head strong,.console-cell strong,.cache-row strong,.directory-row strong,.cache-row span,.directory-row span){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.sim-dns-web-page-retrieval :is(.dns-node-head span,.console-cell small,.dns-section-title,.server-meta i,.server-state,.mini-lane-head){font:400 11px/1.4 var(--lab-font-sans,sans-serif);text-transform:none;letter-spacing:normal}
.sim-dns-web-page-retrieval .dns-hop{min-height:0;gap:8px;padding:8px 0}
.sim-data-transmission-methods .protocol-screen strong{font:inherit}
.sim-packet-switching #overviewTitle{display:block;margin:0 0 10px;font:400 15px/1.4 var(--lab-font-sans,sans-serif)}
.sim-packet-switching .queue-section>.section-label{display:none}
.sim-parity-arq .transmission-track{height:62px}
.sim-parity-arq .transmission-main{padding:0}
.sim-parity-arq .transmission-panel{padding-top:12px;padding-bottom:12px}
.sim-parity-arq .rail-result{display:block!important}

@media(max-width:650px){
 .sim-csma-cd .station{width:28%}
 .sim-data-transmission-methods .device{width:124px;min-height:325px}
 .sim-data-transmission-methods .protocol-screen{padding:4px 2px}
}

.lab-simulation{--accent:var(--lab-accent,#5277b8)}
.lab-simulation .lab-activity-bar .lab-toggle button{font-weight:400}
.sim-ipv4-subnetting :is(.summary-zone,.subnet-card){border-left-width:1px;border-color:color-mix(in srgb,var(--subnet-colour) 45%,white);background:color-mix(in srgb,var(--subnet-colour) 12%,white);padding:12px;border-radius:12px}
.sim-ipv4-subnetting :is(.summary-zone strong,.summary-zone span,.subnet-title strong,.subnet-title span,.department-card,.drop-action){font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.sim-ipv4-subnetting .subnet-drop{border:0;background:none;padding:8px 0 0}

/* Model tools and comparisons: shared presentation never prescribes a sidebar. */
.lab-tool-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 0 18px;background:none;border:0}
.lab-tool-bar>*,.lab-menu-field{min-width:0;max-width:100%}
.lab-menu-field{display:flex;align-items:center;gap:8px;font:400 12px/1.4 var(--lab-font-sans,sans-serif)}
.lab-tool-buttons{display:flex;gap:8px;flex-wrap:wrap}
.lab-tool-buttons .active-tool{background:var(--lab-accent,#5277b8);color:#fff;border-color:var(--lab-accent,#5277b8)}
.lab-evidence-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;align-items:start;padding:12px 0}
.lab-evidence-strip>*{min-width:0;margin:0!important}
.lab-device-glyph{width:36px;height:32px;flex:none;fill:color-mix(in srgb,var(--lab-accent,#5277b8) 12%,white);stroke:var(--lab-accent,#5277b8);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.lab-simulation:is(.sim-dns-web-page-retrieval,.sim-packet-switching,.sim-tcp-ip-encapsulation,.sim-encryption-in-data-transmission) main{width:min(1380px,calc(100% - 40px));max-width:1380px}
.sim-csma-cd .station{border-color:var(--lab-line);border-radius:12px;overflow:visible}
.sim-csma-cd .station-head{border-radius:12px 12px 0 0;background:color-mix(in srgb,var(--station) 12%,white)}
.sim-csma-cd .station-state{margin-left:0}
.sim-csma-cd .station-head .lab-device-glyph{width:26px;height:24px}
.sim-csma-cd .cable{height:8px;background:var(--lab-line-strong,#a7a7ad);box-shadow:none}
.sim-data-transmission-methods :is(.device,.device-head,.transceiver,.byte-screen,.count-lcd,.protocol-screen){background:var(--lab-surface-muted,#f7f8fa);color:var(--lab-ink);border-color:var(--lab-line);box-shadow:none}
.sim-data-transmission-methods .device{border-radius:14px;background:color-mix(in srgb,var(--lab-accent) 12%,white);min-height:250px}
.sim-data-transmission-methods .device-head{background:transparent;touch-action:none;cursor:grab;border-bottom:1px solid color-mix(in srgb,var(--lab-accent) 22%,white);padding:10px}
.sim-data-transmission-methods .device-head::before{content:'⠿';font:400 20px/1 var(--lab-font-sans);color:var(--lab-ink-secondary)}
.sim-data-transmission-methods .device-head:active{cursor:grabbing}
.sim-data-transmission-methods :is(.bit-cell,.count-lcd){background:white;border:1px solid var(--lab-line);border-radius:5px;box-shadow:none;color:var(--lab-ink)}
.sim-data-transmission-methods .protocol-screen{min-height:42px;color:var(--lab-ink-secondary)}
.sim-data-transmission-methods .transceiver{padding:6px;border:0;background:white}
.sim-data-transmission-methods .byte-screen{padding:4px;border:0;background:none}
.sim-data-transmission-methods .device-status{background:none;color:var(--lab-ink-secondary);text-shadow:none}
.sim-data-transmission-methods .count-lcd{font:400 15px/1.4 var(--lab-font-sans)}
.sim-data-transmission-methods .device::before,.sim-data-transmission-methods .device::after{display:none}
.sim-dns-web-page-retrieval .architecture{position:relative}
.lab-transfer-connections{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.lab-transfer-connections path{fill:none;stroke:var(--lab-line-strong);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.lab-transfer-connections path.active{stroke:var(--lab-accent)}
.sim-dns-web-page-retrieval .architecture>section{position:relative}
.sim-dns-web-page-retrieval .dns-node{padding:12px;border-radius:12px;background:color-mix(in srgb,var(--lab-accent) 10%,white);box-shadow:none;border:1px solid var(--lab-line)}
.sim-dns-web-page-retrieval .dns-node-head{grid-template-columns:40px 1fr auto;gap:8px;align-items:start}
.sim-dns-web-page-retrieval .dns-badge{width:40px;height:auto;background:none;display:grid;gap:3px}
.sim-dns-web-page-retrieval .dns-badge span{font-size:12px;color:var(--lab-ink)}
.sim-dns-web-page-retrieval :is(.dns-console,.cache-row,.directory-row){grid-template-columns:1fr}
.sim-dns-web-page-retrieval :is(.console-cell,.cache-row,.directory-row){box-shadow:none;background:#ffffffb3;padding:7px}
.sim-dns-web-page-retrieval :is(.console-cell strong,.cache-row strong,.directory-row strong,.cache-row span){white-space:normal;overflow-wrap:anywhere;overflow:visible}
.sim-dns-web-page-retrieval .dns-edit{height:32px;min-height:32px;font-size:12px}
.sim-dns-web-page-retrieval .mini-track{margin-left:-8px;margin-right:-8px}
.sim-dns-web-page-retrieval .mini-value{white-space:normal;overflow-wrap:anywhere;font-size:11px}
.sim-dns-web-page-retrieval .server-card{background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 12%,white);box-shadow:none;border:1px solid var(--lab-line);border-radius:12px}
.sim-dns-web-page-retrieval .server-card.active{background:var(--lab-accent-soft);border-color:var(--lab-accent)}
.sim-dns-web-page-retrieval .server-card.good{background:var(--lab-good-soft);border-color:var(--lab-good)}
.sim-dns-web-page-retrieval .server-card.warn{background:var(--lab-warn-soft);border-color:var(--lab-warn)}
.sim-encryption-in-data-transmission .board-shell.is-fitted{overflow:visible}
.sim-encryption-in-data-transmission .board{overflow:visible}
.sim-encryption-in-data-transmission .lab-claim-context{margin:0 0 14px;padding:12px 16px;border-radius:12px;background:var(--lab-accent-soft,#eef2fa)}
.sim-encryption-in-data-transmission .lab-claim-context-title{font:400 15px/1.4 var(--lab-font-sans)}
.sim-encryption-in-data-transmission .lab-claim-context p{margin:4px 0 10px;font:400 14px/1.4 var(--lab-font-sans)}
.sim-encryption-in-data-transmission .device{background:color-mix(in srgb,var(--lab-accent) 15%,white);border:1px solid var(--lab-line-strong);border-radius:14px;box-shadow:0 2px 5px #1d1d1f0d}
.sim-encryption-in-data-transmission .device.eve{top:590px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 16%,white);border-color:var(--lab-concept-violet,#7563a7)}
.sim-encryption-in-data-transmission .monitor{border:1px solid var(--lab-line);padding:6px;background:white;box-shadow:none;border-radius:10px}
.sim-encryption-in-data-transmission :is(.screen,.device.bob .screen,.device.eve .screen){background:white;color:var(--lab-ink);padding:8px;overflow:visible}
.sim-encryption-in-data-transmission :is(.screen-title,.screen-badge,.source-preview span,.source-preview code,.flow-label,.flow-value,.decode-step span,.decode-step code,.decode-action,.capture-row small,.capture-row code,.capture-state){color:var(--lab-ink);font:400 13px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.sim-encryption-in-data-transmission .screen-title{flex-wrap:wrap}
.sim-encryption-in-data-transmission :is(.source-preview,.flow-box,.decode-step,.capture-row){background:var(--lab-surface-muted,#f7f8fa);border:0;border-radius:6px}
.sim-encryption-in-data-transmission :is(.source-preview code,.flow-value,.decode-step code,.capture-row code){white-space:normal;overflow-wrap:anywhere;overflow:visible}
.sim-encryption-in-data-transmission .composer textarea{background:white;color:var(--lab-ink);border:1px solid var(--lab-line);font:400 15px/1.4 var(--lab-font-sans);height:70px}
.sim-encryption-in-data-transmission .decode-trace{grid-template-columns:minmax(0,1fr) 52px minmax(0,1fr)}
.sim-encryption-in-data-transmission .decode-action i{background:var(--lab-accent-soft);color:var(--lab-accent);border-color:var(--lab-line)}
.sim-encryption-in-data-transmission .key-bay{grid-template-columns:1fr;padding:8px;gap:8px;border-radius:8px;background:#ffffffb3}
.sim-encryption-in-data-transmission .key-bay .key-token{width:100%;max-width:100%}
.sim-encryption-in-data-transmission .key-bay .key-token strong{font-size:13px}
.sim-encryption-in-data-transmission .bay-empty{white-space:normal;padding:4px;font-size:13px}
.sim-encryption-in-data-transmission :is(.crypto-gate,.relay){background:var(--lab-accent-soft);border-color:var(--lab-line-strong);box-shadow:none;border-radius:10px}
.sim-encryption-in-data-transmission .crypto-gate{width:112px;left:308px;height:auto;min-height:148px;top:196px}
.sim-encryption-in-data-transmission :is(.gate-title strong,.relay strong){font:400 12px/1.3 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.sim-encryption-in-data-transmission .gate-window{background:white;color:var(--lab-ink);border-color:var(--lab-line);font-size:14px;box-shadow:none}
.sim-encryption-in-data-transmission .gate-window :is(.out,.out.plain){color:var(--lab-accent)}
.sim-encryption-in-data-transmission .wire-readout{background:var(--lab-surface-muted,#f7f8fa);border:1px solid var(--lab-line);box-shadow:none;top:374px}
.sim-encryption-in-data-transmission :is(.wire-readout-head,.wire-readout-head strong,.wire-data,.wire-data.plain,.wire-data.cipher){color:var(--lab-ink);font:400 13px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.sim-encryption-in-data-transmission .key-tray .key-token{position:relative;padding:10px 28px 10px 10px;background:color-mix(in srgb,var(--lab-accent) 15%,white);border-color:var(--lab-accent);border-radius:10px}
.sim-encryption-in-data-transmission .key-tray .key-token::after{content:'⠿';position:absolute;right:8px;top:50%;transform:translateY(-50%);font:400 20px/1 var(--lab-font-sans);color:var(--lab-accent)}
.sim-encryption-in-data-transmission .goal-light{font:400 12px/1.4 var(--lab-font-sans)}
.sim-ipv4-subnetting .ip-workbench{margin:18px 0 0;border-radius:12px}
.sim-ipv4-subnetting .ip-workbench-grid{grid-template-columns:1fr 1fr;gap:16px}
.sim-ipv4-subnetting .ip-read-grid{grid-template-columns:1fr 1fr}
.sim-ipv4-subnetting .ip-workbench :is(strong,p,span,code){font-size:12px;font-weight:400;letter-spacing:normal;text-transform:none;line-height:1.45}
.sim-ipv4-subnetting .ip-workbench :is(h2,h3,.ip-stage-title){font-size:15px;font-weight:400}
.sim-ipv4-subnetting .planner .lab-evidence-card{padding:12px;margin-bottom:12px}
.sim-ipv4-subnetting .planner .metrics{grid-template-columns:1fr 1fr}
.sim-ipv4-subnetting .planner .metric{padding:0}
.sim-ipv4-subnetting .planner .metric span{font-size:12px}
.sim-ipv4-subnetting .planner .takeaway{font-size:12px}
.sim-packet-switching .device-panel{padding:12px;border:0;border-radius:12px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:none}
.sim-packet-switching .device-b{border-left:0;padding-left:12px}
.sim-packet-switching .network-panel{min-width:0}
.sim-packet-switching .nic-card{background:white;box-shadow:none;border-color:var(--lab-line);margin:12px 0}
.sim-packet-switching .lab-grid .network-toolbar{padding:8px 0;gap:6px}
.sim-packet-switching :is(.message-controls,.message-actions){gap:8px;flex-wrap:wrap}
.sim-packet-switching .queue-section{margin-top:14px}
.sim-parity-arq .transmission-rail{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:12px;border:0;padding:8px 0 0}
.sim-parity-arq .transmission-rail>section:last-child{grid-column:1/-1}
.sim-parity-arq .transmission-rail>section:last-child h2,.sim-parity-arq .arq-explainer>strong{display:none}
.sim-parity-arq .arq-explainer{display:block;font:400 12px/1.45 var(--lab-font-sans);padding:0;border:0;background:none}
.sim-parity-arq .arq-explainer span{font-size:12px}
.sim-parity-arq .transmission-rail :is(.result-title,#phaseLabel){font:400 14px/1.4 var(--lab-font-sans)}
.sim-parity-arq .stage{width:100%;margin:0}
.sim-parity-arq .stage-head{height:auto;min-height:42px;margin:0;padding:0 0 8px}
.sim-parity-arq .stage-title{font-size:15px}
.sim-parity-arq .blocks{display:grid;gap:12px;margin:0;max-width:none}
.sim-parity-arq .bit-block{--cell:26px;grid-template-columns:40px repeat(8,minmax(0,1fr)) 18px;gap:2px}
.sim-parity-arq .bit{width:100%;height:26px;min-height:26px;padding:0;box-shadow:none}
.sim-parity-arq .block-card{padding:8px}
.sim-parity-arq .row-label{width:40px;white-space:normal;font-size:11px}
.sim-sound-sampling .controls .play{display:flex;flex-wrap:wrap;gap:8px;margin:0;align-items:center}
.sim-sound-sampling .controls .examples{flex-basis:100%;justify-content:start;width:fit-content;max-width:100%}
.sim-sound-sampling .sample-readout{min-height:190px;display:grid!important;align-content:start;gap:14px}
.sim-sound-sampling .bits{padding:12px;border-radius:8px;background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 16%,white);font:400 14px/1.8 var(--lab-font-sans)!important}
@media(max-width:1100px){
 .sim-packet-switching .lab-grid{grid-template-columns:minmax(210px,1fr) minmax(0,1.7fr)}
 .sim-packet-switching .device-a{grid-column:1;grid-row:1}.sim-packet-switching .network-panel{grid-column:2;grid-row:1}.sim-packet-switching .device-b{grid-column:1/-1;grid-row:2}
 .sim-dns-web-page-retrieval .architecture{grid-template-columns:1fr;grid-template-areas:'browser' 'dnsbus' 'dns' 'webbus' 'servers'}
 .sim-dns-web-page-retrieval .dns-chain{display:grid;grid-template-columns:minmax(0,1fr) 80px minmax(0,1fr)}
 .sim-dns-web-page-retrieval .lab-transfer-connections{display:none}
}
@media(max-width:650px){
 .lab-simulation:is(.sim-dns-web-page-retrieval,.sim-packet-switching,.sim-tcp-ip-encapsulation,.sim-encryption-in-data-transmission) main{width:calc(100% - 24px)}
 .sim-dns-web-page-retrieval .dns-chain{display:grid;grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);gap:4px}
 .sim-dns-web-page-retrieval .dns-node{padding:8px}.sim-dns-web-page-retrieval .dns-node-head{grid-template-columns:1fr}.sim-dns-web-page-retrieval .mini-lane-head{font-size:11px;overflow-wrap:anywhere}
 .sim-dns-web-page-retrieval .mini-track{margin-left:-4px;margin-right:-4px}
 .sim-packet-switching .lab-grid,.sim-parity-arq .transmission-rail{grid-template-columns:1fr}
 .sim-packet-switching :is(.device-a,.network-panel,.device-b){grid-column:1;grid-row:auto}
 .sim-ipv4-subnetting :is(.ip-workbench-grid,.ip-read-grid){grid-template-columns:1fr}
}

/* Directional models can use the wider shared rail without offsetting the page. */
.lab-simulation:is(.sim-dns-web-page-retrieval,.sim-packet-switching,.sim-tcp-ip-encapsulation,.sim-encryption-in-data-transmission) main{margin-inline:auto}
.sim-data-transmission-methods .protocol-screen :is(strong,span){color:var(--lab-ink-secondary);font:400 12px/1.4 var(--lab-font-sans)}
.sim-data-transmission-methods .device-status strong{font:400 11px/1.4 var(--lab-font-sans);color:var(--lab-ink-secondary)}
.sim-data-transmission-methods .noise-source{background:var(--lab-accent-soft);color:var(--lab-accent);border-color:var(--lab-accent);box-shadow:0 1px 3px #1d1d1f14}
.sim-encryption-in-data-transmission .workspace-actions{align-items:center}
.sim-encryption-in-data-transmission :is(.device.eve .monitor,.device.eve .device-icon){border-color:var(--lab-line)}
.sim-encryption-in-data-transmission :is(.capture-state.open,.capture-state.locked,.decode-step code.cipher,.flow-value.cipher,.flow-value.blocked){color:var(--lab-ink)}
.sim-encryption-in-data-transmission .screen-badge.good{color:var(--lab-good);background:var(--lab-good-soft)}
.sim-encryption-in-data-transmission .screen-badge.cipher{color:var(--lab-accent);background:var(--lab-accent-soft)}
.sim-encryption-in-data-transmission .screen-badge.bad{color:var(--lab-bad);background:var(--lab-bad-soft)}
.sim-parity-arq .transmission-layout{min-height:0}
.sim-parity-arq .transmission-head{min-height:0}
.sim-parity-arq :is(.stream-preview,.track-label,.block-head,.block-head span,.result-detail,.decoded-note){font:400 12px/1.4 var(--lab-font-sans)}
.sim-parity-arq .transmission-rail .decoded{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;padding:12px}
.sim-parity-arq .transmission-rail .decoded-note{grid-column:1/-1}
.sim-parity-arq .bit-block{width:100%;max-width:320px;margin:auto}
.sim-parity-arq .editable-stage{box-shadow:none;background:var(--lab-accent-soft);border-radius:12px}
.sim-packet-switching .device-panel :is(.field label,.nic-buffer-guide,.reconstruction-note,.packet-label,.packet-card strong,.packet-card small,.packet-payload,.packet-header,.packet-state,.packet-seq,.nic-detail,.nic-stage,.nic-attempt-line,.message-meta,#messageInput){font:400 12px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.sim-packet-switching .device-panel .panel-head{padding:0 0 12px}
.sim-packet-switching .network-panel .panel-head{padding:0 0 12px;min-height:33px}
.sim-packet-switching .device-panel .lab-evidence-card{margin-top:12px}

.sim-sound-sampling .lab-evidence-card .sample-readout{height:auto;min-height:180px;overflow:visible;align-items:start;grid-template-columns:1fr}
.sim-sound-sampling .lab-evidence-card .bits{display:block;white-space:normal;overflow:visible;max-height:none;color:var(--lab-ink);overflow-wrap:anywhere}
.sim-ipv4-subnetting #ipToggle :is(span,strong){font:400 12px/1.4 var(--lab-font-sans)}
.sim-ipv4-subnetting .ip-workbench :is(small,b){font:400 12px/1.45 var(--lab-font-sans)}
.sim-ipv4-subnetting .ip-workbench-head{grid-template-columns:1fr;gap:10px}
.sim-ipv4-subnetting .ip-workbench-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}
.sim-ipv4-subnetting .ip-read-panel{grid-row:span 2}
.sim-ipv4-subnetting .ip-workbench{background:var(--lab-surface-muted,#f7f8fa);border:0}
.sim-ipv4-subnetting :is(.ip-workbench.local,.ip-workbench.warn){background:var(--lab-surface-muted,#f7f8fa)}
.sim-ipv4-subnetting :is(.ip-decision-panel,.ip-envelope-panel){border-radius:8px;background:white;padding:12px}
.sim-ipv4-subnetting .ip-insight{font:400 14px/1.45 var(--lab-font-sans);padding:12px 0 0;border:0}
@media(max-width:650px){.sim-ipv4-subnetting .ip-workbench-grid{grid-template-columns:1fr}.sim-ipv4-subnetting .ip-read-panel{grid-row:auto}}

.lab-simulation .lab-sidebar{max-height:none}
.sim-ipv4-subnetting .department-node{width:160px}
.sim-ipv4-subnetting .dept-copy strong{font:400 15px/1.3 var(--lab-font-sans);white-space:normal}
.sim-ipv4-subnetting .dept-copy span{font:400 14px/1.3 var(--lab-font-sans)}
.sim-ipv4-subnetting :is(.switch-top strong,.router-title){font:400 14px/1.3 var(--lab-font-sans)}
.sim-ipv4-subnetting .node-status{font:400 12px/1.3 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.sim-ipv4-subnetting .department-card strong{font:400 12px/1.4 var(--lab-font-sans);white-space:normal}
.sim-ipv4-subnetting .department-card span{font:400 11px/1.4 var(--lab-font-sans)}
.sim-ipv4-subnetting .ip-envelope-empty{font:400 12px/1.4 var(--lab-font-sans)}
.sim-csma-cd{--station-a:var(--lab-concept-blue,#4779b7);--station-b:var(--lab-concept-teal,#2d8792);--station-c:var(--lab-concept-violet,#7563a7)}
.sim-csma-cd .station-head .lab-device-glyph{stroke:var(--station);fill:color-mix(in srgb,var(--station) 12%,white)}
.sim-csma-cd .tap::after{box-shadow:none}
.sim-csma-cd .cable-label{font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.sim-encryption-in-data-transmission{--secret:var(--lab-concept-blue,#4779b7);--public:var(--lab-concept-teal,#2d8792);--private:var(--lab-concept-amber,#c9782c);--eve:var(--lab-concept-violet,#7563a7)}
.sim-ipv4-subnetting{--ip:var(--lab-concept-violet,#7563a7)}

/* Packet travel and collision evidence share a compact marker vocabulary. */
.csma-wave{position:absolute;inset:0;pointer-events:none}
.csma-wave .csma-trail{position:absolute;top:293px;height:5px;border-radius:999px;background:color-mix(in srgb,var(--signal) 26%,transparent);transition:left .6s linear,width .6s linear}
.csma-packet{--packet:var(--signal);position:absolute;top:296px;transform:translate(-50%,-50%);transition:left .6s linear,margin-left .6s linear,background-color .12s,border-color .12s;z-index:3}
.csma-packet svg{width:13px;height:15px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round}
.csma-owner{font:400 12px/1 var(--lab-font-sans,sans-serif)}
.csma-colliding-frame .csma-packet{margin-left:var(--collision-offset)}
.csma-packet.is-damaged{--packet:var(--lab-bad);background:var(--lab-bad);border-color:white;color:var(--lab-bad)}
.csma-packet.is-damaged svg{opacity:.45}
.csma-collision{z-index:5;--signal:var(--lab-bad,#b42318)}
.csma-collision .csma-trail{top:291px;height:9px;background:color-mix(in srgb,var(--lab-bad,#b42318) 24%,transparent)}
.csma-impact{position:absolute;left:50%;top:296px;width:26px;height:26px;display:grid;place-items:center;transform:translate(-50%,-50%);border:1px solid var(--lab-bad,#b42318);border-radius:50%;background:white;color:var(--lab-bad,#b42318);font:400 24px/1 var(--lab-font-sans,sans-serif);z-index:6}
.csma-impact::after{content:'';position:absolute;inset:-3px;border:1px solid var(--lab-bad,#b42318);border-radius:50%;animation:lab-collision-impact .8s ease-out 2}
.csma-impact-label{position:absolute;left:50%;top:317px;transform:translateX(-50%);font:400 12px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-bad,#b42318);white-space:nowrap}
.csma-damage-front{position:absolute;top:296px;transform:translate(-50%,-50%);color:var(--lab-bad,#b42318);font:400 25px/1 var(--lab-font-sans,sans-serif);transition:left .6s linear}
.csma-collision.is-arriving :is(.csma-impact,.csma-impact-label,.csma-damage-front,.csma-trail){visibility:hidden}
.csma-collision.is-arriving .csma-impact::after{animation:none}
.csma-jam .csma-packet{height:24px;border-radius:5px;background:var(--lab-concept-amber,#c9782c);border-color:var(--lab-concept-amber,#c9782c)}
.csma-jam .csma-packet svg{display:none}
.sim-csma-cd #canvas{min-height:350px}
.sim-csma-cd .cable-label{display:none}
.sim-csma-cd #signalLayer{z-index:6}
@keyframes lab-collision-impact{from{transform:scale(.8);opacity:.8}to{transform:scale(2);opacity:0}}
@media(prefers-reduced-motion:reduce){.csma-wave *{transition:none!important;animation:none!important}}

/* Keep model-specific silhouettes and geometry; share the surrounding controls. */
.lab-secondary-bar{padding:12px 24px;background:var(--lab-surface,#fff);margin:0;border-inline:1px solid var(--lab-line);border-bottom:1px solid var(--lab-line-subtle)}
.lab-secondary-bar .lab-tool-buttons{align-items:center;gap:16px}
.lab-secondary-bar .run-buttons{display:flex;gap:8px}
.lab-parts-menu{padding:12px;background:var(--lab-surface-muted);border:1px solid var(--lab-line);border-radius:12px}
.lab-parts-menu .palette-head{margin:0 0 12px;padding:0}
.lab-parts-menu .palette-head strong{font:400 15px/1.4 var(--lab-font-sans)}
.lab-parts-menu .part-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;width:100%;padding:10px;border:1px solid var(--lab-line);border-radius:10px;background:white;cursor:grab;box-shadow:0 1px 3px #1d1d1f12}
.lab-parts-menu .part-card::after{content:'⠿';position:absolute;right:7px;top:7px;color:var(--lab-accent);font-size:18px}
.lab-parts-menu .part-card:disabled{cursor:default;opacity:.5}
.lab-parts-menu .part-copy strong{font:400 14px/1.3 var(--lab-font-sans)}
.lab-parts-menu .part-copy span{font:400 12px/1.4 var(--lab-font-sans)}
.lab-parts-menu .part-count{font:400 11px/1.4 var(--lab-font-sans);min-width:0}
.sim-network-topology main{width:min(1380px,calc(100% - 40px));max-width:1380px;margin-inline:auto}
.sim-network-topology .lab-grid{display:grid;grid-template-columns:200px minmax(0,1fr);gap:16px;padding:16px;border:1px solid var(--lab-line);border-top:0}
.sim-network-topology .palette{grid-column:1;grid-row:1;position:static}
.sim-network-topology .workspace{grid-column:2;grid-row:1;padding:0;border:0;background:none}
.sim-network-topology .topology-tools{justify-content:space-between;padding:0 0 12px}
.sim-network-topology .canvas-shell{overflow:hidden;border:1px solid var(--lab-line);border-radius:12px;background:var(--lab-paper)}
.sim-network-topology #canvas{min-width:960px;min-height:620px;border:0;border-radius:0;background-image:none;background-color:var(--lab-paper);touch-action:none}
.sim-network-topology .topology-evidence{grid-template-columns:1fr;padding:12px 0 0;gap:10px}
.sim-network-topology .topology-evidence .lab-evidence-card:last-child{display:none}
.sim-network-topology #testPanel{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sim-network-topology #testPanel[hidden]{display:none}
.sim-network-topology #journeyText{flex:1 1 100%;font-size:14px}
.sim-network-topology .part-preview{display:block;position:relative;grid-column:1/-1;width:100%;height:76px;pointer-events:none;color:#26343d}
.sim-network-topology .part-preview.station-node{width:116px;margin:auto}
.sim-network-topology .part-preview.bus-node{height:76px;width:100%}
.sim-network-topology .part-preview.bus-node .node-shell{height:76px}
.sim-network-topology .part-preview .node-status{display:none}
.sim-network-topology .part-preview .bus-heading small{display:none}
.sim-network-topology .node-title{font:400 11px/1.3 var(--lab-font-sans)}
.sim-network-topology .station-node{width:116px}
.sim-network-topology .station-copy small{font:400 10px/1.2 var(--lab-font-sans)}
.sim-network-topology .part-ghost{width:180px;min-height:90px;padding:8px;background:white;pointer-events:none}
.sim-packet-switching .device-panel{background:white;border:1px solid var(--lab-line);padding:10px}
.sim-packet-switching .device-visual{height:91px;margin:0 0 10px}
.sim-packet-switching .lab-secondary-bar .packet-options{margin:0;padding:0;background:none;border:0}
.sim-packet-switching .toggle-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.sim-packet-switching .options-head{margin-bottom:8px}
.sim-packet-switching .toggle-copy small{display:none}
.sim-packet-switching .processing-toggle{padding:4px 0}
.sim-packet-switching .network-toolbar{display:flex;align-items:center;flex-wrap:wrap;padding:0 0 12px;gap:8px}
.sim-packet-switching #resetTopology{order:3;margin-left:auto}
.sim-packet-switching #networkCanvas{border:1px solid var(--lab-line);border-radius:12px;background-image:none;background-color:var(--lab-paper);height:600px}
.sim-packet-switching .queue-section{margin-top:12px}
.sim-packet-switching #overviewTitle{font-size:12px;margin-bottom:8px}
.sim-packet-switching .packet-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;padding:7px;border:1px solid color-mix(in srgb,var(--packet) 50%,var(--lab-line));border-radius:8px;background:color-mix(in srgb,var(--packet) 8%,white)}
.sim-packet-switching .packet-card::after{display:none}
.sim-packet-switching .packet-top{display:contents}
.sim-packet-switching .packet-payload{grid-column:1/-1;margin:0;padding:3px 6px;background:#ffffffb3;font:400 12px/1.3 var(--lab-font-sans)}
.sim-packet-switching .packet-fields{grid-column:1/-1;margin:0;gap:5px}
.sim-packet-switching .packet-field{font:400 11px/1.3 var(--lab-font-sans);padding:0 3px;background:none}
.sim-packet-switching .packet-route,.sim-packet-switching .nic-detail,.sim-packet-switching .nic-attempt-line{grid-column:1/-1;font-size:11px}
.sim-packet-switching .packet-state{font-size:11px!important;max-width:120px}
.sim-packet-switching #messageInput{min-height:74px;height:74px}
.sim-tcp-ip-encapsulation .lab-board{margin:0;border-top:0;box-shadow:none;background:white}
.sim-tcp-ip-encapsulation .board-stage{grid-template-columns:190px minmax(390px,1.1fr) 112px minmax(330px,1fr);gap:12px}
.sim-tcp-ip-encapsulation .station-title strong{font:400 15px/1.4 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .station-title span{display:none}
.sim-tcp-ip-encapsulation .wrapper-tool strong{font:400 13px/1.4 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .wrapper-tool small{font:400 11px/1.4 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation :is(.tool-shell,.gate-icon){font:400 12px/1.2 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .packing-mat{min-height:570px;overflow:visible;background:var(--lab-paper)}
.sim-tcp-ip-encapsulation .packet-host{max-height:none;overflow:visible;width:100%;padding:2px}
.sim-tcp-ip-encapsulation .shell-header{grid-template-columns:1fr 1fr;gap:5px}
.sim-tcp-ip-encapsulation .shell-name{grid-column:1/-1;padding:4px 38px 4px 6px}
.sim-tcp-ip-encapsulation .peel-tab{position:absolute;right:12px;top:12px;min-height:28px;height:28px;width:28px}
.sim-tcp-ip-encapsulation .header-field{padding:4px}
.sim-tcp-ip-encapsulation :is(.shell-name span,.header-field span){font:400 11px/1.2 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.sim-tcp-ip-encapsulation :is(.shell-name strong,.header-field strong){font:400 11px/1.3 var(--lab-font-sans);white-space:normal;overflow-wrap:anywhere}
.sim-tcp-ip-encapsulation :is(.http-code,.http-core::before){font:400 12px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.sim-tcp-ip-encapsulation .gate-copy strong{font:400 13px/1.3 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .gate-copy>span{font:400 11px/1.3 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .gate-read{font:400 11px/1.3 var(--lab-font-sans);white-space:normal}
.sim-tcp-ip-encapsulation .receiver-packet{width:270px;transform:translateX(-50%) scale(.55)}
.sim-tcp-ip-encapsulation :is(.endpoint span,.mat-label,.wire-label){font:400 11px/1.3 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.sim-tcp-ip-encapsulation .endpoint strong{font:400 14px/1.3 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .status-strip{padding:12px}
.sim-tcp-ip-encapsulation .status-copy strong{font:400 15px/1.4 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .status-copy span{font:400 14px/1.4 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .status-key{font:400 11px/1.3 var(--lab-font-sans)}
/* Device artwork remains dimensional; readable screen contents stay intact. */
.sim-dns-web-page-retrieval .dns-badge{border:1px solid #8196a4;border-radius:7px;padding:4px;background:#e3ebef;box-shadow:0 2px 3px #1d1d1f22}
.sim-dns-web-page-retrieval .dns-badge .lab-device-glyph{stroke:#304552;fill:#cedbe3;width:30px;height:28px}
.sim-dns-web-page-retrieval .server-card{box-shadow:0 2px 0 #60778233,0 3px 6px #23333e14}
.sim-encryption-in-data-transmission .device{background:#dce5eb;border:1px solid #718895;border-radius:12px;box-shadow:0 3px 0 #71889544,0 7px 12px #1d1d1f20}
.sim-encryption-in-data-transmission .device.eve{background:color-mix(in srgb,var(--lab-concept-violet) 24%,white);border-color:var(--lab-concept-violet)}
.sim-encryption-in-data-transmission .monitor{border:4px solid #303a42;background:#303a42;border-radius:8px;padding:3px}
.sim-encryption-in-data-transmission .device.eve .monitor{border-color:#493d56}
.sim-encryption-in-data-transmission .key-token{--key-tone:var(--secret);padding:8px;border:1px solid color-mix(in srgb,var(--key-tone) 60%,white);border-radius:10px;background:white;box-shadow:0 2px 3px #1d1d1f14}
.sim-encryption-in-data-transmission .key-token.public{--key-tone:var(--public)}
.sim-encryption-in-data-transmission .key-token.private{--key-tone:var(--private)}
.sim-encryption-in-data-transmission .key-top{display:grid;grid-template-columns:80px minmax(0,1fr);gap:8px;align-items:center}
.sim-encryption-in-data-transmission .key-glyph,.sim-encryption-in-data-transmission .key-bay .key-glyph{width:80px;height:36px;border:0;background:none}
.sim-encryption-in-data-transmission .key-glyph svg,.sim-encryption-in-data-transmission .key-bay .key-glyph svg{width:80px;height:36px;stroke:var(--key-tone);stroke-width:1.5;filter:drop-shadow(0 2px 0 #1d1d1f22)}
.key-metal{fill:color-mix(in srgb,var(--key-tone) 40%,white)}.key-hole{fill:white}
.sim-encryption-in-data-transmission .key-bay .key-token{padding:8px;background:white}
.sim-encryption-in-data-transmission .key-bay .key-token strong{font:400 13px/1.3 var(--lab-font-sans)}
.sim-encryption-in-data-transmission .drag-ghost{width:260px;max-width:260px;padding:0;border:0;background:none;box-shadow:none}
.sim-encryption-in-data-transmission .drag-ghost .key-token{opacity:1;transform:none}
.sim-data-transmission-methods .bit-cell.changed{background:var(--lab-bad-soft);border:2px solid var(--lab-bad);color:var(--lab-bad);position:relative}
.sim-data-transmission-methods .bit-cell.changed::after{content:'↺';position:absolute;top:-10px;right:-3px;width:12px;height:12px;border-radius:50%;background:var(--lab-bad);color:white;font:400 11px/12px var(--lab-font-sans);text-align:center}
.sim-data-transmission-methods .bit-cell.lost,.sim-data-transmission-methods .bit-cell.late{background:var(--lab-warn-soft);border-color:var(--lab-warn);color:var(--lab-warn)}
@media(max-width:1200px){.sim-tcp-ip-encapsulation .board-stage{grid-template-columns:180px minmax(350px,1fr) 110px}.sim-tcp-ip-encapsulation .receiver-station{grid-column:1/-1}}
@media(max-width:900px){.sim-network-topology .lab-grid{grid-template-columns:1fr}.sim-network-topology .palette,.sim-network-topology .workspace{grid-column:1;grid-row:auto}.sim-network-topology #partList{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.sim-packet-switching .toggle-grid{grid-template-columns:1fr 1fr}.sim-tcp-ip-encapsulation .board-stage{grid-template-columns:1fr}.sim-tcp-ip-encapsulation .rack{grid-template-columns:repeat(3,minmax(0,1fr))}.sim-tcp-ip-encapsulation .wire-track{height:78px}.sim-tcp-ip-encapsulation .packing-mat{min-height:480px}}
@media(max-width:650px){.lab-secondary-bar{padding:12px 16px}.sim-packet-switching .lab-grid{grid-template-columns:1fr}.sim-network-topology main{width:calc(100% - 24px)}.sim-tcp-ip-encapsulation .rack{grid-template-columns:1fr}.sim-tcp-ip-encapsulation .board-head{flex-direction:column;align-items:start}.sim-tcp-ip-encapsulation .endpoint.right{flex-direction:row;text-align:left}.sim-tcp-ip-encapsulation .endpoint span{overflow-wrap:anywhere}}


/* One travelling-packet identity in routing and shared-medium simulations. */
.lab-simulation .lab-packet-marker{width:16px;height:16px;min-width:0;padding:0;border:2px solid white;border-radius:50%;background:var(--packet);box-shadow:0 0 0 3px color-mix(in srgb,var(--packet) 25%,transparent),0 0 8px color-mix(in srgb,var(--packet) 45%,transparent)}
.lab-simulation .lab-packet-marker::after{content:'';position:absolute;inset:-7px;border:2px solid var(--packet);border-radius:50%;opacity:.55;animation:lab-packet-pulse .85s ease-out infinite}
.lab-simulation .lab-packet-marker>span{position:absolute;left:50%;top:-25px;transform:translateX(-50%);padding:2px 5px;border-radius:5px;background:white;border:1px solid color-mix(in srgb,var(--packet) 60%,white);color:var(--lab-ink);font:400 11px/1.3 var(--lab-font-sans);white-space:nowrap}
.lab-simulation .csma-packet.is-damaged{background:var(--lab-bad);--packet:var(--lab-bad)}
.lab-simulation .csma-packet.is-damaged::after{border-style:dashed;animation:none}
.lab-simulation .csma-jam .csma-packet{--packet:var(--lab-concept-amber);width:34px;height:18px;border:1px solid var(--packet);border-radius:5px;background:var(--packet);box-shadow:none}
.lab-simulation .csma-jam .csma-packet::after{display:none}
.lab-simulation .csma-jam .csma-packet>span{position:static;display:block;transform:none;padding:1px;border:0;background:none;text-align:center;color:white}
.sim-packet-switching .router-palette{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--lab-line);border-radius:10px;background:var(--lab-surface-muted);font:400 12px/1.3 var(--lab-font-sans)}
.sim-packet-switching .router-preview{display:block;width:74px;min-width:74px;padding:5px;border:2px solid #718593;border-radius:8px;background:#d9e2e7;box-shadow:0 2px 4px #1d1d1f22;pointer-events:none}
.sim-packet-switching .router-preview .router-status{display:none}
@keyframes lab-packet-pulse{from{transform:scale(.6);opacity:.7}to{transform:scale(1.35);opacity:0}}
@media(prefers-reduced-motion:reduce){.lab-simulation .lab-packet-marker::after{animation:none;opacity:.4}}


.sim-packet-switching .router-palette{height:auto;min-height:62px;align-self:stretch}
.sim-packet-switching .packet-id{font:400 12px/1.3 var(--lab-font-sans)}
.sim-tcp-ip-encapsulation .payload-mark{display:none}
@media(min-width:761px) and (max-width:900px){.sim-tcp-ip-encapsulation .wire-line{left:12px;right:12px;top:50%;bottom:auto;width:auto;height:5px;transform:translateY(-50%)}.sim-tcp-ip-encapsulation .flight-packet{left:8px;top:50%;transform:translate(0,-50%)}.sim-tcp-ip-encapsulation .flight-packet.arrive{left:calc(100% - 76px);top:50%}}


/* Computing workspaces: presentation only; editors, hardware, queues and stacks retain their composition. */
.lab-computing{font-family:var(--lab-font-sans);font-weight:400;--accent:var(--lab-accent);--accent-soft:var(--lab-accent-soft);--good:var(--lab-good);--bad:var(--lab-bad);--warn:var(--lab-warn)}
.lab-computing main{width:min(1380px,calc(100% - 32px));max-width:1380px;margin-inline:auto}
.lab-computing .panel{border-color:var(--lab-line);border-radius:12px;box-shadow:none}
.lab-computing .lab-computing-tools{display:flex;align-items:end;justify-content:flex-start;flex-wrap:wrap;gap:12px;padding:16px 20px;margin:0 0 12px;background:var(--lab-surface);border:1px solid var(--lab-line);border-top:0;border-radius:0 0 12px 12px;box-shadow:none}
.lab-computing-tools :is(.field,label){min-width:0;max-width:100%;font:400 12px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-computing-tools label>span{font:inherit;display:block;margin-bottom:5px}
.lab-computing-tools :is(.toolbar-right,.clock-buttons,.control-buttons){display:flex;align-items:end;flex-wrap:wrap;gap:8px;margin-left:auto}
.lab-computing .lab-action{height:auto;letter-spacing:normal;text-transform:none;gap:6px}
.lab-computing .lab-action svg{width:16px;height:16px;fill:currentColor}
.lab-computing :is(.panel-head,.panel-heading,.section-head,.platform-heading,.board-head,.timeline-head,.work-monitor-head){padding-bottom:12px;gap:12px}
.lab-computing :is(.panel-head,.panel-heading,.section-head,.platform-heading,.board-head,.timeline-head,.work-monitor-head,.log-head,.translation-head,.module-head) strong{font:400 15px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-computing :is(.panel-head,.panel-heading,.section-head,.platform-heading,.board-head,.timeline-head,.work-monitor-head)>span,.lab-computing :is(.flow-title,.board-head>div,.timeline-head>div)>span{font:400 12px/1.45 var(--lab-font-sans);letter-spacing:normal}
.lab-computing :is(.phase,.clock-pill,.status-pill,.pass-chip,.field>label,.io-title,.io-box label,.rack-label,.rule-slot-label,.eyebrow){font:400 12px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-computing :is(.encoding-note,.io-note,.arch-note,.arch-key,.footer-note,.grid-note,.symbol-empty,.editor-meta,.resolved-detail,.ram-meta,.ram-address small,.mode-tag){font:400 11px/1.45 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-computing :is(.operation p,.operation-note,.event-strip span,.routine-card p){font:400 14px/1.45 var(--lab-font-sans)}
.lab-computing :is(.operation,.operation code){font-weight:400}
.lab-computing .lab-computing-context{padding:12px 20px;background:white;border:1px solid var(--lab-line);border-top:0;border-radius:0 0 12px 12px}
.lab-computing .lab-placeable-card{position:relative;cursor:grab;border:1px solid var(--lab-line);border-radius:10px;background:var(--lab-surface);box-shadow:0 1px 3px #1d1d1f12}
.lab-computing .lab-placeable-card[draggable="true"]::after{content:'⠿';position:absolute;right:6px;top:6px;color:var(--lab-accent);font:400 16px/1 var(--lab-font-sans);pointer-events:none}
.lab-computing .lab-placeable-card[draggable="false"]{cursor:default}
.lab-computing .lab-placeable-card:focus-visible{outline:none;border-color:var(--lab-accent-hover);box-shadow:none}
.computing-assembly :is(#sourceEditor,.line-numbers){font-weight:400;font-size:12px}
.computing-assembly #sourceEditor:focus-visible{outline:none;box-shadow:none}
.computing-assembly .editor-shell:focus-within{border-color:var(--lab-line-strong)}
.computing-assembly :is(.translation-table th,.translation-table td,.translation-table .addr,.translation-table .source,.translation-table .resolved,.symbol-chip,.ram-word,.ram-address,.reference-group code,.output-console,.io-box input){font-size:12px;font-weight:400;line-height:1.4;letter-spacing:normal;text-transform:none}
.computing-assembly .reference summary,.computing-assembly .reference-group strong{font:400 12px/1.4 var(--lab-font-sans)}
.computing-assembly .reference-group{border:0;background:var(--lab-surface-muted);padding:8px}
.computing-assembly .computer-grid{grid-template-columns:minmax(0,1fr) 95px minmax(170px,.45fr)}
.computing-assembly .cpu-board{overflow:hidden}
.computing-assembly .cpu-diagram{width:100%;min-width:0;max-width:100%}
.computing-assembly .cpu-diagram :is(.diagram-name,.diagram-full,.diagram-note,.unit-name,.unit-full,.path-label){font-family:var(--lab-font-sans);font-weight:400}
.computing-assembly .cpu-diagram :is(.diagram-full,.diagram-note,.unit-full,.path-label){font-size:14px;fill:var(--lab-ink-secondary)}
.computing-assembly :is(.bus-head,.bus-head span:last-child,.bus-value){font-size:11px;font-weight:400;white-space:normal}
.computing-assembly .micro-card{background:var(--lab-surface-muted);border:0}
.computing-fetch-decode-execute .clock-title strong{font:400 15px/1.4 var(--lab-font-sans)}
.computing-fetch-decode-execute .clock-title span{font:400 12px/1.45 var(--lab-font-sans)}
.computing-fetch-decode-execute .clock-status{padding:8px 0 0}
.computing-fetch-decode-execute .cpu-svg text{font-family:var(--lab-font-sans);font-weight:400}
.computing-fetch-decode-execute :is(.reg-full,.unit-subtitle,.cpu-note){font-size:15px}
.computing-fetch-decode-execute :is(.ram-address,.ram-value,.ram-cell,.ram-table,.bus-name,.bus-label,.bus-value,.micro-operation-label){font-size:12px;font-weight:400;letter-spacing:normal}
.computing-fetch-decode-execute .step-card{background:var(--lab-surface-muted);border:0;padding:14px}
.computing-memory-management .control-panel{padding:0 0 12px;border-top:0;border-radius:0 0 12px 12px}
.computing-memory-management .control-grid{border:0;border-bottom:1px solid var(--lab-line-subtle);border-radius:0;margin:0 0 12px}
.computing-memory-management .metrics{margin:0 12px}
.computing-memory-management :is(.metric>span,.latency-step>span,.comparison-state,.comparison-values small,.slowdown-copy,.gate-status,.cache-head span,.cache-link,.bus-label,.drive-copy span){font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.computing-memory-management :is(.metric>strong,.latency-step>strong,.comparison-values strong,.cache-head strong,.drive-copy strong){font:400 14px/1.4 var(--lab-font-sans)}
.computing-memory-management :is(.work-card-title,.work-title,.work-name){font:400 14px/1.4 var(--lab-font-sans)}
.computing-memory-management :is(.work-card,.activity-log){font-size:12px;font-weight:400}
.computing-memory-management .desktop-shortcuts{gap:8px;flex-wrap:wrap}
.computing-software-stack .mission-actions{margin-left:0;justify-content:flex-start}
.computing-software-stack :is(.bank-name,.layer-name,.chip-name){font:400 14px/1.4 var(--lab-font-sans)}
.computing-software-stack :is(.bank-badge,.layer-badge,.chip-badge,.layer-note,.contents-label,.drop-hint,.stack-placeholder){font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.computing-software-stack .bank-card{padding:10px 20px 10px 10px;min-height:70px}
.computing-software-stack .bank-inner{width:100%;gap:8px}
.computing-software-stack .bank-icon{flex-shrink:0}
.computing-software-stack .selection-status{font:400 12px/1.45 var(--lab-font-sans);background:var(--lab-accent-soft);border:0;border-radius:8px}
.computing-software-stack .selection-status:empty{display:none}
.computing-software-stack .selection-status strong{font-weight:400}
.computing-software-stack .layer-contents{border:0;padding:10px;background:var(--lab-surface-muted)}
.computing-software-stack .content-chip{padding:6px 8px;border:0;border-radius:8px;background:white}
.computing-software-stack .hardware-base strong{font:400 15px/1.4 var(--lab-font-sans)}
.computing-software-stack .hardware-base span{font:400 11px/1.4 var(--lab-font-sans)}
.computing-process-states-scheduling .lab-grid{grid-template-columns:235px minmax(0,1fr);gap:12px;margin-top:12px}
.computing-process-states-scheduling .workspace{gap:12px}
.computing-process-states-scheduling .rule-actions{margin:0;padding:0}
.computing-process-states-scheduling :is(.rule-panel,.state-panel,.timeline-panel){padding:12px}
.computing-process-states-scheduling .state-board{grid-template-columns:minmax(0,1.25fr) 24px minmax(0,1fr) 24px minmax(0,1fr);gap:5px}
.computing-process-states-scheduling :is(.rule-card,.rule-ghost){display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;padding:10px;border-radius:10px;background:white;letter-spacing:normal;text-transform:none}
.computing-process-states-scheduling .rule-card{border:1px solid var(--lab-line);box-shadow:0 1px 3px #1d1d1f12;touch-action:none;cursor:grab}
.computing-process-states-scheduling .rule-card.installed{background:var(--lab-accent-soft);border-color:var(--lab-accent)}
.computing-process-states-scheduling :is(.rule-card strong,.rule-ghost strong,.rule-slot-value,.process-copy strong,.lane-title strong,.event-strip strong,.routine-card strong){font:400 14px/1.35 var(--lab-font-sans)}
.computing-process-states-scheduling :is(.rule-card small,.rule-ghost small,.rule-slot-note,.process-copy small,.lane-title span,.process-foot,.process-foot span,.io-status,.decision-metric span,.prediction-line,.decision-preview,.transition,.timeline-legend,.lane-empty,.cpu-empty,.failure-point span){font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.computing-process-states-scheduling .rule-icon{width:34px;height:34px;font:400 11px/34px var(--lab-font-sans);text-align:center;background:var(--lab-accent-soft);border:0;border-radius:8px;box-shadow:none}
.computing-process-states-scheduling .rule-slot-value{display:flex;align-items:center;gap:6px}
.computing-process-states-scheduling .rule-slot-value .rule-icon{flex-shrink:0}
.computing-process-states-scheduling .scheduler-gate.compact-scheduler{grid-template-columns:minmax(160px,1fr) minmax(0,1.1fr) minmax(160px,1fr);padding:8px;gap:8px;background:var(--lab-surface-muted);border:0}
.computing-process-states-scheduling .target-row{margin:0;gap:8px}
.computing-process-states-scheduling .target-chip{padding:8px 10px;border:0;border-radius:10px;box-shadow:none}
.computing-process-states-scheduling .target-copy b{font:400 14px/1.4 var(--lab-font-sans);white-space:normal}
.computing-process-states-scheduling .target-copy small{font:400 12px/1.4 var(--lab-font-sans)!important}
.computing-process-states-scheduling .target-chip.pending{background:var(--lab-warn-soft)}
.computing-process-states-scheduling .target-chip.good{background:var(--lab-good-soft)}
.computing-process-states-scheduling .target-chip.bad{background:var(--lab-bad-soft)}
.computing-process-states-scheduling :is(.target-mark,.target-chip.good .target-mark,.target-chip.bad .target-mark){border:0;background:none;font-weight:400}
.computing-process-states-scheduling .failure-insight{background:var(--lab-bad-soft);border:0;padding:12px;box-shadow:none}
.computing-process-states-scheduling .failure-point b{font:400 14px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.computing-process-states-scheduling .failure-rules{font:400 11px/1.4 var(--lab-font-sans)!important}
.computing-process-states-scheduling .process-card.ready{background:color-mix(in srgb,var(--p) 6%,white)}
.computing-process-states-scheduling .process-card.done{background:var(--lab-surface-muted)}
.computing-process-states-scheduling .process-top{grid-template-columns:30px minmax(0,1fr)}
.computing-process-states-scheduling .process-avatar{width:30px;height:30px;background:color-mix(in srgb,var(--p) 14%,white);box-shadow:none}
.computing-process-states-scheduling .process-avatar svg{width:23px;height:23px}
.computing-process-states-scheduling :is(.rank-chip,.next-chip,.watch-chip,.trait-chip,.burst,.decision-metric b,.decision-metric strong,.time-badge){font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.computing-process-states-scheduling .decision-metrics{gap:5px}
.computing-process-states-scheduling .decision-metric{border:0;min-height:0;padding:5px}
.computing-process-states-scheduling .event-strip{padding:10px;border:0;background:var(--lab-accent-soft)}
.computing-process-states-scheduling .transition-strip{gap:6px;margin-top:10px}
.computing-process-states-scheduling .transition{padding:8px;border:0;background:var(--lab-surface-muted)}
.computing-process-states-scheduling .transition b{font:400 12px/1.4 var(--lab-font-sans)}
.computing-process-states-scheduling :is(.time-label,.trace-metric,.trace-copy strong,.trace-copy span,.metric-head){font:400 11px/1.4 var(--lab-font-sans)}
.computing-process-states-scheduling .time-row,.computing-process-states-scheduling .trace-row{grid-template-columns:90px repeat(24,minmax(0,1fr)) 56px 56px}
.computing-process-states-scheduling .trace-label{grid-template-columns:1fr;padding-right:4px}
.computing-process-states-scheduling .trace-icon{display:none}
.computing-process-states-scheduling .trace-tag{inset:0;display:grid;place-items:center;padding:0;font:400 11px/1 var(--lab-font-sans);background:none}
.computing-process-states-scheduling .trace-cell{height:34px}
@media(max-width:1120px){.computing-process-states-scheduling .lab-grid{grid-template-columns:1fr}.computing-process-states-scheduling .rule-panel{position:static;display:grid;grid-template-columns:1fr 1fr;gap:12px}.computing-process-states-scheduling .section-head,.computing-process-states-scheduling .routine-card{grid-column:1/-1}.computing-process-states-scheduling .rule-rack{margin:0}}
@media(max-width:900px){.computing-assembly .computer-grid{grid-template-columns:1fr}.computing-assembly .bus-bridge{grid-template-columns:repeat(3,minmax(0,1fr))}.computing-assembly .cpu-board{overflow:hidden}.lab-computing .lab-computing-tools{padding:12px}.lab-computing-tools :is(.toolbar-right,.clock-buttons,.control-buttons){margin-left:0}}
@media(max-width:650px){.lab-computing main{width:calc(100% - 20px)}.lab-computing-tools label{flex:1 1 180px}.lab-computing-tools select{width:100%}.computing-process-states-scheduling .state-board,.computing-process-states-scheduling .scheduler-gate.compact-scheduler{grid-template-columns:1fr}.computing-process-states-scheduling .rule-panel{grid-template-columns:1fr}.computing-process-states-scheduling .transition-strip{grid-template-columns:1fr 1fr}.computing-process-states-scheduling .time-row,.computing-process-states-scheduling .trace-row{grid-template-columns:66px repeat(24,minmax(0,1fr)) 36px 36px}.computing-process-states-scheduling .trace-tag{display:none}.computing-process-states-scheduling .time-label:not(:nth-child(4n+2)){visibility:hidden}.computing-process-states-scheduling .metric-head{font-size:11px;overflow-wrap:anywhere;text-overflow:clip}.computing-software-stack .bank-panel{max-height:none;position:static;overflow:visible}.computing-assembly .bus-bridge{grid-template-columns:1fr}}

/* Dense annotations stay readable without changing the hardware or its transfer paths. */
.lab-computing .panel-head div>span{font:400 12px/1.4 var(--lab-font-sans)}
.computing-assembly :is(.micro-phase,.tick-box,.tick-box strong){font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal}
.computing-assembly .phase{font-family:var(--lab-font-sans);font-weight:400}
.computing-assembly .cpu-diagram :is(.diagram-full,.unit-full){font-size:16px}
.computing-assembly .cpu-diagram .diagram-name{font-size:18px}
.computing-assembly .cpu-diagram .diagram-value{font-size:20px;font-weight:400}
.computing-assembly .cpu-diagram .diagram-note{display:none}
.computing-assembly .cpu-diagram .unit-value{font-size:16px;font-weight:400}
.computing-fetch-decode-execute :is(.clock-level-label,.clock-flow,.bus-head,.bus-head .direction){font:400 11px/1.4 var(--lab-font-sans)}
.computing-fetch-decode-execute .decoder-text{font-size:13px}
.computing-software-stack .mission-actions>button{order:0}
.computing-software-stack .bank-icon{width:30px;height:30px}
.computing-software-stack .bank-icon svg{width:22px;height:22px}
.computing-software-stack .power-label{font:400 11px/1.4 var(--lab-font-sans)}
.computing-memory-management :is(#comparisonState,#slowdownCompare,.work-slot-label,.work-actor,.work-route,.work-cycle-copy,.module-head>span,.cache-head>span,#cpuRequest,.log-route-label,.route-node,.log-cycle-range){font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.computing-memory-management .work-copy strong{font:400 14px/1.4 var(--lab-font-sans)}
.computing-memory-management .work-copy p{font:400 12px/1.4 var(--lab-font-sans)}
.computing-memory-management .work-monitor{background:var(--lab-accent-soft);border:0;padding:12px}
.computing-memory-management .work-card{border:0;border-radius:10px;box-shadow:none;padding:10px}
.computing-memory-management .bus-label{display:block;font:400 11px/1.3 var(--lab-font-sans);text-align:center;overflow-wrap:anywhere}
.computing-memory-management .bus-label span{display:block}
.computing-memory-management .mem-cell{font:400 11px/1.3 var(--lab-font-sans);min-height:26px}
.computing-memory-management .storage-grid .mem-cell{font:400 11px/1.3 var(--lab-font-sans)}
.computing-memory-management .log-panel :is(strong,b,p,small){font:400 12px/1.4 var(--lab-font-sans)}
.computing-process-states-scheduling :is(#readyLane,#cpuContent,#blockedLane) .process-copy strong{font:400 14px/1.35 var(--lab-font-sans)}
.computing-process-states-scheduling :is(#readyLane,#cpuContent,#blockedLane) :is(.process-copy small,.decision-metric span,.process-foot span,.burst,.burst.cpu::after,.burst.io::after){font:400 11px/1.35 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.computing-process-states-scheduling :is(#readyLane,#cpuContent,#blockedLane) .burst{height:auto;min-height:18px;padding:2px;white-space:normal}
.computing-process-states-scheduling #readyLane .burst::after{content:none}
.computing-process-states-scheduling :is(#readyLane,#cpuContent,#blockedLane) .decision-metric strong{font:400 14px/1.4 var(--lab-font-sans)}
.computing-process-states-scheduling :is(#readyLane,#cpuContent,#blockedLane) .decision-metric{padding:5px;border:0}
.computing-process-states-scheduling :is(.lane-count,.cpu-label,.prediction-line b,.prediction-line strong,.flow-label){font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.computing-process-states-scheduling .decision-preview{border:0;background:none}
.computing-process-states-scheduling .flow-label{writing-mode:vertical-rl}
.computing-process-states-scheduling .flow-channel{min-width:0}
.computing-process-states-scheduling .decision-metric.active::after{content:none}

/* Balance occupied space against the information learners need to compare. */
@media(min-width:1251px){.computing-assembly .workspace{grid-template-columns:340px minmax(0,1fr);gap:12px}}
.computing-assembly .computer-grid{align-items:start;grid-template-columns:minmax(0,1fr) 100px 190px}
.computing-assembly .cpu-board{min-height:0}
.computing-assembly .bus-bridge{min-height:430px}
.computing-assembly .ram-scroll{min-height:0;max-height:430px}
.computing-assembly .translation-head{align-items:start;flex-wrap:wrap;gap:6px}
.computing-assembly .pass-chips{justify-content:flex-start}
.computing-assembly .micro-card{grid-template-columns:minmax(0,1fr) auto}
.computing-assembly .micro-phase{display:none}
.computing-fetch-decode-execute .arch-grid{grid-template-columns:minmax(0,1fr) 140px 300px;column-gap:20px}
.computing-fetch-decode-execute .bus-head{flex-wrap:wrap;gap:3px}
.computing-fetch-decode-execute .clock-module{display:grid;grid-template-columns:minmax(200px,1fr) minmax(300px,480px);gap:8px 20px;align-items:center}
.computing-fetch-decode-execute .clock-head{display:contents}
.computing-fetch-decode-execute .clock-title{grid-column:1;grid-row:1}
.computing-fetch-decode-execute .clock-readout{grid-column:2;grid-row:1;justify-content:flex-end}
.computing-fetch-decode-execute .clock-trace{grid-column:2;grid-row:2;margin:0}
.computing-fetch-decode-execute .clock-status{grid-column:1;grid-row:2;border:0;padding:0}
.computing-software-stack .lab-grid{grid-template-columns:minmax(0,1.5fr) minmax(390px,1fr)}
.computing-software-stack .computer-stage{min-height:0;grid-template-columns:minmax(0,1fr) 112px;gap:16px;padding:14px;background:var(--lab-surface-strong)}
.computing-software-stack .monitor-neck{height:30px}
.computing-software-stack .tower{width:110px;height:275px;margin-bottom:8px}
.computing-software-stack .tower::before{height:55px}
.computing-software-stack .tower-logo{top:87px}
.computing-software-stack .power-cluster{top:109px}
.computing-software-stack .tower-vents{height:75px;bottom:20px}
.computing-software-stack .stack-stage{width:100%}
.computing-software-stack .bank-card{min-height:58px}
.computing-software-stack .hardware-base>div:first-child{display:grid;gap:3px}
.computing-memory-management .work-copy p{margin-block:6px}
.computing-memory-management .work-route{display:none}
.computing-memory-management .work-cards{gap:12px}
.computing-memory-management .flow-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,300px)}
.computing-memory-management .log-timing span,.computing-memory-management .log-copy span{font:400 11px/1.45 var(--lab-font-sans)}
.computing-memory-management .log-panel .log-cycle-range{font:400 11px/1.4 var(--lab-font-sans)!important}
.computing-memory-management .log-entry{padding:12px;gap:12px}
@media(max-width:1250px){.computing-assembly .workspace{grid-template-columns:1fr}.computing-assembly .editor-panel{display:grid;grid-template-columns:1fr 1fr;gap:12px}.computing-assembly .editor-panel>.panel-head{grid-column:1/-1}.computing-assembly .editor-main,.computing-assembly .translation{margin:0}.computing-assembly .reference{grid-column:1/-1}}
@media(max-width:980px){.computing-software-stack .lab-grid{grid-template-columns:1fr}.computing-software-stack .bank-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.computing-fetch-decode-execute .arch-grid{grid-template-columns:minmax(0,1fr) 105px minmax(160px,.6fr)}.computing-assembly .computer-grid{grid-template-columns:1fr}.computing-assembly .bus-bridge{min-height:0}.computing-memory-management .workspace{grid-template-columns:1fr}}
@media(max-width:650px){.computing-fetch-decode-execute .arch-grid{grid-template-columns:1fr;grid-template-areas:"clock" "cpu" "buses" "ram"}.computing-fetch-decode-execute .clock-module{grid-template-columns:1fr}.computing-fetch-decode-execute :is(.clock-title,.clock-readout,.clock-trace,.clock-status){grid-column:1;grid-row:auto}.computing-assembly .editor-panel{display:block}.computing-assembly .translation{margin-top:12px}.computing-software-stack .bank-cards{grid-template-columns:1fr 1fr}.computing-software-stack .computer-stage{grid-template-columns:minmax(0,1fr) 68px;gap:10px;padding:10px}.computing-software-stack .tower{transform:scale(.6);transform-origin:bottom left;margin-right:-44px}.computing-software-stack .monitor-bezel{padding:6px 6px 12px}.computing-software-stack .monitor-foot{width:90px}.computing-memory-management .flow-head{display:block}.computing-memory-management .time-comparison{margin-top:8px}}

.computing-assembly .workspace>.translation{grid-column:1/-1;margin-top:0}
.computing-assembly .workspace>.translation .translation-head{align-items:center;flex-wrap:nowrap}
.computing-assembly .ram-meta{flex-wrap:wrap}
.computing-assembly .ram-type{font-weight:400;letter-spacing:normal;text-transform:none}
.computing-fetch-decode-execute .cpu-shell{overflow:visible}
.computing-fetch-decode-execute .cpu-svg{width:100%;max-width:100%;min-width:0}
@media(min-width:651px) and (max-width:900px){.computing-fetch-decode-execute .arch-grid{grid-template-areas:"clock clock clock" "cpu buses ram"}.computing-fetch-decode-execute .bus-bridge{grid-template-columns:1fr;margin-top:60px}.computing-fetch-decode-execute .bus-line{left:-20px;right:-20px}}
@media(max-width:650px){.computing-process-states-scheduling .challenge-tabs.lab-toggle{width:100%;height:auto;flex-wrap:wrap;justify-content:flex-start;border-radius:18px}.computing-process-states-scheduling .challenge-tabs.lab-toggle button{flex:1 1 auto;min-width:0;padding-inline:8px}.computing-process-states-scheduling .challenge-bar{padding:16px}.computing-process-states-scheduling .lab-computing-context{padding:12px}.computing-process-states-scheduling .target-row,.computing-process-states-scheduling .target-chip{min-width:0;max-width:100%}.computing-assembly .workspace>.translation .translation-head{flex-wrap:wrap}}

/* Flat material for live values; no extra nested border or focus decoration. */
.lab-svg-value-surface{fill:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 16%,white);stroke:none;pointer-events:none}
svg text[data-lab-value]{font-size:var(--lab-value-fit-size,var(--lab-value-font-size,18px))!important;font-weight:400!important;--lab-value-padding-x:7;--lab-value-padding-y:3}
.lab-cycle-progress{display:block;height:6px;min-height:6px;margin:8px 0 5px;padding:0;overflow:hidden;border:0;border-radius:999px;background:var(--lab-line-subtle);box-shadow:none}
.lab-cycle-progress>span{display:block;height:100%;border-radius:inherit;background:var(--lab-accent);transition:width .2s linear}
.work-card.warn .lab-cycle-progress>span{background:var(--lab-warn)}
.work-card.bad .lab-cycle-progress>span{background:var(--lab-bad)}
.work-card.good .lab-cycle-progress>span{background:var(--lab-good)}
.computing-fetch-decode-execute .ram-module{overflow:visible}
.computing-fetch-decode-execute .lab-memory-column>.step-card{display:block;position:relative;margin:16px 0 0;padding:12px;border-radius:10px;background:var(--lab-accent-soft)}
.computing-fetch-decode-execute .lab-memory-column>.step-card .operation{font:400 14px/1.4 var(--lab-font-mono,monospace);margin:6px 0}
.computing-fetch-decode-execute .lab-memory-column>.step-card .operation-note{font:400 14px/1.45 var(--lab-font-sans)}
.computing-memory-management .workspace{grid-template-columns:minmax(390px,.65fr) minmax(0,1fr);align-items:start}
.computing-memory-management .desktop-panel{grid-column:1;grid-row:1}
.computing-memory-management .architecture-panel{grid-column:2;grid-row:1/span 2}
.computing-memory-management .log-panel{grid-column:1;grid-row:2;margin:0;min-width:0}
.computing-memory-management .log-head{flex-wrap:wrap;gap:8px}
.computing-memory-management .log-head>div>span{display:none}
.computing-memory-management .activity-log{max-height:480px;overflow:auto}
.computing-memory-management .log-entry{grid-template-columns:34px minmax(0,1fr) 110px;align-items:start;padding:10px;gap:8px}
.computing-memory-management .log-block-graphic{grid-column:1;grid-row:1}
.computing-memory-management .log-copy{grid-column:2;grid-row:1}
.computing-memory-management .log-timing{grid-column:3;grid-row:1}
.computing-memory-management .log-route{grid-column:2/-1;grid-row:2}
.computing-memory-management .log-route-label{display:none}
.computing-memory-management .log-cycle-range{display:none!important}
.computing-memory-management .log-block-graphic small{display:none}
.computing-memory-management .log-block-cells{width:30px;height:30px}
.computing-memory-management .work-cards{min-height:0;gap:10px}
.computing-memory-management .work-card{grid-template-columns:36px minmax(0,1fr);padding:8px;gap:8px;min-height:0}
.computing-memory-management .work-card.idle{grid-template-columns:1fr;min-height:80px}
.computing-memory-management .cycle-clock{width:34px;height:34px}.computing-memory-management .cycle-clock .clock-arm{height:11px}.computing-memory-management .cycle-clock::before{font-size:6px;bottom:2px}
.computing-memory-management .work-copy strong{font-size:12px}
.computing-memory-management .work-slot-label{display:inline-block;margin:0 6px 3px 0}
.computing-memory-management .work-actor{display:inline;font-size:11px}
.computing-memory-management .system-map{grid-template-columns:minmax(150px,1fr) 42px minmax(185px,1.2fr) 42px minmax(180px,1fr);gap:8px}
.computing-memory-management :is(.device-card,.pagefile-card){padding:12px}
.computing-memory-management .drive-visual{height:auto;min-height:60px;padding:10px;justify-content:start;border:0;background:white}
.computing-memory-management .drive-icon{flex-shrink:0}
.computing-memory-management .drive-copy span{display:none}
.computing-memory-management .pagefile-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;margin:10px 0}
.computing-memory-management .storage-grid{gap:4px;margin:8px 0}
.computing-memory-management .mem-cell{aspect-ratio:auto;min-height:25px;padding:3px}
.computing-memory-management .module-head{flex-wrap:wrap;gap:4px}
.computing-memory-management .module-head>span{text-align:left}
.computing-memory-management .bus-label{font-size:11px}
.computing-memory-management .bus-label span+span{display:none}
.computing-memory-management .bus-value{top:28px;max-width:100%;font-size:11px;padding:3px 1px}
.computing-process-states-scheduling .rule-slot{position:relative;transition:background-color .15s;border-radius:10px;min-height:82px!important;padding:12px!important}
.computing-process-states-scheduling #selectSlot{--slot-tone:var(--lab-concept-amber,#c9782c)}
.computing-process-states-scheduling #interruptSlot{--slot-tone:var(--lab-concept-violet,#7563a7)}
.computing-process-states-scheduling .rule-slot:not(:has(.rule-icon)){border:1px dashed var(--slot-tone);background:color-mix(in srgb,var(--slot-tone) 10%,white);animation:lab-slot-attention 2s ease-in-out infinite}
.computing-process-states-scheduling .rule-slot:has(.rule-icon){border:1px solid color-mix(in srgb,var(--slot-tone) 40%,white);background:color-mix(in srgb,var(--slot-tone) 10%,white)}
.computing-process-states-scheduling .rule-slot.drag-over{outline:none!important;border:2px solid var(--slot-tone)!important;background:color-mix(in srgb,var(--slot-tone) 24%,white)!important}
.computing-process-states-scheduling .rule-card[data-kind="selector"]{--rule-tone:var(--lab-concept-amber,#c9782c)}
.computing-process-states-scheduling .rule-card[data-kind="interrupt"]{--rule-tone:var(--lab-concept-violet,#7563a7)}
.computing-process-states-scheduling .rule-card .rule-icon{background:color-mix(in srgb,var(--rule-tone) 16%,white);color:var(--lab-ink-secondary)}
.computing-process-states-scheduling .rule-card.installed{background:color-mix(in srgb,var(--rule-tone) 10%,white);border-color:var(--rule-tone)}
.computing-process-states-scheduling .rule-card{position:relative;padding-right:19px}
.computing-process-states-scheduling .rule-card::after{content:'⠿';position:absolute;top:8px;right:5px;color:var(--rule-tone);font:400 16px/1 var(--lab-font-sans)}
.computing-process-states-scheduling .rule-slot .rule-icon{background:color-mix(in srgb,var(--slot-tone) 20%,white)}
.computing-process-states-scheduling .rule-slot-note{display:none}
.computing-process-states-scheduling .prediction-line:empty{display:none}
.computing-process-states-scheduling .scheduler-gate.compact-scheduler{grid-template-columns:minmax(0,1fr) minmax(0,.9fr) minmax(0,1fr);background:none;padding:0;margin-bottom:14px}
.computing-process-states-scheduling .ready-lane{background:color-mix(in srgb,var(--lab-concept-amber,#c9782c) 9%,white);border-color:color-mix(in srgb,var(--lab-concept-amber,#c9782c) 35%,white)}
.computing-process-states-scheduling .cpu-lane{background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 10%,white);border-color:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 35%,white)}
.computing-process-states-scheduling .blocked-lane{background:var(--lab-surface-muted);border-color:var(--lab-line)}
.computing-process-states-scheduling .lane-empty{border:0;background:none;min-height:80px}
.computing-process-states-scheduling .cpu-empty>div:last-child:not(.cpu-label){display:none}
.computing-process-states-scheduling .transition-strip{background:none;gap:12px;margin-top:12px}
.computing-process-states-scheduling .transition{min-height:0;text-align:center;background:none;padding:5px}
.computing-process-states-scheduling .event-strip[hidden]{display:none}
.computing-process-states-scheduling .board-head #boardHint{display:none}
.computing-process-states-scheduling .mini-result{font:400 12px/1.4 var(--lab-font-sans);border:0;background:var(--lab-surface-muted)}
@keyframes lab-slot-attention{50%{border-color:color-mix(in srgb,var(--slot-tone) 40%,white)}}
@media(prefers-reduced-motion:reduce){.computing-process-states-scheduling .rule-slot{animation:none!important}.lab-cycle-progress>span{transition:none}}
@media(max-width:1120px){.computing-memory-management .workspace{grid-template-columns:1fr}.computing-memory-management .desktop-panel,.computing-memory-management .architecture-panel,.computing-memory-management .log-panel{grid-column:1;grid-row:auto}.computing-memory-management .desktop-panel{order:1}.computing-memory-management .log-panel{order:2}.computing-memory-management .architecture-panel{order:3}}
@media(max-width:700px){.computing-memory-management .system-map{grid-template-columns:1fr;grid-template-areas:"storage" "bus-sr" "ram" "bus-rc" "cpu" "bus-pr" "pagefile"}.computing-memory-management .log-entry{grid-template-columns:30px minmax(0,1fr)}.computing-memory-management .log-timing{grid-column:2;grid-row:2}.computing-memory-management .log-route{grid-column:2;grid-row:3}.computing-memory-management .work-cards{grid-template-columns:1fr}.computing-process-states-scheduling .scheduler-gate.compact-scheduler{grid-template-columns:1fr}}

.computing-fetch-decode-execute .lab-memory-column{grid-area:ram;min-width:0}
.computing-memory-management .storage-grid{grid-template-columns:repeat(auto-fit,minmax(27px,1fr))}
.computing-process-states-scheduling .compact-scheduler .rule-slot-value{white-space:normal;overflow:visible}
.computing-process-states-scheduling .scheduler-gate.active{box-shadow:none}
.computing-process-states-scheduling .rule-slot.drag-over{box-shadow:none!important}
.computing-process-states-scheduling .process-card.next::before{background:var(--lab-concept-amber,#c9782c);font-weight:400;letter-spacing:normal}
.computing-process-states-scheduling .process-card.next{box-shadow:0 0 0 2px color-mix(in srgb,var(--lab-concept-amber,#c9782c) 35%,transparent)}

.computing-memory-management .log-entry{grid-template-columns:34px minmax(0,1fr)}
.computing-memory-management .log-timing{grid-column:2;grid-row:2;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;padding:0;border:0;background:none}
.computing-memory-management .log-timing span{margin:0}
.computing-memory-management .log-route{grid-column:2;grid-row:3}
.computing-memory-management .log-block-cells b{font:400 10px/1 var(--lab-font-sans)}
.computing-memory-management .bus-line{left:-8px;right:-8px}
.computing-memory-management .bus-arrow-left{left:-8px}.computing-memory-management .bus-arrow-right{right:-8px}
@media(max-width:700px){.computing-memory-management .bus-line{left:10%;right:10%}.computing-memory-management .bus-arrow-left{left:10%}.computing-memory-management .bus-arrow-right{right:10%}}

/* Revealed menus share the homepage surface; native selection stays intact. */
@supports (appearance:base-select){
  :is(.lab-adopt-v3,.lab-settings-adopt) select:not([multiple]):not([size]),:is(.lab-adopt-v3,.lab-settings-adopt) select:not([multiple]):not([size])::picker(select){appearance:base-select}
  :is(.lab-adopt-v3,.lab-settings-adopt) select:not([multiple]):not([size]){background-image:none;padding:8px 12px;gap:12px;align-items:center;border:1px solid var(--lab-line);border-radius:999px;background-color:var(--lab-surface);color:var(--lab-ink);font:400 12px/1.4 var(--lab-font-sans);min-height:40px;box-shadow:0 1px 3px #1d1d1f14}
  :is(.lab-adopt-v3,.lab-settings-adopt) select::picker(select){border:1px solid #1d1d1f1f;border-radius:18px;box-shadow:0 18px 50px #1d1d1f1f,0 3px 12px #1d1d1f14;background:var(--lab-surface);padding:7px;margin-block:9px;max-height:min(360px,70vh);overflow:auto;color:var(--lab-ink);font:400 14px/1.4 var(--lab-font-sans)}
  :is(.lab-adopt-v3,.lab-settings-adopt) select::picker-icon{content:"";width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;color:var(--lab-muted);rotate:45deg;margin-inline:6px 2px;transition:rotate .15s}
  :is(.lab-adopt-v3,.lab-settings-adopt) select:open::picker-icon{rotate:225deg}
  :is(.lab-adopt-v3,.lab-settings-adopt) select option{border:0;border-radius:12px;min-height:42px;padding:9px 11px;background:var(--lab-surface);color:var(--lab-ink);font:400 14px/1.4 var(--lab-font-sans);cursor:pointer;gap:16px}
  :is(.lab-adopt-v3,.lab-settings-adopt) select option:is(:hover,:focus){background:var(--lab-surface-muted);outline:none}
  :is(.lab-adopt-v3,.lab-settings-adopt) select option:checked{background:var(--lab-accent-soft);color:var(--lab-accent-ink)}
  :is(.lab-adopt-v3,.lab-settings-adopt) select option::checkmark{order:2;margin-left:auto;color:var(--lab-accent)}
  :is(.lab-adopt-v3,.lab-settings-adopt) select :is(option,optgroup):disabled,:is(.lab-adopt-v3,.lab-settings-adopt) select:disabled{color:var(--lab-muted);background:var(--lab-surface-muted);cursor:default;box-shadow:none}
}
/* Distinguishable index I without changing surrounding glyphs. */
@font-face{font-family:Lab Index I;src:local('Georgia');unicode-range:U+0049;font-weight:100 900}
.lab-index-text,.computing-fetch-decode-execute :is(.cpu-svg text,.ram-address,.ram-word,.operation,.step-note,.bus-value),.computing-assembly :is(.cpu-diagram text,.operation p,.ram-word,.internal-value,.bus-value){font-family:'Lab Index I',var(--lab-font-sans,sans-serif)}
/* Installed rules are the current configuration, with stronger material identity. */
.computing-process-states-scheduling .rule-slot:has(.rule-icon){background:color-mix(in srgb,var(--slot-tone) 22%,white);border-color:color-mix(in srgb,var(--slot-tone) 55%,white);box-shadow:0 2px 5px #1d1d1f12}
.computing-process-states-scheduling .compact-scheduler .rule-slot-value{font-size:16px;line-height:1.35;gap:10px;color:var(--lab-ink)}
.computing-process-states-scheduling .rule-slot .rule-icon{width:42px;height:42px;background:white;color:var(--slot-tone);font-size:14px}
.computing-process-states-scheduling .rule-ghost{box-shadow:0 10px 24px #1d1d1f30;border:1px solid var(--lab-line-strong);background:white}
.computing-process-states-scheduling .failure-insight{background:var(--lab-surface-muted);gap:14px}
.computing-process-states-scheduling .failure-point+.failure-point{border:0;padding-left:0}
.computing-process-states-scheduling .failure-point b{color:var(--lab-ink);font:400 14px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.computing-process-states-scheduling .failure-point span{color:var(--lab-ink-secondary);font:400 12px/1.45 var(--lab-font-sans)}
.computing-process-states-scheduling .target-chip.bad{background:color-mix(in srgb,var(--lab-bad) 7%,white);border-color:color-mix(in srgb,var(--lab-bad) 25%,white)}
.computing-memory-management .desktop{height:480px}
.computing-memory-management .desktop-icons{left:12px;top:16px;grid-template-columns:68px;gap:7px}
.computing-memory-management .desktop-icon{min-height:64px;padding:4px;border:1px solid transparent;border-radius:10px;font:400 11px/1.25 var(--lab-font-sans);text-shadow:none;color:var(--lab-ink)}
.computing-memory-management .desktop-window{left:100px;right:12px;top:24px;bottom:44px}
.computing-memory-management .app-glyph{background:color-mix(in srgb,var(--icon-tone,var(--lab-accent)) 22%,white);color:var(--icon-tone,var(--lab-accent));box-shadow:0 2px 5px #1d1d1f20}
.computing-memory-management [data-owner="image"]{--icon-tone:var(--lab-concept-violet,#7563a7)}
.computing-memory-management [data-owner="sheet"]{--icon-tone:var(--lab-concept-teal,#2d8792)}
.computing-memory-management [data-owner="media"]{--icon-tone:var(--lab-concept-amber,#c9782c)}
.computing-memory-management [data-owner="scan"]{--icon-tone:var(--lab-concept-violet,#7563a7)}
.computing-memory-management [data-owner="taskmgr"]{--icon-tone:var(--lab-concept-teal,#2d8792)}
.computing-memory-management .desktop-icons[data-awaiting-interaction="true"] .desktop-icon{animation:lab-desktop-attention 2s ease-in-out infinite;background:#ffffff70}
.computing-memory-management .work-card{background:white;box-shadow:0 2px 7px #1d1d1f18}
@keyframes lab-desktop-attention{50%{border-color:var(--lab-accent);background:#ffffffd9}}
@media(prefers-reduced-motion:reduce){.computing-memory-management .desktop-icons[data-awaiting-interaction="true"] .desktop-icon{animation:none;border-color:var(--lab-accent)}}

.computing-memory-management .desktop-icon{padding:2px}
.computing-memory-management .app-glyph{width:28px;height:28px;margin-bottom:2px}
.computing-assembly :is(.operation code,.reference code,.translation-table code,#sourceEditor){font-family:"Lab Index I",var(--mono,monospace)}

/* Device connections: neutral, thin segments; colour/motion belong to live transfer state. */
.lab-connection-layer{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.lab-connection-path{fill:none;stroke:var(--lab-line-strong,#a7a7ad);stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.bus.active .lab-connection-path{stroke:var(--lab-accent,#5277b8);stroke-dasharray:6 4;animation:lab-connection-flow .7s linear infinite}
.bus.active.page-bus .lab-connection-path{stroke:var(--lab-concept-violet,#7563a7)}
.bus.active.to-left .lab-connection-path{animation-direction:reverse}
@keyframes lab-connection-flow{to{stroke-dashoffset:-20}}
@media(prefers-reduced-motion:reduce){.bus.active .lab-connection-path{animation:none}}
.computing-memory-management .system-map{position:relative}
.computing-memory-management .bus{position:static}
.computing-memory-management .bus :is(.bus-line,.bus-arrow-left,.bus-arrow-right){display:none}
.computing-memory-management .bus-label,.computing-memory-management .bus-value{position:relative;z-index:1;background:white;border:0;border-radius:4px}
.computing-memory-management .cache-link::before{bottom:-7px;border-radius:0;box-shadow:none}
.computing-memory-management .route-arrow::after{display:none}
@media(max-width:700px){
  .computing-memory-management .system-map{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"storage pagefile" "bus-sr bus-pr" "ram ram" "bus-rc bus-rc" "cpu cpu";gap:12px}
  .computing-memory-management :is(.device-card,.pagefile-card){align-self:end}
  .computing-memory-management .pagefile-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .computing-memory-management .bus{min-height:60px;display:flex;align-items:center;justify-content:space-around;gap:12px}
  .computing-memory-management .bus-label{padding:2px 4px;max-width:70px}
  .computing-memory-management .bus-track{height:auto;margin:0;max-width:70px}
  .computing-memory-management .bus-value{top:0;white-space:normal}
}

/* A referenced page uses the same identity tile as its source and cached copies. */
.lab-core-page{display:flex;align-items:center;justify-content:center;gap:8px;padding:7px;margin:8px 0 5px;border:0;border-radius:6px;background:var(--lab-surface-muted,#f7f8fa);font:400 12px/1.35 var(--lab-font-sans,sans-serif)}
.lab-core-page[hidden]{display:none}
.lab-core-page .mem-cell{flex:0 0 32px;min-height:28px}
.lab-core-page[data-state="reading"]{background:var(--lab-accent-soft,#eef2fa)}
.lab-core-page[data-state="waiting"]{background:var(--lab-needed-surface,#fffdf4)}
.lab-model-note{margin-top:10px;font:400 12px/1.45 var(--lab-font-sans,sans-serif)}
.lab-model-note summary{cursor:pointer;color:var(--lab-accent-ink,#315b91)}
.lab-model-note p{margin:7px 0 0}
.computing-memory-management .cpu-core>strong{font:400 14px/1.4 var(--lab-font-sans)}
.lab-core-page>span{font:400 12px/1.35 var(--lab-font-sans,sans-serif);color:var(--lab-ink,#1d1d1f)}
.lab-thread-states{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;font:400 12px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink,#1d1d1f)}
.lab-thread-states[hidden]{display:none}
.lab-thread-states>div{padding:8px;border-radius:8px;background:var(--lab-surface-muted,#f7f8fa);min-width:0}
.lab-thread-states>div:first-child{background:color-mix(in srgb,var(--lab-concept-violet,#7563a7) 16%,white)}
.lab-thread-states>div>span{display:block;color:var(--lab-muted,#6e6e73);margin-bottom:4px}
.lab-thread-states strong{font:inherit}
.lab-thread-tags{display:flex;flex-wrap:wrap;gap:4px}
.lab-thread-tags>span{padding:2px 5px;border-radius:4px;background:var(--lab-surface,#fff)}

/* Construction/comparison workspaces: preserve the authored model relationships. */
.lab-builder .lab-activity-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:18px 20px;margin:0;border:1px solid var(--lab-line);border-radius:12px;background:white}
.lab-builder .lab-activity-task{flex:1 1 380px;min-width:0}
.lab-builder .lab-activity-task>strong{display:block;font:400 17px/1.4 var(--lab-font-sans);color:var(--lab-accent-ink)}
.lab-builder .lab-activity-task>span,.lab-builder .lab-activity-task>p{font:400 14px/1.45 var(--lab-font-sans);margin:6px 0 0;color:var(--lab-ink)}
.lab-builder .lab-toggle{height:auto;min-height:42px;flex-wrap:wrap;margin:0;max-width:100%}
.lab-builder .lab-toggle button{font-weight:400;white-space:normal}
.lab-builder .lab-activity-bar+.layout,.lab-builder .lab-activity-bar+.tape-panel{margin-top:14px}
.lab-builder :is(h2,.section-heading>strong,.board-heading strong,.relation-name,.join-head>strong,.nf-stage-head strong,.evidence-copy strong,.flow-feedback strong,.test-feedback strong,.config-head strong,.score-title){font:400 15px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-builder :is(.small,.tiny,.instructions,.header-note,.size-sub,.scoreText,.code-status,.status,.check-feedback,.challenge-line strong,.challenge-line b,.scenario p,.evidence-copy span,.flow-feedback span,.test-feedback span,.config-note){font:400 14px/1.45 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-builder :is(label,.section-heading>span,.board-heading span,.code-name span,.code-name strong,.cmd,.size-label,.size-bits,.size-stat strong,.size-stat span,.nf-stage p,.relation-role,.relation-key,.relation-foot,.consequence span,.consequence strong,.join-head>span,.palette-card strong,.palette-card small,.palette-label,.batch-item,.batch-head,.config-field label,.factory-bubble,.run-popup){font:400 12px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-builder :is(.lab-action,.code-input,input[type=number]){font-weight:400}
.lab-builder :is(input,select):focus{outline:none;box-shadow:none;border-color:var(--lab-accent-hover)}
.lab-builder :is(.evidence,.flow-feedback,.test-feedback,.completion,.config-note){border:1px solid var(--lab-line);border-radius:10px;padding:12px;background:var(--lab-surface-muted);box-shadow:none}
.lab-builder :is(.evidence,.flow-feedback,.test-feedback,.completion).good{border-color:var(--lab-good-line);background:var(--lab-good-surface)}
.lab-builder :is(.evidence,.flow-feedback,.test-feedback).bad{border-color:var(--lab-bad-line);background:var(--lab-bad-surface)}
.lab-builder :is(.evidence,.flow-feedback,.test-feedback).warn{border-color:var(--lab-needed-line);background:var(--lab-needed-surface)}
.lab-builder .lab-computing-tools{align-items:center;margin-bottom:14px}
.lab-builder :is(.rack-help,.tool-help,.factory-rule,#challengeKicker,#challengeProgress,#challengeCopy,#challenge-step,.challenge-status,.board-heading>div>span,.gate-rack .section-heading>span,.chart-panel .panel-head>div>span){display:none}
.lab-builder .lab-computing-tools .lab-action{width:auto;flex:none;margin:0}
.lab-builder .lab-placeable-card{color:var(--lab-ink);padding:10px;min-height:66px}
.lab-builder .lab-claim-context{padding:14px 20px;margin:0 0 14px;border:0;background:var(--lab-accent-soft);border-radius:12px}
.lab-builder .lab-claim-context p{margin:6px 0 0}
.lab-builder .lab-claim-context-title{font:400 15px/1.4 var(--lab-font-sans);color:var(--lab-accent-ink)}
/* Paint and encoding stay paired; a stream is a readable code pane, not a canvas. */
.computing-bitmap-compression .layout{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:18px}
.computing-bitmap-compression .controls{align-items:end;gap:10px}
.computing-bitmap-compression #depthInput{width:120px;min-width:110px}
.computing-bitmap-compression .bitmap-wrap{padding:0;border:0;background:none;overflow:visible}
.computing-bitmap-compression #bitmap{width:100%;min-width:0;touch-action:none}
.computing-bitmap-compression .size-box{padding:14px;border:0;background:var(--lab-surface-muted);border-radius:10px}
.computing-bitmap-compression .size-stat{padding:8px 0;border:0;background:none}
.computing-bitmap-compression .size-main{font:400 26px/1.3 var(--lab-font-sans)}
.computing-bitmap-compression .header{border:0;padding:10px;border-radius:8px;background:color-mix(in srgb,var(--lab-concept-violet) 15%,white);font-size:12px;overflow-wrap:anywhere}
.computing-bitmap-compression #bitstream{max-height:320px;min-height:120px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;font:400 12px/1.7 var(--lab-font-mono,monospace)}
/* Rover art, route and decoder order remain intact. */
.computing-huffman-rover .workspace{grid-template-columns:minmax(0,1.25fr) minmax(340px,.85fr);gap:16px}
.computing-huffman-rover .map-scroll{overflow:visible}
.computing-huffman-rover :is(.map-panel,.side,.tape-panel,.tape-shell,.tape-window,.program-panel,.code-panel){min-width:0;max-width:100%}
.computing-huffman-rover #map{min-width:0;width:100%}
.computing-huffman-rover :is(.program-panel,.code-panel){border:1px solid var(--lab-line);background:white;box-shadow:none}
.computing-huffman-rover :is(.program-panel,.code-panel) h2::after{display:none}
.computing-huffman-rover :is(.program-panel,.code-panel) .instructions{padding:0;border:0;background:none;color:var(--lab-ink);margin:8px 0 12px}
.computing-huffman-rover :is(.code-input,.code-symbol){font:400 14px/1.4 var(--lab-font-mono,monospace);padding:7px 9px;border-radius:7px;border:1px solid var(--lab-needed-line);background:var(--lab-needed-surface);color:var(--lab-ink);box-shadow:none}
.computing-huffman-rover .code-input.invalid{border-color:var(--lab-bad-line);background:var(--lab-bad-surface)}
.computing-huffman-rover .code-input:focus{border-color:var(--lab-needed-ink);outline:none;box-shadow:none}
.computing-huffman-rover .code-symbol{border:0;background:color-mix(in srgb,var(--lab-concept-violet) 18%,white)}
.computing-huffman-rover .meter #meterFill{background:var(--lab-concept-violet)}
.computing-huffman-rover :is(#scoreBits,#bitCount,#optimality){font-weight:400}
.computing-huffman-rover #decoderStatus{font:400 14px/1.4 var(--lab-font-sans)}
@media(max-width:1050px){.computing-huffman-rover .workspace{grid-template-columns:1fr}.computing-huffman-rover .side{grid-template-columns:1fr 1fr}}
/* Relations need table width, not a generic working sidebar. */
.computing-database-normalisation :is(.nf-trail,.consequences){padding:12px;margin:14px 0;gap:12px}
.computing-database-normalisation .nf-stage{padding:12px;border-radius:10px}
.computing-database-normalisation .nf-stage p{margin:8px 0 0}
.computing-database-normalisation .nf-stage-head .nf-state{font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal}
.computing-database-normalisation .consequence{padding:12px;border:0;border-radius:8px}
.computing-database-normalisation .board-shell{overflow:visible;background:white;border-radius:12px}
.computing-database-normalisation .board{width:100%;padding:16px;gap:16px;min-width:0;align-items:start;flex-wrap:wrap;background:none}
.computing-database-normalisation .relation-role{color:var(--lab-muted)}
.computing-database-normalisation .table-wrap{overflow:auto}
.computing-database-normalisation .relation{flex:1 1 420px;min-width:0;max-width:100%;border-radius:10px;box-shadow:none}
.computing-database-normalisation .relation:only-child{width:100%!important;max-width:1100px}
.computing-database-normalisation .relation-head{padding:12px;background:var(--lab-accent-soft);color:var(--lab-ink)}
.computing-database-normalisation .relation-key{background:white;color:var(--lab-accent-ink);border:0;padding:5px 8px}
.computing-database-normalisation :is(th,td){font:400 12px/1.45 var(--lab-font-sans);padding:9px 8px}
.computing-database-normalisation th small{font:400 11px/1.3 var(--lab-font-sans)}
.computing-database-normalisation .relation-foot{padding:8px 12px}
.computing-database-normalisation .relation-foot strong{display:none}
.computing-database-normalisation .goal-source::before{display:none}
.computing-database-normalisation .evidence-symbol{font:400 14px/1.4 var(--lab-font-sans);padding:8px;border:0;border-radius:7px;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white)}
.computing-database-normalisation .join-head{padding:14px;gap:12px;flex-wrap:wrap}
/* Keep rack, circuit and truth evidence adjacent on wide screens. */
.computing-combinational-logic-circuit-design .lab-grid{grid-template-columns:180px minmax(0,1fr) 280px;gap:14px}
.computing-combinational-logic-circuit-design .gate-choice{min-width:0;padding:8px;font-weight:400}
.computing-combinational-logic-circuit-design :is(.gate-rack,.board-panel,.truth-panel){padding:14px;min-width:0}
.computing-combinational-logic-circuit-design .board-shell{overflow:visible;background:white;border:0}
.computing-combinational-logic-circuit-design #circuit-board{width:100%;min-width:0;min-height:0;height:auto}
.computing-combinational-logic-circuit-design :is(.gate-label,.fixed-name){font-size:16px;font-weight:400}
.computing-combinational-logic-circuit-design .fixed-value{font-size:23px;font-weight:400}
.computing-combinational-logic-circuit-design .port text{font-size:12px;font-weight:400}
.computing-combinational-logic-circuit-design .truth-panel :is(th,td){font:400 12px/1.4 var(--lab-font-sans);padding:8px}
.computing-combinational-logic-circuit-design .truth-panel th small{font-size:11px}
.computing-combinational-logic-circuit-design .truth-panel tr.current td{box-shadow:none;background:var(--lab-accent-soft)}
.computing-combinational-logic-circuit-design .circuit-readout{border:0;padding:10px;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white)}
.computing-combinational-logic-circuit-design .circuit-readout :is(span,code,strong){font:400 12px/1.4 var(--lab-font-mono,monospace);white-space:normal;overflow-wrap:anywhere}
/* A growing flowchart remains beside its physical result; vertical page flow is useful. */
.computing-automated-system-control-flowcharts .workspace{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px}
.computing-automated-system-control-flowcharts .challenge-lines{margin-top:10px}
.computing-automated-system-control-flowcharts .challenge-line{margin-top:6px;gap:10px}
.computing-automated-system-control-flowcharts .challenge-line>span{font:400 12px/1.4 var(--lab-font-sans);min-width:65px}
.computing-automated-system-control-flowcharts #challenge-pass{color:var(--lab-ink)}
.computing-automated-system-control-flowcharts :is(.flow-feedback,.test-feedback)[hidden]{display:none}
.computing-automated-system-control-flowcharts .palette{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.computing-automated-system-control-flowcharts :is(.editor,.factory-body){padding:14px}
.computing-automated-system-control-flowcharts .chart-shell{overflow:visible;border:0;background:white}
.computing-automated-system-control-flowcharts #flowchart{width:100%;min-width:0;height:auto}
.computing-automated-system-control-flowcharts .factory-wrap{border:0;background:white}
.computing-automated-system-control-flowcharts :is(.node-text,.node-sub,.edge-label,.port-label){font-family:var(--lab-font-sans);font-weight:400}
.computing-automated-system-control-flowcharts .node-text{font-size:14px}
.computing-automated-system-control-flowcharts .node-sub{font-size:12px}
.computing-automated-system-control-flowcharts :is(.edge-label,.port-label){font-size:12px}
.computing-automated-system-control-flowcharts :is(.factory-label,.machine-label){font:400 14px var(--lab-font-sans)}
.computing-automated-system-control-flowcharts .machine-sub{font:400 12px var(--lab-font-sans)}
.computing-automated-system-control-flowcharts :is(#cpu-screen,#bottle-mass){font:400 12px var(--lab-font-sans)}
.computing-automated-system-control-flowcharts .config{max-width:calc(100% - 20px);width:300px;padding:14px;border-radius:12px}
.computing-automated-system-control-flowcharts .config-note{padding:10px;border:0;margin-top:10px}
/* Compact informational chips share flat material, regular type and concept tints. */
.lab-chip,.computing-bitmap-compression .size-indicator.lab-chip,.lab-builder .batch-item.lab-chip{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px;max-width:100%;padding:4px 8px;border:0;border-radius:6px;background:var(--lab-surface-strong,#eceef1);color:var(--lab-ink);font:400 12px/1.4 var(--lab-font-sans);box-shadow:none;white-space:normal}
.lab-chip[data-tone="violet"]{background:color-mix(in srgb,var(--lab-concept-violet) 20%,white)}
.lab-chip[data-tone="amber"]{background:color-mix(in srgb,var(--lab-concept-amber) 20%,white)}
.lab-chip.good,.computing-bitmap-compression .size-indicator.lab-chip.good,.lab-builder .batch-item.lab-chip.good{background:var(--lab-good-soft);color:var(--lab-good)}
.lab-chip.bad,.computing-bitmap-compression .size-indicator.lab-chip.bad,.lab-builder .batch-item.lab-chip.bad{background:var(--lab-bad-soft);color:var(--lab-bad)}
.lab-chip-row{display:flex;flex-wrap:wrap;gap:6px}
/* A stable inline working area for simulations that need uninterrupted observation. */
.lab-working-context{padding:14px;border:1px solid var(--lab-line-subtle);border-radius:12px;background:var(--lab-surface-muted);color:var(--lab-ink)}
.lab-working-label{font:400 12px/1.4 var(--lab-font-sans);color:var(--lab-muted)}
.lab-working-context h2{margin:3px 0 7px;font:400 16px/1.35 var(--lab-font-sans)}
.lab-working-context p{margin:0;font:400 14px/1.45 var(--lab-font-sans)}
.lab-working-context .lab-chip-row{margin:10px 0}
.lab-working-requirement{display:grid;grid-template-columns:auto 1fr;gap:8px;margin:10px 0;font:400 12px/1.45 var(--lab-font-sans)}
.lab-working-requirement p{font-size:12px}
.lab-working-readout{display:grid;align-content:start;gap:4px;min-height:102px;padding:10px;border:1px solid var(--lab-line-subtle);border-radius:8px;background:var(--lab-surface,#fff)}
.lab-working-readout strong{font:400 15px/1.35 var(--lab-font-sans)}
.lab-working-readout span{font:400 14px/1.45 var(--lab-font-sans)}
.lab-working-readout[data-state="working"]{border-color:var(--lab-needed-line);background:var(--lab-needed-surface)}
.lab-working-readout[data-state="correct"]{border-color:var(--lab-good-line);background:var(--lab-good-soft)}
.lab-working-readout[data-state="mistake"]{border-color:var(--lab-bad-line);background:var(--lab-bad-soft)}
.lab-builder-instructions{margin:6px 0 12px;font:400 12px/1.45 var(--lab-font-sans);color:var(--lab-muted)}
.computing-automated-system-control-flowcharts .challenge{min-height:0}
.computing-automated-system-control-flowcharts .batch{padding:0;border:0;background:none}
.lab-builder .batch-item.lab-chip{display:flex;flex-direction:column;gap:2px}
.lab-builder .batch-item.lab-chip small{font:400 11px/1.4 var(--lab-font-sans)}
@media(max-width:1100px){.computing-combinational-logic-circuit-design .lab-grid{grid-template-columns:150px minmax(0,1fr)}.computing-combinational-logic-circuit-design .truth-panel{grid-column:1/-1}.computing-automated-system-control-flowcharts .workspace{grid-template-columns:1fr}.computing-automated-system-control-flowcharts .palette{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:750px){.lab-builder .lab-activity-bar{padding:14px}.computing-bitmap-compression .layout,.computing-huffman-rover .workspace,.computing-huffman-rover .side,.computing-database-normalisation :is(.nf-trail,.consequences){grid-template-columns:1fr}.computing-combinational-logic-circuit-design .lab-grid{grid-template-columns:1fr}.computing-combinational-logic-circuit-design .gate-palette{grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible}.computing-automated-system-control-flowcharts .palette{grid-template-columns:repeat(2,minmax(0,1fr))}.computing-database-normalisation .board{padding:10px}.computing-automated-system-control-flowcharts .lab-computing-tools{gap:8px}}

/* Guided computing investigations and programming workbenches: preserve their models. */
.lab-cs-review{font:400 14px/1.45 var(--lab-font-sans)}
.lab-cs-review .lab-activity-bar{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:16px 20px;min-height:0;margin:0;border:1px solid var(--lab-line);border-radius:12px;background:var(--lab-surface)}
.lab-cs-review .lab-activity-task{flex:1;min-width:min(100%,300px)}
.lab-cs-review .lab-activity-task>strong{display:block;font:400 17px/1.4 var(--lab-font-sans);color:var(--lab-accent)}
.lab-cs-review .lab-activity-task>span{display:block;margin-top:5px;font:400 14px/1.45 var(--lab-font-sans)}
.lab-cs-review .lab-toggle{flex-wrap:wrap;max-width:100%}
.lab-cs-review :is(.mission-kicker,.mission-meta,.relationship-meta,.phase-kicker,.prediction-kicker,.proof-kicker,.modal-kicker,.modal-topline,.insight-kicker,.expression-kicker){display:none}
.lab-cs-review :is(.section-head strong,.side-heading strong,.trace-head strong,.visual-copy>strong,.ledger-head strong,.stack-title strong,.normalizer-head strong,.auth-head strong){font:400 15px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-cs-review :is(.side-heading>div>span,.section-head>div>span,.trace-note,.stack-title>span,.ledger-head>div>span,.param-copy>span,.param-state,.condition-option,.signal-name small,.frame-status,.state-cell small,.status-bar,.source-note,.auth-tag,.storage-label,.storage-source>span,.word-count,.endlabel){font:400 12px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-cs-review :is(.side-section,.control-section,.trace-section,.code-side,.stack-side){padding:14px;min-width:0}
.lab-cs-review :is(.phase-modal,.progress-modal){padding:16px;border:1px solid var(--lab-line);border-radius:12px;background:var(--lab-surface);font:400 14px/1.45 var(--lab-font-sans)}
.lab-cs-review :is(.phase-modal strong,.progress-modal h2){font:400 16px/1.4 var(--lab-font-sans);letter-spacing:normal}
.lab-cs-review :is(.phase-modal p,.progress-modal p,.phase-relation,.phase-evidence,.phase-action-hint,.modal-facts,.modal-realisation,.modal-feedback){font:400 14px/1.45 var(--lab-font-sans)}
.lab-cs-review :is(.phase-actions,.modal-actions,.insight-actions){display:flex;justify-content:center;flex-wrap:wrap;gap:8px;padding-top:12px}
.lab-cs-review :is(.phase-evidence,.phase-relation,.modal-equation,.working-rule,.state-cell,.term-equation){border:0;border-radius:6px;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white);padding:5px 8px;box-shadow:none}
.lab-cs-review :is(.stage-shell,.stage-scroll,.instrument){min-width:0;max-width:100%;overflow:visible;background:var(--lab-surface);border:0}
.lab-cs-review :is(.prediction-work,.relationship-work,.inline-insight,.ledger-item,.rep-side,.fit,.auth-impact){padding:12px;border:1px solid var(--lab-line-subtle);border-radius:10px;box-shadow:none}
.lab-cs-review :is(.prediction-work,.relationship-work)[data-state="needed"]{border-color:var(--lab-needed-line);background:var(--lab-needed-surface)}
.lab-cs-review :is(.prediction-work,.relationship-work)[data-state="correct"]{border-color:var(--lab-good-line);background:var(--lab-good-soft)}
.lab-cs-review :is(.prediction-work,.relationship-work)[data-state="mistake"]{border-color:var(--lab-bad-line);background:var(--lab-bad-soft)}
.lab-cs-review :is(.work-head strong,.inline-insight>strong,.ledger-item strong){font:400 15px/1.4 var(--lab-font-sans)}
.lab-cs-review :is(.work-head>div>span,.work-feedback,.insight-copy,.inline-insight p,.working-intro,.code-note,.expression-panel>span,.param-note,.rep-side>span,.auth-desc,.auth-impact p,.trade-card p){font:400 14px/1.45 var(--lab-font-sans)}
.lab-cs-review :is(.lab-kit-work-state,.lab-kit-work-state span,.working-state){font:400 11px/1.4 var(--lab-font-sans)}
/* Floating point keeps context instrument, global/local rulers and the binary word linked. */
.cs-binary-floating-point .mission{padding:0;overflow:visible}
.cs-binary-floating-point .mission-top{border:0;border-bottom:1px solid var(--lab-line)}
.cs-binary-floating-point .auth-panel{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:16px;padding:16px;border:0;background:var(--lab-surface)}
.cs-binary-floating-point .auth-visual{min-width:0;align-self:center}
.cs-binary-floating-point .auth-visual svg{width:100%;height:auto;display:block}
.cs-binary-floating-point :is(.auth-tag,.auth-head,.instrument-hint,.storage-arrow){display:none}
.cs-binary-floating-point .auth-tradeoff{gap:14px;margin:10px 0}
.cs-binary-floating-point .trade-card{padding:6px 0;border:0;background:none}
.cs-binary-floating-point .trade-card strong{font:400 15px/1.4 var(--lab-font-sans);text-transform:none}
.cs-binary-floating-point .auth-impact strong{font-weight:400}
.cs-binary-floating-point .impact-chip{font:400 12px/1.4 var(--lab-font-sans);padding:3px 7px;border:0;border-radius:6px;background:var(--lab-surface-muted)}
.cs-binary-floating-point .experiment{margin-top:14px;padding:16px}
.cs-binary-floating-point .wordbar{padding:0 0 16px;gap:12px}
.cs-binary-floating-point .word-bit{height:40px;font:400 14px/40px var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-binary-floating-point #rulerSvg{width:100%;height:auto;display:block}
.cs-binary-floating-point #rulerSvg text{font-family:var(--lab-font-sans);font-weight:400}
.cs-binary-floating-point .bottom-row{margin:12px 0;gap:12px;align-items:stretch}
.cs-binary-floating-point .selection{padding:10px;border:0;background:var(--lab-surface-muted);font-size:14px}
.cs-binary-floating-point .selection :is(strong,span){font:400 14px/1.4 var(--lab-font-sans)}
.cs-binary-floating-point .fit{min-width:220px;background:var(--lab-needed-surface);border-color:var(--lab-needed-line)}
.cs-binary-floating-point .fit strong{font:400 12px/1.4 var(--lab-font-sans);text-transform:lowercase;background:none!important;color:inherit!important;padding:0}
.cs-binary-floating-point .fit span{font:400 12px/1.4 var(--lab-font-sans)}
.cs-binary-floating-point .normalizer{padding:14px;border:1px solid var(--lab-line-subtle);border-radius:10px;background:var(--lab-surface-muted)}
.cs-binary-floating-point #storageHint{font-size:12px;line-height:1.4}
.cs-binary-floating-point .storage-row{grid-template-columns:150px minmax(220px,1fr) minmax(200px,.8fr);gap:12px;margin-top:14px}
.cs-binary-floating-point .rep-track{padding:8px;border:0;background:var(--lab-surface);min-width:0}
.cs-binary-floating-point .bit{font-size:16px;font-weight:400;width:32px;height:36px}
.cs-binary-floating-point :is(.storage-source strong,.rep-side>strong){font:400 14px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-binary-floating-point .source-note{margin:12px 0 0}
.cs-binary-floating-point .insight{font-size:14px}
/* Circuit wiring and gate silhouettes remain unchanged. */
.cs-logic-circuit-flip-flop :is(.mission-tools,#mission-hint,#visual-subtitle,#control-copy,.trace-head>span,.trace-note){display:none}
.cs-logic-circuit-flip-flop .workspace{grid-template-columns:minmax(0,1fr) 360px}
.cs-logic-circuit-flip-flop .visual-head{padding:14px}
.cs-logic-circuit-flip-flop .stage{display:block;width:100%;min-width:0;height:auto}
.cs-logic-circuit-flip-flop .stage text{font-family:var(--lab-font-sans);font-weight:400}
.cs-logic-circuit-flip-flop :is(.pin-label,.gate-label,.pill-text,.state-caption,.steering-label,.cell-label){font-size:14px}
.cs-logic-circuit-flip-flop :is(.pin-sub,.gate-formula,.state-complement,.steering-formula,.steering-note){font-size:12px}
.cs-logic-circuit-flip-flop .phase-modal.next-card{position:absolute;max-width:calc(100% - 24px);width:360px;max-height:none}
.cs-logic-circuit-flip-flop .phase-evidence small{font-size:12px;font-weight:400}
.cs-logic-circuit-flip-flop .stage-caption{font:400 12px/1.4 var(--lab-font-sans);padding:10px 14px}
.cs-logic-circuit-flip-flop .formula-band{display:grid;width:auto;grid-template-columns:repeat(3,minmax(0,1fr));padding:14px;margin:0;background:none}
.cs-logic-circuit-flip-flop :is(.condition-card,.formula-card){padding:8px;border:0;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white)}
.cs-logic-circuit-flip-flop .formula-band :is(code,strong){font:400 12px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-logic-circuit-flip-flop .formula-band span{font:400 12px/1.4 var(--lab-font-sans);text-transform:none}
.cs-logic-circuit-flip-flop .trace-list{max-height:460px;height:auto;min-height:180px}
.cs-logic-circuit-flip-flop .trace-list li{font:400 12px/1.4 var(--lab-font-sans);padding:10px 6px}
.cs-logic-circuit-flip-flop .trace-list :is(strong,code,small,span){font-size:12px;font-weight:400}
.cs-logic-circuit-flip-flop .signal-name strong{font-size:18px;font-weight:400}
.cs-logic-circuit-flip-flop .condition-strip{margin:10px 0}
.cs-logic-circuit-flip-flop .condition-option :is(code,span){font-size:12px;font-weight:400}
/* The call stack grows vertically to keep its frame values readable. */
.cs-recursive-call-stack .workspace{grid-template-columns:minmax(300px,.8fr) 40px minmax(0,1.9fr);background:var(--lab-surface)}
.cs-recursive-call-stack .stack-workspace{grid-template-columns:minmax(300px,1.15fr) minmax(240px,.85fr);gap:14px;align-items:start}
.cs-recursive-call-stack .mission-actions{display:flex;flex-wrap:wrap;gap:8px}
.cs-recursive-call-stack :is(#missionHint,.working-intro,.status-bar>#statusDetail,.working-state,.ledger-head>div>span,.code-note){display:none}
.cs-recursive-call-stack .code-side{background:var(--lab-surface-muted)}
.cs-recursive-call-stack .code-panel{overflow:auto}
.cs-recursive-call-stack .code-list{font:400 12px/1.65 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace);padding-block:12px}
.cs-recursive-call-stack .code-line>span{font:inherit}
.cs-recursive-call-stack .code-line :is(.kw,.name,.num){font-weight:400}
.cs-recursive-call-stack :is(.expression-panel,#workingPanel){padding:14px;border:1px solid var(--lab-line-subtle);border-radius:10px;background:var(--lab-surface)}
.cs-recursive-call-stack .expression-panel strong{font:400 16px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-recursive-call-stack .return-ledger{height:auto;min-height:250px;overflow:visible}
.cs-recursive-call-stack #ledgerList{max-height:none;overflow:visible}
.cs-recursive-call-stack .stack-frame{flex:0 0 var(--frame-height);min-height:106px;grid-template-columns:34px minmax(0,1fr);padding:8px;gap:8px;border-radius:10px;overflow:visible}
.cs-recursive-call-stack .stack-frame::before{display:none}
.cs-recursive-call-stack .frame-id{position:static;align-self:center;background:var(--lab-accent-soft);color:var(--lab-accent);padding:6px;border-radius:5px;font:400 12px/1.4 var(--lab-font-sans)}
.cs-recursive-call-stack .frame-call{gap:6px;align-items:start}
.cs-recursive-call-stack .frame-call strong{font:400 14px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-recursive-call-stack .frame-status{font-size:11px;white-space:normal}
.cs-recursive-call-stack .frame-state{grid-template-columns:.7fr 1fr 1.2fr;gap:5px}
.cs-recursive-call-stack .state-cell{min-width:0;padding:4px}
.cs-recursive-call-stack .state-cell strong{font:400 12px/1.35 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace);overflow-wrap:anywhere}
.cs-recursive-call-stack .state-cell small{font-size:11px;overflow-wrap:anywhere}
.cs-recursive-call-stack :is(.working-rule strong,.ledger-item,.return-equation,.insight-fact){font:400 14px/1.45 var(--lab-font-sans)}
.cs-recursive-call-stack .working-rule small{font:400 12px/1.4 var(--lab-font-sans);text-transform:none}
.cs-recursive-call-stack .working-rule{margin:12px 0}
.cs-recursive-call-stack .ledger-item{border-width:1px;padding:10px;border-radius:8px}
.cs-recursive-call-stack .ledger-item input{font:400 14px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
/* Prediction and calculation stay alongside the neuron plot. */
.cs-single-neuron-threshold .workspace{grid-template-columns:minmax(0,1fr) 410px}
.cs-single-neuron-threshold .visual-actions{display:flex;flex-wrap:wrap;gap:12px}
.cs-single-neuron-threshold .progress-step b{display:none}
.cs-single-neuron-threshold .stage{width:100%;min-width:0;height:auto;display:block}
.cs-single-neuron-threshold :is(.plot-note,#paramIntro,.side-heading>div>span,.model-note,.param-copy>span,.param-state){display:none}
.cs-single-neuron-threshold :is(.term-head,.flow-node>span,.flow-node small,.output-node small,.param-copy strong){font:400 12px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.cs-single-neuron-threshold :is(.term-product,.term-equation,.flow-node>strong){font:400 16px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-single-neuron-threshold .term,.cs-single-neuron-threshold .flow-node{padding:10px;border:0;background:var(--lab-surface-muted);border-radius:8px}
.cs-single-neuron-threshold .param-note{padding:10px 0;border:0;background:none}
.cs-single-neuron-threshold .param-control{padding:10px;border:1px solid var(--lab-line-subtle);border-radius:8px;background:var(--lab-surface-muted)}
.cs-single-neuron-threshold .param-track{height:46px;touch-action:none}
.cs-single-neuron-threshold .param-track .track-label{font:400 11px/1.4 var(--lab-font-sans);bottom:0}
.cs-single-neuron-threshold .param-value{font:400 14px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-single-neuron-threshold .evidence-table :is(th,td,button,span){font:400 12px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.cs-single-neuron-threshold .evidence-table td{padding:8px 5px;box-shadow:none}
.cs-single-neuron-threshold .evidence-table th{padding:8px 5px}
.cs-single-neuron-threshold .evidence-table tr.mismatch{box-shadow:none}
.cs-single-neuron-threshold .phase-modal{width:auto;max-width:none;box-shadow:none;display:block}
.cs-single-neuron-threshold .phase-modal .modal-side{margin-top:10px}
.cs-single-neuron-threshold .stage text{font-family:var(--lab-font-sans);font-weight:400}
.cs-single-neuron-threshold :is(.axis-title,.point-name,.boundary-label){font-size:14px}
.cs-single-neuron-threshold :is(.tick,.point-coords,.target-label,.boundary-sub,.output-side-label,.proof-label){font-size:12px}
/* Shared editor typography keeps the input, highlight and line numbers aligned. */
.lab-programming{--line-height:24px}
.lab-programming :is(.pane-title,.editor-title>strong,.console-head,.sidebar-title-row>strong){font:400 15px/1.4 var(--lab-font-sans)}
.lab-programming :is(.code-editor,.code-input,.code-highlight,.example-code,.example-lines,.editor-lines,.gutter-content){font:400 14px/24px var(--lab-font-mono,monospace);letter-spacing:normal;tab-size:4}
.lab-programming :is(.code-highlight span,.example-code span){font-weight:400}
.lab-programming :is(.console-output,.console-log,.console-body,.variables-table){font:400 14px/1.55 var(--lab-font-mono,monospace)}
.lab-programming :is(.editor-foot,.editor-meta,.save-state,.sync-badge,.file-label,.lesson-count,.suite-progress,.pane-head>span){font:400 11px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-programming :is(.editor-head,.pane-head,.console-head){padding:10px 12px;gap:8px;flex-wrap:wrap;height:auto;min-height:44px}
.lab-programming :is(.code-editor,.code-input):focus-visible{outline:none;box-shadow:none}
.lab-programming .editor-body:focus-within{border-color:var(--lab-line-strong)}
.lab-programming .editor-actions{padding:10px;gap:8px;flex-wrap:wrap}
.lab-programming :is(.editor-actions-left,.editor-actions-right){display:flex;flex-wrap:wrap;gap:6px}
.lab-programming :is(.code-highlight,.code-input,.code-editor,.example-code){font-variant-ligatures:none}
.cs-python-programming-practice .app-shell{height:auto;min-height:650px;grid-template-columns:260px minmax(0,1fr)}
.cs-python-programming-practice .main{padding:14px;min-width:0}
.cs-python-programming-practice .sidebar-head{padding:14px}
.cs-python-programming-practice .lesson-list{max-height:660px}
.cs-python-programming-practice .lesson-item{padding:10px;gap:8px}
.cs-python-programming-practice .lesson-item :is(strong,span){font-size:12px;font-weight:400}
.cs-python-programming-practice .lesson-number{display:grid;place-items:center;font:400 12px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-python-programming-practice :is(.lesson-kicker,.lesson-progress-card,#exampleView,.challenge-number,.editor-actions-right>.save-state){display:none}
.cs-python-programming-practice .lesson-head h2{font:400 18px/1.4 var(--lab-font-sans);margin:0;color:var(--lab-accent)}
.cs-python-programming-practice .lesson-question{font:400 14px/1.45 var(--lab-font-sans);margin:6px 0 0}
.cs-python-programming-practice .view-tabs{display:flex;margin:12px 0;padding:4px;width:fit-content;max-width:100%}
.cs-python-programming-practice .view-tab{flex:0 1 auto;min-width:0}
.cs-python-programming-practice .workspace{grid-template-columns:minmax(0,1.4fr) minmax(240px,.85fr);min-height:500px}
.cs-python-programming-practice .challenge-brief{padding:14px;gap:12px}
.cs-python-programming-practice .challenge-prompt{font:400 14px/1.55 var(--lab-font-sans)}
.cs-python-programming-practice #challengeTitle{display:none}
.cs-python-programming-practice .resource-notice{width:min(1380px,calc(100% - 32px));margin:14px auto;padding:10px 14px;background:none;border:0}
.cs-python-programming-practice .resource-notice :is(p,a){font:400 12px/1.4 var(--lab-font-sans)}
.cs-translator .page-head{display:none}
.cs-translator .toolbar{justify-content:flex-start;align-items:center}
.cs-translator .toolbar-selects{display:flex;gap:8px;margin-left:0;flex-wrap:wrap}
.cs-translator #exampleSelect{width:220px}
.cs-translator #speedSelect{width:110px}
.cs-translator .python-style-toggle{max-width:none;width:auto;min-width:230px}
.cs-translator .python-style-copy{font:400 12px/1.4 var(--lab-font-sans);white-space:normal;overflow:visible}
.cs-translator .python-style-description{font:400 11px/1.4 var(--lab-font-sans)}
.cs-translator .workspace-state{font:400 12px/1.4 var(--lab-font-sans);margin-right:0}
.cs-translator .toolbar .head-actions{display:flex;margin-left:auto;gap:6px}
.cs-translator .workspace{min-height:600px}
.cs-translator .console-tabs button{font:400 12px/1.4 var(--lab-font-sans)}
@media(max-width:1100px){.cs-recursive-call-stack .workspace{grid-template-columns:1fr}.cs-recursive-call-stack .flow-bridge{display:none}.cs-recursive-call-stack .stack-workspace{grid-template-columns:minmax(0,1fr) minmax(240px,.8fr)}.cs-single-neuron-threshold .workspace{grid-template-columns:minmax(0,1fr) 370px}.cs-logic-circuit-flip-flop .workspace{grid-template-columns:1fr}.cs-logic-circuit-flip-flop .control-side{display:grid;grid-template-columns:1fr 1fr}.cs-python-programming-practice .app-shell{grid-template-columns:220px minmax(0,1fr)}.cs-python-programming-practice .workspace{grid-template-columns:1fr}.cs-python-programming-practice .console-pane{min-height:220px}.cs-python-programming-practice .editor-pane{min-height:400px}}
@media(max-width:750px){.lab-cs-review main{width:calc(100% - 24px)}.lab-cs-review .lab-activity-bar{padding:14px}.cs-binary-floating-point .auth-panel{grid-template-columns:1fr}.cs-binary-floating-point .wordbar{grid-template-columns:1fr}.cs-binary-floating-point .wordbar>.endlabel{display:none}.cs-binary-floating-point .word-shell{width:100%}.cs-binary-floating-point .storage-row{display:flex;flex-direction:column;align-items:stretch}.cs-binary-floating-point .storage-part{min-width:0}.cs-binary-floating-point .bottom-row{flex-direction:column;display:flex}.cs-binary-floating-point .bit{width:27px}.cs-logic-circuit-flip-flop .control-side{display:block}.cs-logic-circuit-flip-flop .formula-band{grid-template-columns:1fr}.cs-recursive-call-stack .stack-workspace{display:block}.cs-recursive-call-stack .return-ledger{margin-top:14px}.cs-recursive-call-stack .stack-frame{grid-template-columns:28px minmax(0,1fr)}.cs-single-neuron-threshold .workspace{display:block}.cs-python-programming-practice .app-shell{display:block}.cs-python-programming-practice .lesson-list{max-height:200px}.cs-translator .toolbar-selects{width:100%}.cs-translator .head-actions{margin-left:0}.lab-programming .lab-action{padding-inline:10px}}

/* Workbench headers and overlays size from their content. */
.cs-python-programming-practice .editor-pane{grid-template-rows:auto minmax(300px,1fr) auto}
.cs-python-programming-practice .lesson-name{font:400 12px/1.4 var(--lab-font-sans)}
.cs-python-programming-practice .console-pane{grid-template-rows:auto minmax(180px,1fr) auto}
.cs-recursive-call-stack .mission-actions{justify-content:flex-start;margin-left:0}
.cs-recursive-call-stack .code-line{font:400 14px/1.65 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace);grid-template-columns:29px minmax(max-content,1fr)}
.cs-recursive-call-stack .code-line::before{font-size:11px}
.cs-recursive-call-stack #expressionMain{font:400 16px/1.4 var(--lab-font-mono,ui-monospace,SFMono-Regular,Consolas,monospace)}
.cs-single-neuron-threshold #modeSwitch button{font:400 12px/1.4 var(--lab-font-sans)}
.cs-single-neuron-threshold #selectedChip span{display:inline;font-size:12px}
.cs-single-neuron-threshold .side-panel{display:flex;flex-direction:column}
.cs-single-neuron-threshold .work-head>div>span{font-size:14px}
.cs-logic-circuit-flip-flop .mission-copy>span:first-child{display:none}
.lab-programming .toolbar .head-actions svg{width:16px;height:16px}
/* Linked return calculations use the same flat data surfaces as other working. */
.lab-cs-review .working-row{padding:10px;grid-template-columns:30px minmax(0,1fr);gap:8px;border:1px solid var(--lab-line-subtle);box-shadow:none;border-radius:10px}
.lab-cs-review .working-frame{font:400 12px/1.4 var(--lab-font-sans);min-height:30px}
.lab-cs-review .working-top{gap:8px;flex-wrap:wrap}
.lab-cs-review .working-top>strong{font:400 15px/1.4 var(--lab-font-mono,monospace)}
.lab-cs-review .working-tag{font:400 11px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.lab-cs-review .working-equation{grid-template-columns:minmax(0,.8fr) 10px minmax(0,1.1fr) 10px minmax(0,1fr);gap:4px}
.lab-cs-review :is(.eq-term,.eq-result){padding:5px 6px;border:0;border-radius:6px;box-shadow:none;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white);min-width:0}
.lab-cs-review :is(.eq-term,.eq-result) small{font:400 11px/1.35 var(--lab-font-sans);text-transform:none;letter-spacing:normal;overflow-wrap:anywhere}
.lab-cs-review :is(.eq-term,.eq-result) strong{font:400 14px/1.4 var(--lab-font-mono,monospace);overflow-wrap:anywhere}
.lab-cs-review .eq-op{font:400 14px/1.4 var(--lab-font-sans)}
.lab-cs-review .working-prediction input{font:400 14px/1.4 var(--lab-font-mono,monospace);padding:5px;min-height:36px}
.lab-cs-review .working-actual{font:400 12px/1.4 var(--lab-font-sans);padding:6px 0 0;border:0}
.lab-cs-review .working-actual strong{font:inherit}
.lab-cs-review .working-row[data-ledger-frame] :is(.working-saved,.working-link,.working-note){display:none}
.lab-cs-review .working-row[data-ledger-frame]:not(.returned) .working-actual{display:none}
.lab-cs-review .working-row.needs-work{border-color:var(--lab-needed-line);background:var(--lab-needed-surface);box-shadow:none}
.lab-cs-review .working-row.wrong{border-color:var(--lab-bad-line);background:var(--lab-bad-soft)}
.lab-cs-review .working-row.wrong .working-frame{background:var(--lab-bad)}
.lab-cs-review .working-row.wrong .working-actual strong{color:var(--lab-bad-ink)}
.cs-recursive-call-stack #expressionDetail{font:400 12px/1.4 var(--lab-font-sans)}
.cs-recursive-call-stack .working-prediction input.work-needed{border:1px solid var(--lab-needed-line)!important;background:#fff!important;box-shadow:none}
.cs-recursive-call-stack .working-prediction input:focus{outline:none;box-shadow:none!important;border-color:var(--lab-needed-ink)!important}
/* Reviewed computing evidence, quiet Run attention and direct model grips. */
.lab-programming:not([data-lab-has-run="true"]) [data-lab-run-cue]:not(:disabled){animation:lab-run-attention 1.8s ease-in-out infinite}
@keyframes lab-run-attention{50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--lab-accent) 24%,transparent)}}
@media(prefers-reduced-motion:reduce){.lab-programming [data-lab-run-cue]{animation:none!important}.lab-programming:not([data-lab-has-run="true"]) [data-lab-run-cue]{box-shadow:0 0 0 2px var(--lab-accent-line)}}
.lab-programming .icon-button.lab-action{width:40px;height:40px;min-width:40px;padding:10px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 40px}
.lab-programming .icon-button.lab-action svg{width:18px;height:18px;flex:0 0 18px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.lab-programming .console-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;flex-shrink:0;min-height:60px}
.lab-programming .console-tools{display:flex;align-items:center;gap:12px}
.lab-programming .console-tabs{display:flex;align-items:center;gap:4px}
.lab-programming .console-tabs button{min-height:34px;padding:7px 12px;border:0;border-radius:7px;background:transparent;color:var(--lab-muted);font:400 12px/1.4 var(--lab-font-sans)}
.lab-programming .console-tabs button.active{background:var(--lab-accent-soft);color:var(--lab-accent-ink);box-shadow:none}
.cs-translator .editor-pane{grid-template-rows:auto minmax(0,1fr) 24px}
.cs-translator .console-pane{grid-template-rows:auto minmax(0,1fr) auto}
.lab-programming .diagnostic-layer{font:400 14px/24px var(--lab-font-mono,monospace)}
/* Dark workbenches use the same component roles on dark surfaces. */
html[data-theme="dark"] .lab-programming{--lab-paper:#202329;--lab-surface:#292d35;--lab-surface-muted:#242830;--lab-surface-strong:#343b47;--lab-control:#292d35;--lab-ink:#e6eaf1;--lab-ink-secondary:#c4ccd9;--lab-muted:#abb6c7;--lab-line:#4c5668;--lab-line-subtle:#3b4452;--lab-line-strong:#8296b4;--lab-accent:#5277b8;--lab-accent-soft:#2d3e5b;--lab-accent-ink:#bbd3fc;--lab-accent-line:#6c89b8;--lab-good:#6bb590;--lab-good-soft:#223c32;--lab-good-ink:#a9d9bf;--lab-needed-surface:#383426;--lab-needed-line:#b3a05c;--lab-needed-ink:#e8d68d;--lab-bad:#d28f86;--lab-bad-soft:#412c2c;--lab-bad-ink:#efb5ad;background:var(--lab-paper);color:var(--lab-ink)}
html[data-theme="dark"] .lab-programming :is(.panel,.lab-activity-bar,.lab-computing-tools){background:var(--lab-surface);color:var(--lab-ink);border-color:var(--lab-line)}
html[data-theme="dark"] .lab-programming :is(.lab-action,.python-style-toggle){background:var(--lab-accent-soft);color:var(--lab-accent-ink);border-color:var(--lab-accent-line)}
html[data-theme="dark"] .lab-programming .lab-action[data-priority="primary"]{background:var(--lab-accent);color:#fff}
html[data-theme="dark"] .lab-programming .lab-action:disabled{background:var(--lab-surface-strong);color:var(--lab-muted);border-color:var(--lab-line);box-shadow:none}
html[data-theme="dark"] .lab-programming :is(.lab-activity-task>strong,.lesson-head h2){color:var(--lab-accent-ink)}
html[data-theme="dark"] .lab-programming :is(.console-head,.editor-head,.editor-foot){background:var(--lab-surface-muted);color:var(--lab-ink);border-color:var(--lab-line)}
html[data-theme="dark"] .lab-programming :is(.sync-badge,.workspace-state){color:var(--lab-ink-secondary)}
/* Fixed bit budget and compensated storage shifts are different manipulatives. */
.cs-binary-floating-point .auth-visual svg text{font-family:var(--lab-font-sans)!important;font-weight:400!important}
.cs-binary-floating-point .trade-card{padding:12px;border:0;border-radius:9px;background:color-mix(in srgb,var(--lab-accent) 12%,white)}
.cs-binary-floating-point .trade-card:last-child{background:color-mix(in srgb,var(--lab-concept-violet) 16%,white)}
.cs-binary-floating-point .trade-card p{margin:5px 0 0}
.cs-binary-floating-point .fit.good{background:var(--lab-good-soft);border-color:var(--lab-good);color:var(--lab-good-ink)}
.cs-binary-floating-point .fit.good strong{font-size:14px;text-transform:none}
.cs-binary-floating-point .fit.good strong::before{content:'✓ ';color:var(--lab-good)}
.cs-binary-floating-point .auth-impact.good{background:var(--lab-good-soft);border-color:var(--lab-good-line)}
.cs-binary-floating-point .auth-impact.good .impact-chip{background:var(--lab-good);color:white}
.cs-binary-floating-point .divider{width:36px;transform:translateX(-18px);border:1px solid var(--lab-accent-line);border-radius:9px;background:var(--lab-surface);color:var(--lab-accent-ink);height:48px;top:-4px}
.cs-binary-floating-point .divider::before{left:16px;top:6px;bottom:6px;width:2px;background:var(--lab-accent);box-shadow:none}
.cs-binary-floating-point .divider::after{content:'↔';left:2px;top:11px;bottom:auto;width:30px;height:23px;border:0;background:var(--lab-surface);transform:none;font:400 24px/23px var(--lab-font-sans);text-align:center}
.cs-binary-floating-point .mantissa-drag:not(.locked){padding:8px 10px 20px;border:1px solid var(--lab-accent-line);border-radius:8px;position:relative;cursor:ew-resize}
.cs-binary-floating-point .mantissa-drag:not(.locked)::after{content:'↔';position:absolute;bottom:1px;left:0;right:0;text-align:center;font:400 16px/16px var(--lab-font-sans);color:var(--lab-accent-ink)}
.cs-binary-floating-point .rep-side.good{background:var(--lab-good-soft);border-color:var(--lab-good-line)}
/* A compact context strip retains milestone meaning without covering the circuit. */
.cs-logic-circuit-flip-flop main{max-width:1200px}
.cs-logic-circuit-flip-flop .visual-head{display:none}
.cs-logic-circuit-flip-flop .phase-modal.lab-working-context{position:static;width:auto;max-width:none;margin:14px;padding:12px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 16px;background:var(--lab-surface-muted);border:0;box-shadow:none}
.cs-logic-circuit-flip-flop .phase-modal>strong{font-size:15px;grid-column:1}
.cs-logic-circuit-flip-flop .phase-modal>p{margin:0;grid-column:1}
.cs-logic-circuit-flip-flop .phase-actions{grid-column:2;grid-row:1/3;align-items:center;padding:0}
.cs-logic-circuit-flip-flop #phase-content{display:none}
.cs-logic-circuit-flip-flop .stage{max-height:430px;aspect-ratio:900/520;object-fit:contain}
.cs-logic-circuit-flip-flop .stage-shell{background:#fff}
.cs-logic-circuit-flip-flop .stage-caption{background:var(--lab-surface);padding:10px 14px}
/* Recursion: active execution is blue; learner work and checked outcomes stay distinct. */
.cs-recursive-call-stack{--code-bg:var(--lab-surface);--code-ink:var(--lab-ink);--code-muted:var(--lab-muted);--code-active:var(--lab-accent-soft);--code-keyword:var(--lab-accent-ink);--code-number:var(--lab-concept-violet);--code-name:var(--lab-ink);--return:var(--lab-accent);--return-soft:var(--lab-accent-soft);--base:var(--lab-good);--base-soft:var(--lab-good-soft)}
.cs-recursive-call-stack .recursion-rules:has(#ruleControls[hidden]){display:none}
.cs-recursive-call-stack .stack-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px}
.cs-recursive-call-stack .stack-toolbar .mission-actions{margin:0;gap:6px}
.cs-recursive-call-stack .stack-toolbar #outputBox{margin-left:auto}
.cs-recursive-call-stack .stack-title>span{display:none}
.cs-recursive-call-stack .code-panel{border:1px solid var(--lab-line);box-shadow:none;background:var(--lab-surface);border-radius:10px}
.cs-recursive-call-stack .code-titlebar{background:var(--lab-surface-muted);color:var(--lab-muted);border-bottom:1px solid var(--lab-line);font:400 11px/1.4 var(--lab-font-sans)}
.cs-recursive-call-stack .code-lights{display:none}
.cs-recursive-call-stack .code-line.active{box-shadow:none;background:var(--lab-accent-soft)}
.cs-recursive-call-stack .code-line.active::before{color:var(--lab-accent-ink)}
.cs-recursive-call-stack :is(.working-row,.working-row.blocked,.working-row.returned){background:var(--lab-surface-muted);border-color:var(--lab-line);opacity:1;box-shadow:none}
.cs-recursive-call-stack .working-row.current{border-color:var(--lab-accent-line);background:var(--lab-accent-soft)}
.cs-recursive-call-stack .working-row.needs-work{border-color:var(--lab-needed-line);background:var(--lab-needed-surface)}
.cs-recursive-call-stack .working-row.correct{border-color:var(--lab-good-line);background:var(--lab-good-soft)}
.cs-recursive-call-stack .working-row.wrong{border-color:var(--lab-bad-line);background:var(--lab-bad-soft)}
.cs-recursive-call-stack .working-frame{background:var(--lab-surface-strong);color:var(--lab-ink-secondary)}
.cs-recursive-call-stack .working-row.current .working-frame{background:var(--lab-accent);color:#fff}
.cs-recursive-call-stack .working-row.correct .working-frame{background:var(--lab-good);color:#fff}
.cs-recursive-call-stack .working-row.wrong .working-frame{background:var(--lab-bad);color:#fff}
.cs-recursive-call-stack :is(.eq-term,.eq-term.child-ready,.eq-result,.state-cell){background:color-mix(in srgb,var(--lab-concept-violet) 12%,white);color:var(--lab-ink);border:0;box-shadow:none}
.cs-recursive-call-stack .eq-result:has(input){background:transparent;padding:0}
.cs-recursive-call-stack .eq-result input{border:1px solid var(--lab-needed-line);background:#fff;color:var(--lab-ink)}
.cs-recursive-call-stack .working-row.correct input{border-color:var(--lab-good);color:var(--lab-good-ink)}
.cs-recursive-call-stack .working-row.wrong input{border-color:var(--lab-bad);color:var(--lab-bad-ink)}
.cs-recursive-call-stack .stack-frame.sequence-processing{border-color:var(--lab-accent-line);background:var(--lab-accent-soft);box-shadow:none}
.cs-recursive-call-stack .stack-frame.sequence-processing .frame-status{color:var(--lab-accent-ink)}
.cs-recursive-call-stack .stack-frame .state-cell:is(.sequence-focus,.sequence-held,.sequence-result){box-shadow:none;transform:none;border:0}
/* Direct boundary grips: generous hit area, clear action and persistent parameter readouts. */
.lab-boundary-grip{cursor:grab;touch-action:none;outline:none}
.lab-is-dragging .lab-boundary-grip{cursor:grabbing}
.lab-boundary-hit{fill:transparent;stroke:none}
.lab-boundary-knob{fill:var(--lab-surface);stroke:var(--lab-accent);stroke-width:2}
.lab-boundary-grip:hover .lab-boundary-knob,.lab-boundary-grip:focus .lab-boundary-knob{stroke:var(--lab-accent-ink);stroke-width:3}
.lab-boundary-grip.is-locked{opacity:.4;cursor:default}
.lab-boundary-icon{font:400 22px/1 var(--lab-font-sans);fill:var(--lab-accent-ink);text-anchor:middle;dominant-baseline:middle;pointer-events:none}
.lab-boundary-arrow{fill:none;stroke:var(--lab-accent-ink);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.lab-boundary-label{font:400 14px/1 var(--lab-font-sans);fill:var(--lab-ink);text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}
.cs-single-neuron-threshold .lab-parameter-readouts{padding:12px 16px;border:0}
.cs-single-neuron-threshold .lab-parameter-readouts :is(.side-heading,.param-track,#paramNote){display:none}
.cs-single-neuron-threshold .lab-parameter-readouts .param-stack{display:flex;gap:10px;flex-wrap:wrap}
.cs-single-neuron-threshold .lab-parameter-readouts .param-control{flex:1;min-width:120px;padding:8px 12px;border:0;background:color-mix(in srgb,var(--lab-concept-violet) 14%,white);animation:none;box-shadow:none}
.cs-single-neuron-threshold .lab-parameter-readouts .param-meta{margin:0}
.cs-single-neuron-threshold .lab-parameter-readouts .param-control.locked{opacity:1}
.cs-single-neuron-threshold .stage{touch-action:none}
.cs-single-neuron-threshold .stage text.lab-boundary-icon{font-size:22px}
.cs-single-neuron-threshold .stage text.lab-boundary-label{font-size:14px}
.cs-single-neuron-threshold #relationshipWorkAction{padding-top:10px}
@media(max-width:750px){.cs-logic-circuit-flip-flop .phase-modal.lab-working-context{display:block}.cs-logic-circuit-flip-flop .phase-actions{padding-top:10px;justify-content:flex-start}.cs-recursive-call-stack .stack-toolbar #outputBox{margin-left:0}}

.cs-recursive-call-stack .code-test{font:400 11px/1.4 var(--lab-font-sans);color:var(--lab-muted);background:var(--lab-surface-strong)}
.cs-recursive-call-stack .code-test.false{color:var(--lab-ink-secondary);background:var(--lab-surface-strong)}
.cs-recursive-call-stack .code-test.true{color:var(--lab-good-ink);background:var(--lab-good-soft)}
.cs-recursive-call-stack .return-equation-ribbon{border:0;background:var(--lab-accent-soft);box-shadow:none}
.cs-recursive-call-stack .return-equation-ribbon small{font:400 11px/1.4 var(--lab-font-sans);color:var(--lab-accent-ink);text-transform:none;letter-spacing:normal}
.cs-recursive-call-stack .return-equation-ribbon strong{font:400 16px/1.4 var(--lab-font-mono,monospace);color:var(--lab-ink)}
.cs-recursive-call-stack .stack-frame.sequence-resumed{background:var(--lab-accent-soft);border-color:var(--lab-accent-line);box-shadow:none}
.cs-recursive-call-stack .stack-frame:is(.sequence-resumed,.sequence-processing) .state-cell{opacity:1}
.cs-recursive-call-stack .stack-frame:is(.sequence-resumed,.sequence-processing) .state-cell:is(.sequence-focus,.sequence-held,.sequence-ready-input,.sequence-arrival,.sequence-next){background:var(--lab-accent-soft);box-shadow:none}
.cs-recursive-call-stack .fly-token{background:var(--lab-accent);font-weight:400}
.cs-recursive-call-stack .fly-token::before{font:400 11px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.cs-recursive-call-stack .mission.lab-activity-bar{border-radius:12px}
html[data-theme="dark"] .lab-programming .lab-syllabus-chip{--syllabus-chip-bg:var(--lab-accent-soft)!important;--syllabus-chip-text:var(--lab-accent-ink)!important;--syllabus-chip-border:var(--lab-accent-line)!important}
html[data-theme="dark"] .lab-programming select::picker(select){border-color:var(--lab-line)}
.cs-recursive-call-stack .stack-frame .frame-call strong{font-size:14px;font-weight:400}
.cs-recursive-call-stack .stack-frame .frame-id{font-size:12px;font-weight:400}
.cs-recursive-call-stack .stack-frame .frame-status{font-size:11px;font-weight:400;letter-spacing:normal;text-transform:none}
.cs-recursive-call-stack .stack-frame .state-cell{padding:5px 7px}
.cs-recursive-call-stack .stack-frame .state-cell small{font:400 11px/1.35 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.cs-recursive-call-stack .stack-frame .state-cell strong{font:400 14px/1.35 var(--lab-font-mono,ui-monospace,Consolas,monospace);color:var(--lab-ink)}

/* Header settings: minimal centered captions; exam and working use neutral ink. */
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar:has([data-lab-setting]){display:flex;align-items:center;flex-wrap:wrap;gap:16px}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar .lab-settings-path{display:contents!important}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-setting-old-label{display:none!important}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar [data-lab-setting]{flex:none;margin:0;align-self:center}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar [data-lab-setting="working"]{order:30;position:relative;overflow:visible}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar [data-lab-setting="exam"]{order:40;position:relative;overflow:visible}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar [data-lab-setting="checkpoints"]{order:50}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar [data-lab-setting-lead]{margin-left:auto}
:is(.lab-adopt-v3,.lab-settings-adopt) :is([data-lab-setting="working"],[data-lab-setting="exam"])::before{position:absolute;left:50%;top:-18px;transform:translateX(-50%);padding:0;border:0;background:none;color:var(--lab-ink-secondary);font:400 11px/1.2 var(--lab-font-sans,sans-serif);white-space:nowrap;pointer-events:none}
:is(.lab-adopt-v3,.lab-settings-adopt) [data-lab-setting="working"]::before{content:'Working'}
:is(.lab-adopt-v3,.lab-settings-adopt) [data-lab-setting="exam"]::before{content:'Exam'}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar :is([data-lab-setting="working"],[data-lab-setting="exam"])>button:is([aria-pressed="true"],[aria-checked="true"]){background:var(--lab-ink,#1d1d1f);color:var(--lab-surface,#fff);font-weight:400;border-color:transparent;box-shadow:none}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar :is([data-lab-setting="working"],[data-lab-setting="exam"])>button:disabled{cursor:default}
/* Flat helper material keeps values aligned with their register columns. */
.lab-binary .place-values{height:auto;min-height:30px;gap:2px;align-items:stretch;margin-bottom:7px;font-weight:400;letter-spacing:normal}
.lab-binary .place-values>span{display:grid;place-items:center;padding:5px 1px;border-radius:5px;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white);color:var(--lab-ink);font-weight:400;min-width:0}
.lab-binary .help-tip{border:0;background:var(--lab-accent-soft);padding:12px 16px;border-radius:8px;box-shadow:none}
.lab-binary :is(.scalar-value,.scalar-base,.bit-cell,.bit-input,.operator,.feedback strong,.help-tip strong,#prompt strong){font-weight:400;letter-spacing:normal}
.lab-binary .scalar-base{font-size:12px;text-transform:none}
.lab-binary .range-select{margin-left:auto;max-width:100%;min-width:170px}
.lab-binary .topbar [data-lab-setting="exam"]{margin-left:0}

.lab-binary #prompt{font:400 16px/1.5 var(--lab-font-sans);color:var(--lab-accent-ink)}
.lab-binary :is(button,.answer-label,.help-button){font-weight:400}

.lab-menu-select:focus-visible{outline:none;box-shadow:none;border-color:var(--lab-line-strong)}

.lab-binary .card.help-active .place-values{opacity:1;transition:none}

/* Compact frame identities are labels, not tall state indicators. */
.cs-recursive-call-stack .stack-frame .frame-id,.cs-recursive-call-stack :is(.working-row,.working-row.current,.working-row.correct,.working-row.wrong) .working-frame{position:static;transform:none;align-self:start;justify-self:start;display:grid;place-items:center;width:32px;height:28px;min-height:28px;min-width:0;padding:4px;border:0;border-radius:6px;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white);color:var(--lab-ink);font:400 12px/1.4 var(--lab-font-sans);box-shadow:none}
/* Consoles follow the workbench theme, with padded output and input surfaces. */
.lab-programming .console-pane{background:var(--lab-surface);color:var(--lab-ink);border-color:var(--lab-line)}
.lab-programming .console-head{background:var(--lab-surface-muted);color:var(--lab-ink);border-color:var(--lab-line-subtle);font-weight:400}
.lab-programming .console-head button{min-height:36px;height:auto;padding:7px 12px;border:1px solid var(--lab-accent-line);background:var(--lab-surface);color:var(--lab-accent-ink);font:400 12px/1.4 var(--lab-font-sans)}
.lab-programming .console-body{padding:14px 16px;color:var(--lab-ink)}
.lab-programming .console-message{color:var(--lab-muted);font-weight:400}
.lab-programming .console-message.good{color:var(--lab-good-ink)}
.lab-programming .console-message.bad{color:var(--lab-bad-ink)}
.lab-programming .console-message.info{color:var(--lab-accent-ink)}
.lab-programming .console-input-row{padding:12px 14px;gap:8px;border-color:var(--lab-line-subtle);background:var(--lab-accent-soft)}
.lab-programming .console-input-row label{color:var(--lab-ink-secondary);font:400 12px/1.4 var(--lab-font-sans);white-space:normal;overflow:visible}
.lab-programming .console-input-row input{min-height:38px;height:auto;padding:8px 10px;background:var(--lab-surface);color:var(--lab-ink);border:1px solid var(--lab-accent-line);font:400 14px/1.4 var(--lab-font-mono,monospace)}
.lab-programming .console-input-row input:focus-visible{outline:none;box-shadow:none;border-color:var(--lab-accent-ink)}
.lab-programming .console-input-row button{height:auto;min-height:38px;padding:8px 12px;font:400 12px/1.4 var(--lab-font-sans)}
/* Readouts remain usable when a geometric parameter has no visible handle. */
.lab-value-grip{display:inline-flex;align-items:center;gap:6px;min-width:66px;min-height:32px;padding:4px 7px;border:1px solid transparent;border-radius:6px;touch-action:none;user-select:none;cursor:ew-resize}
.lab-value-grip[aria-disabled="false"]{background:var(--lab-surface);border-color:var(--lab-accent-line);color:var(--lab-accent-ink)}
.lab-value-grip[aria-disabled="false"]::after{content:'↔';font:400 14px/1 var(--lab-font-sans)}
.lab-value-grip[aria-disabled="true"]{cursor:default;color:var(--lab-muted)}
.lab-value-grip:focus-visible{outline:none;border-color:var(--lab-accent-ink)}
.cs-binary-floating-point .storage-comparison{display:block;padding:6px 0;font-size:12px}
.cs-binary-floating-point .normalizer-head span{max-width:760px;font-size:12px;line-height:1.45}

/* Hidden challenge numbers must not leave an empty fixed grid column. */
.cs-python-programming-practice .challenge-brief{grid-template-columns:minmax(0,1fr) auto;align-items:start;background:var(--lab-accent-soft)}
.cs-python-programming-practice .challenge-brief-actions{position:static;align-self:start}
.cs-python-programming-practice .challenge-prompt .semantic-call{font-weight:400}
/* Shared model tool rows keep reset actions below mission/settings. */
.lab-model-tools{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:12px 20px;border-bottom:1px solid var(--lab-line-subtle);background:var(--lab-surface)}
.lab-similarity .relationship-dock>:is(.relationship-placeholder,.relationship-result){border:0;box-shadow:none;background:transparent;padding:0}
/* Attention is owned by the current task and ends when that target is used. */
button[data-lab-attention="true"]:not(:disabled){animation:lab-run-attention 1.8s ease-in-out infinite}
svg [data-lab-attention="true"]>.card{animation:lab-card-attention 1.8s ease-in-out infinite;stroke:var(--lab-accent);stroke-width:2}
@keyframes lab-card-attention{50%{stroke:var(--lab-accent-pressed,#3a5d99);stroke-width:3.5;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--lab-accent) 35%,transparent))}}
@media(prefers-reduced-motion:reduce){button[data-lab-attention="true"],svg [data-lab-attention="true"]>.card{animation:none!important}}
.lab-sets .board{padding:0 20px 20px}.lab-sets .board>.lab-model-tools{margin-inline:-20px}.lab-sets #setContext{margin:16px 0 20px}.lab-sets #setContext p{margin:6px 0 0}
.lab-sets :is(.flow[hidden],#missionVisual,.mission-hint,.drop-zone,.explore-banner,.feedback[hidden],.recipient-row[hidden],.recipient-card[hidden],#nextSet[hidden]){display:none!important}
.lab-sets .lab-set-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:20px}
.lab-sets .inspection{grid-column:2;grid-row:auto;display:flex;flex-direction:column;align-items:stretch;gap:14px;padding:0 0 0 20px;border-left:1px solid var(--lab-line-subtle)}
.lab-sets .venn-stage{padding:0;background:none}.lab-sets .venn-scroll{overflow:visible}.lab-sets #venn{width:100%;height:auto}
.lab-sets :is(.rule-card,.lab-set-selection,.recipient-card){padding:12px;border:1px solid var(--lab-line-subtle);border-radius:10px;background:var(--lab-surface-muted);box-shadow:none}
.lab-sets [data-state="needed"]{background:var(--lab-needed-surface,#fffdf4);border-color:var(--lab-needed-line,#d8c36a)}
.lab-sets [data-state="correct"]{background:var(--lab-good-surface,#f7fcf8);border-color:var(--lab-good-line,#9cc7aa)}
.lab-sets [data-state="mistake"]{background:var(--lab-bad-surface,#fff8f7);border-color:var(--lab-bad-line,#d8aaa4)}
.lab-sets :is(.rule-head strong,.trace h3){font:400 15px/1.4 var(--lab-font-sans);color:var(--lab-ink);margin:0 0 10px}.lab-sets .rule-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.lab-sets .rule-head strong{margin:0}.lab-sets .rule-controls{margin-top:12px}
.lab-sets :is(.trace,.trace-top){display:block;padding:0;border:0;background:none}.lab-sets .trace p{font:400 14px/1.45 var(--lab-font-sans);margin:8px 0 0}.lab-sets .lab-set-facts{display:flex;flex-wrap:wrap;gap:6px}.lab-sets .lab-set-facts span{padding:4px 7px;border-radius:5px;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white);font:400 14px/1.4 var(--lab-font-sans)}
.lab-sets .move-controls{justify-content:flex-start;padding:12px 0 0;gap:6px}.lab-sets #selectedLabel{width:100%;font:400 12px/1.4 var(--lab-font-sans)}.lab-sets .move-controls button{padding:7px 9px;font-size:12px}.lab-sets .move-controls button[aria-pressed="true"]{background:var(--lab-accent-soft);border-color:var(--lab-accent)}
.lab-sets .placement-requirements{display:grid;width:100%;grid-template-columns:1fr;gap:8px}.lab-sets .requirement{display:flex;gap:5px;padding:8px 0;border:0;border-radius:0;background:none}.lab-sets .requirement+.requirement{border-top:1px solid var(--lab-line-subtle)}.lab-sets .requirement strong{flex:1;font:400 14px/1.4 var(--lab-font-sans)}.lab-sets .notation{font:400 12px/1.4 var(--lab-font-sans);padding:4px 6px;border:0;border-radius:5px}.lab-sets .req-state{background:none;font-size:14px}.lab-sets .notation.a{background:color-mix(in srgb,var(--lab-accent) 16%,white);color:var(--lab-accent-ink)}.lab-sets .notation.b{background:color-mix(in srgb,var(--lab-concept-violet) 16%,white);color:var(--lab-concept-violet)}
.lab-sets .recipient-card{display:flex;align-items:center;flex-wrap:wrap;gap:8px;text-align:left}.lab-sets .recipient-card #recipientCount{font:400 16px/1.4 var(--lab-font-sans)}.lab-sets .recipient-row{display:block;padding:0}.lab-sets .recipient-label{margin-bottom:8px}.lab-sets .recipient-set{gap:6px}.lab-sets .recipient-chip{font:400 12px/1.4 var(--lab-font-sans);padding:5px 8px;border:0;background:var(--lab-accent-soft)}.lab-sets .feedback{padding:0;border:0}.lab-sets .feedback .action-line{display:block;padding:12px;border-radius:10px;font:400 14px/1.45 var(--lab-font-sans)}.lab-sets .feedback strong{font-weight:400}.lab-sets #nextSet{align-self:flex-end}
.lab-sets #caseTabs{margin-left:auto;flex-wrap:nowrap}.lab-sets #caseTabs [aria-disabled="true"]{cursor:default}
/* Set identities stay blue/violet; correctness is reserved for green/red. */
.lab-sets .universe{fill:var(--lab-surface);stroke:var(--lab-line);stroke-width:1.2}.lab-sets .set-base-a{fill:color-mix(in srgb,var(--lab-accent) 16%,white)}.lab-sets .set-base-b{fill:color-mix(in srgb,var(--lab-concept-violet) 16%,transparent)}.lab-sets .set-base-shared{fill:none}.lab-sets .set-outline-a{stroke:var(--lab-accent);stroke-width:1.8}.lab-sets .set-outline-b{stroke:var(--lab-concept-violet);stroke-width:1.8}
.lab-sets .result-region.active{fill:var(--lab-accent);opacity:.22}.lab-sets .result-region.drag-target{fill:var(--lab-accent);opacity:.15}
.lab-sets #venn text{font-family:var(--lab-font-sans);font-weight:400}.lab-sets .set-mark{font-size:16px}.lab-sets .set-mark.a{fill:var(--lab-accent-ink)}.lab-sets .set-mark.b{fill:var(--lab-concept-violet)}.lab-sets :is(.universe-label,.region-label){font-size:13px;fill:var(--lab-muted)}
.lab-sets .person .card{fill:white;stroke:var(--lab-line);stroke-width:1.2;filter:none;stroke-dasharray:none}.lab-sets .person.selected .card{stroke:var(--lab-accent);filter:none}.lab-sets .person.target-pending .card{fill:white;stroke:var(--lab-needed-line,#d8c36a);stroke-dasharray:none}.lab-sets .person.target-correct .card{fill:var(--lab-good-surface);stroke:var(--lab-good)}.lab-sets .person.reference{opacity:1}.lab-sets .person .name{font-size:14px;fill:var(--lab-ink)}.lab-sets .person .membership-symbol{font-size:11px}.lab-sets .person .membership-pill{stroke:none}.lab-sets .person .membership-pill.a.on{fill:color-mix(in srgb,var(--lab-accent) 16%,white)}.lab-sets .person .membership-pill.b.on{fill:color-mix(in srgb,var(--lab-concept-violet) 16%,white)}.lab-sets .person .membership-pill.off{fill:var(--lab-surface-muted)}.lab-sets .person .membership-symbol.a.on{fill:var(--lab-accent-ink)}.lab-sets .person .membership-symbol.b.on{fill:var(--lab-concept-violet)}.lab-sets .person .membership-symbol.off{fill:var(--lab-muted)}.lab-sets .target-pending :is(.goal-dot,.goal-check){display:none}.lab-sets .person.problem-extra .card,.lab-sets .person.problem-missed .card{fill:var(--lab-bad-surface);stroke:var(--lab-bad);stroke-dasharray:none}
.cs-logic-circuit-flip-flop :is(#wire-q-out,#wire-qbar-out){stroke-width:3.5}.cs-logic-circuit-flip-flop :is(#wire-q-feedback,#wire-qbar-feedback){stroke-width:1.7}.cs-logic-circuit-flip-flop :is(#q-node,#qbar-node){stroke-width:2}
@media(max-width:980px){.lab-sets .lab-set-layout{grid-template-columns:1fr}.lab-sets .inspection{grid-column:1;border-left:0;padding:16px 0 0;border-top:1px solid var(--lab-line-subtle)}}
svg rect[data-lab-attention="true"]{animation:lab-card-attention 1.8s ease-in-out infinite;stroke:var(--lab-accent)}
@media(prefers-reduced-motion:reduce){svg rect[data-lab-attention="true"]{animation:none!important}}
.cs-logic-circuit-flip-flop .output-label{font:400 14px var(--lab-font-sans);fill:var(--lab-ink)}.cs-logic-circuit-flip-flop .output-caption{display:none}

/* Compact segmented settings: reference geometry, readable text, neutral selection. */
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar :is([data-lab-setting="working"],[data-lab-setting="exam"]){padding:3px;border:1px solid var(--lab-line,#d2d2d7);border-radius:10px;background:var(--lab-surface-muted,#f7f8fa);box-shadow:0 1px 3px rgb(29 29 31 / 8%)}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-activity-bar :is([data-lab-setting="working"],[data-lab-setting="exam"])>button{border-radius:7px;min-height:32px;padding:0 12px;font:400 12px/1.2 var(--lab-font-sans,sans-serif)}
:is(.lab-adopt-v3,.lab-settings-adopt) :is([data-lab-setting="working"],[data-lab-setting="exam"])::before{top:-20px}
/* A lone reset belongs to its model, without a dedicated boxed strip. */
.lab-reset-host{position:relative}
.lab-reset-host>.lab-reset-action{position:relative;margin-left:auto;flex:none}
:is(.graph-panel,.model-shell,.map-shell,.arch-panel,.workbench,#stageColumn,.visual,.lab-replacement-model,.lab-grid>.workspace).lab-reset-host{padding-top:52px!important}
:is(.graph-panel,.model-shell,.map-shell,.arch-panel,.workbench,#stageColumn,.visual,.lab-replacement-model,.lab-grid>.workspace).lab-reset-host>.lab-reset-action{position:absolute;top:10px;right:16px;z-index:3}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-reset-action{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 12px;border:1px solid var(--lab-accent-line,#9fb4d6);border-radius:8px;background:var(--lab-surface,#fff);color:var(--lab-accent-ink,#315b91);font:400 12px/1.3 var(--lab-font-sans,sans-serif);box-shadow:0 1px 3px rgb(29 29 31 / 8%)}
:is(.lab-adopt-v3,.lab-settings-adopt) .lab-reset-action:disabled{background:var(--lab-surface-strong,#eef1f3);color:var(--lab-muted,#6e6e73);border-color:var(--lab-line,#d2d2d7);box-shadow:none;opacity:1;cursor:not-allowed}
.lab-model-tools{border-radius:10px;gap:12px;margin:8px 12px;padding:10px 12px;border:0;background:transparent}
.lab-model-tools:has(>button:only-child){padding-block:4px}
/* Completion actions retain shared priority, typography and centred spacing. */
.lab-adopt-v3 .next-card{animation:none;text-align:left}
.lab-adopt-v3 .next-card .next-actions{margin-top:14px;flex-wrap:wrap}
.lab-adopt-v3 .next-card button:not(.lab-dialog-move){font:400 12px/1.3 var(--lab-font-sans,sans-serif);padding:10px 18px;min-height:38px;border-radius:8px}
.lab-adopt-v3 .next-card .next-actions>button{background:var(--lab-accent-hover,#4569aa);border:1px solid var(--lab-accent-pressed,#3a5d99);color:#fff;box-shadow:0 1px 3px rgb(29 29 31 / 8%)}
.lab-adopt-v3 .next-card .next-actions>button::after{content:none}
/* Long-division evidence is a readable sequence, not a wrapping node chain. */
.lab-division-table{width:100%;max-width:720px;margin:0 auto;border-collapse:collapse;table-layout:fixed;font:400 14px/1.45 var(--lab-font-sans,sans-serif);text-align:center}
.lab-division-table caption{font-size:14px;text-align:left;padding:0 0 12px;color:var(--lab-ink)}
.lab-division-table th{font-size:12px;font-weight:400;padding:8px 4px;border-bottom:1px solid var(--lab-line)}
.lab-adopt-v3 .lab-division-table .division-step{display:table-row;width:auto;background:transparent;opacity:.2;transform:none;transition:opacity .2s}
.lab-adopt-v3 .lab-division-table .division-step.visible{opacity:1}
.lab-division-table td{padding:7px 4px;border-bottom:1px solid var(--lab-line-subtle);overflow-wrap:anywhere}
.lab-division-table .lab-math-surface{background:var(--lab-surface-muted)}
.lab-division-table .lab-math-surface.is-repeat{background:color-mix(in srgb,var(--lab-concept-violet) 25%,white);color:var(--lab-ink)}
.lab-recurring .trace-note{border:0;padding:10px 12px;font:400 14px/1.5 var(--lab-font-sans,sans-serif);background:color-mix(in srgb,var(--lab-concept-violet) 16%,white);border-radius:8px}
.lab-recurring .trace-note strong{font-weight:400}
.lab-recurring .lab-division-factors{margin-top:14px;font:400 12px/1.45 var(--lab-font-sans,sans-serif)}
.lab-recurring .lab-division-factors summary{cursor:pointer;color:var(--lab-ink-secondary);padding:8px 0}
.lab-recurring .target-strip{display:flex;align-items:center;gap:16px;justify-content:space-between}
.lab-recurring .subtract-handle::before{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0}
.lab-recurring .tail-band{height:3px;bottom:0}
.lab-recurring .tail-band.match{background:var(--lab-concept-violet);opacity:1}
.lab-recurring .tail-band.mismatch{background:var(--lab-warn);opacity:1}
.lab-recurring .tail-band-label{display:none}
.lab-recurring .digit-cell.tail-match{box-shadow:none;border-color:var(--lab-concept-violet)}
.lab-recurring .digit-cell.tail-mismatch{box-shadow:none;border-color:var(--lab-warn)}
.lab-recurring .trace-digit.repeat-digit,.lab-recurring .repeat-inline{border-top-color:var(--lab-concept-violet)}
.lab-field-control{position:relative;display:block;width:100%}
.lab-adopt-v3 .solve-entry .lab-field-control .field-status{position:absolute;right:9px;top:50%;bottom:auto;transform:translateY(-50%);font:400 14px/1 var(--lab-font-sans,sans-serif);padding:0;background:transparent}
.lab-adopt-v3 .solve-entry .lab-field-control input{font:400 14px/1.4 var(--lab-font-sans,sans-serif);padding:7px 30px 7px 9px;height:38px}
.lab-timetable .panel.workspace[data-lab-workspace]{display:block!important}
.lab-timetable .lab-meeting-source{display:flex;align-items:center;justify-content:flex-start;margin:0 0 14px}
.lab-timetable .lab-meeting-source .meeting-token{padding:8px 12px;font:400 12px/1.4 var(--lab-font-sans,sans-serif);border-radius:8px}
.lab-timetable .lab-meeting-source .meeting-token>span{display:none}
.lab-timetable .lab-meeting-source .meeting-token strong{font-size:14px;font-weight:400}

.lab-adopt-v3 .next-card .next-actions>button{width:auto;flex:none}
.lab-recurring .target-strip{background:transparent;border:0;padding-bottom:12px}
.lab-recurring .target-source{border:0;padding:0}
.lab-recurring .verify-actions button.active{font-weight:400}
.lab-recurring .trace-note{font-size:14px!important}
.lab-recurring .diagram-head.lab-reset-host{display:flex;align-items:center;gap:12px}
.lab-reset-host:is(.diagram-head,.visual-head){display:flex;align-items:center;flex-wrap:wrap;gap:12px}
.lab-reset-host.lab-context{padding-right:90px}
.lab-reset-host.lab-context>.lab-reset-action{position:absolute;top:12px;right:12px}

.lab-recurring .subtract-track{width:100%;min-width:0}
.lab-sets .board>.lab-model-tools{margin-inline:0}
@media(min-width:701px){.lab-recurring .subtract-gesture{grid-template-columns:142px minmax(0,1fr)}}

.lab-adopt-v3 .lab-field-control input{border-color:var(--lab-needed-line,#d8c36a);background:var(--lab-needed-surface,#fffdf4)}
.lab-adopt-v3 .lab-field-control input.good{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-adopt-v3 .lab-field-control input.bad{border-color:var(--lab-bad-line,#d8aaa4);background:var(--lab-bad-surface,#fff8f7)}
.lab-adopt-v3 .solve-entry.bad .field-status{color:var(--lab-bad-ink,#853b34)}
.lab-adopt-v3 .solve-entry.good .field-status{color:var(--lab-good-ink,#225f43)}

/* Science investigations: preserve apparatus/evidence composition; shared readable UI. */
.lab-science .lab-activity-bar{margin-bottom:0;padding:24px;border-radius:12px 12px 0 0;border:1px solid var(--lab-line);background:var(--lab-surface);box-shadow:none}
.lab-science .lab-activity-bar .mission-tools:empty{display:none}
.lab-science :is(.mission-kicker,.problem-kicker,.mission-phase,.mission-level,.mission-copy>span,.complexity-copy,.phase-track,.phase-kicker,.work-badge,.working-badge,.status-pill,.eyebrow,.action-cue,.prediction-guide,.working-title>span){display:none!important}
.lab-science .lab.panel{margin:0;border-top:0;border-radius:0 0 12px 12px;overflow:visible;min-height:0;height:auto}
.lab-science .workspace{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:0;min-height:0;height:auto;align-items:start}
.lab-science :is(.stage-side,.stage-shell,.stage-frame){width:100%;min-width:0;min-height:0;height:auto;max-height:none;overflow:visible;background:transparent}
.lab-science .stage-shell{position:relative}
.lab-science .stage{display:block;width:100%!important;min-width:0!important;height:auto!important;max-height:none;aspect-ratio:auto}
.lab-science .visual-head{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:14px 16px;border:0;background:transparent;min-height:54px}
.lab-science .visual-copy{display:none}
.lab-science :is(.visual-constant,.medium-pill,.legend,.readout-chip,.visual-key){font:400 12px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-science :is(.evidence-panel,.work-panel,.evidence-side,.work-side,.workbench){min-width:0;min-height:0;height:auto;max-height:none;overflow:visible;padding:16px;border:0;border-left:1px solid var(--lab-line-subtle);background:transparent;display:flex;flex-direction:column;gap:12px}
.lab-science :is(.evidence-section,.side-section,.relationship-card,.invariants,.phase-card,.working-dock,.phase-panel,.work-step,.round-result,.free-panel){padding:12px;border:1px solid var(--lab-line-subtle);border-radius:10px;background:var(--lab-surface-muted);box-shadow:none;min-height:0}
.lab-science :is(.phase-panel,.phase-card.needs-action,.work-step.current){border-color:var(--lab-needed-line);background:var(--lab-needed-surface)}
.lab-science :is(.phase-panel.success,.work-step.good,.round-result,.result-card.good){border-color:var(--lab-good-line);background:var(--lab-good-surface)}
.lab-science .work-step.locked{opacity:1;background:var(--lab-surface-muted);border-color:var(--lab-line-subtle)}
.lab-science .work-step.locked>:not(.step-head){display:none}
.lab-science .work-step:has(input) .status-pill{display:none}
.lab-science :is(.evidence-head,.side-heading,.work-head,.working-head){padding:0 0 10px;margin:0;border:0;background:none}
.lab-science :is(.phase-panel h2,.workbench h2,.phase-card h2,.side-heading strong,.evidence-head strong,.step-head strong,.work-head strong,.working-head strong,.relationship-card h3,.invariants h3,.science-observations h3){font:400 15px/1.4 var(--lab-font-sans);letter-spacing:normal;text-transform:none;margin:0 0 6px;color:var(--lab-ink)}
.lab-science :is(p,.step-copy,.coach-copy,.stage-card-copy,.result-card,.feedback-card,.round-result>span,.action-stat strong,.phase-evidence,.phase-insight,.prediction-check,.environment-meaning,.comparison-insight,.condition-card,.working-feedback,.relationship-sentence){font:400 14px/1.45 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-science :is(.evidence-head>span,.work-head>span,.side-heading>span,.model-note,.source-basis,.trait-band-caption,.mini-stat>span,.live-card>span,.live-cell>span,.stat>span,.work-label,.invariant>span,.readout>span,.measure-label,.phase-progress){font:400 11px/1.45 var(--lab-font-sans);letter-spacing:normal;text-transform:none}
.lab-science :is(.mini-stat strong,.live-card strong,.live-cell strong,.metric strong,.readout strong,.invariant strong,.chain-step strong,.work-value,.answer-value){font:400 14px/1.4 var(--lab-font-sans);letter-spacing:normal}
.lab-science :is(strong,b){font-weight:400}
.lab-science :is(.live-grid,.screen-data,.metrics,.invariant-grid){gap:8px}
.lab-science :is(.live-card,.live-cell,.mini-stat,.invariant,.work-given,.action-stat,.free-stat){padding:8px;border:0;border-radius:6px;background:var(--lab-surface)}
.lab-science :is(.prediction-options,.prediction-grid,.prediction-row,.choice-grid){display:grid;grid-template-columns:1fr;gap:8px;padding:0;border:0;background:none;box-shadow:none;outline:0;animation:none}
.lab-science :is(.prediction-options,.prediction-grid,.prediction-row,.choice-grid)>button{display:block;min-height:40px;padding:9px 12px;text-align:left;white-space:normal;font:400 14px/1.4 var(--lab-font-sans);border:1px solid var(--lab-line);border-radius:8px;background:var(--lab-surface);color:var(--lab-ink);box-shadow:none}
.lab-science :is(.prediction-options,.prediction-grid,.prediction-row,.choice-grid)>button:is(.selected,[aria-pressed="true"]){background:var(--lab-accent-soft);border-color:var(--lab-accent-line)}
.lab-science :is(.phase-actions,.result-actions,.calc-actions,.free-actions,.coach-actions){display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.lab-science :is(.phase-actions,.result-actions,.calc-actions,.free-actions,.coach-actions)>button{white-space:normal}
.lab-science :is(.step-num,.journal-index){display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0;border-radius:50%;font:400 11px/1 var(--lab-font-sans)}
.lab-science .step-head{gap:8px;margin-bottom:8px}
.lab-science :is(input[type="number"],input[type="text"]){min-height:38px;padding:7px 9px;font:400 14px/1.4 var(--lab-font-sans);border:1px solid var(--lab-needed-line);border-radius:6px;background:var(--lab-needed-surface)}
.lab-science input.good{background:var(--lab-good-surface);border-color:var(--lab-good-line)}
.lab-science input.bad{background:var(--lab-bad-surface);border-color:var(--lab-bad-line)}
.lab-science :is(.feedback.bad,.feedback-card.bad){background:var(--lab-bad-surface);border-color:var(--lab-bad-line);color:var(--lab-bad-ink)}
.lab-science :is(.feedback.good,.feedback-card.good){background:var(--lab-good-surface);border-color:var(--lab-good-line);color:var(--lab-good-ink)}
.lab-science :is(.worked-line strong,.formula-choice span,.term,.work-number){display:inline-block;padding:3px 7px;border:0;border-radius:4px;background:color-mix(in srgb,var(--lab-concept-violet) 20%,white);font:400 14px/1.45 var(--lab-font-sans)}
.lab-science :is(.guide-card,.interaction-guide,.prediction-guide,.action-strip .mini-guide){display:none!important}
.lab-science svg text{font-family:var(--lab-font-sans)!important;font-weight:400!important;letter-spacing:normal!important;font-size:var(--lab-chart-text-size,14px)!important;text-shadow:none!important;text-transform:none}
.lab-science .stage-readout{padding:12px 16px;gap:8px;background:none;border:0}
.lab-science .readout{padding:8px;border:0;background:var(--lab-surface-muted);border-radius:6px}
.lab-science .next-card{position:absolute!important;min-height:0;max-width:320px;z-index:30}
/* Lens: current task beside apparatus; observation history uses space beneath it. */
.science-lens #phaseDock{position:static;height:auto;flex:none;overflow:visible;border:0;padding:0;background:none}
.science-lens .phase-panel{position:static;inset:auto;overflow:visible}
.science-lens .prediction-options>button::before{display:none}
.science-lens :is(.phase-panel-grid,.action-grid,.success-grid,.free-grid){display:grid;grid-template-columns:1fr;gap:10px}
.science-lens .stage-note,.science-lens .phase-progress{display:none}
.science-lens .evidence-section:has(>.evidence-head:only-child){display:none}
.science-lens .science-observations{margin:16px;padding:12px;border-top:1px solid var(--lab-line-subtle)}
.science-lens .journal{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.science-lens .journal-row{padding:10px;border-radius:8px;font-size:12px;background:var(--lab-surface-muted)}
.science-lens :is(.journal-copy,.journal-cause,.journal-result){font:400 12px/1.4 var(--lab-font-sans)}
.science-lens :is(.prediction-context,.prediction-check,.action-record,.phase-evidence,.phase-insight){padding:8px 0;border:0;background:none;font-size:12px}
.science-lens :is(.ray-rail-sub,.drag-cue-label,.measure-title){display:none}
.science-lens .ray-rail-copy{font-size:15px}.science-lens .landmark-value{font-size:14px}
.science-lens .measure-value{font-size:17px}
/* Critical angle: keep live ray measurements and the four linked learner steps. */
.science-critical .process-rail,.science-critical .causal-dock{display:none}
.science-critical .stage-note{padding:12px 16px;border:0;font-size:14px}
.science-critical .stage-note-copy{font:400 14px/1.45 var(--lab-font-sans)}
.science-critical .stage-note-state{font:400 12px/1.4 var(--lab-font-sans);padding:4px 8px;border-radius:6px}
.science-critical .observe-item{padding:8px;border:0;background:var(--lab-surface);font-size:12px}
.science-critical :is(.mark-row,.calc-field){display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.science-critical .calc-field input{width:100px}.science-critical .calc-field label{font-size:14px}
.science-critical .status-pill,.science-critical .power-sub{display:none}
/* Diffraction: retain the tank / calculation grid and usable alternative controls. */
.science-diffraction .lab.panel{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-template-areas:'head head' 'stage work' 'controls work';align-items:start}
.science-diffraction .stage-shell{grid-area:stage}
.science-diffraction .workbench{grid-area:work}
.science-diffraction .visual-head{grid-area:head}.science-diffraction .controls{grid-area:controls;padding:12px;display:grid;grid-template-columns:1fr 1fr;gap:12px;background:none}
.science-diffraction .stage-frame{aspect-ratio:760/360}
.science-diffraction .stage-frame>canvas,.science-diffraction .stage-frame>svg{width:100%!important;height:100%!important;min-width:0!important}
.science-diffraction .prediction-map{display:none}
.science-diffraction .control-card{padding:10px;border:0;background:var(--lab-surface-muted);border-radius:8px;font-size:12px}
.science-diffraction :is(.control-card strong,.control-card span,.readouts b){font-size:12px;font-weight:400}
.science-diffraction .control-card.consequence{grid-column:1/-1}
.science-diffraction :is(.coach-copy,.action-strip,.evidence-head>span,.control-note,.model-note){display:none}
.science-diffraction :is(.challenge-grid,.working-grid){grid-template-columns:1fr;gap:10px}
.science-diffraction .working-box,.science-diffraction .evidence{padding:12px;border:0;background:var(--lab-surface-muted);border-radius:8px}
.science-diffraction .evidence-item{padding:8px 0;border:0;font:400 12px/1.4 var(--lab-font-sans)}
/* Gas: balance the instrument with calculation, retaining the causal chain underneath. */
.science-gas .relationship-card{margin:12px 16px}
.science-gas .change-chain{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.science-gas .chain-step{padding:8px;border:0;flex:1;background:var(--lab-surface);font-size:12px}
.science-gas .chain-arrow{display:none}
.science-gas :is(.working-head>span,.working-head p,.prediction-note,.equation-unlock:empty){display:none}
.science-gas .work-flow{display:grid;gap:8px}
.science-gas .work-cell{padding:8px;border:0;background:var(--lab-surface);border-radius:6px}
.science-gas .work-cell :is(label,span){font-size:12px;font-weight:400}
.science-gas .completion-layer{position:static;background:none;pointer-events:none}
.science-gas .completion-card{position:static;width:auto;margin:12px 0 0;padding:12px;box-shadow:none;pointer-events:auto;background:var(--lab-good-surface);border-color:var(--lab-good-line)}.science-gas .completion-kicker{display:none}
.science-gas .completion-card.reflect{background:var(--lab-needed-surface);border-color:var(--lab-needed-line)}
.science-gas .completion-card>strong{font:400 15px/1.4 var(--lab-font-sans)}
.science-gas .completion-card>span,.science-gas .completion-evidence{font:400 12px/1.45 var(--lab-font-sans)}
.science-gas .completion-evidence{padding:8px 0;border:0;background:none}
.science-gas :is(.bath-sub,.gauge-sub,.impact-sub,.pv-sub,.drag-label){display:none}
/* Selection: retain the linked environment/population/histogram; current decisions live beside it. */
.science-selection :is(.workspace,.stage-side,.work-side){height:auto!important;min-height:0!important;max-height:none!important}
.science-selection .stage-shell{height:auto!important;aspect-ratio:960/530;overflow:visible!important}
.science-selection #stageCard{position:static!important;transform:none!important;width:auto!important;height:auto!important;max-height:none;overflow:visible;min-height:0;padding:12px;border:1px solid var(--lab-needed-line);border-radius:10px;background:var(--lab-needed-surface);box-shadow:none;margin:0}
.science-selection #stageCard.success{border-color:var(--lab-good-line);background:var(--lab-good-surface)}
.science-selection :is(.stage-card-kicker,.challenge-label,.stage-card-close,#challengeNav){display:none!important}
.science-selection .stage-card-head strong{font:400 15px/1.4 var(--lab-font-sans)}
.science-selection :is(.claim-options,.stage-card-actions){display:grid;grid-template-columns:1fr;gap:8px;margin-top:10px}
.science-selection :is(.claim-options,.stage-card-actions)>button{padding:9px 12px;min-height:40px;white-space:normal;text-align:left;font:400 14px/1.4 var(--lab-font-sans)}
.science-selection :is(.signal-strip,.next-choice-signal,.next-action-signal){animation:none;box-shadow:none;outline:0}
.science-selection :is(.meaning-grid,.trait-band-strip){gap:8px}
.science-selection :is(.meaning-item,.trait-band){padding:8px;font-size:12px;border:0;border-radius:6px}
.science-selection :is(.meaning-item strong,.meaning-item span,.trait-band strong,.trait-band span){font-size:12px;font-weight:400;letter-spacing:normal}
.science-selection .metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.science-selection .metric{padding:10px;border-radius:6px}
.science-selection .metric :is(span,small){font-size:11px;line-height:1.4;letter-spacing:normal}
.science-selection .process-section{margin-top:0}.science-selection .generation-note{font:400 12px/1.4 var(--lab-font-sans)}
@media(max-width:960px){.lab-science .workspace{grid-template-columns:1fr}.lab-science :is(.evidence-panel,.work-panel,.evidence-side,.work-side,.workbench){border-left:0;border-top:1px solid var(--lab-line-subtle)}.science-diffraction .lab.panel{grid-template-columns:1fr;grid-template-areas:'head' 'stage' 'controls' 'work'}}
@media(max-width:600px){.lab-science .lab-activity-bar{padding:24px 16px 16px}.lab-science .visual-head{padding:12px}.science-lens .journal{grid-template-columns:1fr}.science-diffraction .controls{grid-template-columns:1fr}.lab-science .stage-readout{display:grid;grid-template-columns:1fr 1fr}}
.lab-science main{height:auto!important;max-height:none;overflow:visible!important}
.lab-science :is(.mission-meta,.work-level-pill){display:none}
.lab-science :is(.prediction-options,.prediction-row)>button::before{display:none}
.lab-science :is(.prediction-row,.prediction-options)>button{padding-left:12px}
.lab-science .science-secondary{display:none!important}
.science-lens :is(.journal-copy strong,.journal-copy span,.live-item strong,.live-item span){font:400 12px/1.45 var(--lab-font-sans)}
.science-lens .live-item{padding:8px;border:0;background:var(--lab-surface);border-radius:6px}
.science-lens .screen-overlay{font:400 11px/1.4 var(--lab-font-sans);text-align:center}
.science-lens .screen-card{border:0;background:none;padding:0}
.science-lens .stage-side{border:0;box-shadow:none;border-radius:0}
.science-critical :is(.observe-item span,.observe-item small,.medium-chip,.live-reading span){font:400 12px/1.4 var(--lab-font-sans)}
.science-diffraction :is(.workbench-grid,.coach,.evidence){display:block;height:auto!important;max-height:none!important;overflow:visible;grid-template-rows:none!important}
.science-diffraction .evidence{margin-top:12px;display:block!important}
.science-diffraction .coach{padding:12px;border:1px solid var(--lab-needed-line);border-radius:10px;background:var(--lab-needed-surface)}
.science-diffraction .evidence-row{padding:10px;border:0;border-radius:6px;background:var(--lab-surface);margin-top:8px}
.science-diffraction .evidence-row strong{font:400 12px/1.4 var(--lab-font-sans)}
.science-diffraction .live-line{display:none}
.science-diffraction :is(.work-field,.target){padding:8px;border:0;border-radius:6px;background:var(--lab-surface)}
.science-diffraction :is(.work-field>span,.target strong,.target span,.working-hint){font:400 12px/1.4 var(--lab-font-sans)}
.science-diffraction .work-auto{font:400 14px/1.4 var(--lab-font-sans)}
.science-selection .stage-side{display:block}
.science-selection #challengeSteps{display:none}
.science-selection :is(.lab-manifest-subtitle,.mission-copy>span){white-space:normal;max-height:none}
.science-selection .meaning-grid>div{padding:8px;border:0;background:var(--lab-surface);border-radius:6px}
.science-selection :is(.meaning-grid strong,.meaning-grid span,.metric-label,.metric small,.band-values b,.band-values em){font:400 12px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.science-selection .trait-band-strip{grid-template-columns:1fr}
.science-selection .trait-band{display:flex;align-items:center;justify-content:space-between}
.science-selection .trait-band-copy strong{font:400 12px/1.4 var(--lab-font-sans);text-transform:none}
.science-selection .trait-band-copy span{display:none}
.science-gas :is(.work-cell strong,.work-cell input,.equation-line,.equation-unlock){font:400 14px/1.45 var(--lab-font-sans)}
.science-gas :is(.work-cell label,.chain-step span){font:400 12px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.science-gas .equation-line{padding:6px 8px;border:0;border-radius:6px;background:color-mix(in srgb,var(--lab-concept-violet) 20%,white)}
.science-gas .equation-unlock:not(.open){display:none}
.science-gas .working-feedback{border:0;padding:8px 0;background:none}
html:has(body.lab-science),body.lab-science{height:auto;overflow:visible}
.lab-science .science-support{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;margin:16px}
.lab-science .science-support>.side-section{margin:0}
.science-selection .mission{border-radius:12px 12px 0 0!important}
.science-selection .lab{border-radius:0 0 12px 12px!important}
.science-selection :is(.metric>span,.metric .delta,.preview-key,.process-step strong,.process-step span){font:400 12px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.science-selection .process-rail{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.science-selection .process-step{padding:10px;border-radius:6px}
.science-selection .preview-key{padding:0 0 8px}
.science-selection .metric .delta{font-size:11px}
.science-gas .working-head span{display:none}
.science-gas .work-box{padding:8px;border:0;border-radius:6px;background:color-mix(in srgb,var(--lab-concept-violet) 16%,white)}
.science-gas .work-box>span{font:400 12px/1.4 var(--lab-font-sans);text-transform:none;letter-spacing:normal}
.science-gas .work-box strong{font:400 14px/1.4 var(--lab-font-sans)}
@media(max-width:600px){.lab-science .science-support{grid-template-columns:1fr}.lab-science .workspace{min-width:0!important}.lab-science .mission{min-width:0!important}}
.lab-science .science-support>.side-section{grid-area:auto!important;min-width:0}
.science-selection .bin-label{display:none}
.science-gas #impactExplanation{display:none}
.science-gas .completion-evidence{font:400 12px/1.45 var(--lab-font-sans);border:0;padding:8px;background:var(--lab-surface);border-radius:6px}
.science-gas .completion-actions{justify-content:center;gap:8px}
.science-selection .history-row{padding:7px 8px;font:400 11px/1.4 var(--lab-font-sans);border:0;background:var(--lab-surface);border-radius:6px}
/* Science review: clear first decisions, direct grips, and compact comparison evidence. */
.lab-adopt-v3 .lab-sequence-target{animation:workingAttention 2s ease-in-out infinite;border-color:var(--lab-needed-line)}
.lab-adopt-v3 button.lab-sequence-target:not(:disabled){animation:lab-run-attention 1.8s ease-in-out infinite;border-color:var(--lab-accent)}
.lab-adopt-v3 svg .lab-sequence-target{animation:labSvgIntroAttention 2s ease-in-out infinite}
.science-critical .live-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 4px}
.science-critical .live-card{padding:12px;border:0;border-radius:8px;background:var(--lab-surface-muted)}
.science-critical .live-card.incident{background:color-mix(in srgb,var(--lab-concept-amber) 18%,white)}
.science-critical .live-card.refracted{background:var(--lab-accent-soft)}
.science-critical .live-card.critical-readout{background:var(--lab-surface-muted)}
.science-critical .live-card.power{background:color-mix(in srgb,var(--lab-concept-violet) 18%,white)}
.science-critical .live-card>span{font:400 12px/1.4 var(--lab-font-sans);color:var(--lab-ink-secondary)}
.science-critical .live-card>strong{display:block;margin:6px 0;font:400 16px/1.35 var(--lab-font-sans);color:var(--lab-ink)}
.science-critical .live-card>small{font:400 11px/1.4 var(--lab-font-sans);color:var(--lab-ink-secondary)}
.science-lens .stage :is(.object-label,.screen-label){display:block;fill:var(--lab-ink);paint-order:stroke;stroke:white;stroke-width:4px;stroke-linejoin:round}
.science-lens .stage :is(.focus-rail-sub,.landmark-side){display:none}
.science-lens .drag-cue{opacity:1;pointer-events:all;cursor:grab}.science-lens .drag-cue.active{animation:none;filter:none}
.science-lens .drag-cue-text{fill:var(--lab-ink)!important;stroke:none!important;text-transform:none}
.science-lens .locked-control .drag-cue{opacity:.65;pointer-events:none}
.science-lens .drag-cue-bg{fill:white;stroke-width:2}
.science-lens .drag-cue.active .drag-cue-bg{fill:var(--lab-accent-soft);stroke:var(--lab-accent)}
.science-lens .stage :is(.object-grip,.screen-handle){opacity:0}
.science-lens .focus-rail-label{fill:var(--lab-ink)}
.science-diffraction .lab.panel{grid-template-areas:'head head' 'stage work'}
.science-diffraction :is(.gap-handle,.lambda-handle){fill:white;stroke:var(--lab-accent);stroke-width:3px}
.science-diffraction :is(.gap-handle-halo,.lambda-handle-halo){fill:var(--lab-accent-soft);stroke:var(--lab-accent-line)}
.science-diffraction .gap-label-bg{fill:white;stroke:var(--lab-accent-line);stroke-width:1}
.science-diffraction .gap-label{fill:var(--lab-ink)}
.science-selection main{gap:0}
.science-selection .stage-shell{aspect-ratio:960/650}
.science-selection .science-support{grid-template-columns:1fr;margin:8px 16px 16px;align-items:start}
.science-selection :is(.meaning-section,.preview-key,.trait-band-caption){display:none!important}
.science-selection .science-support .side-heading{padding-bottom:6px}
.science-selection .preview-metrics{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.science-selection .metric{padding:8px}.science-selection .metric .delta{display:none}
.science-selection .history{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.science-selection .history-row{flex:1;font-size:11px}.science-selection .history-row:nth-child(n+2){display:none}
.science-selection .trait-bird{width:46px;height:28px}
.science-selection .trait-band-top{grid-template-columns:46px minmax(0,1fr);gap:8px}
.science-selection .stage .bar-current{opacity:1;stroke:var(--lab-accent);stroke-width:1.3px}
.science-selection .stage .bar-parent{fill:none;fill-opacity:0;stroke:var(--lab-concept-violet);stroke-width:3px}
.science-selection .stage .bar-current.band-low{fill:color-mix(in srgb,var(--lab-accent) 55%,white)}
.science-selection .stage .bar-current.band-mid{fill:color-mix(in srgb,var(--lab-accent) 78%,white)}
.science-selection .stage .bar-current.band-high{fill:var(--lab-accent)}
@media(max-width:960px){.science-diffraction .lab.panel{grid-template-areas:'head' 'stage' 'work'}.science-selection .preview-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.lab-adopt-v3 .lab-sequence-target{animation:none!important}.lab-adopt-v3 svg .lab-sequence-target{filter:drop-shadow(0 0 3px var(--lab-accent))}}

/* Parity workbench: align configuration, keep frame actions and live state near the matrices. */
.sim-parity-arq .parity-settings{display:grid;grid-template-columns:minmax(170px,1fr) 150px 140px minmax(160px,auto) auto;align-items:end;gap:12px;padding-bottom:10px}
.sim-parity-arq .parity-settings .field{display:flex;flex-direction:column;gap:6px}
.sim-parity-arq .parity-settings :is(input[type=text],select){width:100%;height:40px;min-height:40px;margin:0}
.sim-parity-arq .parity-settings .switch-line{height:40px;margin:0;white-space:nowrap}
.sim-parity-arq .parity-settings #resetAll{margin:0;align-self:end;min-height:40px}
.sim-parity-arq .parity-actions{display:flex;justify-content:space-between;gap:12px;margin:0;padding:8px 24px 12px;border:0;border-radius:0;background:white}
.sim-parity-arq .parity-actions .lab-tool-buttons{display:flex;gap:8px;flex-wrap:wrap}
.sim-parity-arq .transmission-head{align-items:center;gap:12px;flex-wrap:wrap}
.sim-parity-arq #phaseLabel{margin:0;font:400 14px/1.4 var(--lab-font-sans);color:var(--lab-ink-secondary)}
.sim-parity-arq .transmission-head .protocol{margin-left:auto;font-size:12px}
.sim-parity-arq .transmission-rail[hidden]{display:none!important}
.sim-parity-arq .transmission-rail :is(.rail-result,.decoded){margin:0;padding:10px 12px;min-height:0}
.sim-parity-arq .transmission-rail .decoded{gap:4px 10px;align-content:start}
.sim-parity-arq .parity-footnotes{padding:0 24px 16px;background:var(--lab-surface);border:1px solid var(--lab-line);border-top:0;border-radius:0 0 12px 12px}
.sim-parity-arq .parity-footnotes .meta{border:0;padding:8px 0;min-height:0;gap:12px}
.sim-parity-arq .parity-key{font:400 11px/1.4 var(--lab-font-sans)}
.sim-parity-arq .parity-footnotes details{font:400 12px/1.45 var(--lab-font-sans);color:var(--lab-muted)}
.sim-parity-arq .parity-footnotes summary{cursor:pointer;width:fit-content;color:var(--lab-accent-ink)}
.sim-parity-arq .parity-footnotes p{margin:8px 0}
.sim-parity-arq .parity-footnotes .stream-preview{max-width:none;white-space:normal;overflow-wrap:anywhere;text-align:left}
@media(max-width:1000px){.sim-parity-arq .parity-settings{grid-template-columns:minmax(160px,1fr) 1fr 1fr}.sim-parity-arq .parity-settings #resetAll{grid-column:3}.sim-parity-arq .parity-settings .switch-line{grid-column:1/3}}
@media(max-width:700px){.sim-parity-arq .parity-settings{grid-template-columns:1fr 1fr}.sim-parity-arq .parity-settings .field:first-child{grid-column:1/-1}.sim-parity-arq .parity-settings #resetAll{grid-column:2}.sim-parity-arq .parity-settings .switch-line{grid-column:1;white-space:normal}.sim-parity-arq .transmission-rail{grid-template-columns:1fr}.sim-parity-arq .parity-actions{padding:8px 16px 12px;flex-wrap:wrap}.sim-parity-arq .parity-footnotes{padding:0 16px 12px}}

/* LAB_DISCOVERY_STYLES_START */
/* Visual-discovery shell: shared presentation only; models remain lab-local. */
.lab-discovery{
  --accent:var(--lab-accent,#5277b8);
  --soft:var(--lab-concept-blue-fill,#d7e2f0);
  --muted:var(--lab-muted,#6e6e73);
  --line:var(--lab-line,#d2d2d7);
  --ink:var(--lab-ink,#1d1d1f);
  --lab-concept-blue:#4779b7;
  --lab-concept-blue-line:#9fb8d7;
  --lab-concept-blue-soft:#eaf1fa;
  --lab-concept-blue-ink:#345f91;
  --lab-concept-blue-fill:color-mix(in srgb,var(--lab-concept-blue) 30%,var(--lab-surface,#fff));
  --lab-concept-teal:#2d8792;
  --lab-concept-teal-line:#96c7cb;
  --lab-concept-teal-soft:#e8f6f6;
  --lab-concept-teal-ink:#236a72;
  --lab-concept-teal-fill:color-mix(in srgb,var(--lab-concept-teal) 30%,var(--lab-surface,#fff));
  --lab-concept-violet:#7563a7;
  --lab-concept-violet-line:#b7add2;
  --lab-concept-violet-soft:#f2eef9;
  --lab-concept-violet-fill:color-mix(in srgb,var(--lab-concept-violet) 30%,var(--lab-surface,#fff));
  --lab-concept-amber:#c9782c;
  --lab-concept-amber-line:#e0b383;
  --lab-concept-amber-fill:color-mix(in srgb,var(--lab-concept-amber) 30%,var(--lab-surface,#fff));
  --lab-concept-rose:#b85f52;
  --lab-concept-slate:#536773;
  --lab-concept-slate-line:#b1bec5;
  --lab-concept-slate-soft:#eef2f4;
  --lab-concept-slate-ink:#34454f;
  --lab-concept-slate-fill:color-mix(in srgb,var(--lab-concept-slate) 30%,var(--lab-surface,#fff));
  --lab-warn:var(--lab-needed,#946200);
  --lab-warn-ink:var(--lab-needed-ink,#735100);
  --lab-warn-line:var(--lab-needed-line,#d8c36a);
  --lab-warn-soft:var(--lab-needed-soft,#fff9db);
  width:calc(100% - 36px);
  max-width:1100px;
  margin:12px auto;
  padding:16px 20px;
  background:var(--lab-surface,#fff);
  border:1px solid var(--lab-line,#d2d2d7);
  border-radius:var(--lab-panel-radius,12px);
}
body>main[data-lab-workspace]>.lab-discovery{width:100%;max-width:none;margin:0}
.lab-discovery *{box-sizing:border-box}
.lab-discovery button,.lab-discovery input,.lab-discovery select{font-family:inherit}
.lab-discovery button{cursor:pointer}
.lab-discovery button:disabled{cursor:default}
.lab-discovery .lesson-head.lab-context{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;min-height:0;padding:10px 14px;margin:0 0 8px;gap:4px 12px;align-items:start}
.lab-discovery .lesson-meta{grid-column:1;grid-row:1;display:flex;align-items:center;gap:12px;min-height:28px;min-width:0;flex-wrap:wrap}
.lab-discovery .step-label{display:block;margin:0;font:400 12px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245)}
.lab-discovery .lesson-head .lab-checkpoints{grid-area:auto;padding:0;gap:6px;flex:none}
.lab-discovery .lab-checkpoint{display:block;width:11px;min-width:11px;height:11px;min-height:11px;padding:0;border:1px solid var(--lab-line-strong,#a7a7ad);border-radius:50%;background:#fff;opacity:1;box-shadow:none}
.lab-discovery .lab-checkpoint[aria-current=true]{border-color:var(--lab-accent,#5277b8);background:var(--lab-accent-soft,#eef2fa);box-shadow:inset 0 0 0 2px #fff}
.lab-discovery .lab-checkpoint[data-complete=true]{background:var(--lab-good,#18794e);border-color:var(--lab-good,#18794e)}
.lab-discovery .lesson-head .mission-copy{grid-column:1/-1;grid-row:2;display:block;min-width:0}
.lab-discovery .lesson-head.lab-context #title{font:600 18px/1.35 var(--lab-font-sans,sans-serif);margin:0 0 3px;max-width:60ch;color:var(--lab-accent-ink,#315b91)}
.lab-discovery .lesson-head.lab-context .intro{font:400 14px/1.4 var(--lab-font-sans,sans-serif);margin:0;max-width:85ch;color:var(--lab-ink-secondary,#424245)}
.lab-discovery .stage-wrap{position:relative;margin-top:4px;height:360px}
.lab-discovery .stage{display:block;width:100%;height:100%;overflow:visible;touch-action:pan-y}
.lab-discovery .stage text{font:400 14px var(--lab-font-sans,sans-serif);fill:var(--lab-ink,#1d1d1f)}
.lab-discovery .stage .small{font-size:12px;fill:var(--lab-ink-secondary,#424245)}
.lab-discovery .stage .big{font-size:24px;font-weight:400}
.lab-discovery .stage .accent{fill:var(--lab-accent-ink,#315b91)}
.lab-discovery .stage .model-control{cursor:grab;touch-action:none}
.lab-discovery .stage .model-control:active{cursor:grabbing}
.lab-discovery .stage .clickable{cursor:pointer}
.lab-discovery .stage .hair{stroke:var(--lab-line,#d2d2d7);stroke-width:1}
.lab-discovery .stage .handle{fill:#fff;stroke:var(--lab-accent,#5277b8);stroke-width:2}
.lab-discovery .stage .ghost{fill:none;stroke:var(--lab-concept-violet,#7563a7);stroke-width:1.5;stroke-dasharray:5 5;opacity:.75}
.lab-discovery .stage [data-control]:focus-visible{outline:2px solid var(--lab-accent,#5277b8);outline-offset:3px}
.lab-discovery .controls{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:10px;min-height:40px;margin-top:8px;font:400 14px/1.45 var(--lab-font-sans,sans-serif)}
.lab-discovery .controls:empty{display:none}
.lab-discovery .controls label{display:flex;align-items:center;gap:8px}
.lab-discovery .controls input[type=number]{width:84px;min-height:40px;padding:8px;border:1px solid var(--lab-needed-line,#d8c36a);border-radius:8px;background:var(--lab-needed-surface,#fffdf4);color:var(--lab-ink,#1d1d1f);font:400 14px var(--lab-font-sans,sans-serif);text-align:center}
.lab-discovery .controls input.good{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-discovery .controls input.bad{border-color:var(--lab-bad-line,#d99b93);background:var(--lab-bad-surface,#fff8f7)}
.lab-discovery .controls select{max-width:150px;min-height:40px;padding:8px 28px 8px 12px;border:1px solid var(--lab-line,#d2d2d7);border-radius:8px;background:#fff;font:400 12px var(--lab-font-sans,sans-serif);color:var(--lab-ink,#1d1d1f);box-shadow:0 1px 3px rgba(29,29,31,.08)}
.lab-discovery .controls input[type=range]{width:130px;accent-color:var(--lab-accent,#5277b8)}
.lab-discovery .controls .choice[aria-pressed=true]{background:var(--lab-accent-soft,#eef2fa);border-color:var(--lab-accent,#5277b8);color:var(--lab-accent-ink,#315b91)}
.lab-discovery .context:empty{display:none}
.lab-discovery .context{margin:14px 0 0;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
.lab-discovery .learning-work{max-width:800px;margin:8px auto;padding:10px 14px}
.lab-discovery .learning-work,.lab-discovery .learning-work[data-work-state]{background:var(--lab-surface,#fff);border:1px solid var(--lab-line,#d2d2d7);box-shadow:none;animation:none}
.lab-discovery .work-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px;margin-bottom:10px}
.lab-discovery .learning-work .work-heading h2{margin:0;font:600 14px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink,#1d1d1f)}
.lab-discovery .work-steps{display:flex;gap:16px 24px;align-items:flex-start;flex-wrap:wrap}
.lab-discovery .work-step{flex:1;min-width:180px}
.lab-discovery .work-label{display:block;font:400 12px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-muted,#6e6e73);margin-bottom:7px}
.lab-discovery .work-expression{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font:400 15px/1.7 var(--lab-font-sans,sans-serif);font-variant-numeric:tabular-nums}
.lab-discovery .work-note{font:400 12px/1.5 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245);margin:8px 0 0}
.lab-discovery .work-note:empty,.lab-discovery .work-actions:empty{display:none}
.lab-discovery .work-actions{display:flex;gap:8px;margin-top:12px}
.lab-discovery .learning-work input{width:86px;min-height:40px;padding:6px 8px;background:var(--lab-needed-surface,#fffdf4);border:1px solid var(--lab-needed-line,#d8c36a);border-radius:var(--lab-control-radius,8px);font:400 15px var(--lab-font-sans,sans-serif);text-align:center;color:var(--lab-ink,#1d1d1f)}
.lab-discovery .learning-work input.good{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-soft,#edf8f1)}
.lab-discovery .learning-work input.bad{border-color:var(--lab-bad-line,#d99b93);background:var(--lab-bad-soft,#fff0ee)}
.lab-discovery .learning-work input:focus-visible,.lab-discovery .learning-work:focus-visible{outline:2px solid var(--lab-accent,#5277b8);outline-offset:2px}
.lab-discovery .trace-button.lab-action{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:4px 7px;border-color:transparent;box-shadow:none;background:transparent;white-space:nowrap}
.lab-discovery .trace-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.lab-discovery .trace-button:hover{background:var(--lab-accent-soft,#eef2fa)}
.lab-discovery .work-expression .linked-term{display:inline-block;padding:0 2px;border-radius:3px;text-decoration:underline dotted var(--lab-line-strong,#a7a7ad);text-underline-offset:5px;cursor:help}
.lab-discovery .linked-term.linked-focus,.lab-discovery .linked-term.value-arrived{background:var(--lab-accent-soft,#eef2fa);color:var(--lab-accent-ink,#315b91);text-decoration-color:var(--lab-accent,#5277b8)}
.lab-discovery .linked-term:focus-visible{outline:1.5px solid var(--lab-accent,#5277b8);outline-offset:3px}
.lab-discovery .stage .value-source{cursor:help;outline:none}
.lab-discovery .stage .source-hit{fill:transparent;stroke:transparent;stroke-width:1}
.lab-discovery .stage .source-underline{stroke:var(--lab-line-strong,#a7a7ad);stroke-width:1;stroke-dasharray:1 3;opacity:.75}
.lab-discovery .stage .value-source:is(:hover,:focus-visible,.linked-focus) .source-hit{fill:var(--lab-accent-soft,#eef2fa);stroke:var(--lab-accent-line,#9fb4d6)}
.lab-discovery .stage [data-help]{cursor:help}
.lab-discovery .stage .model-control[data-help]{cursor:grab}
body>.lab-discovery-value-tooltip{position:fixed;z-index:60;max-width:min(265px,calc(100vw - 16px));padding:9px 12px;border:1px solid var(--lab-line,#d2d2d7);border-radius:8px;background:var(--lab-surface,#fff);box-shadow:0 4px 14px rgba(29,29,31,.1);color:var(--lab-ink-secondary,#424245);font:400 12px/1.5 var(--lab-font-sans,sans-serif);pointer-events:auto}
body>.lab-discovery-connection-layer{position:fixed;inset:0;z-index:40;pointer-events:none;overflow:hidden}
body>.lab-discovery-connection-layer .connection-halo{position:absolute;display:block;border:1.5px solid var(--lab-accent,#5277b8);border-radius:6px;background:color-mix(in srgb,var(--lab-accent,#5277b8) 9%,transparent);box-shadow:0 0 0 4px color-mix(in srgb,var(--lab-accent,#5277b8) 9%,transparent);opacity:.65}
body>.lab-discovery-connection-layer .connection-halo.destination{background:transparent}
body>.lab-discovery-connection-layer .travelling-value{position:absolute;top:0;left:0;padding:3px 7px;border:1px solid var(--lab-accent-line,#9fb4d6);border-radius:4px;background:var(--lab-surface,#fff);color:var(--lab-accent-ink,#315b91);font:400 14px/1.4 var(--lab-font-sans,sans-serif);box-shadow:0 2px 8px rgba(29,29,31,.08);white-space:nowrap}
.lab-discovery .checkpoint-part{position:relative;min-width:0;overflow:clip}
.lab-discovery .checkpoint-model{position:absolute;top:0;left:0;width:100%;pointer-events:none}
.lab-discovery .learning-dock.foot{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 16px;margin:8px 0 0;padding:10px 12px;border:1px solid var(--lab-line,#d2d2d7);border-radius:10px;background:var(--lab-surface-muted,#f7f8fa)}
.lab-discovery .learning-dock[data-state=good]{border-color:var(--lab-good-line,#9cc7aa);background:var(--lab-good-surface,#f7fcf8)}
.lab-discovery .learning-dock[data-state=retry]{border-color:var(--lab-warn-line);background:var(--lab-warn-soft)}
.lab-discovery .outcome{flex:1;min-width:0;display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid transparent;border-radius:9px}
.lab-discovery .learning-dock .outcome,.lab-discovery .learning-dock .outcome[data-state]{min-height:0;padding:0;margin:0;border:0;background:transparent;border-radius:0}
.lab-discovery .outcome-symbol{width:27px;height:27px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.lab-discovery .outcome[data-state=good] .outcome-disc{fill:var(--lab-good,#18794e);stroke:none}
.lab-discovery .outcome[data-state=good] .success-mark{stroke:var(--lab-surface,#fff);stroke-width:2.1;stroke-dasharray:20;stroke-dashoffset:0;animation:labDiscoveryDrawSuccess 360ms ease-out}
.lab-discovery .outcome[data-state=good] .retry-mark,.lab-discovery .outcome[data-state=retry] .success-mark{display:none}
.lab-discovery .outcome>div{flex:1;min-width:0}
.lab-discovery .outcome-title{display:block;margin:0 0 3px;font:600 15px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink,#1d1d1f)}
.lab-discovery .outcome[data-state=good] .outcome-title{color:var(--lab-good-ink,#225f43)}
.lab-discovery .outcome[data-state=retry] .outcome-title,.lab-discovery .outcome[data-state=retry] .outcome-symbol{color:var(--lab-warn-ink)}
.lab-discovery .outcome[data-state=idle] .outcome-symbol,.lab-discovery .outcome[data-state=busy] .outcome-symbol{display:block;visibility:hidden}
.lab-discovery .feedback{flex:1;min-height:0;margin:0;font:400 14px/1.5 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245)}
.lab-discovery .feedback.good{color:var(--lab-good-ink,#225f43)}
.lab-discovery .feedback.retry{color:var(--lab-warn-ink)}
.lab-discovery .feedback::before{content:none}
.lab-discovery .dock-actions{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:0}
.lab-discovery .dock-navigation,.lab-discovery .dock-advance{display:flex;align-items:center;gap:8px;min-width:0}
.lab-discovery .dock-navigation .lab-action,.lab-discovery .dock-advance>#secondaryAction{background:transparent;border-color:transparent;box-shadow:none}
.lab-discovery .dock-navigation .lab-action:hover,.lab-discovery .dock-advance>#secondaryAction:hover{background:var(--lab-accent-soft,#eef2fa)}
.lab-discovery .dock-navigation .lab-action:disabled{opacity:.45}
.lab-discovery .primary-slot{width:170px;flex:none}
.lab-discovery .primary-slot>.lab-action{width:100%;min-height:48px;line-height:1.25;padding:9px 12px;white-space:normal}
.lab-discovery .hint-toggle[aria-expanded=true]{background:var(--lab-accent-soft,#eef2fa)}
.lab-discovery .evidence-help{max-width:none;margin:14px 0 0;padding:14px 0 0;border-top:1px solid var(--lab-line,#d2d2d7);font:400 14px/1.5 var(--lab-font-sans,sans-serif)}
.lab-discovery .evidence-help h2{margin:0 0 6px;font:600 13px/1.5 var(--lab-font-sans,sans-serif);color:var(--lab-ink,#1d1d1f)}
.lab-discovery .evidence-help p{margin:0;max-width:75ch;min-height:42px}
.lab-discovery .hint-navigation{display:flex;justify-content:space-between;gap:10px;margin-top:10px}
.lab-discovery .hint-navigation .lab-action{min-height:40px;background:transparent;box-shadow:none}
.lab-discovery [data-dock-action],.lab-discovery #workActions{display:none!important}
.lab-discovery .controls:not(:has(> :not([data-dock-action]))),.lab-discovery .context:not(:has(> :not([data-dock-action]))){display:none}
.lab-discovery .records{border-collapse:collapse;font:400 12px/1.45 var(--lab-font-sans,sans-serif);font-variant-numeric:tabular-nums;margin:16px auto 0;width:min(100%,650px)}
.lab-discovery .records th{font-weight:400;color:var(--lab-muted,#6e6e73)}
.lab-discovery .records td,.lab-discovery .records th{padding:7px 12px;text-align:right;border-bottom:1px solid var(--lab-line-subtle,#e7e8eb)}
.lab-discovery .records td:first-child,.lab-discovery .records th:first-child{text-align:left}
.lab-discovery .comparison-note{font-size:12px;line-height:1.5;max-width:800px;margin:8px auto;color:var(--lab-ink-secondary,#424245)}
.lab-discovery .reading-choice{min-width:36px;min-height:36px;border:1px solid var(--lab-line,#d2d2d7);background:var(--lab-surface,#fff);border-radius:6px;color:var(--lab-ink,#1d1d1f)}
.lab-discovery .reading-choice[aria-pressed=true]{border-color:var(--lab-accent,#5277b8);background:var(--lab-accent-soft,#eef2fa)}
.lab-discovery .selected-reading{background:var(--lab-surface-muted,#f7f8fa)}
.lab-discovery .comparison-ghost{fill:none;stroke:var(--lab-concept-slate);stroke-width:1.6;stroke-dasharray:5 4;pointer-events:none}
.lab-discovery .transfer-note{font-size:12px;color:var(--lab-muted,#6e6e73)}
.lab-discovery .material-choice{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--lab-muted,#6e6e73)}
.lab-discovery .material-choice select{font:400 12px var(--lab-font-sans,sans-serif);padding:10px 24px 10px 10px;min-height:40px;border:1px solid var(--lab-line,#d2d2d7);border-radius:8px;background:#fff;color:var(--lab-ink,#1d1d1f)}
.lab-discovery .material-swatch{width:12px;height:12px;border:1px solid var(--lab-line,#d2d2d7);border-radius:3px;display:inline-block}
.lab-discovery .material-change{min-height:40px;display:flex;align-items:center;gap:8px;font:400 12px/1.4 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245)}
.lab-discovery .stage .beam-flow{stroke-dasharray:5 32;animation:labDiscoveryBeamTravel 1.1s linear 2;pointer-events:none}
.lab-discovery .stage .material-piece{animation:labDiscoveryMaterialArrive .5s ease-out}
.lab-discovery .stage .offspring{pointer-events:none}
.lab-discovery .material-index{width:76px;min-height:34px;padding:5px 8px;border:1px solid var(--lab-line,#d2d2d7);border-radius:6px;background:var(--lab-surface,#fff);color:var(--lab-ink,#1d1d1f);font:inherit;font-variant-numeric:tabular-nums}
.lab-discovery .evidence-cue .source-hit{fill:var(--lab-accent-soft,#eef2fa);stroke:var(--lab-accent,#5277b8);stroke-width:1.5}
.lab-discovery .smallprint{font:400 11px/1.45 var(--lab-font-sans,sans-serif);color:var(--lab-muted,#6e6e73);margin:16px 0 0}
.lab-discovery .model-fade{animation:labDiscoveryAppear .25s ease-out}
.lab-discovery #title:focus{outline:none}
.lab-discovery .sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.lab-discovery button:focus-visible,.lab-discovery a:focus-visible{outline:2px solid var(--lab-accent,#5277b8);outline-offset:3px}
.lab-discovery .lesson-head .reset-menu{position:relative;grid-area:1 / 2;font:400 12px/1.4 var(--lab-font-sans,sans-serif);z-index:10}
.lab-discovery .lesson-head .reset-menu>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:36px;padding:6px 8px;color:var(--lab-ink-secondary,#424245);border-radius:var(--lab-control-radius,8px);cursor:pointer}
.lab-discovery .lesson-head .reset-menu>summary::-webkit-details-marker{display:none}
.lab-discovery .lesson-head .reset-menu>summary:hover{background:var(--lab-accent-soft,#eef2fa)}
.lab-discovery .reset-chevron{width:7px;height:7px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg);margin-top:-4px}
.lab-discovery .reset-menu[open] .reset-chevron{transform:rotate(225deg);margin-top:4px}
.lab-discovery .lesson-head .reset-options{position:absolute;inset:calc(100% + 4px) 0 auto auto;width:272px;max-width:calc(100vw - 40px);display:block;padding:6px;background:var(--lab-surface,#fff);border:1px solid var(--lab-line,#d2d2d7);border-radius:var(--lab-panel-radius,12px);box-shadow:0 4px 14px rgba(29,29,31,.1)}
.lab-discovery .reset-choices{display:flex;flex-direction:column;gap:2px}
.lab-discovery .lesson-head .reset-menu :is(#repeat,#restart){grid-area:auto;align-self:auto;justify-self:stretch;min-height:56px;height:auto;width:100%;margin:0;padding:10px 12px;text-align:left;white-space:normal;display:block}
.lab-discovery .lesson-head .reset-menu .reset-choices .lab-action{background:transparent;border-color:transparent;box-shadow:none}
.lab-discovery .lesson-head .reset-menu .reset-choices .lab-action:hover:not(:disabled){background:var(--lab-accent-soft,#eef2fa)}
.lab-discovery .reset-choices small{display:block;margin-top:3px;font:400 11px/1.45 var(--lab-font-sans,sans-serif);color:var(--lab-ink-secondary,#424245)}
.lab-discovery .reset-confirmation{padding:10px}
.lab-discovery .reset-confirmation h2{font:600 14px/1.4 var(--lab-font-sans,sans-serif);margin:0 0 8px;color:var(--lab-ink,#1d1d1f)}
.lab-discovery .reset-confirmation p{font:400 14px/1.5 var(--lab-font-sans,sans-serif);margin:0 0 14px;color:var(--lab-ink-secondary,#424245)}
.lab-discovery .reset-confirm-actions{display:flex;gap:8px}
.lab-discovery .lesson-head .reset-confirm-actions .lab-action{grid-area:auto;width:auto;flex:1;min-height:44px;margin:0;padding:8px;white-space:normal;text-align:center}
@keyframes labDiscoveryDrawSuccess{from{stroke-dashoffset:20}to{stroke-dashoffset:0}}
@keyframes labDiscoveryBeamTravel{to{stroke-dashoffset:-111}}
@keyframes labDiscoveryMaterialArrive{from{opacity:.25}to{opacity:1}}
@keyframes labDiscoveryAppear{from{opacity:.3}to{opacity:1}}
@media(max-width:600px){
  .lab-discovery{padding:12px;width:calc(100% - 16px)}
  .lab-discovery .lesson-head.lab-context{padding:12px;gap:8px 10px}
  .lab-discovery .lesson-meta{gap:7px;align-content:start;min-height:32px}
  .lab-discovery .lesson-head .lab-checkpoints{width:100%;gap:5px}
  .lab-discovery .step-label{font-size:11px}
  .lab-discovery .lesson-head.lab-context #title{font-size:17px;line-height:1.4}
  .lab-discovery .stage .small{font-size:11px}
  .lab-discovery .stage .big{font-size:21px}
  .lab-discovery .learning-work{padding:10px;margin:6px 0}
  .lab-discovery .work-heading{align-items:flex-start;flex-wrap:wrap}
  .lab-discovery .trace-button.lab-action{margin-left:auto}
  .lab-discovery .work-steps{gap:9px}
  .lab-discovery .work-step{flex-basis:100%;min-width:0}
  .lab-discovery .work-expression{font-size:14px}
  .lab-discovery .learning-dock.foot{display:block;padding:10px;margin-top:8px}
  .lab-discovery .learning-dock .outcome,.lab-discovery .learning-dock .outcome[data-state]{min-height:0;gap:8px}
  .lab-discovery .outcome-title{font-size:14px}
  .lab-discovery .feedback{font-size:13px;line-height:1.5}
  .lab-discovery .dock-actions{gap:8px;flex-wrap:wrap;margin-top:8px}
  .lab-discovery .dock-navigation{gap:2px;flex:1}
  .lab-discovery .dock-navigation .lab-action{padding:8px 7px;min-height:44px;font-size:12px}
  .lab-discovery .dock-advance{gap:6px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto}
  .lab-discovery .dock-advance>#secondaryAction{font-size:12px;padding:6px 8px}
  .lab-discovery .primary-slot{width:138px}
  .lab-discovery .primary-slot>.lab-action{font-size:12px;padding:8px;min-height:48px}
  .lab-discovery .evidence-help{font-size:13px}
  .lab-discovery .hint-navigation .lab-action{font-size:12px}
  .lab-discovery .records{font-size:11px}
  .lab-discovery .records td,.lab-discovery .records th{padding:5px 3px}
  .lab-discovery .smallprint{font-size:11px}
  .lab-discovery .material-choice{gap:6px}
  .lab-discovery .material-choice select{max-width:128px}
}
@media(prefers-reduced-motion:reduce){
  .lab-discovery *,.lab-discovery *::before,.lab-discovery *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .lab-discovery .stage .beam-flow,body>.lab-discovery-connection-layer .travelling-value{display:none}
  body>.lab-discovery-connection-layer .connection-halo{box-shadow:none}
}
/* LAB_DISCOVERY_STYLES_END */
