/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 (copied from content-factory/phystech-2024-25-math-qualifying-v1 at d8b3c79, PR #130; the code below the header is unchanged): student labs (loaded only on these pages); copied from the
   accepted Phystech 2025/26 final package (visuals/lab.css there, unchanged above the «Additions of this package» line).
   Base styles shared by all labs; each lab may add visuals/labs/<kind>.css, which assets.mjs appends to this file.
   Colours are local variables. Dark values follow the site's own theme switch (html[data-design=v2] with
   data-theme=dark, or the system dark mode unless data-theme=light) and reuse the site tokens from
   redesign.css, as in the 2025 package; the global theme itself is not changed. */
.arch-lab{min-width:0;--arch-surface:#fff;--arch-ink:#1f2937;--arch-label:#203c58;--arch-muted:#5b6b82;--arch-field-line:#aebed1;--arch-soft-line:#d7e1ed;--arch-primary-bg:#244974;--arch-primary-ink:#fff;--arch-link:#244974;--arch-pressed-bg:#e6eefb;--arch-pressed-line:#244974;--arch-good:#047857;--arch-bad:#b91c1c;--arch-focus:#f59e0b;--arch-fig-line:#1f2937;--arch-grid:#c7d2e0;--arch-fill:#dbeafe;--arch-piece-a:#bfdbfe;--arch-piece-b:#fde68a;--arch-piece-c:#fecaca;--arch-piece-d:#bbf7d0;--arch-accent:#c2410c;--arch-water:#e0f2fe;--arch-ok-bg:#dcfce7;--arch-bad-bg:#fee2e2;--arch-knight:#1d4ed8;--arch-liar:#9f1239;--arch-clear:#e2e8f0}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-surface:var(--play-stage);--arch-ink:var(--ink);--arch-label:var(--ink);--arch-muted:var(--ink-2);--arch-field-line:var(--ink-3);--arch-soft-line:var(--play-line);--arch-primary-bg:var(--accent);--arch-primary-ink:var(--on-ink);--arch-link:var(--accent-ink);--arch-pressed-bg:var(--accent-soft);--arch-pressed-line:var(--accent);--arch-good:var(--ok);--arch-bad:var(--bad);--arch-fig-line:#dbe4f0;--arch-grid:#4a5568;--arch-fill:#1e3a5f;--arch-piece-a:#1e40af;--arch-piece-b:#854d0e;--arch-piece-c:#9f1239;--arch-piece-d:#166534;--arch-accent:#fb923c;--arch-water:#0c2a3f;--arch-ok-bg:#14341f;--arch-bad-bg:#431818;--arch-knight:#93c5fd;--arch-liar:#fda4af;--arch-clear:#3f4654}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-surface:var(--play-stage);--arch-ink:var(--ink);--arch-label:var(--ink);--arch-muted:var(--ink-2);--arch-field-line:var(--ink-3);--arch-soft-line:var(--play-line);--arch-primary-bg:var(--accent);--arch-primary-ink:var(--on-ink);--arch-link:var(--accent-ink);--arch-pressed-bg:var(--accent-soft);--arch-pressed-line:var(--accent);--arch-good:var(--ok);--arch-bad:var(--bad);--arch-fig-line:#dbe4f0;--arch-grid:#4a5568;--arch-fill:#1e3a5f;--arch-piece-a:#1e40af;--arch-piece-b:#854d0e;--arch-piece-c:#9f1239;--arch-piece-d:#166534;--arch-accent:#fb923c;--arch-water:#0c2a3f;--arch-ok-bg:#14341f;--arch-bad-bg:#431818;--arch-knight:#93c5fd;--arch-liar:#fda4af;--arch-clear:#3f4654}
.arch-try{margin:18px 0}
.arch-lab [data-arch-lab-body]{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;min-width:0}
.arch-lab .arch-lab-fallback{color:var(--arch-muted);font-size:15px}
.arch-lab label,.arch-lab .arch-label{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-help{font-size:14px;color:var(--arch-muted);margin:0}
.arch-lab .arch-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-width:0}
.arch-lab input[type=text],.arch-lab input[type=number],.arch-lab select{font:inherit;font-size:18px;min-height:44px;padding:8px 12px;border:1px solid var(--arch-field-line);border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);min-width:0}
.arch-lab input[type=number]{width:88px}
.arch-lab input[type=range]{flex:1 1 180px;min-width:0;min-height:44px;accent-color:var(--arch-primary-bg)}
.arch-lab button{font:inherit;font-size:16px;min-height:44px;min-width:44px;padding:10px 16px;border-radius:999px;line-height:1.4;max-width:100%;white-space:normal;cursor:pointer}
.arch-lab .arch-primary{background:var(--arch-primary-bg);color:var(--arch-primary-ink);border:1px solid var(--arch-primary-bg)}
.arch-lab .arch-secondary{background:var(--arch-surface);color:var(--arch-link);border:1px solid var(--arch-field-line)}
.arch-lab button[aria-disabled=true]{opacity:.45;cursor:default}
.arch-lab button:focus-visible,.arch-lab input:focus-visible,.arch-lab select:focus-visible,.arch-lab [tabindex]:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-actions{display:flex;flex-wrap:wrap;gap:8px}
.arch-lab .arch-toggle{display:flex;flex-wrap:wrap;gap:6px}
.arch-lab .arch-toggle button{background:var(--arch-surface);color:var(--arch-link);border:1px solid var(--arch-field-line)}
.arch-lab .arch-toggle button[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-result{background:var(--arch-surface);color:var(--arch-ink);border:1px solid var(--arch-soft-line);border-radius:14px;padding:14px 16px;line-height:1.55;min-width:0;overflow-wrap:anywhere}
.arch-lab .arch-result:empty{display:none}
.arch-lab :is(button,input,select){scroll-margin-block:120px}
.arch-lab .arch-result p{margin:6px 0}
.arch-lab .arch-checks{list-style:none;padding:0;margin:6px 0;display:grid;gap:6px}
.arch-lab .arch-checks li{display:flex;gap:8px;align-items:flex-start}
.arch-lab .arch-pass::before{content:'✓';color:var(--arch-good);font-weight:700;flex-shrink:0;width:1.2em}
.arch-lab .arch-fail::before{content:'✗';color:var(--arch-bad);font-weight:700;flex-shrink:0;width:1.2em}
.arch-lab .arch-good{color:var(--arch-good);font-weight:600}
.arch-lab .arch-bad{color:var(--arch-bad);font-weight:600}
.arch-lab .arch-sub{display:grid;gap:8px;border-top:1px solid var(--arch-soft-line);padding-top:12px}
.arch-lab .arch-stage{background:var(--arch-surface);border:1px solid var(--arch-soft-line);border-radius:8px;padding:8px;min-width:0}
.arch-lab .arch-stage svg{display:block;width:100%;height:auto;max-height:70vh;touch-action:manipulation}
.arch-lab svg text{fill:var(--arch-ink);font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif}
.arch-lab .arch-readouts{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0;font-variant-numeric:tabular-nums}
.arch-lab .arch-readouts div{display:flex;gap:6px;align-items:baseline}
.arch-lab .arch-readouts dt{color:var(--arch-muted);font-size:14px}
.arch-lab .arch-readouts dd{margin:0;font-weight:600;color:var(--arch-ink);white-space:nowrap;overflow-wrap:normal}
.arch-lab .arch-table-wrap{overflow-x:auto;max-width:100%}
.arch-lab table.arch-table{border-collapse:collapse;font-variant-numeric:tabular-nums}
.arch-lab table.arch-table th,.arch-lab table.arch-table td{border:1px solid var(--arch-soft-line);padding:4px 8px;text-align:center;color:var(--arch-ink)}
.arch-lab table.arch-table th{color:var(--arch-label);font-weight:600}
.arch-lab .arch-chip{display:inline-flex;align-items:center;justify-content:center;min-width:2.2em;padding:2px 8px;border-radius:999px;border:1px solid var(--arch-soft-line);font-weight:600}
@media(max-width:480px){.arch-lab .arch-row .arch-primary{flex:1 1 100%}.arch-lab button{padding:8px 10px}}
/* shared: play button keeps its width next to a time slider, also on phones */
.arch-lab .arch-timeline{flex-wrap:nowrap}
.arch-lab .arch-timeline .arch-play{flex:0 0 auto;min-width:96px}
/* Inside the «Исследовать» disclosure the lab already has a frame: on phones drop the second one so models keep their width. */
@media (max-width:560px){.lesson-disclosure .arch-lab{padding:0;border:0;background:none;box-shadow:none}.lesson-disclosure .arch-lab .arch-stage{padding:4px}}
/* Phones: «Крупные клетки» (ui.mjs zoomable). Cells keep at least 44 px and the board scrolls sideways in its frame;
   the board geometry is unchanged, only its scale. */
.arch-lab .arch-zoom{min-width:0}
.arch-lab .arch-zoom-tools{margin-bottom:8px}
.arch-lab .arch-zoom-hint{margin:0 0 8px;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-zoom-probe{height:0}
.arch-lab .arch-zoom-scroll{overflow-x:auto;overscroll-behavior-x:contain;padding:4px;min-width:0}
/* shared extras for this package: cell boards built from buttons, a status line that is never hidden under the
   sticky header after a programmatic scroll, and a compact step list */
.arch-lab .arch-board{display:grid;gap:0;justify-content:center;margin:auto}
.arch-lab .arch-cell{aspect-ratio:1;min-width:0;min-height:0;width:100%;padding:0;border-radius:0;background:var(--arch-surface);color:var(--arch-ink);border:1px solid var(--arch-grid);outline-offset:-3px;font-variant-numeric:tabular-nums}
.arch-lab .arch-result{scroll-margin-top:96px;scroll-margin-bottom:96px}
.arch-lab .arch-log{margin:0;padding-left:1.4em;display:grid;gap:4px;font-variant-numeric:tabular-nums}
.arch-lab .arch-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;list-style:none;font-size:14px;color:var(--arch-ink)}
.arch-lab .arch-legend li{display:flex;align-items:center;gap:6px}

/* Same page presentation as the final 2023–2024 edition on main (GPT polish of 18.10.2026): the shared research
   renderer follows the current site on these pages only. Diagrams keep their light paper; controls and readouts
   follow the selected theme. */
[data-problem-id^="phystech-2024-2025-math-"] .cf-figure figcaption,
[data-problem-id^="phystech-2024-2025-math-"] .lesson-source{color:var(--ink-2)}
[data-problem-id^="phystech-2024-2025-math-"] .lesson-source summary{color:var(--ink)}
[data-problem-id^="phystech-2024-2025-math-"] :is(button[data-cf-zoom],button[data-cf-scene-zoom]){color:var(--ink);background:var(--play-stage);border-color:var(--ink-3);border-radius:999px;min-height:44px;padding:10px 16px;margin-top:12px;max-width:100%;line-height:1.4}
[data-problem-id^="phystech-2024-2025-math-"] .interactive-actions button{color:var(--ink);background:var(--play-stage);border-color:var(--ink-3);font-size:16px}
[data-problem-id^="phystech-2024-2025-math-"] .interactive-actions button[data-action=play]{color:var(--on-ink);background:var(--ink);border-color:var(--ink)}
[data-problem-id^="phystech-2024-2025-math-"] .interactive-range-row{grid-template-columns:minmax(60px,1fr) 88px}
[data-problem-id^="phystech-2024-2025-math-"] .cf-number{background:var(--play-stage);color:var(--ink);border-color:var(--ink-3);border-radius:12px;min-height:44px;height:auto;padding:8px 6px;font-size:18px;font-variant-numeric:tabular-nums}
[data-problem-id^="phystech-2024-2025-math-"] .interactive-range-row input[type=range]{min-height:44px;accent-color:var(--accent)}
[data-problem-id^="phystech-2024-2025-math-"] .interactive-results>div{background:var(--play-stage);border-color:var(--play-line);border-radius:14px;padding:14px 16px;font-size:16px}
[data-problem-id^="phystech-2024-2025-math-"] .interactive-results :is(div,span,strong){color:var(--ink)}
[data-problem-id^="phystech-2024-2025-math-"] .learning-interactive :is(button,input){scroll-margin-block:120px}
/* Keep diagrams readable as diagrams, without the inherited white text outline. */
[data-problem-id^="phystech-2024-2025-math-"] :is(.cf-figure-svg,.cf-zoom-content) svg text{stroke:none;paint-order:normal}
[data-problem-id^="phystech-2024-2025-math-"] .cf-figure figcaption button[data-cf-zoom]{display:block;margin:14px auto 0}
[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:20px 24px;margin:24px 0;border:1px solid var(--play-line);border-radius:var(--r-lg);background:var(--play-bg);color:var(--ink)}
[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry>div{flex:1 1 240px;min-width:0}
[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry strong{font-size:17px}
[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry p{margin:5px 0 0;color:var(--ink-2);font-size:16px;line-height:1.5}
[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry a{display:inline-flex;gap:12px;align-items:center;min-height:44px;padding:10px 16px;border:1px solid var(--ink-3);border-radius:999px;background:var(--play-stage);color:var(--ink);font:600 16px/1.4 var(--font);text-decoration:none}
[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry a:hover{border-color:var(--accent);color:var(--accent)}
[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
@media(max-width:480px){[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry{padding:16px}[data-problem-id^="phystech-2024-2025-math-"] .arch-model-entry a{width:100%;justify-content:space-between}}

/* ===== Physics controls of this package (visuals/phys.mjs): slider + exact input + large «−»/«+» ===== */
.arch-lab .phx-controls{display:grid;gap:12px;min-width:0}
.arch-lab .phx-params{display:grid;gap:12px;min-width:0}
.arch-lab .phx-param{display:grid;gap:2px;min-width:0;padding:6px 10px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .phx-param-label{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.arch-lab .phx-param-name{font-weight:600;color:var(--arch-label)}
.arch-lab .phx-param-bounds{font-weight:400;font-size:13px;color:var(--arch-muted)}
.arch-lab .phx-param .arch-help{font-size:13px}
.arch-lab .phx-param-row{display:grid;grid-template-columns:48px minmax(0,1fr) 48px var(--phx-num-w,84px);gap:8px;align-items:center;min-width:0}
.arch-lab .phx-param-row input[type=range]{width:100%;margin:0}
.arch-lab .phx-step{min-width:48px;min-height:48px;padding:0;font-size:24px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab input.phx-num{width:100%;font-size:18px;min-height:48px;padding:8px 10px;text-align:right;font-variant-numeric:tabular-nums}
.arch-lab .phx-param-msg{margin:0;font-size:14px;color:var(--arch-bad);min-height:0}
.arch-lab .phx-param-msg:empty{display:none}
@media (max-width:420px){
 .arch-lab .phx-param-row{grid-template-columns:48px minmax(0,1fr) 48px;grid-template-areas:"range range range" "minus num plus"}
 .arch-lab .phx-param-row input[type=range]{grid-area:range}
 .arch-lab .phx-param-row .phx-step:first-child{grid-area:minus}
 .arch-lab .phx-param-row .phx-step:nth-child(3){grid-area:plus}
 .arch-lab .phx-param-row input.phx-num{grid-area:num}
}
.arch-lab .phx-presets{display:grid;gap:6px}
.arch-lab .phx-presets-title{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .phx-preset[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .phx-preset-state{margin:0;font-size:14px;color:var(--arch-muted)}
.arch-lab .phx-readouts dd.phx-secret{color:var(--arch-muted)}
.arch-lab .phx-time{font-variant-numeric:tabular-nums;font-weight:600;min-width:9em;color:var(--arch-ink)}
.arch-lab .phx-clock{display:grid;gap:6px}
.arch-lab .phx-clock input[type=range]{flex:1 1 160px}
.arch-lab .phx-svg{display:block;width:100%;height:auto}
.arch-lab .phx-stage{padding:4px}
.arch-lab .phx-stage-pair{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
@media (min-width:900px){.arch-lab .phx-stage-pair.phx-two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.arch-lab .phx-choice{display:flex;flex-wrap:wrap;gap:8px}
.arch-lab .phx-note{margin:0;font-size:14px;color:var(--arch-muted)}
/* SVG: theme-aware strokes and fills */
.arch-lab .phx-svg{--phx-a:#1d4ed8;--phx-b:#c2410c;--phx-c:#047857;--phx-d:#7c3aed;--phx-water:#dbeafe;--phx-body:#e2e8f0;--phx-paper:#ffffff}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .phx-svg{--phx-a:#93c5fd;--phx-b:#fdba74;--phx-c:#6ee7b7;--phx-d:#c4b5fd;--phx-water:#0c2a3f;--phx-body:#334155;--phx-paper:transparent}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .phx-svg{--phx-a:#93c5fd;--phx-b:#fdba74;--phx-c:#6ee7b7;--phx-d:#c4b5fd;--phx-water:#0c2a3f;--phx-body:#334155;--phx-paper:transparent}
.arch-lab .phx-svg .phx-line{stroke:var(--arch-fig-line);stroke-width:2;fill:none}
.arch-lab .phx-svg .phx-thin{stroke:var(--arch-fig-line);stroke-width:1;fill:none}
.arch-lab .phx-svg .phx-dash{stroke:var(--arch-muted);stroke-width:1.5;fill:none;stroke-dasharray:5 4}
.arch-lab .phx-svg .phx-body{fill:var(--phx-body);stroke:var(--arch-fig-line);stroke-width:2}
.arch-lab .phx-svg .phx-body-a{fill:var(--phx-a);stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .phx-body-b{fill:var(--phx-b);stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .phx-water{fill:var(--phx-water);stroke:none}
.arch-lab .phx-svg .phx-ground{stroke:var(--arch-fig-line);stroke-width:2.5}
.arch-lab .phx-svg .phx-hatch{stroke:var(--arch-fig-line);stroke-width:1.2}
.arch-lab .phx-svg .phx-grid{stroke:var(--arch-grid);stroke-width:1}
.arch-lab .phx-svg .phx-axis{stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .phx-tick{font-size:12px;fill:var(--arch-muted)}
.arch-lab .phx-svg .phx-axis-label{font-size:13px;font-weight:600}
.arch-lab .phx-svg .phx-text{font-size:15px}
.arch-lab .phx-svg .phx-small{font-size:12.5px}
.arch-lab .phx-svg .phx-big{font-size:18px;font-weight:600}
.arch-lab .phx-svg .phx-curve{fill:none;stroke:var(--phx-a);stroke-width:2.5}
.arch-lab .phx-svg .phx-curve-b{fill:none;stroke:var(--phx-b);stroke-width:2.5}
.arch-lab .phx-svg .phx-curve-c{fill:none;stroke:var(--phx-c);stroke-width:2.5}
.arch-lab .phx-svg .phx-curve-d{fill:none;stroke:var(--phx-d);stroke-width:2.5}
.arch-lab .phx-svg .phx-ghost{fill:none;stroke:var(--arch-muted);stroke-width:1.5;stroke-dasharray:3 4}
.arch-lab .phx-svg .phx-arrow .phx-arrow-shaft{stroke:var(--arch-accent);stroke-width:2.5}
.arch-lab .phx-svg .phx-arrow .phx-arrow-head{fill:var(--arch-accent);stroke:none}
.arch-lab .phx-svg .phx-arrow-a .phx-arrow-shaft{stroke:var(--phx-a);stroke-width:2.5}
.arch-lab .phx-svg .phx-arrow-a .phx-arrow-head{fill:var(--phx-a);stroke:none}
.arch-lab .phx-svg .phx-arrow-b .phx-arrow-shaft{stroke:var(--phx-b);stroke-width:2.5}
.arch-lab .phx-svg .phx-arrow-b .phx-arrow-head{fill:var(--phx-b);stroke:none}
.arch-lab .phx-svg .phx-arrow-c .phx-arrow-shaft{stroke:var(--phx-c);stroke-width:2.5}
.arch-lab .phx-svg .phx-arrow-c .phx-arrow-head{fill:var(--phx-c);stroke:none}
.arch-lab .phx-svg .phx-arrow-ink .phx-arrow-shaft{stroke:var(--arch-fig-line);stroke-width:1.6}
.arch-lab .phx-svg .phx-arrow-ink .phx-arrow-head{fill:var(--arch-fig-line);stroke:none}
.arch-lab .phx-svg .phx-dot{fill:var(--arch-fig-line);stroke:none}
.arch-lab .phx-svg .phx-dot-a{fill:var(--phx-a);stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab .phx-svg .phx-dot-b{fill:var(--phx-b);stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab .phx-svg .phx-dot-c{fill:var(--phx-c);stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab .phx-svg .phx-fill-a{fill:var(--phx-a);fill-opacity:.18;stroke:var(--phx-a);stroke-width:1.5}
.arch-lab .phx-svg .phx-fill-b{fill:var(--phx-b);fill-opacity:.18;stroke:var(--phx-b);stroke-width:1.5}
.arch-lab .phx-svg .phx-fill-c{fill:var(--phx-c);fill-opacity:.18;stroke:var(--phx-c);stroke-width:1.5}
.arch-lab .phx-svg .phx-fill-d{fill:var(--phx-d);fill-opacity:.18;stroke:var(--phx-d);stroke-width:1.5}
.arch-lab .phx-svg .phx-wire{stroke:var(--arch-fig-line);stroke-width:2.5;fill:none;stroke-linecap:round}
.arch-lab .phx-svg .phx-hot{stroke:var(--phx-b);stroke-width:4;fill:none;stroke-linecap:round}
.arch-lab .phx-svg .phx-cold{stroke:var(--phx-a);stroke-width:4;fill:none;stroke-linecap:round}
.arch-lab .phx-svg .phx-text-a{fill:var(--phx-a);font-weight:600}
.arch-lab .phx-svg .phx-text-b{fill:var(--phx-b);font-weight:600}
.arch-lab .phx-svg .phx-text-c{fill:var(--phx-c);font-weight:600}
.arch-lab .phx-svg text{paint-order:stroke;stroke:var(--arch-surface);stroke-width:3px;stroke-linejoin:round}
.arch-lab .phx-svg .phx-tick,.arch-lab .phx-svg .phx-nohalo{stroke:none}
.arch-lab .phx-drag{cursor:grab;touch-action:none}
.arch-lab .phx-handle{fill:var(--phx-b);fill-opacity:.25;stroke:var(--phx-b);stroke-width:2}
.arch-lab .phx-handle:focus-visible{outline:none;stroke:var(--arch-focus);stroke-width:4}
/* Readouts as a two-column table: long values wrap instead of running off a phone screen. */
.arch-lab .phx-readouts{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:6px 12px;align-items:baseline}
.arch-lab .phx-readouts>div{display:contents}
.arch-lab .phx-readouts dd{white-space:normal;overflow-wrap:anywhere}
.arch-lab .phx-svg .phx-rod{stroke:var(--arch-fig-line);stroke-width:7;stroke-linecap:round;fill:none}
.arch-lab .phx-svg .phx-arrow-g .phx-arrow-shaft{stroke:var(--arch-fig-line);stroke-width:3}
.arch-lab .phx-svg .phx-arrow-g .phx-arrow-head{fill:var(--arch-fig-line);stroke:none}
/* ===== Additions of the final package ===== */
/* Check boxes: a large box and a whole-label touch target of at least 44 px. */
.arch-lab label.arch-row{min-height:44px;cursor:pointer;flex-wrap:nowrap}
.arch-lab label.arch-row>span{flex:1 1 auto;min-width:0}
.arch-lab input[type=checkbox]{width:24px;height:24px;margin:0;flex:0 0 auto;accent-color:var(--arch-primary-bg)}

/* Phone controls remain in document flow: a sticky scene hid parameter names,
   sliders and playback buttons while scrolling. Never trade readable controls for a floating scene. */
.learning-interactive.arch-lab{overflow:clip;overflow-clip-margin:6px}
@media (max-width:600px) and (min-height:500px){
 .arch-lab .phx-stage{position:relative;top:auto;z-index:auto;background:var(--arch-surface);max-height:40vh}
 .arch-lab .phx-stage .phx-svg{max-height:calc(40vh - 10px)}
 /* z-index:auto too: in a grid or flex lab body a static item with a z-index still stacks and would scroll over the sticky scene */
 .arch-lab .phx-stage ~ .phx-stage,.arch-lab .phx-stage-pair .phx-stage{position:static;z-index:auto;max-height:none}
 .arch-lab .phx-stage-pair .phx-svg{max-height:none}
}
/* Narrow screens: readout names and values in two equal columns, long names may break */
@media (max-width:360px){
 .arch-lab .phx-readouts{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
 .arch-lab .phx-readouts dt{overflow-wrap:anywhere}
}

/* ===== Additions of this package (Phystech 2024/25 math, qualifying) ===== */
/* Official versions: ID chips, the statement of the chosen version, «свои значения» status with a way back. */
.arch-lab .p25-versions{display:grid;gap:8px;min-width:0;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .p25-versions-head,.arch-lab .p25-data-head{margin:0;font-weight:700;color:var(--arch-label)}
.arch-lab .p25-chip-group{display:grid;gap:4px}
.arch-lab .p25-chip-title{margin:0;font-size:14px;color:var(--arch-muted)}
.arch-lab .p25-chips{gap:8px}
.arch-lab .p25-chip{font-variant-numeric:tabular-nums}
.arch-lab .p25-chip[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:700;box-shadow:inset 0 0 0 1px var(--arch-pressed-line)}
.arch-lab .p25-version{display:grid;gap:4px;padding:10px 12px;border-radius:10px;background:var(--p25-paper);border-left:4px solid var(--arch-pressed-line)}
.arch-lab .p25-version p{margin:0}
.arch-lab .p25-version-title{font-size:14px;font-weight:600;color:var(--arch-muted)}
.arch-lab .p25-version-text{font-size:16px;line-height:1.55;color:var(--arch-ink);overflow-wrap:anywhere}
.arch-lab .p25-version-diff{font-size:14px;color:var(--arch-label);font-weight:600}
.arch-lab .p25-status-row{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.arch-lab .p25-status{margin:0;font-size:14px;color:var(--arch-muted);flex:1 1 220px}
.arch-lab .p25-data{display:grid;gap:8px;min-width:0}
/* the hidden result: nothing of it is in the page before the press */
.arch-lab .p25-secret{display:grid;gap:8px}
.arch-lab .p25-reveal{justify-self:start}
.arch-lab .p25-secret-body{display:grid;gap:6px;padding:12px 14px;border-radius:12px;border:2px solid var(--arch-good);background:var(--arch-surface);color:var(--arch-ink);line-height:1.55}
.arch-lab .p25-secret-body p{margin:0}
.arch-lab .p25-secret-body:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .p25-secret-body strong{color:var(--arch-good)}
.arch-lab .p25-facts dd.phx-secret{font-weight:700}
/* own actions of a lab: cards, cells, tokens as real buttons with a 44 px target */
.arch-lab .p25-tiles{display:flex;flex-wrap:wrap;gap:6px}
.arch-lab .p25-tile{min-width:44px;min-height:44px;padding:6px 10px;border-radius:10px;border:1px solid var(--arch-field-line);background:var(--arch-surface);color:var(--arch-ink);font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab .p25-tile[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line)}
.arch-lab .p25-warn{margin:0;padding:10px 12px;border-radius:10px;background:var(--arch-bad-bg);color:var(--arch-ink);border:1px solid var(--arch-bad)}
.arch-lab .p25-ok{margin:0;padding:10px 12px;border-radius:10px;background:var(--arch-ok-bg);color:var(--arch-ink);border:1px solid var(--arch-good)}
.arch-lab .p25-math{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
/* drawn objects (draw.mjs): illustration colours with an outline that follows the theme */
.arch-lab{--p25-paper:#f6f8fc;--p25-skin:#f6d2b4;--p25-hair-a:#7c4a25;--p25-hair-b:#2b2b33;--p25-hair-c:#d9a441;--p25-shirt-a:#3b82f6;--p25-shirt-b:#ef6c3a;--p25-shirt-c:#22a06b;--p25-shirt-d:#8b5cf6;--p25-pants:#334155;--p25-card:#fffdf7;--p25-card-edge:#c9b98f;--p25-board:#24543f;--p25-board-ink:#f4f1e6;--p25-wood:#b07a43;--p25-candy-a:#ef4444;--p25-candy-b:#f59e0b;--p25-candy-c:#7c4a25;--p25-paper2:#ffffff;--p25-grass:#86c06c;--p25-grass2:#5f9d4b;--p25-soil:#c9a26b;--p25-water:#bfe1f6;--p25-metal:#94a3b8;--p25-glass:#cfe8ff;--p25-track:#d97757}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--p25-paper:#1b2333;--p25-track:#a3523b;--p25-skin:#e8bf9c;--p25-card:#f3efe2;--p25-card-edge:#8f8466;--p25-board:#1f4a37;--p25-paper2:#e9edf5;--p25-water:#1e4a66;--p25-glass:#8db8de}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--p25-paper:#1b2333;--p25-track:#a3523b;--p25-skin:#e8bf9c;--p25-card:#f3efe2;--p25-card-edge:#8f8466;--p25-board:#1f4a37;--p25-paper2:#e9edf5;--p25-water:#1e4a66;--p25-glass:#8db8de}
.arch-lab .phx-svg .p25-o{stroke:var(--arch-fig-line);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .phx-svg .p25-o-thin{stroke:var(--arch-fig-line);stroke-width:1;stroke-linejoin:round}
.arch-lab .phx-svg .p25-card-text{fill:#1f2937;font-weight:700;stroke:none}
.arch-lab .phx-svg .p25-board-text{fill:var(--p25-board-ink);stroke:none;font-family:"Comic Sans MS","Chalkboard SE","Segoe Print",system-ui,sans-serif}
.arch-lab .phx-svg .p25-shadow{fill:#0f172a;fill-opacity:.12;stroke:none}

.arch-lab .phx-svg .p25-track{fill:var(--p25-track);stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-grass{fill:var(--p25-grass);stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-lane{fill:none;stroke:#ffffff;stroke-width:1.5;stroke-dasharray:7 7;opacity:.85}
.arch-lab .p25-swap{gap:6px}
.arch-lab .p25-swap .p25-tile{min-width:44px;font-size:20px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--p25-card);color:#1f2937;border-color:var(--p25-card-edge)}
.arch-lab .p25-swap .p25-tile.p25-bad{border:2px solid var(--arch-bad);background:var(--arch-bad-bg);color:var(--arch-ink)}
.arch-lab .p25-swap .p25-tile.p25-r0{box-shadow:inset 0 -5px 0 #3b82f6}
.arch-lab .p25-swap .p25-tile.p25-r1{box-shadow:inset 0 -5px 0 #ef6c3a}
.arch-lab .p25-swap .p25-tile.p25-r2{box-shadow:inset 0 -5px 0 #22a06b}
.arch-lab .p25-swap .p25-tile[aria-pressed=true]{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .p25-swap-note{margin:4px 0 0;min-height:1.4em}
.arch-lab .p25-picks .p25-tile{font-variant-numeric:tabular-nums;background:var(--p25-card);color:#1f2937;border-color:var(--p25-card-edge)}
.arch-lab .p25-picks .p25-tile[aria-pressed=true]{background:#fde68a;border-color:#b45309;box-shadow:inset 0 0 0 2px #b45309}
.arch-lab .p25-picks .p25-tile.p25-r0{box-shadow:inset 0 -5px 0 #3b82f6}
.arch-lab .p25-picks .p25-tile.p25-r1{box-shadow:inset 0 -5px 0 #ef6c3a}
.arch-lab .p25-picks .p25-tile.p25-r2{box-shadow:inset 0 -5px 0 #22a06b}
.arch-lab .p25-picks .p25-tile.p25-r0[aria-pressed=true],.arch-lab .p25-picks .p25-tile.p25-r1[aria-pressed=true],.arch-lab .p25-picks .p25-tile.p25-r2[aria-pressed=true]{background:#fde68a}
.arch-lab .phx-svg .p25-wood-beam{fill:var(--p25-wood);stroke:var(--arch-fig-line);stroke-width:1.2}
.arch-lab .phx-svg .p25-scale-text{fill:var(--arch-ink);stroke:none;font-weight:600}
.arch-lab .phx-svg .p25-badge{fill:var(--p25-card);stroke:var(--p25-card-edge);stroke-width:1.5}
.arch-lab .phx-svg .p25-badge-text{fill:#1f2937;font-weight:700;stroke:none}
.arch-lab .phx-svg .p25-bubble{fill:#ffffff;stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-bubble-text{fill:#1f2937;font-size:11px;font-weight:600;stroke:none}
/* 9-II: a small table inside a lab, the laptop (dimmed screen, sun, battery, power pie), digit tiles, stone boards */
.arch-lab .p25-table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
.arch-lab .p25-table caption{text-align:left;font-weight:600;padding:0 0 4px}
.arch-lab .p25-table th,.arch-lab .p25-table td{border:1px solid var(--arch-soft-line);padding:6px 8px;text-align:left}
@media (max-width:420px){.arch-lab .p25-table{font-size:14px}.arch-lab .p25-table th,.arch-lab .p25-table td{padding:5px 4px}}
.arch-lab .p25-table td.phx-secret{text-align:center}
.arch-lab .phx-svg .p25-dim{fill:#0b1220;stroke:none}
.arch-lab .phx-svg .p25-sun{fill:#facc15;stroke:#b45309;stroke-width:1}
.arch-lab .phx-svg .p25-sun-ray{stroke:#f59e0b;stroke-width:2;stroke-linecap:round}
.arch-lab .phx-svg .p25-battery{fill:var(--arch-surface);stroke:var(--arch-fig-line);stroke-width:2.5}
.arch-lab .phx-svg .p25-charge{fill:#22c55e;stroke:none}
.arch-lab .phx-svg .p25-charge-low{fill:#ef4444;stroke:none}
.arch-lab .phx-svg .p25-pie-empty{fill:none;stroke:var(--arch-fig-line);stroke-width:1.5;stroke-dasharray:4 3}
.arch-lab .phx-svg .p25-pie-rest{fill:var(--p25-shirt-a);stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-pie-screen{fill:#facc15;stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .p25-digits .p25-tile{font-size:22px;min-width:44px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--p25-card);color:#1f2937;border-color:var(--p25-card-edge)}
.arch-lab .p25-digits .p25-tile.p25-r1{box-shadow:inset 0 -5px 0 #ef6c3a}
.arch-lab .p25-digits .p25-tile[aria-pressed=true]{outline:3px solid var(--arch-focus);outline-offset:2px;background:#fde68a}
.arch-lab .p25-digits{gap:4px}
.arch-lab .p25-pad{margin-top:4px}
.arch-lab .p25-tile-sm{font-size:18px}
.arch-lab .p25-tile[aria-disabled=true]{opacity:.45}
.arch-lab .p25-tile-wide{min-width:64px}
.arch-lab .p25-subsets{font-variant-numeric:tabular-nums;columns:2 220px;column-gap:24px}
.arch-lab .phx-svg .p25-cell-a{fill:#efe6d2;stroke:var(--p25-card-edge);stroke-width:1}
.arch-lab .phx-svg .p25-cell-b{fill:#e2d3b3;stroke:var(--p25-card-edge);stroke-width:1}
.arch-lab .phx-svg .p25-cell-sel{fill:#fde68a;stroke:#b45309;stroke-width:3}
.arch-lab .phx-svg .p25-cell-cur{fill:none;stroke:var(--arch-focus);stroke-width:3;stroke-dasharray:6 4}
.arch-lab .phx-svg .p25-g0{fill:#e5e7eb}
.arch-lab .phx-svg .p25-g1{fill:#fde68a}
.arch-lab .phx-svg .p25-g2{fill:#86efac}
/* 10-I №7: numbers in rows of five (a column = a remainder mod 5) */
.arch-lab .p25-grid5{display:grid;grid-template-columns:repeat(5,minmax(44px,1fr));gap:6px;max-width:420px}
.arch-lab .p25-tile.p25-good{border:2px solid var(--arch-good);background:var(--arch-ok-bg)}
.arch-lab .p25-tile.p25-out{border-style:dashed;opacity:.7}
.arch-lab .p25-tile.p25-now{box-shadow:0 0 0 3px var(--arch-pressed-line)}
/* 10-II: Oleg's squared notebook (the page stays paper-light in both themes, so the ink colours are fixed) */
.arch-lab .phx-svg .p25-page{fill:var(--p25-paper2);stroke:var(--p25-card-edge);stroke-width:1.2}
.arch-lab .phx-svg .p25-grid-line{stroke:#c7d7ee;stroke-width:.8}
.arch-lab .phx-svg .p25-margin-line{stroke:#ef9a9a;stroke-width:1.2}
.arch-lab .phx-svg .p25-hand{fill:#1e3a8a;stroke:none;font-size:17px;font-weight:600;font-family:"Segoe Print","Comic Sans MS","Chalkboard SE",system-ui,sans-serif}
.arch-lab .phx-svg .p25-hand-mid{fill:#047857}
.arch-lab .phx-svg .p25-mid-box{fill:none;stroke:#047857;stroke-width:2}
.arch-lab .phx-svg .p25-pair-arc{fill:none;stroke:#b45309;stroke-width:1.6}
.arch-lab .phx-svg .p25-page-note{fill:#475569;stroke:none;font-size:13px}
/* 10-II: the last digits that must be replaced, a ray from the origin, lists of checks */
.arch-lab .p25-digits .p25-tile.p25-tail{border-bottom:3px dashed #ef6c3a}
.arch-lab .phx-svg .p25-ray{stroke:var(--p25-shirt-b);stroke-width:2.2}
.arch-lab .p25-checks{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
/* 10-II: snow under the bird feeders, the magician's spectators */
.arch-lab{--p25-snow:#eef4fb}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--p25-snow:#26324a}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--p25-snow:#26324a}
.arch-lab .phx-svg .p25-snow{fill:var(--p25-snow);stroke:none}
.arch-lab .p25-picks .p25-tile.p25-bad-tile{border:2px dashed var(--arch-bad)}
.arch-lab .phx-svg .p25-sel-glow{fill:#fde68a;fill-opacity:.55;stroke:#b45309;stroke-width:1.5}
.arch-lab .phx-svg .p25-sig-bad{fill:var(--arch-bad);stroke:none;font-size:13px;font-weight:700}
.arch-lab .phx-svg .p25-bubble-num{fill:var(--arch-good);stroke:none;font-size:15px;font-weight:700}
.arch-lab .p25-daychip[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:700;box-shadow:inset 0 0 0 1px var(--arch-pressed-line)}
/* Phystech 2024/25 math 11, round I */
.arch-lab .p25-tile.p25-no{border:2px dashed var(--arch-bad)}
.arch-lab .p25-tile.p25-tile-black{background:#1f2937;color:#fff;border-color:#111827}
.arch-lab .phx-svg .p25-strip{fill:var(--arch-clear);stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .p25-strip-q{fill:var(--arch-piece-b);stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .p25-strip-cut{stroke:var(--arch-fig-line);stroke-width:1.2}
.arch-lab .phx-svg .p25-strip-left{fill:var(--arch-bad);opacity:.85}
.arch-lab .phx-svg .p25-eaten{fill:var(--p25-candy-c);stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-eaten-target{fill:var(--p25-candy-b);stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .p25-plate{stroke:var(--p25-metal);stroke-width:5;stroke-linecap:round}
.arch-lab .phx-svg .p25-gift{fill:#fde7ef;stroke:#be185d;stroke-width:2}
.arch-lab .phx-svg .p25-ribbon{fill:#ef4444;opacity:.5}
.arch-lab .phx-svg .p25-share-a{fill:var(--p25-candy-a)}
.arch-lab .phx-svg .p25-share-b{fill:var(--p25-candy-b)}
.arch-lab .phx-svg .p25-share-c{fill:var(--p25-candy-c)}
.arch-lab .phx-svg .p25-bar-frame{fill:none;stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .p25-road{fill:var(--p25-soil)}
.arch-lab .phx-svg .p25-grass-soft{fill:var(--p25-grass);opacity:.35}
.arch-lab .phx-svg .p25-roof{fill:#b45309;stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-house-a{fill:#fde68a;stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-house-b{fill:#fed7aa;stroke:var(--arch-fig-line);stroke-width:1;stroke-dasharray:3 2}
.arch-lab .phx-svg .p25-door,.arch-lab .phx-svg .p25-trunk{fill:#7c4a25}
.arch-lab .phx-svg .p25-crown-a{fill:#22a06b;stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-crown-b{fill:#86c06c;stroke:var(--arch-fig-line);stroke-width:1;stroke-dasharray:3 2}
.arch-lab .phx-svg .p25-hollow{fill:#3b2414}
.arch-lab .phx-svg .p25-base{fill:var(--arch-clear);stroke:none;opacity:.85}
.arch-lab .phx-svg .p25-proj-a{stroke:var(--phx-b);stroke-width:3.5;stroke-linecap:round}
.arch-lab .phx-svg .p25-proj-b{stroke:var(--phx-c);stroke-width:3.5;stroke-linecap:round}
.arch-lab .phx-svg .p25-cell{fill:var(--arch-surface);stroke:var(--arch-soft-line);stroke-width:1}
.arch-lab .phx-svg .p25-cell-ok{fill:var(--arch-ok-bg);stroke:var(--arch-good);stroke-width:2}
.arch-lab .phx-svg .p25-cell-out{fill:var(--arch-clear);stroke:var(--arch-soft-line);stroke-dasharray:3 3}
.arch-lab .phx-svg .p25-cell-frame{fill:none;stroke:var(--arch-focus);stroke-width:3}
.arch-lab .phx-svg .p25-cell-num-sel{font-weight:700}
.arch-lab .phx-svg .p25-lens{fill:var(--arch-surface);stroke:var(--arch-fig-line);stroke-width:1.2}
.arch-lab .phx-svg .p25-lens-line{fill:none;stroke:var(--arch-muted);stroke-width:1;stroke-dasharray:4 4}
.arch-lab .phx-svg .p25-lens-mark{fill:var(--arch-accent);opacity:.2}
/* Phystech 2024/25 math 11, round II */
.arch-lab .phx-svg .p25-card-ok{fill:var(--arch-ok-bg);stroke:var(--arch-good);stroke-width:1.5}
.arch-lab .phx-svg .p25-card-no{fill:var(--arch-bad-bg);stroke:var(--arch-bad);stroke-width:1.2;stroke-dasharray:4 3}
.arch-lab .phx-svg .p25-bead{fill:#f59e0b;stroke:#92400e;stroke-width:1.2}
.arch-lab .phx-svg .p25-bead-v{fill:#60a5fa;stroke:#1e3a8a;stroke-width:1.2}
.arch-lab .phx-svg .p25-bead-text{fill:#1f2937;stroke:none;font-size:11px;font-weight:700}
.arch-lab .phx-svg .p25-string{stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .p25-cut{stroke:var(--arch-bad);stroke-width:3;stroke-linecap:round}
.arch-lab .phx-svg .p25-gap{fill:transparent;stroke:none;cursor:pointer}
.arch-lab .p25-table td.p25-yes{color:var(--arch-good);font-weight:700}
.arch-lab .p25-table td.p25-nope{color:var(--arch-bad)}
.arch-lab .p25-table tr.p25-row-now td{background:var(--arch-pressed-bg)}
.arch-lab .p25-scroll{overflow-x:auto;max-width:100%}
.arch-lab .p25-steppers{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,204px),1fr));gap:8px;min-width:0}
.arch-lab .p25-stepper{display:flex;align-items:center;gap:4px;padding:4px 6px;border:1px solid var(--arch-soft-line);border-radius:10px;background:var(--arch-surface)}
.arch-lab .p25-stepper-P{border:2px solid var(--p25-shirt-b)}
.arch-lab .p25-step-label{min-width:24px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab input.p25-step-num{width:52px;min-width:52px;flex:0 0 52px;text-align:center;padding:8px 4px}
.arch-lab .p25-stepper .phx-step{flex:0 0 auto}
.arch-lab .phx-svg .p25-cell-add{fill:var(--p25-shirt-b);fill-opacity:.55;stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .phx-svg .p25-sq-a{fill:var(--phx-a);fill-opacity:.16;stroke:var(--phx-a);stroke-width:2}
.arch-lab .phx-svg .p25-sq-b{fill:var(--phx-b);fill-opacity:.16;stroke:var(--phx-b);stroke-width:2}
.arch-lab .phx-svg .p25-common{fill:var(--phx-c);fill-opacity:.45;stroke:var(--phx-c);stroke-width:2}
.arch-lab .phx-svg .p25-bar-a{fill:var(--phx-a);fill-opacity:.7;stroke:none}
.arch-lab .phx-svg .p25-bar-b{fill:var(--phx-b);fill-opacity:.7;stroke:none}
.arch-lab .phx-svg .p25-old-border{fill:none;stroke:var(--arch-fig-line);stroke-width:1.5;stroke-dasharray:5 4}
.arch-lab .phx-svg .p25-mark-need{fill:var(--arch-focus);stroke:none}
.arch-lab .phx-svg .p25-base-tri{fill:var(--p25-soil);fill-opacity:.35;stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .p25-face{fill:var(--phx-a);fill-opacity:.12;stroke:none}
.arch-lab .phx-svg .p25-chord{stroke:var(--phx-a);stroke-width:1.6;opacity:.75}
.arch-lab .phx-svg .p25-missing{stroke:var(--arch-bad);stroke-width:2.5;stroke-dasharray:6 5}
.arch-lab .phx-svg .p25-env-sel{fill:#fde68a;fill-opacity:.6;stroke:#b45309;stroke-width:2}
.arch-lab .p25-env-tiles .p25-tile{min-width:44px;font-variant-numeric:tabular-nums}
/* Phystech 2024/25 math 11, round III */
.arch-lab .phx-svg .p25-heat-pos{fill:var(--phx-c);stroke:none}
.arch-lab .phx-svg .p25-heat-neg{fill:var(--phx-b);stroke:none}
.arch-lab .phx-svg .p25-band-a{stroke:var(--phx-a);stroke-width:9;stroke-linecap:butt}
.arch-lab .phx-svg .p25-band-b{stroke:var(--phx-b);stroke-width:9;stroke-linecap:butt}
.arch-lab .phx-svg .p25-band-bad{stroke:var(--arch-bad);stroke-width:9;stroke-linecap:butt}
.arch-lab .phx-svg .p25-band-good{stroke:var(--arch-good);stroke-width:9;stroke-linecap:butt}
.arch-lab .phx-svg .p25-try-ok{fill:var(--arch-good);stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab .phx-svg .p25-try-no{fill:var(--arch-bad);stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab .phx-svg .p25-region-a{fill:var(--phx-a);fill-opacity:.28;stroke:var(--phx-a);stroke-width:1.2}
.arch-lab .phx-svg .p25-region-b{fill:var(--phx-b);fill-opacity:.28;stroke:var(--phx-b);stroke-width:1.2}
.arch-lab .phx-svg .p25-region-c{fill:var(--phx-c);fill-opacity:.28;stroke:var(--phx-c);stroke-width:1.2}
.arch-lab .phx-svg .p25-region-q{fill:var(--phx-d);fill-opacity:.12;stroke:var(--phx-d);stroke-width:1}
.arch-lab .p25-nb{border-collapse:collapse;font-variant-numeric:tabular-nums}
.arch-lab .p25-nb th{padding:4px 6px;font-weight:600;text-align:center;white-space:nowrap}
.arch-lab .p25-nb td{padding:2px}
.arch-lab .p25-nb .p25-tile{min-width:44px;min-height:44px;padding:4px}
.arch-lab .p25-nb .p25-tile[aria-pressed="true"]{border:2px solid var(--arch-good);background:var(--arch-ok-bg)}
.arch-lab .p25-nb th.p25-nb-bad,.arch-lab .p25-nb td.p25-nb-bad{background:var(--arch-bad-bg)}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: notes under the statement of the SPb district-round pages
   (the second variant of the sheet and a problem shared by two grades). Neutral card, not a warning: site tokens with
   fallbacks for the older design, so both themes follow the site's own switch. */
.spb-note{margin:18px 0;padding:14px 18px;border:1px solid var(--line,#e3e6ec);border-left:3px solid var(--accent,#2457d6);border-radius:0 var(--r,10px) var(--r,10px) 0;background:var(--bg-2,#f4f5f7);color:var(--ink,#16213a);font-size:15px;line-height:1.7}
.spb-note>strong,.spb-note>summary{display:block;color:var(--accent-ink,#183f9f);font-weight:650}
.spb-note>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center;gap:10px;margin:-6px 0}
.spb-note>summary::-webkit-details-marker{display:none}
.spb-note>summary::after{content:"+";margin-left:auto;font-size:20px;line-height:1;color:var(--ink-2,#4e586d)}
.spb-note[open]>summary::after{content:"−"}
.spb-note[open]>summary{margin-bottom:6px}
.spb-note>summary:focus-visible{outline:2px solid var(--accent,#2457d6);outline-offset:3px;border-radius:4px}
.spb-note>summary strong{color:inherit}
.spb-note p{margin:8px 0}
.spb-note ul{margin:6px 0 0;padding-left:20px}
.spb-note .lesson-prose{margin:8px 0}
.spb-variant2-note{color:var(--ink-2,#4e586d);font-size:14px}
.spb-note .lesson-figure{margin:12px 0}
/* Exact-number fields of the shared kit (visuals/kit.mjs): the copied base styles leave them content-box, so a field
   with padding grows under the «+» button on narrow screens. */
.arch-lab .phx-num{box-sizing:border-box}

/* Input padding must stay inside the allocated cell in every SPb model. */
.arch-lab input{box-sizing:border-box}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the balloons and of the children holding them
   (visuals/art/balloons.mjs). One colour per balloon 0–9 with a letter on it in a contrasting ink; the balloons keep their
   colours in both themes (they are real objects), in the dark branches the outline and the strings are lighter so that a
   dark balloon stays visible on a dark stage. */
.arch-lab{--spb-balloons-0:#dc2626;--spb-balloons-1:#f97316;--spb-balloons-2:#facc15;--spb-balloons-3:#22c55e;--spb-balloons-4:#7dd3fc;
 --spb-balloons-5:#2563eb;--spb-balloons-6:#7c3aed;--spb-balloons-7:#f9a8d4;--spb-balloons-8:#f8fafc;--spb-balloons-9:#1f2937;
 --spb-balloons-none:#e2e8f0;--spb-balloons-dark-ink:#1f2937;--spb-balloons-light-ink:#ffffff;
 --spb-balloons-edge:#334155;--spb-balloons-string:#64748b;--spb-balloons-band:#ef4444}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-balloons-none:#475569;--spb-balloons-edge:#cbd5e1;--spb-balloons-string:#94a3b8}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-balloons-none:#475569;--spb-balloons-edge:#cbd5e1;--spb-balloons-string:#94a3b8}
.arch-lab svg .spb-balloons-body{fill:var(--spb-balloons-none);stroke:var(--spb-balloons-edge);stroke-width:1.2}
.arch-lab svg .spb-balloons-knot{fill:var(--spb-balloons-none);stroke:var(--spb-balloons-edge);stroke-width:1}
.arch-lab svg .spb-balloons-c0 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-0)}
.arch-lab svg .spb-balloons-c1 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-1)}
.arch-lab svg .spb-balloons-c2 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-2)}
.arch-lab svg .spb-balloons-c3 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-3)}
.arch-lab svg .spb-balloons-c4 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-4)}
.arch-lab svg .spb-balloons-c5 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-5)}
.arch-lab svg .spb-balloons-c6 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-6)}
.arch-lab svg .spb-balloons-c7 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-7)}
.arch-lab svg .spb-balloons-c8 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-8)}
.arch-lab svg .spb-balloons-c9 :is(.spb-balloons-body,.spb-balloons-knot){fill:var(--spb-balloons-9)}
.arch-lab svg .spb-balloons-gloss{fill:#ffffff;fill-opacity:.55;stroke:none}
.arch-lab svg text.spb-balloons-letter{fill:var(--spb-balloons-dark-ink);stroke:none;font-weight:700;font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif;pointer-events:none}
.arch-lab svg :is(.spb-balloons-c0,.spb-balloons-c5,.spb-balloons-c6,.spb-balloons-c9) text.spb-balloons-letter{fill:var(--spb-balloons-light-ink)}
.arch-lab svg .spb-balloons-string{fill:none;stroke:var(--spb-balloons-string);stroke-width:1.4;stroke-linecap:round}
.arch-lab svg .spb-balloons-o{stroke:var(--spb-balloons-edge);stroke-width:1.4;stroke-linejoin:round}
.arch-lab svg .spb-balloons-o-thin{stroke:var(--spb-balloons-edge);stroke-width:1;stroke-linejoin:round}
.arch-lab svg .spb-balloons-limb{fill:none;stroke-linecap:round}
.arch-lab svg .spb-balloons-shoe{fill:#1f2937;stroke:var(--spb-balloons-edge);stroke-width:.8}
.arch-lab svg .spb-balloons-band{fill:var(--spb-balloons-band);stroke:none}
/* HTML badges of a colour (buttons, text next to the pictures) */
.arch-lab .spb-balloons-chip{display:inline-flex;align-items:center;justify-content:center;width:1.55em;height:1.7em;border-radius:50% 50% 46% 46%;
 border:1px solid var(--spb-balloons-edge);font-weight:700;font-size:.92em;line-height:1;vertical-align:middle;background:var(--spb-balloons-none);color:var(--spb-balloons-dark-ink);flex:0 0 auto}
.arch-lab .spb-balloons-chip-big{width:1.9em;height:2.15em;font-size:1em}
.arch-lab .spb-balloons-chip[data-c="0"]{background:var(--spb-balloons-0);color:var(--spb-balloons-light-ink)}
.arch-lab .spb-balloons-chip[data-c="1"]{background:var(--spb-balloons-1)}
.arch-lab .spb-balloons-chip[data-c="2"]{background:var(--spb-balloons-2)}
.arch-lab .spb-balloons-chip[data-c="3"]{background:var(--spb-balloons-3)}
.arch-lab .spb-balloons-chip[data-c="4"]{background:var(--spb-balloons-4)}
.arch-lab .spb-balloons-chip[data-c="5"]{background:var(--spb-balloons-5);color:var(--spb-balloons-light-ink)}
.arch-lab .spb-balloons-chip[data-c="6"]{background:var(--spb-balloons-6);color:var(--spb-balloons-light-ink)}
.arch-lab .spb-balloons-chip[data-c="7"]{background:var(--spb-balloons-7)}
.arch-lab .spb-balloons-chip[data-c="8"]{background:var(--spb-balloons-8)}
.arch-lab .spb-balloons-chip[data-c="9"]{background:var(--spb-balloons-9);color:var(--spb-balloons-light-ink)}

/* White letters on coloured balloons retain their fill without a surface-colour outline. */
.arch-lab .phx-svg text.spb-balloons-letter{stroke:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the beads (visuals/art/beads.mjs).
   One bead colour per digit 0–9; the digit is dark on every bead. Beads keep their colours in both themes; in the dark
   branches they are a little deeper and the thread and metal lighter, so that the necklace stays visible on a dark stage. */
.arch-lab{--spb-beads-0:#e5e7eb;--spb-beads-1:#fca5a5;--spb-beads-2:#fdba74;--spb-beads-3:#fde047;--spb-beads-4:#bef264;
 --spb-beads-5:#86efac;--spb-beads-6:#67e8f9;--spb-beads-7:#93c5fd;--spb-beads-8:#c4b5fd;--spb-beads-9:#f9a8d4;
 --spb-beads-edge:#475569;--spb-beads-ink:#1f2937;--spb-beads-thread:#94a3b8;--spb-beads-metal:#b0b8c4;--spb-beads-metal-edge:#64748b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-beads-0:#cbd5e1;--spb-beads-1:#f87171;--spb-beads-2:#fb923c;--spb-beads-3:#facc15;--spb-beads-4:#a3e635;
 --spb-beads-5:#4ade80;--spb-beads-6:#22d3ee;--spb-beads-7:#60a5fa;--spb-beads-8:#a78bfa;--spb-beads-9:#f472b6;
 --spb-beads-edge:#0f172a;--spb-beads-ink:#111827;--spb-beads-thread:#64748b;--spb-beads-metal:#94a3b8;--spb-beads-metal-edge:#cbd5e1}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-beads-0:#cbd5e1;--spb-beads-1:#f87171;--spb-beads-2:#fb923c;--spb-beads-3:#facc15;--spb-beads-4:#a3e635;
 --spb-beads-5:#4ade80;--spb-beads-6:#22d3ee;--spb-beads-7:#60a5fa;--spb-beads-8:#a78bfa;--spb-beads-9:#f472b6;
 --spb-beads-edge:#0f172a;--spb-beads-ink:#111827;--spb-beads-thread:#64748b;--spb-beads-metal:#94a3b8;--spb-beads-metal-edge:#cbd5e1}
.arch-lab .spb-beads-body{fill:var(--spb-beads-0);stroke:var(--spb-beads-edge);stroke-width:1}
.arch-lab .spb-beads-d0 .spb-beads-body{fill:var(--spb-beads-0)}
.arch-lab .spb-beads-d1 .spb-beads-body{fill:var(--spb-beads-1)}
.arch-lab .spb-beads-d2 .spb-beads-body{fill:var(--spb-beads-2)}
.arch-lab .spb-beads-d3 .spb-beads-body{fill:var(--spb-beads-3)}
.arch-lab .spb-beads-d4 .spb-beads-body{fill:var(--spb-beads-4)}
.arch-lab .spb-beads-d5 .spb-beads-body{fill:var(--spb-beads-5)}
.arch-lab .spb-beads-d6 .spb-beads-body{fill:var(--spb-beads-6)}
.arch-lab .spb-beads-d7 .spb-beads-body{fill:var(--spb-beads-7)}
.arch-lab .spb-beads-d8 .spb-beads-body{fill:var(--spb-beads-8)}
.arch-lab .spb-beads-d9 .spb-beads-body{fill:var(--spb-beads-9)}
.arch-lab .spb-beads-shade{fill:#0f172a;fill-opacity:.12;stroke:none}
.arch-lab .spb-beads-gloss{fill:#ffffff;fill-opacity:.7;stroke:none}
.arch-lab svg text.spb-beads-digit{fill:var(--spb-beads-ink);stroke:none;font-weight:700;font-variant-numeric:tabular-nums;font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif}
.arch-lab .spb-beads-thread{stroke:var(--spb-beads-thread);stroke-width:2;stroke-linecap:round}
.arch-lab .spb-beads-metal{fill:none;stroke:var(--spb-beads-metal-edge);stroke-width:2.2}
.arch-lab .spb-beads-metal-line{stroke:var(--spb-beads-metal-edge);stroke-width:2.2;stroke-linecap:round}
.arch-lab .spb-beads-dot{fill:var(--spb-beads-thread);stroke:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the school beam balance (visuals/art/beam-balance.mjs):
   the wooden plinth, the brass column and hub, the steel beam, the cream dial with its ticks, the red needle and the metal
   pans. The balance is a light object, so its outline stays dark in both themes. */
.arch-lab{--spb-beam-wood:#c79a5f;--spb-beam-wood-edge:#8a5a2b;--spb-beam-brass:#d8ab3e;--spb-beam-beam:#7b8794;--spb-beam-metal:#b8c1cc;--spb-beam-pan:#c4ccd7;--spb-beam-pan-hi:#eef2f7;--spb-beam-dial:#fffdf4;--spb-beam-tick:#4b5563;--spb-beam-needle:#d9473b;--spb-beam-ink:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-beam-wood:#a8783f;--spb-beam-wood-edge:#6f4a22;--spb-beam-brass:#c99b33;--spb-beam-beam:#9aa5b1;--spb-beam-metal:#a7b0bd;--spb-beam-pan:#a7b0bd;--spb-beam-pan-hi:#d6dce5;--spb-beam-dial:#f3efe2;--spb-beam-tick:#374151;--spb-beam-needle:#e0574b;--spb-beam-ink:#1f2937}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-beam-wood:#a8783f;--spb-beam-wood-edge:#6f4a22;--spb-beam-brass:#c99b33;--spb-beam-beam:#9aa5b1;--spb-beam-metal:#a7b0bd;--spb-beam-pan:#a7b0bd;--spb-beam-pan-hi:#d6dce5;--spb-beam-dial:#f3efe2;--spb-beam-tick:#374151;--spb-beam-needle:#e0574b;--spb-beam-ink:#1f2937}
.arch-lab .spb-beam-o{stroke:#1f2937;stroke-width:1.2;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-beam-flat{stroke:none}
.arch-lab .spb-beam-tick{stroke:var(--spb-beam-tick);stroke-width:1.1;fill:none}
.arch-lab .spb-beam-shine{stroke:#ffffff;stroke-width:1.6;opacity:.75;fill:none}
.arch-lab .spb-beam-grain{stroke:var(--spb-beam-wood-edge);stroke-width:1.1;opacity:.5;fill:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the bus and the royal coach of
   visuals/art/bus.mjs, and of the road under them. The glass stays light in both themes (passengers are drawn on it);
   the body and the road get a little darker in the dark branches. */
.arch-lab{--spb-bus-body:#f6c445;--spb-bus-skirt:#e39b17;--spb-bus-glass:#dff0fd;--spb-bus-hub:#cbd5e1;--spb-bus-plate:#ffffff;
 --spb-bus-royal:#7446c9;--spb-bus-gold:#f0bf34;--spb-bus-curtain:#d6455a;--spb-bus-road:#a7aeb8;--spb-bus-line:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-bus-body:#e5b23a;--spb-bus-skirt:#c98512;--spb-bus-glass:#d6e8f7;--spb-bus-royal:#6c42bd;--spb-bus-gold:#e2b12d;--spb-bus-road:#4b5563}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-bus-body:#e5b23a;--spb-bus-skirt:#c98512;--spb-bus-glass:#d6e8f7;--spb-bus-royal:#6c42bd;--spb-bus-gold:#e2b12d;--spb-bus-road:#4b5563}
.arch-lab .spb-bus-o{stroke:var(--spb-bus-line);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-bus-o-thin{stroke:var(--spb-bus-line);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-bus-shadow{fill:#0f172a;fill-opacity:.14;stroke:none}
.arch-lab .spb-bus-stripe{stroke:#b45309;stroke-width:2.5;fill:none}
.arch-lab .spb-bus-trim{stroke:var(--spb-bus-gold);stroke-width:3;fill:none}
.arch-lab .spb-bus-shine{stroke:#ffffff;stroke-width:2;fill:none;stroke-linecap:round;opacity:.8}
.arch-lab .spb-bus-spoke{stroke:#7c5a10;stroke-width:1.4;fill:none}
.arch-lab svg text.spb-bus-route{fill:#fbbf24;font-size:13px;font-weight:700;stroke:none;letter-spacing:.5px}
.arch-lab svg text.spb-bus-plate-text{fill:#111827;font-size:13px;font-weight:800;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .spb-bus-dim{opacity:.4}
.arch-lab .spb-bus-road-edge{stroke:none}
.arch-lab .spb-bus-lane{stroke:#f8fafc;stroke-width:2.2;fill:none;stroke-linecap:round;opacity:.85}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the gift boxes and paper bags of sweets
   (visuals/art/candy-box.mjs): cardboard, lid, the dark inside of an open box, ribbon, label plate, kraft paper.
   Light theme and both dark branches; the sweets keep their bright wrappers in both themes. */
.arch-lab{--spb-cbox-card:#f3c98b;--spb-cbox-lid:#e8a85a;--spb-cbox-inside:#7a4b22;--spb-cbox-ribbon:#dc2626;--spb-cbox-plate:#fffbeb;--spb-cbox-plate-ink:#7c2d12;--spb-cbox-bag:#e9c99a;--spb-cbox-bag-dark:#cfa66b;--spb-cbox-bag-ink:#5b3a1e;--spb-cbox-fold:#b08550}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-cbox-card:#b98a4e;--spb-cbox-lid:#a8733a;--spb-cbox-inside:#2e1b0b;--spb-cbox-ribbon:#ef4444;--spb-cbox-plate:#fef3c7;--spb-cbox-plate-ink:#7c2d12;--spb-cbox-bag:#c9a671;--spb-cbox-bag-dark:#a9844f;--spb-cbox-bag-ink:#3b230e;--spb-cbox-fold:#7d5a2f}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-cbox-card:#b98a4e;--spb-cbox-lid:#a8733a;--spb-cbox-inside:#2e1b0b;--spb-cbox-ribbon:#ef4444;--spb-cbox-plate:#fef3c7;--spb-cbox-plate-ink:#7c2d12;--spb-cbox-bag:#c9a671;--spb-cbox-bag-dark:#a9844f;--spb-cbox-bag-ink:#3b230e;--spb-cbox-fold:#7d5a2f}
.arch-lab .spb-cbox-o{stroke:var(--arch-fig-line);stroke-width:1.3;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-cbox-o-thin{stroke:var(--arch-fig-line);stroke-width:.9;stroke-linejoin:round}
.arch-lab svg text.spb-cbox-plate-text{fill:var(--spb-cbox-plate-ink);font-weight:700;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab svg text.spb-cbox-bag-text{fill:var(--spb-cbox-bag-ink);font-weight:700;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .spb-cbox-fold{stroke:var(--spb-cbox-fold);stroke-width:1.2;fill:none}
.arch-lab .spb-cbox-sweet{stroke:#1f2937;stroke-width:.6;stroke-opacity:.55}
.arch-lab .spb-cbox-shine{opacity:.65}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the crate of sweets (visuals/art/candy-crate.mjs):
   planks, corner posts, the dark inside and the outline. The wrappers of the sweets keep their colours in both themes. */
.arch-lab{--spb-crate-wood:#d4a15f;--spb-crate-plank:#c08a4a;--spb-crate-post:#a86f3a;--spb-crate-inside:#5b3a1e;--spb-crate-line:#4a2f17}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-crate-wood:#a8783f;--spb-crate-plank:#946733;--spb-crate-post:#7c5226;--spb-crate-inside:#2a1a0c;--spb-crate-line:#1f140a}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-crate-wood:#a8783f;--spb-crate-plank:#946733;--spb-crate-post:#7c5226;--spb-crate-inside:#2a1a0c;--spb-crate-line:#1f140a}
.arch-lab .spb-crate-o{stroke:var(--arch-fig-line);stroke-width:1.3;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-crate-shine{stroke:#ffffff;stroke-width:2.6;opacity:.7;fill:none}
.arch-lab .spb-crate-grain{stroke:var(--spb-crate-line);stroke-width:1.2;opacity:.45;fill:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the chalk drawings on asphalt
   (visuals/art/chalk.mjs). The asphalt is a picture of a yard and stays dark grey in both themes, so the chalk colours
   on it are fixed; in the dark branches only the rim of the patch is a little lighter, to separate it from the page. */
.arch-lab{--spb-chalk-asphalt:#545b66;--spb-chalk-rim:#3b414a;--spb-chalk-grain-dark:#454b54;--spb-chalk-grain-light:#6f7783;
 --spb-chalk-white:#f8fafc;--spb-chalk-yellow:#fde047;--spb-chalk-blue:#bae6fd;--spb-chalk-pink:#fbcfe8;--spb-chalk-spot:#5f6773}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-chalk-rim:#8a929e}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-chalk-rim:#8a929e}
.arch-lab .spb-chalk-asphalt{fill:var(--spb-chalk-asphalt);stroke:var(--spb-chalk-rim);stroke-width:1.5}
.arch-lab .spb-chalk-grain-dark{fill:var(--spb-chalk-grain-dark);stroke:none}
.arch-lab .spb-chalk-grain-light{fill:var(--spb-chalk-grain-light);stroke:none;opacity:.8}
.arch-lab .spb-chalk-line{fill:none}
.arch-lab .spb-chalk-stroke{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;opacity:.92}
.arch-lab .spb-chalk-stroke-2{stroke-width:1;opacity:.55}
.arch-lab .spb-chalk-white .spb-chalk-stroke,.arch-lab .spb-chalk-white.spb-chalk-start{stroke:var(--spb-chalk-white)}
.arch-lab .spb-chalk-yellow .spb-chalk-stroke{stroke:var(--spb-chalk-yellow);stroke-width:3.6}
.arch-lab .spb-chalk-yellow .spb-chalk-stroke-2{stroke-width:1.4}
.arch-lab .spb-chalk-blue .spb-chalk-stroke{stroke:var(--spb-chalk-blue)}
.arch-lab .spb-chalk-start{fill:none;stroke-width:1.4;stroke-dasharray:3 4;opacity:.8}
.arch-lab .spb-chalk-spot{fill:var(--spb-chalk-spot);stroke:none}
.arch-lab svg text.spb-chalk-text{stroke:none;font-family:"Segoe Print","Comic Sans MS","Chalkboard SE","Bradley Hand",system-ui,sans-serif;font-weight:700}
.arch-lab svg text.spb-chalk-text-white{fill:var(--spb-chalk-white)}
.arch-lab svg text.spb-chalk-text-yellow{fill:var(--spb-chalk-yellow)}
.arch-lab svg text.spb-chalk-text-blue{fill:var(--spb-chalk-blue)}
.arch-lab svg text.spb-chalk-text-pink{fill:var(--spb-chalk-pink)}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the wooden chessboard and the rook
   (visuals/art/chess.mjs): light and dark squares, the board edge, a hole cut out of the board (dark opening, the inner
   walls of the cut) and an ivory rook with a dark outline. In the dark branches the wood is dimmer, the rook stays ivory
   and the hole stays the darkest place of the board. */
.arch-lab{--spb-chess-light:#f0d9b5;--spb-chess-dark:#b58863;--spb-chess-edge:#5b3a1e;--spb-chess-hole:#1c1410;
 --spb-chess-wall-top:#6b4524;--spb-chess-wall-left:#8a5d34;--spb-chess-cut:#e9cfa3;
 --spb-chess-rook:#fbf5e6;--spb-chess-rook-line:#2b1d10;--spb-chess-rook-shine:#ffffff;--spb-chess-shadow:#3b2a1a;--spb-chess-alert:#b91c1c}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-chess-light:#bfa37c;--spb-chess-dark:#7d5a3b;--spb-chess-edge:#d8bf98;--spb-chess-hole:#050302;
 --spb-chess-wall-top:#3a2614;--spb-chess-wall-left:#4d331c;--spb-chess-cut:#d8bf98;
 --spb-chess-rook:#f6eedb;--spb-chess-rook-line:#140d06;--spb-chess-rook-shine:#ffffff;--spb-chess-shadow:#000000;--spb-chess-alert:#fca5a5}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-chess-light:#bfa37c;--spb-chess-dark:#7d5a3b;--spb-chess-edge:#d8bf98;--spb-chess-hole:#050302;
 --spb-chess-wall-top:#3a2614;--spb-chess-wall-left:#4d331c;--spb-chess-cut:#d8bf98;
 --spb-chess-rook:#f6eedb;--spb-chess-rook-line:#140d06;--spb-chess-rook-shine:#ffffff;--spb-chess-shadow:#000000;--spb-chess-alert:#fca5a5}
.arch-lab .spb-chess-light{fill:var(--spb-chess-light)}
.arch-lab .spb-chess-dark{fill:var(--spb-chess-dark)}
.arch-lab .spb-chess-edge{fill:none;stroke:var(--spb-chess-edge)}
.arch-lab .spb-chess-hole-core{fill:var(--spb-chess-hole)}
.arch-lab .spb-chess-hole-wall-top{fill:var(--spb-chess-wall-top)}
.arch-lab .spb-chess-hole-wall-left{fill:var(--spb-chess-wall-left)}
.arch-lab .spb-chess-hole-cut{fill:none;stroke:var(--spb-chess-cut);stroke-width:2.5;opacity:.8}
.arch-lab .spb-chess-rook-body{fill:var(--spb-chess-rook);stroke:var(--spb-chess-rook-line);stroke-width:3.2;stroke-linejoin:round}
.arch-lab .spb-chess-rook-shine{fill:none;stroke:var(--spb-chess-rook-shine);stroke-width:3;stroke-linecap:round;opacity:.9}
.arch-lab .spb-chess-rook-shadow{fill:var(--spb-chess-shadow);opacity:.28}
.arch-lab .spb-chess-rook-alert .spb-chess-rook-body{stroke:var(--spb-chess-alert);stroke-width:6}
.arch-lab .spb-chess-rook-ghost{opacity:.45}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the classroom and its pupils
   (visuals/art/classroom.mjs): wall, floor, chalkboard, wooden frame, window, door plate, girls (rose dress, bows) and
   boys (blue shirt). The wall and the floor get darker in the dark branches; the pupils keep bright colours so that the
   dots of a crowd stay distinguishable in both themes. Outlines are dark in both themes, as in visuals/art/house.css. */
.arch-lab{--spb-class-wall:#fbf4e4;--spb-class-floor:#d8b07a;--spb-class-plank-line:#b88a55;--spb-class-board:#2f5d4e;--spb-class-chalk:#f6f3e8;
 --spb-class-wood:#b07a43;--spb-class-glass:#d8ecfb;--spb-class-plate:#1e3a8a;--spb-class-plate-on:#b45309;--spb-class-plate-ink:#ffffff;
 --spb-class-girl:#e0517a;--spb-class-boy:#2f7bea;--spb-class-bow:#fde047;--spb-class-skin:#f6d2b4;--spb-class-hair:#7a4520;--spb-class-hair-b:#2b2b33;
 --spb-class-pants:#334155;--spb-class-line:#1f2937;--spb-class-room-line:#8a7a5c;--spb-class-sel:#f59e0b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-class-wall:#3a3f4d;--spb-class-floor:#6e5233;--spb-class-plank-line:#57401f;
 --spb-class-board:#244a3e;--spb-class-glass:#2a4a66;--spb-class-plate:#3b5bdb;--spb-class-plate-on:#d97706;--spb-class-girl:#f27aa0;--spb-class-boy:#6aa5f7;
 --spb-class-skin:#e8bf9c;--spb-class-room-line:#9aa3b5;--spb-class-sel:#fbbf24}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-class-wall:#3a3f4d;--spb-class-floor:#6e5233;--spb-class-plank-line:#57401f;
 --spb-class-board:#244a3e;--spb-class-glass:#2a4a66;--spb-class-plate:#3b5bdb;--spb-class-plate-on:#d97706;--spb-class-girl:#f27aa0;--spb-class-boy:#6aa5f7;
 --spb-class-skin:#e8bf9c;--spb-class-room-line:#9aa3b5;--spb-class-sel:#fbbf24}
.arch-lab svg .spb-class-o{stroke:var(--spb-class-line);stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round}
.arch-lab svg .spb-class-o-thin{stroke:var(--spb-class-line);stroke-width:.9;stroke-linejoin:round}
.arch-lab svg .spb-class-none{stroke:none}
.arch-lab svg .spb-class-room{stroke:var(--spb-class-room-line);stroke-width:1.5}
.arch-lab svg .spb-class-plank{stroke:var(--spb-class-plank-line);stroke-width:1}
.arch-lab svg .spb-class-selected{fill:none;stroke:var(--spb-class-sel);stroke-width:3;stroke-dasharray:7 4}
.arch-lab svg text.spb-class-chalk{fill:var(--spb-class-chalk);stroke:none;font-weight:700;font-variant-numeric:tabular-nums;font-family:"Comic Sans MS","Chalkboard SE","Segoe Print",system-ui,sans-serif}
.arch-lab svg text.spb-class-plate-text{fill:var(--spb-class-plate-ink);stroke:none;font-weight:700}
.arch-lab svg .spb-class-dot-girl{fill:var(--spb-class-girl);stroke:none}
.arch-lab svg .spb-class-dot-boy{fill:var(--spb-class-boy);stroke:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the coloured pencil (visuals/art/color-pencil.mjs).
   The pencil colours name real colours of a picture, so they stay the same in both themes; only the outline follows
   the theme (--arch-fig-line), and in the dark branches the wood is a little dimmer. */
.arch-lab{--spb-pencil-red:#e5484d;--spb-pencil-blue:#3e63dd;--spb-pencil-green:#30a46c;--spb-pencil-white:#ffffff;
 --spb-pencil-yellow:#f5c400;--spb-pencil-black:#1f2937;--spb-pencil-wood:#f2d3a6;--spb-pencil-wood-edge:#b88a55}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-pencil-wood:#d9b98c;--spb-pencil-wood-edge:#a07848}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-pencil-wood:#d9b98c;--spb-pencil-wood-edge:#a07848}
.arch-lab .spb-pencil-body,.arch-lab .spb-pencil-cap{stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .spb-pencil-lead{stroke:var(--arch-fig-line);stroke-width:.8;stroke-linejoin:round}
.arch-lab .spb-pencil-red{fill:var(--spb-pencil-red)}
.arch-lab .spb-pencil-blue{fill:var(--spb-pencil-blue)}
.arch-lab .spb-pencil-green{fill:var(--spb-pencil-green)}
.arch-lab .spb-pencil-white{fill:var(--spb-pencil-white)}
.arch-lab .spb-pencil-yellow{fill:var(--spb-pencil-yellow)}
.arch-lab .spb-pencil-black{fill:var(--spb-pencil-black)}
.arch-lab .spb-pencil-facet{fill:#ffffff;opacity:.32;stroke:none}
.arch-lab .spb-pencil-shade{fill:#000000;opacity:.14;stroke:none}
.arch-lab .spb-pencil-capshade{fill:#000000;opacity:.28;stroke:none}
.arch-lab .spb-pencil-wood{fill:var(--spb-pencil-wood);stroke:var(--spb-pencil-wood-edge);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-pencil-scallop{fill:none;stroke:var(--spb-pencil-wood-edge);stroke-width:.8;opacity:.8}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the wooden toy blocks with digits
   (visuals/art/digit-blocks.mjs). Beech wood (front, lighter top, darker side), a painted square and a large digit in one
   of six paints. The blocks stay light in both themes; in the dark branches the wood is a little deeper and the edges
   lighter, so that the blocks stand out on a dark stage. The digit ink is always dark on a light paint. */
.arch-lab{--spb-blocks-wood:#f2d9a6;--spb-blocks-wood-top:#f8e8c8;--spb-blocks-wood-side:#d8b373;--spb-blocks-edge:#9a6b2f;--spb-blocks-shadow:#0f172a;--spb-blocks-shadow-a:.16;--spb-blocks-gleam:#fff8e8;
 --spb-blocks-blue:#bfdbfe;--spb-blocks-blue-ink:#1e3a8a;--spb-blocks-blue-line:#3b6fd1;
 --spb-blocks-orange:#fed7aa;--spb-blocks-orange-ink:#9a3412;--spb-blocks-orange-line:#e0762a;
 --spb-blocks-green:#bbf7d0;--spb-blocks-green-ink:#166534;--spb-blocks-green-line:#2f9a57;
 --spb-blocks-red:#fecaca;--spb-blocks-red-ink:#991b1b;--spb-blocks-red-line:#d64545;
 --spb-blocks-violet:#ddd6fe;--spb-blocks-violet-ink:#5b21b6;--spb-blocks-violet-line:#7c5ce0;
 --spb-blocks-yellow:#fef08a;--spb-blocks-yellow-ink:#854d0e;--spb-blocks-yellow-line:#c99a12}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-blocks-wood:#e3c48a;--spb-blocks-wood-top:#f0dcb2;--spb-blocks-wood-side:#b9914f;--spb-blocks-edge:#f3dfb6;--spb-blocks-shadow:#000;--spb-blocks-shadow-a:.45;--spb-blocks-gleam:#fff3d6;
 --spb-blocks-blue:#a9cdfb;--spb-blocks-orange:#fcc893;--spb-blocks-green:#a3eec0;--spb-blocks-red:#fbb8b8;--spb-blocks-violet:#cfc6fb;--spb-blocks-yellow:#fbe679}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-blocks-wood:#e3c48a;--spb-blocks-wood-top:#f0dcb2;--spb-blocks-wood-side:#b9914f;--spb-blocks-edge:#f3dfb6;--spb-blocks-shadow:#000;--spb-blocks-shadow-a:.45;--spb-blocks-gleam:#fff3d6;
 --spb-blocks-blue:#a9cdfb;--spb-blocks-orange:#fcc893;--spb-blocks-green:#a3eec0;--spb-blocks-red:#fbb8b8;--spb-blocks-violet:#cfc6fb;--spb-blocks-yellow:#fbe679}
.arch-lab .spb-blocks-shadow{fill:var(--spb-blocks-shadow);fill-opacity:var(--spb-blocks-shadow-a);stroke:none}
.arch-lab .spb-blocks-front{fill:var(--spb-blocks-wood);stroke:var(--spb-blocks-edge);stroke-width:1.2}
.arch-lab .spb-blocks-top{fill:var(--spb-blocks-wood-top);stroke:var(--spb-blocks-edge);stroke-width:1.2;stroke-linejoin:round}
.arch-lab .spb-blocks-side{fill:var(--spb-blocks-wood-side);stroke:var(--spb-blocks-edge);stroke-width:1.2;stroke-linejoin:round}
.arch-lab .spb-blocks-gleam{stroke:var(--spb-blocks-gleam);stroke-width:1.2;stroke-linecap:round;fill:none;opacity:.9}
.arch-lab .spb-blocks-paint,.arch-lab .spb-blocks-paint-top,.arch-lab .spb-blocks-paint-side{stroke-width:1.4;stroke-linejoin:round}
.arch-lab .spb-blocks-paint-top,.arch-lab .spb-blocks-paint-side{opacity:.85}
.arch-lab svg text.spb-blocks-digit{font-weight:800;stroke:none;font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif;font-variant-numeric:tabular-nums}
.arch-lab svg text.spb-blocks-emboss{fill:#ffffff;fill-opacity:.75;stroke:none;font-weight:800;font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif;font-variant-numeric:tabular-nums}
.arch-lab .spb-blocks-blue :is(.spb-blocks-paint,.spb-blocks-paint-top,.spb-blocks-paint-side){fill:var(--spb-blocks-blue);stroke:var(--spb-blocks-blue-line)}
.arch-lab .spb-blocks-blue text.spb-blocks-digit{fill:var(--spb-blocks-blue-ink)}
.arch-lab .spb-blocks-orange :is(.spb-blocks-paint,.spb-blocks-paint-top,.spb-blocks-paint-side){fill:var(--spb-blocks-orange);stroke:var(--spb-blocks-orange-line)}
.arch-lab .spb-blocks-orange text.spb-blocks-digit{fill:var(--spb-blocks-orange-ink)}
.arch-lab .spb-blocks-green :is(.spb-blocks-paint,.spb-blocks-paint-top,.spb-blocks-paint-side){fill:var(--spb-blocks-green);stroke:var(--spb-blocks-green-line)}
.arch-lab .spb-blocks-green text.spb-blocks-digit{fill:var(--spb-blocks-green-ink)}
.arch-lab .spb-blocks-red :is(.spb-blocks-paint,.spb-blocks-paint-top,.spb-blocks-paint-side){fill:var(--spb-blocks-red);stroke:var(--spb-blocks-red-line)}
.arch-lab .spb-blocks-red text.spb-blocks-digit{fill:var(--spb-blocks-red-ink)}
.arch-lab .spb-blocks-violet :is(.spb-blocks-paint,.spb-blocks-paint-top,.spb-blocks-paint-side){fill:var(--spb-blocks-violet);stroke:var(--spb-blocks-violet-line)}
.arch-lab .spb-blocks-violet text.spb-blocks-digit{fill:var(--spb-blocks-violet-ink)}
.arch-lab .spb-blocks-yellow :is(.spb-blocks-paint,.spb-blocks-paint-top,.spb-blocks-paint-side){fill:var(--spb-blocks-yellow);stroke:var(--spb-blocks-yellow-line)}
.arch-lab .spb-blocks-yellow text.spb-blocks-digit{fill:var(--spb-blocks-yellow-ink)}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the many-headed dragon (visuals/art/dragon.mjs):
   Zmey Gorynych (green body, darker wings, light belly, cream horns) and the Lernaean Hydra (violet serpent, yellow eyes,
   red tongue). The dragons keep their colours in both themes; the outline stays dark, because the scene behind them has
   its own light or dusk sky. A beaten dragon (no heads left) has short necks with plasters. */
.arch-lab{--spb-dragon-line:#1f2937;--spb-dragon-gor-body:#5aa04a;--spb-dragon-gor-dark:#2f6b2a;--spb-dragon-gor-belly:#dfe9a6;--spb-dragon-gor-wing:#3f7f3a;
 --spb-dragon-horn:#f4ead0;--spb-dragon-eye:#fffbea;--spb-dragon-hyd-body:#7d62b8;--spb-dragon-hyd-dark:#4c3584;--spb-dragon-hyd-belly:#d8ccf2;
 --spb-dragon-hyd-eye:#facc15;--spb-dragon-tongue:#dc2626;--spb-dragon-bandage:#f8fafc;--spb-dragon-bandage-line:#94a3b8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-dragon-gor-body:#5fa84f;--spb-dragon-gor-wing:#468a40;--spb-dragon-hyd-body:#8a70c4}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-dragon-gor-body:#5fa84f;--spb-dragon-gor-wing:#468a40;--spb-dragon-hyd-body:#8a70c4}
.arch-lab svg .spb-dragon-o{stroke:var(--spb-dragon-line);stroke-width:1.2;stroke-linejoin:round;stroke-linecap:round}
.arch-lab svg .spb-dragon-o-thin{stroke:var(--spb-dragon-line);stroke-width:0.8;stroke-linejoin:round}
.arch-lab svg .spb-dragon-line{fill:none;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .spb-dragon-neck-edge{fill:none;stroke:var(--spb-dragon-line);stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .spb-dragon-neck,.arch-lab svg .spb-dragon-limb{fill:none;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .spb-dragon-tongue{stroke-width:1.1}
.arch-lab svg .spb-dragon-head-in{transform-box:fill-box;transform-origin:center}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the armband of the pupil on duty
   (visuals/art/duty-armband.mjs). Red with a yellow stripe in both themes; the outline is the classroom figure line. */
.arch-lab{--spb-duty-band:#dc2626;--spb-duty-stripe:#fde047;--spb-duty-line:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-duty-band:#ef4444;--spb-duty-line:#0b1120}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-duty-band:#ef4444;--spb-duty-line:#0b1120}
.arch-lab svg .spb-duty-band{fill:var(--spb-duty-band);stroke:var(--spb-duty-line);stroke-width:1.1;stroke-linejoin:round}
.arch-lab svg .spb-duty-stripe{fill:none;stroke:var(--spb-duty-stripe);stroke-width:1.8;stroke-linecap:round}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the child on an electric scooter and of the
   chequered finish post (visuals/art/e-scooter.mjs). The riders keep their colours in both themes; the outline stays
   dark, the tyres get a light rim and the speed lines get lighter in the dark branches, so they stay visible on a dark stage. */
.arch-lab{--spb-scooter-line:#1f2937;--spb-scooter-skin:#f6d2b4;--spb-scooter-hair:#7c4a25;--spb-scooter-pants:#334155;--spb-scooter-shoe:#1f2937;
 --spb-scooter-deck:#3f4a5c;--spb-scooter-stem:#8a96a8;--spb-scooter-stem-shine:#e2e8f0;--spb-scooter-grip:#1f2937;--spb-scooter-light:#fde047;
 --spb-scooter-tire:#1f2937;--spb-scooter-rim:#1f2937;--spb-scooter-hub:#cbd5e1;--spb-scooter-speed:#94a3b8;--spb-scooter-helmet-shine:#ffffff;
 --spb-scooter-helmet-a:#2563eb;--spb-scooter-jacket-a:#93c5fd;--spb-scooter-helmet-b:#ea580c;--spb-scooter-jacket-b:#fdba74;
 --spb-scooter-helmet-c:#15803d;--spb-scooter-jacket-c:#86efac;--spb-scooter-check-a:#ffffff;--spb-scooter-check-b:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-scooter-skin:#ecc4a2;--spb-scooter-deck:#55617a;--spb-scooter-rim:#a3adbb;--spb-scooter-speed:#64748b;--spb-scooter-check-a:#e5e7eb;--spb-scooter-check-b:#111827}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-scooter-skin:#ecc4a2;--spb-scooter-deck:#55617a;--spb-scooter-rim:#a3adbb;--spb-scooter-speed:#64748b;--spb-scooter-check-a:#e5e7eb;--spb-scooter-check-b:#111827}
.arch-lab svg .spb-scooter-o{stroke:var(--spb-scooter-line);stroke-width:1.3;stroke-linejoin:round;stroke-linecap:round}
.arch-lab svg .spb-scooter-o-thin{stroke:var(--spb-scooter-line);stroke-width:0.9;stroke-linejoin:round}
.arch-lab svg .spb-scooter-stroke{fill:none;stroke-linejoin:round}
.arch-lab svg .spb-scooter-tire{stroke:var(--spb-scooter-rim);stroke-width:1.4}
.arch-lab svg .spb-scooter-shadow{fill:#0f172a;fill-opacity:.16;stroke:none}
.arch-lab svg .spb-scooter-check-a{fill:var(--spb-scooter-check-a);stroke:none}
.arch-lab svg .spb-scooter-check-b{fill:var(--spb-scooter-check-b);stroke:none}
.arch-lab svg .spb-scooter-check-frame{fill:none;stroke:var(--spb-scooter-line);stroke-width:1}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the exercise book, the eraser and the rubbed
   mark (visuals/art/exercise-book.mjs). The page stays paper-light in both themes, so the ink drawn on it keeps fixed
   dark colours; in the dark branches the paper is a little dimmer and the covers a little deeper. */
.arch-lab{--spb-exbook-paper:#fffef8;--spb-exbook-edge:#b9b39c;--spb-exbook-rule:#b9cde8;--spb-exbook-margin:#ef8f8f;
 --spb-exbook-spine:#e7e1cc;--spb-exbook-stitch:#8c8672;--spb-exbook-cover-a:#3b82f6;--spb-exbook-cover-b:#22a06b;--spb-exbook-cover-c:#ef6c3a;
 --spb-exbook-eraser-a:#f28b9b;--spb-exbook-eraser-b:#6aa5e8;--spb-exbook-rub:#d9d6cb;--spb-exbook-ink:#1e3a8a}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-exbook-paper:#eceae0;--spb-exbook-edge:#8f8a74;--spb-exbook-spine:#d6d0ba;--spb-exbook-cover-a:#2f63c4;--spb-exbook-cover-b:#1b7f55;--spb-exbook-cover-c:#c4552c;--spb-exbook-rub:#cfcbbd}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-exbook-paper:#eceae0;--spb-exbook-edge:#8f8a74;--spb-exbook-spine:#d6d0ba;--spb-exbook-cover-a:#2f63c4;--spb-exbook-cover-b:#1b7f55;--spb-exbook-cover-c:#c4552c;--spb-exbook-rub:#cfcbbd}
.arch-lab .spb-exbook-page{fill:var(--spb-exbook-paper);stroke:var(--spb-exbook-edge);stroke-width:1.2}
.arch-lab .spb-exbook-cover{stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .spb-exbook-cover-a{fill:var(--spb-exbook-cover-a)}
.arch-lab .spb-exbook-cover-b{fill:var(--spb-exbook-cover-b)}
.arch-lab .spb-exbook-cover-c{fill:var(--spb-exbook-cover-c)}
.arch-lab .spb-exbook-spine{fill:var(--spb-exbook-spine);stroke:none}
.arch-lab .spb-exbook-stitch{stroke:var(--spb-exbook-stitch);stroke-width:1.4;stroke-linecap:round}
.arch-lab .spb-exbook-rule{stroke:var(--spb-exbook-rule);stroke-width:.9}
.arch-lab .spb-exbook-margin{stroke:var(--spb-exbook-margin);stroke-width:1.2}
.arch-lab .spb-exbook-eraser-a{fill:var(--spb-exbook-eraser-a);stroke:#1f2937;stroke-width:1}
.arch-lab .spb-exbook-eraser-b{fill:var(--spb-exbook-eraser-b);stroke:#1f2937;stroke-width:1}
.arch-lab .spb-exbook-eraser-seam{stroke:#1f2937;stroke-width:.8;opacity:.5}
.arch-lab .spb-exbook-rub{fill:var(--spb-exbook-rub);opacity:.75}
.arch-lab .spb-exbook-crumb{fill:var(--spb-exbook-eraser-a);opacity:.8}
.arch-lab svg text.spb-exbook-hand{fill:var(--spb-exbook-ink);stroke:none;font-family:"Segoe Print","Comic Sans MS","Chalkboard SE","Bradley Hand",system-ui,sans-serif;font-weight:600}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the portraits of visuals/art/faces.mjs
   (townsfolk: blond or dark hair, happy or sad; monarchs: a tsar's crown or a shah's turban, kind or evil). Portraits
   are mostly shown on light glass or light cards, so the colours change little in the dark branches; outlines stay dark. */
.arch-lab{--spb-face-skin:#f6d2b4;--spb-face-cheek:#f49a9a;--spb-face-hair-blond:#f2c94c;--spb-face-hair-dark:#3b2416;
 --spb-face-shirt-happy:#f59e0b;--spb-face-shirt-sad:#8796aa;--spb-face-line:#1f2937;
 --spb-face-robe-tsar:#c0262d;--spb-face-ermine:#fbfaf6;--spb-face-robe-shah:#138a72;--spb-face-trim:#f2c94c;
 --spb-face-gold:#f2c230;--spb-face-gold-dark:#c9971a;--spb-face-turban:#fff6e3;--spb-face-feather:#7dd3fc;
 --spb-face-beard-tsar:#9a6332;--spb-face-beard-shah:#26201c;--spb-face-lips:#f4a3a3}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-face-skin:#efc7a5;--spb-face-shirt-sad:#9aa8ba;--spb-face-beard-shah:#2e2722}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-face-skin:#efc7a5;--spb-face-shirt-sad:#9aa8ba;--spb-face-beard-shah:#2e2722}
.arch-lab .spb-face-o{stroke:var(--spb-face-line);stroke-width:1.1;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-face-o-thin{stroke:var(--spb-face-line);stroke-width:.8;stroke-linejoin:round}
.arch-lab .spb-face-brow{stroke:var(--spb-face-line);stroke-width:1.3;fill:none;stroke-linecap:round}
.arch-lab .spb-face-brow-evil{stroke-width:1.7}
.arch-lab .spb-face-mouth{stroke:var(--spb-face-line);stroke-width:1.3;fill:none;stroke-linecap:round}
.arch-lab .spb-face-trim{stroke:var(--spb-face-trim);stroke-width:1.6;fill:none;stroke-linecap:round}
.arch-lab .spb-face-fold{stroke:#c8b79a;stroke-width:.9;fill:none;stroke-linecap:round}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the wooden fence (visuals/art/fence.mjs): pickets
   and rails of light wood with a dark outline, a soft shadow, the ring «inside the fence» — for the light theme and both
   dark branches (darker wood, the same outline). */
.arch-lab{--spb-fence-wood:#e9c58f;--spb-fence-wood-line:#7c4a25;--spb-fence-rail:#b07a43;--spb-fence-shadow:rgba(31,41,55,.22);--spb-fence-ring:#15803d;--spb-fence-ring-fill:rgba(34,197,94,.18)}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-fence-wood:#c99a5b;--spb-fence-wood-line:#3b2412;
 --spb-fence-rail:#8a5a2b;--spb-fence-shadow:rgba(0,0,0,.35);--spb-fence-ring:#4ade80;--spb-fence-ring-fill:rgba(74,222,128,.2)}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-fence-wood:#c99a5b;--spb-fence-wood-line:#3b2412;
 --spb-fence-rail:#8a5a2b;--spb-fence-shadow:rgba(0,0,0,.35);--spb-fence-ring:#4ade80;--spb-fence-ring-fill:rgba(74,222,128,.2)}
.arch-lab .spb-fence-shadow{fill:var(--spb-fence-shadow);stroke:none}
.arch-lab .spb-fence-rail{fill:var(--spb-fence-rail);stroke:var(--spb-fence-wood-line);stroke-width:.6}
.arch-lab .spb-fence-picket{fill:var(--spb-fence-wood);stroke:var(--spb-fence-wood-line);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-fence-ring{fill:var(--spb-fence-ring-fill);stroke:var(--spb-fence-ring);stroke-width:2.2;stroke-dasharray:5 3}
.arch-lab .spb-fence-post{fill:var(--spb-fence-wood);stroke:var(--spb-fence-wood-line);stroke-width:.8}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the frog (visuals/art/frog.mjs).
   The frog keeps its greens in both themes; in the dark branches its outline is lighter so that it stays visible on a
   dark meadow. The numbered tag is a white paper dot with dark ink in both themes. */
.arch-lab{--spb-frog-green:#5cb85c;--spb-frog-dark:#24572a;--spb-frog-belly:#d5ecb2;--spb-frog-thigh:#4ea64f;--spb-frog-spot:#2f7a35;
 --spb-frog-eye:#f2d14b;--spb-frog-pupil:#1f2937;--spb-frog-tag:#ffffff;--spb-frog-tag-ink:#1f2937;--spb-frog-tag-edge:#24572a;
 --spb-frog-tag-on:#fbbf24;--spb-frog-tag-on-edge:#92400e}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-frog-dark:#a5dd9a;--spb-frog-tag-edge:#cdeec0}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-frog-dark:#a5dd9a;--spb-frog-tag-edge:#cdeec0}
.arch-lab .spb-frog-green{fill:var(--spb-frog-green);stroke:var(--spb-frog-dark);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-frog-belly{fill:var(--spb-frog-belly);stroke:none}
.arch-lab .spb-frog-thigh{fill:var(--spb-frog-thigh);stroke:var(--spb-frog-dark);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-frog-spot{fill:var(--spb-frog-spot);opacity:.75}
.arch-lab .spb-frog-limb{fill:none;stroke:var(--spb-frog-green);stroke-width:2.6;stroke-linecap:round}
.arch-lab .spb-frog-limb-thin{fill:none;stroke:var(--spb-frog-dark);stroke-width:1;stroke-linecap:round}
.arch-lab .spb-frog-eye{fill:var(--spb-frog-eye);stroke:var(--spb-frog-dark);stroke-width:.8}
.arch-lab .spb-frog-pupil{fill:var(--spb-frog-pupil)}
.arch-lab .spb-frog-glint{fill:#ffffff}
.arch-lab .spb-frog-mouth{fill:none;stroke:var(--spb-frog-dark);stroke-width:.8;stroke-linecap:round}
.arch-lab .spb-frog-tag circle{fill:var(--spb-frog-tag);stroke:var(--spb-frog-tag-edge);stroke-width:1.2}
.arch-lab svg .spb-frog-tag text{fill:var(--spb-frog-tag-ink);font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab .spb-frog-tag-on circle{fill:var(--spb-frog-tag-on);stroke:var(--spb-frog-tag-on-edge);stroke-width:2}
.arch-lab .spb-frog-dim{opacity:.4}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the gouache jar and the round brush
   (visuals/art/gouache.mjs): glass, label, print, neck, wood, ferrule, shadow, and two tones (base, dark lid) of the red,
   green and blue paint. The paint keeps its colour in both themes (it is the paint of the problem); the glass, the label
   and the wood get darker in the dark branches, the outline follows --arch-fig-line. */
.arch-lab{--spb-gouache-glass:rgba(226,240,250,.55);--spb-gouache-label:#fffdf6;--spb-gouache-print:#94a3b8;--spb-gouache-neck:#e2e8f0;
 --spb-gouache-wood:#c98f52;--spb-gouache-ferrule:#b8c0cc;--spb-gouache-shadow:#0f172a;
 --spb-gouache-red:#dc2626;--spb-gouache-red-dark:#a81d1d;--spb-gouache-green:#16a34a;--spb-gouache-green-dark:#0f7a37;
 --spb-gouache-blue:#2563eb;--spb-gouache-blue-dark:#1b47b8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-gouache-glass:rgba(148,163,184,.28);--spb-gouache-label:#e6e1d3;--spb-gouache-print:#64748b;--spb-gouache-neck:#94a3b8;--spb-gouache-wood:#a87440;--spb-gouache-ferrule:#8792a2;--spb-gouache-shadow:#000000}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-gouache-glass:rgba(148,163,184,.28);--spb-gouache-label:#e6e1d3;--spb-gouache-print:#64748b;--spb-gouache-neck:#94a3b8;--spb-gouache-wood:#a87440;--spb-gouache-ferrule:#8792a2;--spb-gouache-shadow:#000000}
.arch-lab .spb-gouache-o{stroke:var(--arch-fig-line);stroke-width:1.4;stroke-linejoin:round}
.arch-lab .spb-gouache-o-thin{stroke:var(--arch-fig-line);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-gouache-glass{fill:var(--spb-gouache-glass)}
.arch-lab .spb-gouache-label{fill:var(--spb-gouache-label)}
.arch-lab .spb-gouache-print{fill:var(--spb-gouache-print);stroke:none}
.arch-lab .spb-gouache-neck{fill:var(--spb-gouache-neck)}
.arch-lab .spb-gouache-glint{fill:none;stroke:#ffffff;stroke-width:2.4;stroke-linecap:round;opacity:.7}
.arch-lab .spb-gouache-ribs{stroke:#000000;stroke-width:1;opacity:.22}
.arch-lab .spb-gouache-shadow{fill:var(--spb-gouache-shadow);opacity:.13;stroke:none}
.arch-lab .spb-gouache-wood{fill:var(--spb-gouache-wood)}
.arch-lab .spb-gouache-ferrule{fill:var(--spb-gouache-ferrule)}
.arch-lab .spb-gouache-red{fill:var(--spb-gouache-red)}
.arch-lab .spb-gouache-red-dark{fill:var(--spb-gouache-red-dark)}
.arch-lab .spb-gouache-green{fill:var(--spb-gouache-green)}
.arch-lab .spb-gouache-green-dark{fill:var(--spb-gouache-green-dark)}
.arch-lab .spb-gouache-blue{fill:var(--spb-gouache-blue)}
.arch-lab .spb-gouache-blue-dark{fill:var(--spb-gouache-blue-dark)}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the grasshopper (visuals/art/grasshopper.mjs).
   The insect keeps its greens in both themes; in the dark branches its outline is a little lighter so that it stays
   visible on a dark meadow. The numbered tag is a white paper dot with dark ink in both themes. */
.arch-lab{--spb-grasshopper-green:#74c04f;--spb-grasshopper-dark:#2f6b1f;--spb-grasshopper-wing:#4e9a35;--spb-grasshopper-femur:#8fd16a;
 --spb-grasshopper-leg:#3f7f2a;--spb-grasshopper-eye:#1f2937;--spb-grasshopper-tag:#ffffff;--spb-grasshopper-tag-ink:#1f2937;
 --spb-grasshopper-tag-edge:#2f6b1f;--spb-grasshopper-tag-on:#fbbf24;--spb-grasshopper-tag-on-edge:#92400e}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-grasshopper-dark:#a7e08a;--spb-grasshopper-leg:#8cc96e;--spb-grasshopper-tag-edge:#cdeec0}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-grasshopper-dark:#a7e08a;--spb-grasshopper-leg:#8cc96e;--spb-grasshopper-tag-edge:#cdeec0}
.arch-lab .spb-grasshopper-green{fill:var(--spb-grasshopper-green);stroke:var(--spb-grasshopper-dark);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-grasshopper-femur{fill:var(--spb-grasshopper-femur);stroke:var(--spb-grasshopper-dark);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-grasshopper-wing{fill:var(--spb-grasshopper-wing);stroke:var(--spb-grasshopper-dark);stroke-width:.8;stroke-linejoin:round}
.arch-lab .spb-grasshopper-stripe{fill:none;stroke:var(--spb-grasshopper-dark);stroke-width:.7;opacity:.55}
.arch-lab .spb-grasshopper-leg{fill:none;stroke:var(--spb-grasshopper-leg);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.arch-lab .spb-grasshopper-leg-thick{fill:none;stroke:var(--spb-grasshopper-leg);stroke-width:2.2;stroke-linecap:round}
.arch-lab .spb-grasshopper-antenna{fill:none;stroke:var(--spb-grasshopper-leg);stroke-width:1;stroke-linecap:round}
.arch-lab .spb-grasshopper-eye{fill:var(--spb-grasshopper-eye)}
.arch-lab .spb-grasshopper-glint{fill:#ffffff}
.arch-lab .spb-grasshopper-mouth{fill:none;stroke:var(--spb-grasshopper-dark);stroke-width:.7;stroke-linecap:round}
.arch-lab .spb-grasshopper-tag circle{fill:var(--spb-grasshopper-tag);stroke:var(--spb-grasshopper-tag-edge);stroke-width:1.2}
.arch-lab svg .spb-grasshopper-tag text{fill:var(--spb-grasshopper-tag-ink);font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab .spb-grasshopper-tag-on circle{fill:var(--spb-grasshopper-tag-on);stroke:var(--spb-grasshopper-tag-on-edge);stroke-width:2}
.arch-lab .spb-grasshopper-dim{opacity:.4}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the felt chalkboard duster held in a hand
   (visuals/art/hand-duster.mjs). The duster is a picture of a real object and keeps its wooden back and grey felt in both
   themes; in the dark branches only its outline is lighter, to separate it from a dark page. */
.arch-lab{--spb-hand-duster-back:#9a6434;--spb-hand-duster-edge:#4a2f16;--spb-hand-duster-groove:#6f4521;
 --spb-hand-duster-felt:#7b818c;--spb-hand-duster-chalk:#e5e7eb;--spb-hand-duster-dust:#f1f5f9}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-hand-duster-edge:#2a1a0b}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-hand-duster-edge:#2a1a0b}
.arch-lab svg .spb-hand-duster-back{fill:var(--spb-hand-duster-back);stroke:var(--spb-hand-duster-edge);stroke-width:1}
.arch-lab svg .spb-hand-duster-groove{fill:none;stroke:var(--spb-hand-duster-groove);stroke-width:1.4;stroke-linecap:round;opacity:.8}
.arch-lab svg .spb-hand-duster-felt{fill:var(--spb-hand-duster-felt);stroke:var(--spb-hand-duster-edge);stroke-width:.6}
.arch-lab svg .spb-hand-duster-chalk{fill:none;stroke:var(--spb-hand-duster-chalk);stroke-width:1.6;stroke-linecap:round;opacity:.75}
.arch-lab svg .spb-hand-duster-dust circle{fill:var(--spb-hand-duster-dust);stroke:none;opacity:.55}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the hand mixer (visuals/art/hand-mixer.mjs).
   The mixer keeps its colours in both themes; in the dark branches the white body is a little greyer and the outline is
   the light figure line of lab.css, so it stays outlined on a dark card. Strokes do not scale with the object. */
.arch-lab{--spb-mixer-body:#f8fafc;--spb-mixer-stripe:#e11d48;--spb-mixer-switch:#e11d48;--spb-mixer-slot:#94a3b8;--spb-mixer-metal:#cbd5e1;--spb-mixer-wire:#64748b;--spb-mixer-shadow:.14}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-mixer-body:#e2e8f0;--spb-mixer-stripe:#f43f5e;--spb-mixer-switch:#f43f5e;--spb-mixer-wire:#cbd5e1;--spb-mixer-shadow:.35}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-mixer-body:#e2e8f0;--spb-mixer-stripe:#f43f5e;--spb-mixer-switch:#f43f5e;--spb-mixer-wire:#cbd5e1;--spb-mixer-shadow:.35}
.arch-lab svg .spb-mixer-o{stroke:var(--arch-fig-line);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.arch-lab svg .spb-mixer-o-thin{stroke:var(--arch-fig-line);stroke-width:1;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.arch-lab svg .spb-mixer-shadow{stroke:none;fill-opacity:var(--spb-mixer-shadow)}
.arch-lab svg .spb-mixer-stripe{fill:none;stroke:var(--spb-mixer-stripe);stroke-width:3.2;stroke-linecap:round}
.arch-lab svg .spb-mixer-slot{fill:none;stroke:var(--spb-mixer-slot);stroke-width:1.8;stroke-linecap:round}
.arch-lab svg .spb-mixer-wire{fill:none;stroke:var(--spb-mixer-wire);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .spb-mixer-shine{fill:none;stroke:#ffffff;stroke-width:2.6;stroke-linecap:round;opacity:.7}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the swordsman (visuals/art/hero.mjs): a bogatyr
   (chain mail, red cloak and boots, steel helmet, round shield) and Heracles (lion skin, tunic, sandals). The figures keep
   their colours in both themes; the outline stays dark, because the scene behind them has its own light or dusk sky. */
.arch-lab{--spb-hero-skin:#f6d2b4;--spb-hero-line:#1f2937;--spb-hero-mail:#a3b0c2;--spb-hero-mail-line:#6b7a8f;--spb-hero-cloak:#c0392b;
 --spb-hero-boot:#b91c1c;--spb-hero-pants:#1e3a8a;--spb-hero-beard:#c8934a;--spb-hero-helmet:#d5dde7;--spb-hero-gold:#e3a91a;
 --spb-hero-belt:#7c4a25;--spb-hero-shield:#c0392b;--spb-hero-blade:#eef2f6;--spb-hero-blade-line:#9aa6b4;--spb-hero-grip:#6b3f1d;
 --spb-hero-tunic:#f8f1e0;--spb-hero-tunic-line:#d9ccb0;--spb-hero-lion:#d79b3c;--spb-hero-lion-dark:#8a5a16;--spb-hero-hair:#3b2414;--spb-hero-strap:#7c4a25}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-hero-skin:#ecc4a2;--spb-hero-helmet:#c9d3df;--spb-hero-blade:#e2e8f0}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-hero-skin:#ecc4a2;--spb-hero-helmet:#c9d3df;--spb-hero-blade:#e2e8f0}
.arch-lab svg .spb-hero-o{stroke:var(--spb-hero-line);stroke-width:1.2;stroke-linejoin:round;stroke-linecap:round}
.arch-lab svg .spb-hero-o-thin{stroke:var(--spb-hero-line);stroke-width:0.8;stroke-linejoin:round}
.arch-lab svg .spb-hero-stroke{fill:none;stroke-linejoin:round}
.arch-lab svg .spb-hero-rim{fill:none;stroke:var(--spb-hero-gold);stroke-width:2}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the block of flats (visuals/art/house.mjs):
   brick wall, roof tin, window frames and glass, the entrance and the residents. The window glass and the wall get darker
   in the dark branches; residents keep their shirt colours (set by the lab) in both themes. */
.arch-lab{--spb-house-wall:#e7c3a1;--spb-house-brick:#c98f62;--spb-house-seam:#d3a37d;--spb-house-roof:#8fa3b8;--spb-house-roof-line:#55697f;
 --spb-house-frame:#fbfaf7;--spb-house-glass:#dceefb;--spb-house-glass-night:#fff3c4;--spb-house-door:#7c4a25;--spb-house-base:#b9a28c;--spb-house-step:#a8a29e;
 --spb-house-sign:#1e3a8a;--spb-house-sign-ink:#ffffff;--spb-house-skin:#f6d2b4;--spb-house-hair:#5b3a1e;--spb-house-line:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-house-wall:#6b4c3b;--spb-house-brick:#8a5a3e;--spb-house-seam:#5a3f31;--spb-house-roof:#5f6f82;--spb-house-roof-line:#a5b4c6;
 --spb-house-frame:#d9dee6;--spb-house-glass:#1f3b57;--spb-house-glass-night:#3b3a25;--spb-house-door:#a26a3c;--spb-house-base:#5b5249;--spb-house-step:#78716c;
 --spb-house-sign:#3b5bdb;--spb-house-skin:#e8bf9c;--spb-house-hair:#3a2614;--spb-house-line:#1f2937}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-house-wall:#6b4c3b;--spb-house-brick:#8a5a3e;--spb-house-seam:#5a3f31;--spb-house-roof:#5f6f82;--spb-house-roof-line:#a5b4c6;
 --spb-house-frame:#d9dee6;--spb-house-glass:#1f3b57;--spb-house-glass-night:#3b3a25;--spb-house-door:#a26a3c;--spb-house-base:#5b5249;--spb-house-step:#78716c;
 --spb-house-sign:#3b5bdb;--spb-house-skin:#e8bf9c;--spb-house-hair:#3a2614;--spb-house-line:#1f2937}
.arch-lab .spb-house-o{stroke:var(--spb-house-line);stroke-width:1.2;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-house-seam{stroke:var(--spb-house-roof-line);stroke-width:1;fill:none;opacity:.7}
.arch-lab .spb-house-mouth{stroke:#1f2937;stroke-width:1.5;fill:none;stroke-linecap:round}
.arch-lab svg .spb-house-shirt-text{fill:#111827;font-size:13px;font-weight:800;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab svg .spb-house-sign-text{fill:var(--spb-house-sign-ink);font-size:14px;font-weight:700;stroke:none}
.arch-lab svg .spb-house-sign-small{font-size:11px;font-weight:600}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the cast-iron kettlebell and the wooden weight rack
   (visuals/art/kettlebell.mjs): blue and red paint with darker handles and feet, plain cast iron, the white label, the
   amber ring of a selected kettlebell, the red outline of a flagged one, the rack's wood. Painted kettlebells are mid-tone
   objects, so their outline stays dark in both themes. */
.arch-lab{--spb-bell-a:#3b6fb6;--spb-bell-a-dark:#274f86;--spb-bell-b:#c4532f;--spb-bell-b-dark:#8f3a1f;--spb-bell-iron:#4b5563;--spb-bell-iron-dark:#2f3640;--spb-bell-label:#ffffff;--spb-bell-ring:#f59e0b;--spb-bell-flag:#dc2626;--spb-bell-wood:#c79a5f;--spb-bell-wood-edge:#8a5a2b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-bell-a:#4a7fc6;--spb-bell-a-dark:#2f5d99;--spb-bell-b:#d0623d;--spb-bell-b-dark:#9c4426;--spb-bell-iron:#6b7280;--spb-bell-iron-dark:#4b5563;--spb-bell-label:#ffffff;--spb-bell-ring:#fbbf24;--spb-bell-flag:#f87171;--spb-bell-wood:#a8783f;--spb-bell-wood-edge:#6f4a22}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-bell-a:#4a7fc6;--spb-bell-a-dark:#2f5d99;--spb-bell-b:#d0623d;--spb-bell-b-dark:#9c4426;--spb-bell-iron:#6b7280;--spb-bell-iron-dark:#4b5563;--spb-bell-label:#ffffff;--spb-bell-ring:#fbbf24;--spb-bell-flag:#f87171;--spb-bell-wood:#a8783f;--spb-bell-wood-edge:#6f4a22}
.arch-lab .spb-bell-o{stroke:#1f2937;stroke-width:1.2;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-bell-o.spb-bell-flag{stroke:var(--spb-bell-flag);stroke-width:3}
.arch-lab .spb-bell-shine{stroke:#ffffff;stroke-width:2;opacity:.45;fill:none}
/* svg text (0,2,2) outranks the light halo of `.arch-lab .phx-svg text` in visuals/lab.css: a white halo would blur the
   white digits on the paint */
.arch-lab svg text.spb-bell-label{fill:var(--spb-bell-label);stroke:none;font-weight:700;font-variant-numeric:tabular-nums;pointer-events:none}
.arch-lab .spb-bell-selected{fill:none;stroke:var(--spb-bell-ring);stroke-width:3}
.arch-lab .spb-bell-grain{stroke:var(--spb-bell-wood-edge);stroke-width:1.1;opacity:.5;fill:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the knight and the liar (visuals/art/knight-liar.mjs).
   The figures keep their costume colours in both themes; in the dark branches the steel and the outline are a little
   lighter and the shadow darker, so a figure on a dark stage keeps its silhouette. */
.arch-lab{--spb-kl-line:#1f2937;--spb-kl-steel:#cbd5e1;--spb-kl-steel-dark:#94a3b8;--spb-kl-visor:#1f2937;--spb-kl-blade:#e2e8f0;--spb-kl-gold:#eab308;--spb-kl-grip:#7c4a25;
 --spb-kl-boot:#5b3a1e;--spb-kl-tabard:#2563eb;--spb-kl-emblem:#facc15;--spb-kl-belt:#7c4a25;--spb-kl-shield:#1d4ed8;--spb-kl-shield-cross:#facc15;--spb-kl-plume:#dc2626;
 --spb-kl-jester-a:#e11d48;--spb-kl-jester-b:#16a34a;--spb-kl-bell:#facc15;--spb-kl-ruff:#fef3c7;--spb-kl-glove:#ffffff;--spb-kl-shoe:#6d28d9;
 --spb-kl-skin:#f6d2b4;--spb-kl-cheek:#f4a3a3;--spb-kl-ink:#1f2937;--spb-kl-shadow:rgba(15,23,42,.16)}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-kl-line:#0b1120;--spb-kl-steel:#d6dee8;--spb-kl-steel-dark:#a3b0c2;--spb-kl-tabard:#3b82f6;--spb-kl-shield:#2f6bf0;--spb-kl-skin:#e8bf9c;--spb-kl-shadow:rgba(0,0,0,.45)}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-kl-line:#0b1120;--spb-kl-steel:#d6dee8;--spb-kl-steel-dark:#a3b0c2;--spb-kl-tabard:#3b82f6;--spb-kl-shield:#2f6bf0;--spb-kl-skin:#e8bf9c;--spb-kl-shadow:rgba(0,0,0,.45)}
.arch-lab svg .spb-kl-o{stroke:var(--spb-kl-line);stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.arch-lab svg .spb-kl-shadow{fill:var(--spb-kl-shadow);stroke:none}
.arch-lab svg .spb-kl-arm{stroke:var(--spb-kl-steel-dark);stroke-width:7;stroke-linecap:round}
.arch-lab svg .spb-kl-sleeve-a{stroke:var(--spb-kl-jester-a);stroke-width:7;stroke-linecap:round}
.arch-lab svg .spb-kl-sleeve-b{stroke:var(--spb-kl-jester-b);stroke-width:7;stroke-linecap:round}
.arch-lab svg .spb-kl-shield-cross{stroke:var(--spb-kl-shield-cross);stroke-width:4.4;stroke-linecap:butt}
.arch-lab svg .spb-kl-seam{stroke:var(--spb-kl-steel-dark);stroke-width:1.6}
.arch-lab svg .spb-kl-face{stroke:var(--spb-kl-ink);stroke-width:1.9;stroke-linecap:round}
.arch-lab svg .spb-kl-cheek{stroke:none;opacity:.6}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the autumn leaves (visuals/art/leaves.mjs).
   Each kind has a fill, an edge (outline and stalk) and a vein colour. Leaves keep their autumn colours in both themes;
   in the dark branches the edges are a little lighter so that a leaf icon on a dark control stays outlined. */
.arch-lab{--spb-leaves-red:#d9412b;--spb-leaves-red-edge:#7f1d12;--spb-leaves-red-vein:#9b2414;
 --spb-leaves-ymaple:#f6b40e;--spb-leaves-ymaple-edge:#8a5206;--spb-leaves-ymaple-vein:#b9740a;
 --spb-leaves-birch:#ecd43a;--spb-leaves-birch-edge:#7c6508;--spb-leaves-birch-vein:#a88c0c;
 --spb-leaves-linden:#e2b23a;--spb-leaves-linden-edge:#7a5510;--spb-leaves-linden-vein:#a77814;
 --spb-leaves-rowan:#f29a2e;--spb-leaves-rowan-edge:#8a4b08;--spb-leaves-rowan-vein:#b4610c;
 --spb-leaves-aspen:#f5d24b;--spb-leaves-aspen-edge:#7f650c;--spb-leaves-aspen-vein:#a8860f}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-leaves-red-edge:#c2412f;--spb-leaves-ymaple-edge:#c98a1a;--spb-leaves-birch-edge:#b9a02a;--spb-leaves-linden-edge:#b98c2a;--spb-leaves-rowan-edge:#c97a22;--spb-leaves-aspen-edge:#bfa02a}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-leaves-red-edge:#c2412f;--spb-leaves-ymaple-edge:#c98a1a;--spb-leaves-birch-edge:#b9a02a;--spb-leaves-linden-edge:#b98c2a;--spb-leaves-rowan-edge:#c97a22;--spb-leaves-aspen-edge:#bfa02a}
.arch-lab .spb-leaves-icon{display:block;flex:0 0 auto;overflow:visible}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the sheet metal scene (visuals/art/metal-sheet.mjs):
   a brick workshop wall, a steel sheet with sheen bands and clamps, cut parts as darker blue-grey plates with a cut line,
   and the cutting head with a blue flame. Light theme and both dark branches (the site's switch or the system dark mode). */
.arch-lab{--spb-metal-wall:#f3ede6;--spb-metal-wall-seam:#e2d6c8;--spb-metal-sheet:#d5dbe2;--spb-metal-sheen:#ffffff;--spb-metal-edge:#4b5563;
 --spb-metal-clamp:#6b7280;--spb-metal-bolt:#e5e7eb;--spb-metal-part:#93b4d6;--spb-metal-part-line:#1e3a5f;
 --spb-metal-head:#374151;--spb-metal-nozzle:#9ca3af;--spb-metal-flame:#60a5fa;--spb-metal-flame-core:#eff6ff;--spb-metal-spark:#f59e0b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-metal-wall:#24272d;--spb-metal-wall-seam:#30343b;--spb-metal-sheet:#535c68;--spb-metal-sheen:#8b95a3;--spb-metal-edge:#cbd5e1;
 --spb-metal-clamp:#9ca3af;--spb-metal-bolt:#374151;--spb-metal-part:#2f5f8f;--spb-metal-part-line:#bfdbfe;
 --spb-metal-head:#cbd5e1;--spb-metal-nozzle:#6b7280;--spb-metal-flame:#60a5fa;--spb-metal-flame-core:#dbeafe;--spb-metal-spark:#fbbf24}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-metal-wall:#24272d;--spb-metal-wall-seam:#30343b;--spb-metal-sheet:#535c68;--spb-metal-sheen:#8b95a3;--spb-metal-edge:#cbd5e1;
 --spb-metal-clamp:#9ca3af;--spb-metal-bolt:#374151;--spb-metal-part:#2f5f8f;--spb-metal-part-line:#bfdbfe;
 --spb-metal-head:#cbd5e1;--spb-metal-nozzle:#6b7280;--spb-metal-flame:#60a5fa;--spb-metal-flame-core:#dbeafe;--spb-metal-spark:#fbbf24}
.arch-lab .spb-metal-wall-bg{fill:var(--spb-metal-wall);stroke:none}
.arch-lab .spb-metal-wall-seam{fill:none;stroke:var(--spb-metal-wall-seam);stroke-width:1}
.arch-lab .spb-metal-sheet-bg{fill:var(--spb-metal-sheet);stroke:none}
.arch-lab .spb-metal-sheen{fill:var(--spb-metal-sheen);opacity:.28;stroke:none}
.arch-lab .spb-metal-sheet-edge{fill:none;stroke:var(--spb-metal-edge);stroke-width:1.6}
.arch-lab .spb-metal-clamp-body{fill:var(--spb-metal-clamp);stroke:var(--spb-metal-edge);stroke-width:1}
.arch-lab .spb-metal-bolt{fill:var(--spb-metal-bolt);stroke:var(--spb-metal-edge);stroke-width:.8}
.arch-lab .spb-metal-part{fill:var(--spb-metal-part);stroke:var(--spb-metal-part-line);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-metal-head{fill:var(--spb-metal-head);stroke:var(--spb-metal-edge);stroke-width:1}
.arch-lab .spb-metal-nozzle{fill:var(--spb-metal-nozzle);stroke:var(--spb-metal-edge);stroke-width:1}
.arch-lab .spb-metal-flame{fill:var(--spb-metal-flame);stroke:none}
.arch-lab .spb-metal-flame-core{fill:var(--spb-metal-flame-core);stroke:none}
.arch-lab .spb-metal-spark{fill:none;stroke:var(--spb-metal-spark);stroke-width:1.4;stroke-linecap:round}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the paint tin and the brush (visuals/art/paint-can.mjs):
   tin metal, rim, paper label, wire handle, wooden handle, ferrule, bristles, and three tones of red and blue paint.
   The paint keeps its colour in both themes (it is the paint of the problem); the metal and the wood get darker in the
   dark branches, and the outline follows --arch-fig-line. */
.arch-lab{--spb-paint-metal:#cfd8e3;--spb-paint-rim:#94a3b8;--spb-paint-label:#fffdf6;--spb-paint-handle:#475569;--spb-paint-wood:#c98f52;
 --spb-paint-ferrule:#b8c0cc;--spb-paint-bristle:#7c5a3a;--spb-paint-hole:#5b3a1e;--spb-paint-shadow:#0f172a;
 --spb-paint-red-light:#ef4444;--spb-paint-red-base:#dc2626;--spb-paint-red-dark:#a81d1d;
 --spb-paint-blue-light:#4f8ef7;--spb-paint-blue-base:#2563eb;--spb-paint-blue-dark:#1b47b8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-paint-metal:#8d99aa;--spb-paint-rim:#5f6b7c;--spb-paint-label:#e6e1d3;--spb-paint-handle:#cbd5e1;--spb-paint-wood:#a87440;--spb-paint-ferrule:#8792a2;--spb-paint-bristle:#5b4129;--spb-paint-hole:#2a1a0c;--spb-paint-shadow:#000000}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-paint-metal:#8d99aa;--spb-paint-rim:#5f6b7c;--spb-paint-label:#e6e1d3;--spb-paint-handle:#cbd5e1;--spb-paint-wood:#a87440;--spb-paint-ferrule:#8792a2;--spb-paint-bristle:#5b4129;--spb-paint-hole:#2a1a0c;--spb-paint-shadow:#000000}
.arch-lab .spb-paint-o{stroke:var(--arch-fig-line);stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-paint-o-thin{stroke:var(--arch-fig-line);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-paint-metal{fill:var(--spb-paint-metal)}
.arch-lab .spb-paint-rim{fill:var(--spb-paint-rim)}
.arch-lab .spb-paint-label{fill:var(--spb-paint-label)}
.arch-lab .spb-paint-shine{fill:none;stroke:#ffffff;stroke-width:2.4;opacity:.55;stroke-linecap:round}
.arch-lab .spb-paint-handle{fill:none;stroke:var(--spb-paint-handle);stroke-width:1.8;stroke-linecap:round}
.arch-lab .spb-paint-shadow{fill:var(--spb-paint-shadow);opacity:.13;stroke:none}
.arch-lab .spb-paint-wood{fill:var(--spb-paint-wood)}
.arch-lab .spb-paint-ferrule{fill:var(--spb-paint-ferrule)}
.arch-lab .spb-paint-crimp{stroke:var(--arch-fig-line);stroke-width:.8;opacity:.6}
.arch-lab .spb-paint-bristle{fill:var(--spb-paint-bristle)}
.arch-lab .spb-paint-hole{fill:var(--spb-paint-hole)}
.arch-lab .spb-paint-red-light{fill:var(--spb-paint-red-light)}
.arch-lab .spb-paint-red-base{fill:var(--spb-paint-red-base)}
.arch-lab .spb-paint-red-dark{fill:var(--spb-paint-red-dark)}
.arch-lab .spb-paint-blue-light{fill:var(--spb-paint-blue-light)}
.arch-lab .spb-paint-blue-base{fill:var(--spb-paint-blue-base)}
.arch-lab .spb-paint-blue-dark{fill:var(--spb-paint-blue-dark)}
.arch-lab .spb-paint-blot{stroke:none;opacity:.9}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the paper cut-outs (visuals/art/paper-cutout.mjs):
   cream paper with a soft shadow, the reverse side a little darker, two tinted sheets and the dash-dotted fold line.
   In the dark branches the sheet is a dim blue-grey paper, so that the light ink of the lab (lines, letters) stays
   readable both on the sheet and next to it; the reverse side is darker still. */
.arch-lab{--spb-cut-front:#fffdf5;--spb-cut-back:#efe6cf;--spb-cut-edge:#c8bb98;--spb-cut-blue:#e3edff;--spb-cut-orange:#ffe9d6;--spb-cut-shadow:#0f172a;--spb-cut-shadow-op:.13;--spb-cut-fold:#8a7a52}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-cut-front:#243047;--spb-cut-back:#182132;--spb-cut-edge:#5d6d88;--spb-cut-blue:#1f3558;--spb-cut-orange:#4a3222;--spb-cut-shadow:#000000;--spb-cut-shadow-op:.5;--spb-cut-fold:#c9b783}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-cut-front:#243047;--spb-cut-back:#182132;--spb-cut-edge:#5d6d88;--spb-cut-blue:#1f3558;--spb-cut-orange:#4a3222;--spb-cut-shadow:#000000;--spb-cut-shadow-op:.5;--spb-cut-fold:#c9b783}
.arch-lab .spb-cut-shadow{fill:var(--spb-cut-shadow);opacity:var(--spb-cut-shadow-op);stroke:none}
.arch-lab .spb-cut-paper{fill:var(--spb-cut-front);stroke:var(--spb-cut-edge);stroke-width:1.2;stroke-linejoin:round}
.arch-lab .spb-cut-back .spb-cut-paper{fill:var(--spb-cut-back)}
.arch-lab .spb-cut-tone-blue .spb-cut-paper{fill:var(--spb-cut-blue)}
.arch-lab .spb-cut-tone-orange .spb-cut-paper{fill:var(--spb-cut-orange)}
.arch-lab .spb-cut-tone-orange.spb-cut-back .spb-cut-paper{fill:var(--spb-cut-back)}
.arch-lab .spb-cut-fold{stroke:var(--spb-cut-fold);stroke-width:1.6;stroke-dasharray:10 4 2 4;stroke-linecap:round}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the park tree (visuals/art/park-tree.mjs): the
   shadow on the grass, the trunk, the outline, the crown with its darker underside and light leaves; tone b is a
   yellow-green tree. Light theme and both dark branches (deeper greens, the same trunk). */
.arch-lab{--spb-tree-shadow:#14532d;--spb-tree-trunk:#8b5a2b;--spb-tree-trunk-line:#5b3a1a;--spb-tree-edge:#2f6b34;--spb-tree-crown:#4caf50;
 --spb-tree-shade:#3a8f40;--spb-tree-light:#86d47a;--spb-tree-crown-b:#8cbf3f;--spb-tree-shade-b:#6f9e2c;--spb-tree-light-b:#c3e47a}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-tree-shadow:#04120a;--spb-tree-trunk:#7a4f27;
 --spb-tree-trunk-line:#3d2610;--spb-tree-edge:#123a1d;--spb-tree-crown:#2f8a45;--spb-tree-shade:#246f37;--spb-tree-light:#55b56a;
 --spb-tree-crown-b:#6a9a2c;--spb-tree-shade-b:#557d22;--spb-tree-light-b:#97c459}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-tree-shadow:#04120a;--spb-tree-trunk:#7a4f27;
 --spb-tree-trunk-line:#3d2610;--spb-tree-edge:#123a1d;--spb-tree-crown:#2f8a45;--spb-tree-shade:#246f37;--spb-tree-light:#55b56a;
 --spb-tree-crown-b:#6a9a2c;--spb-tree-shade-b:#557d22;--spb-tree-light-b:#97c459}
.arch-lab .spb-tree-shadow{fill:var(--spb-tree-shadow);opacity:.22;stroke:none}
.arch-lab .spb-tree-trunk{fill:var(--spb-tree-trunk);stroke:var(--spb-tree-trunk-line);stroke-width:.9;stroke-linejoin:round}
.arch-lab .spb-tree-edge{fill:var(--spb-tree-edge);stroke:none}
.arch-lab .spb-tree-crown{fill:var(--spb-tree-crown);stroke:none}
.arch-lab .spb-tree-shade{fill:var(--spb-tree-shade);stroke:none;opacity:.85}
.arch-lab .spb-tree-light{fill:var(--spb-tree-light);stroke:none;opacity:.9}
.arch-lab .spb-tree-b .spb-tree-crown{fill:var(--spb-tree-crown-b)}
.arch-lab .spb-tree-b .spb-tree-shade{fill:var(--spb-tree-shade-b)}
.arch-lab .spb-tree-b .spb-tree-light{fill:var(--spb-tree-light-b)}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the park seen from above (visuals/art/park.mjs):
   sand paths with a darker edge, paved places with a fountain, benches, flower beds and the «no entry» sign — for the
   light theme and both dark branches (darker sand and stone, the same red sign). */
.arch-lab{--spb-park-sand:#f1dfb4;--spb-park-sand-edge:#c9a96a;--spb-park-grain:#b8955a;--spb-park-stone:#e7e3da;--spb-park-stone-edge:#9b9283;
 --spb-park-basin:#cbd5e1;--spb-park-water:#7cc4f0;--spb-park-wood:#b07a43;--spb-park-wood-dark:#7c4a25;--spb-park-bed:#7a5233;
 --spb-park-flower-a:#f43f5e;--spb-park-flower-b:#facc15;--spb-park-flower-c:#f8fafc;--spb-park-sign:#dc2626}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-park-sand:#8c7a52;--spb-park-sand-edge:#5f5236;
 --spb-park-grain:#6f6140;--spb-park-stone:#6b6a66;--spb-park-stone-edge:#3f3d39;--spb-park-basin:#475569;--spb-park-water:#2f78a8;--spb-park-wood:#8a5a2b;
 --spb-park-wood-dark:#5b3a1c;--spb-park-bed:#4a3320;--spb-park-flower-c:#e2e8f0}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-park-sand:#8c7a52;--spb-park-sand-edge:#5f5236;
 --spb-park-grain:#6f6140;--spb-park-stone:#6b6a66;--spb-park-stone-edge:#3f3d39;--spb-park-basin:#475569;--spb-park-water:#2f78a8;--spb-park-wood:#8a5a2b;
 --spb-park-wood-dark:#5b3a1c;--spb-park-bed:#4a3320;--spb-park-flower-c:#e2e8f0}
.arch-lab .spb-park-path-edge{fill:none;stroke:var(--spb-park-sand-edge);stroke-linecap:round}
.arch-lab .spb-park-path-sand{fill:none;stroke:var(--spb-park-sand);stroke-linecap:round}
.arch-lab .spb-park-path-grain{fill:none;stroke:var(--spb-park-grain);stroke-linecap:round;opacity:.55}
.arch-lab .spb-park-plaza{fill:var(--spb-park-stone);stroke:var(--spb-park-stone-edge);stroke-width:1.4}
.arch-lab .spb-park-basin{fill:var(--spb-park-basin);stroke:var(--spb-park-stone-edge);stroke-width:1}
.arch-lab .spb-park-water{fill:var(--spb-park-water);stroke:none}
.arch-lab .spb-park-ripple{fill:none;stroke:#ffffff;stroke-width:1.1;opacity:.8}
.arch-lab .spb-park-bench-seat{fill:var(--spb-park-wood);stroke:var(--spb-park-wood-dark);stroke-width:1}
.arch-lab .spb-park-bench-slat{fill:none;stroke:var(--spb-park-wood-dark);stroke-width:.8;opacity:.7}
.arch-lab .spb-park-bench-leg{fill:var(--spb-park-wood-dark);stroke:none}
.arch-lab .spb-park-bed{fill:var(--spb-park-bed);stroke:var(--spb-park-wood-dark);stroke-width:1}
.arch-lab .spb-park-flower{stroke:none}
.arch-lab .spb-park-flower-a{fill:var(--spb-park-flower-a)}
.arch-lab .spb-park-flower-b{fill:var(--spb-park-flower-b)}
.arch-lab .spb-park-flower-c{fill:var(--spb-park-flower-c)}
.arch-lab .spb-park-noentry-disc{fill:var(--spb-park-sign);stroke:#ffffff;stroke-width:1.6}
.arch-lab .spb-park-noentry-bar{fill:#ffffff;stroke:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the wooden board (visuals/art/plank.mjs):
   raw plywood, four close tones of sawn pieces, grain, the saw kerf, drilled holes and number tags. In the dark branches
   the wood is darker and the kerf becomes a dark gap with a light board edge; tags keep a strong contrast. */
.arch-lab{--spb-plank-raw:#f4e6cb;--spb-plank-a:#e9c58f;--spb-plank-b:#dfb67c;--spb-plank-c:#efd3a4;--spb-plank-d:#d8ac72;
 --spb-plank-grain:#a97a45;--spb-plank-kerf:#4a2f17;--spb-plank-edge:#4a2f17;--spb-plank-hole-rim:#9c6b3d;--spb-plank-hole-core:#231509;
 --spb-plank-shine:#e8c89a;--spb-plank-tag:#fffaf0;--spb-plank-tag-line:#5b3a1e;--spb-plank-tag-ink:#2b1a0c;--spb-plank-tag-sub:#6b4a2b;
 --spb-plank-equal:#fee2e2;--spb-plank-equal-line:#b91c1c;--spb-plank-equal-ink:#991b1b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-plank-raw:#4b3c2b;--spb-plank-a:#8d6a43;--spb-plank-b:#7e5d39;--spb-plank-c:#9a7650;--spb-plank-d:#745333;
 --spb-plank-grain:#2e2316;--spb-plank-kerf:#120c06;--spb-plank-edge:#d8bf98;--spb-plank-hole-rim:#c9a476;--spb-plank-hole-core:#050403;
 --spb-plank-shine:#6b5236;--spb-plank-tag:#1f1a14;--spb-plank-tag-line:#e7d3b2;--spb-plank-tag-ink:#fbf3e4;--spb-plank-tag-sub:#e2cfae;
 --spb-plank-equal:#3f1515;--spb-plank-equal-line:#fca5a5;--spb-plank-equal-ink:#fecaca}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-plank-raw:#4b3c2b;--spb-plank-a:#8d6a43;--spb-plank-b:#7e5d39;--spb-plank-c:#9a7650;--spb-plank-d:#745333;
 --spb-plank-grain:#2e2316;--spb-plank-kerf:#120c06;--spb-plank-edge:#d8bf98;--spb-plank-hole-rim:#c9a476;--spb-plank-hole-core:#050403;
 --spb-plank-shine:#6b5236;--spb-plank-tag:#1f1a14;--spb-plank-tag-line:#e7d3b2;--spb-plank-tag-ink:#fbf3e4;--spb-plank-tag-sub:#e2cfae;
 --spb-plank-equal:#3f1515;--spb-plank-equal-line:#fca5a5;--spb-plank-equal-ink:#fecaca}
.arch-lab .spb-plank-raw{fill:var(--spb-plank-raw)}
.arch-lab .spb-plank-tone-a{fill:var(--spb-plank-a)}
.arch-lab .spb-plank-tone-b{fill:var(--spb-plank-b)}
.arch-lab .spb-plank-tone-c{fill:var(--spb-plank-c)}
.arch-lab .spb-plank-tone-d{fill:var(--spb-plank-d)}
.arch-lab .spb-plank-grain{fill:none;stroke:var(--spb-plank-grain);stroke-width:1.6;stroke-linecap:round;opacity:.26}
.arch-lab .spb-plank-grain-strong{stroke-width:2.4;opacity:.36}
.arch-lab .spb-plank-kerf{fill:none;stroke:var(--spb-plank-kerf);stroke-width:6;stroke-linejoin:miter}
.arch-lab .spb-plank-hole-rim{fill:var(--spb-plank-hole-rim)}
.arch-lab .spb-plank-hole-core{fill:var(--spb-plank-hole-core)}
.arch-lab .spb-plank-hole-shine{fill:none;stroke:var(--spb-plank-shine);stroke-width:2.2;stroke-linecap:round;opacity:.8}
.arch-lab .spb-plank-hole-ring{fill:none;stroke:var(--arch-bad);stroke-width:7}
.arch-lab .spb-plank-tag-box{fill:var(--spb-plank-tag);stroke:var(--spb-plank-tag-line);stroke-width:2.5;opacity:.94}
.arch-lab svg .spb-plank-tag-text{fill:var(--spb-plank-tag-ink);font-weight:700;font-variant-numeric:tabular-nums;stroke:none}
.arch-lab svg .spb-plank-tag-sub{fill:var(--spb-plank-tag-sub);font-weight:600;font-variant-numeric:tabular-nums;stroke:none}
.arch-lab .spb-plank-tag-equal .spb-plank-tag-box{fill:var(--spb-plank-equal);stroke:var(--spb-plank-equal-line);stroke-width:4;opacity:1}
.arch-lab svg .spb-plank-tag-equal .spb-plank-tag-text,.arch-lab svg .spb-plank-tag-equal .spb-plank-tag-sub{fill:var(--spb-plank-equal-ink)}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the satin ribbons and the measuring tape
   (visuals/art/ribbon.mjs). Three ribbon colours (blue, orange, green) dark enough for a white number on them; a lighter
   sheen and a darker lower edge; red stripes on a piece that is not a divisor. In the dark branches the ribbons keep their
   colours, the tape becomes a deeper yellow and the ticks stay dark on it. */
.arch-lab{--spb-ribbon-a-text:#1d4ed8;--spb-ribbon-b-text:#c2410c;--spb-ribbon-c-text:#15803d;--spb-ribbon-a:#1d4ed8;--spb-ribbon-a-edge:#1e3a8a;--spb-ribbon-b:#c2410c;--spb-ribbon-b-edge:#7c2d12;--spb-ribbon-c:#15803d;--spb-ribbon-c-edge:#14532d;
 --spb-ribbon-sheen:#ffffff;--spb-ribbon-ink:#ffffff;--spb-ribbon-bad:#fecaca;--spb-ribbon-bad-line:#b91c1c;
 --spb-ribbon-core:#f5e6c8;--spb-ribbon-core-line:#8a6a3a;--spb-ribbon-hole:#3f2d16;
 --spb-ribbon-tape:#fde68a;--spb-ribbon-tape-line:#a16207;--spb-ribbon-tick:#422006;--spb-ribbon-tip:#cbd5e1;--spb-ribbon-tip-line:#475569}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-ribbon-a-text:#93c5fd;--spb-ribbon-b-text:#fdba74;--spb-ribbon-c-text:#86efac;--spb-ribbon-a:#2563eb;--spb-ribbon-a-edge:#93c5fd;--spb-ribbon-b:#c2410c;--spb-ribbon-b-edge:#fdba74;--spb-ribbon-c:#15803d;--spb-ribbon-c-edge:#86efac;
 --spb-ribbon-sheen:#ffffff;--spb-ribbon-ink:#ffffff;--spb-ribbon-bad:#fecaca;--spb-ribbon-bad-line:#fca5a5;
 --spb-ribbon-core:#d6c29a;--spb-ribbon-core-line:#f5e6c8;--spb-ribbon-hole:#0b0703;
 --spb-ribbon-tape:#eab308;--spb-ribbon-tape-line:#fde68a;--spb-ribbon-tick:#1c1003;--spb-ribbon-tip:#94a3b8;--spb-ribbon-tip-line:#e2e8f0}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-ribbon-a-text:#93c5fd;--spb-ribbon-b-text:#fdba74;--spb-ribbon-c-text:#86efac;--spb-ribbon-a:#2563eb;--spb-ribbon-a-edge:#93c5fd;--spb-ribbon-b:#c2410c;--spb-ribbon-b-edge:#fdba74;--spb-ribbon-c:#15803d;--spb-ribbon-c-edge:#86efac;
 --spb-ribbon-sheen:#ffffff;--spb-ribbon-ink:#ffffff;--spb-ribbon-bad:#fecaca;--spb-ribbon-bad-line:#fca5a5;
 --spb-ribbon-core:#d6c29a;--spb-ribbon-core-line:#f5e6c8;--spb-ribbon-hole:#0b0703;
 --spb-ribbon-tape:#eab308;--spb-ribbon-tape-line:#fde68a;--spb-ribbon-tick:#1c1003;--spb-ribbon-tip:#94a3b8;--spb-ribbon-tip-line:#e2e8f0}
.arch-lab .spb-ribbon-a{fill:var(--spb-ribbon-a)}
.arch-lab .spb-ribbon-b{fill:var(--spb-ribbon-b)}
.arch-lab .spb-ribbon-c{fill:var(--spb-ribbon-c)}
.arch-lab .spb-ribbon-body{stroke:none}
.arch-lab .spb-ribbon-sheen{fill:var(--spb-ribbon-sheen);opacity:.28;stroke:none}
.arch-lab .spb-ribbon-edge{stroke-width:1.6;stroke-linecap:round;opacity:.7}
.arch-lab .spb-ribbon-edge-a{stroke:var(--spb-ribbon-a-edge)}
.arch-lab .spb-ribbon-edge-b{stroke:var(--spb-ribbon-b-edge)}
.arch-lab .spb-ribbon-edge-c{stroke:var(--spb-ribbon-c-edge)}
.arch-lab .spb-ribbon-bad{fill:none;stroke:var(--spb-ribbon-bad);stroke-width:3;opacity:.9}
.arch-lab .spb-ribbon-wind{fill:none;stroke-width:1.2;opacity:.75}
.arch-lab .spb-ribbon-core{fill:var(--spb-ribbon-core);stroke:var(--spb-ribbon-core-line);stroke-width:1}
.arch-lab .spb-ribbon-hole{fill:var(--spb-ribbon-hole);stroke:none}
.arch-lab .spb-ribbon-tape{fill:var(--spb-ribbon-tape);stroke:var(--spb-ribbon-tape-line);stroke-width:1}
.arch-lab .spb-ribbon-ticks{fill:none;stroke:var(--spb-ribbon-tick);stroke-width:1;opacity:.85}
.arch-lab .spb-ribbon-tape-end{stroke:var(--spb-ribbon-tick);stroke-width:2.2}
.arch-lab .spb-ribbon-tip{fill:var(--spb-ribbon-tip);stroke:var(--spb-ribbon-tip-line);stroke-width:1}
.arch-lab svg text.spb-ribbon-ink{fill:var(--spb-ribbon-ink);stroke:none;paint-order:normal;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg text.spb-ribbon-text-a{fill:var(--spb-ribbon-a-text)}
.arch-lab svg text.spb-ribbon-text-b{fill:var(--spb-ribbon-b-text)}
.arch-lab svg text.spb-ribbon-text-c{fill:var(--spb-ribbon-c-text)}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the ring road seen from above
   (visuals/art/ring-road.mjs): the field and the lawn, the asphalt with white lines, the roadside posts with their signs,
   a small car and tree crowns — for the light theme and both dark branches (darker grass, the same asphalt and signs). */
.arch-lab{--spb-road-meadow:#e3f4d7;--spb-road-tuft:#7fb069;--spb-road-lawn:#cdeec0;--spb-road-asphalt:#5b6370;--spb-road-line:#f8fafc;
 --spb-road-post:#f8fafc;--spb-road-band:#111827;--spb-road-reflector:#ef4444;--spb-road-plate:#fde68a;--spb-road-plate-line:#1f2937;
 --spb-road-car:#2563eb;--spb-road-car-roof:#1d4ed8;--spb-road-glass:#bfdbfe;--spb-road-bush:#4ade80;--spb-road-bush2:#86efac;--spb-road-shadow:#14532d}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-road-meadow:#1b3326;--spb-road-tuft:#3f7a52;
 --spb-road-lawn:#20402d;--spb-road-asphalt:#4b5361;--spb-road-plate-line:#0f172a;--spb-road-bush:#2f9e5a;--spb-road-bush2:#46b06c;--spb-road-shadow:#0b1f13}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-road-meadow:#1b3326;--spb-road-tuft:#3f7a52;
 --spb-road-lawn:#20402d;--spb-road-asphalt:#4b5361;--spb-road-plate-line:#0f172a;--spb-road-bush:#2f9e5a;--spb-road-bush2:#46b06c;--spb-road-shadow:#0b1f13}
.arch-lab .spb-road-meadow{fill:var(--spb-road-meadow);stroke:none}
.arch-lab .spb-road-tuft{fill:none;stroke:var(--spb-road-tuft);stroke-width:1.2;stroke-linecap:round}
.arch-lab .spb-road-lawn{fill:var(--spb-road-lawn);stroke:none}
.arch-lab .spb-road-asphalt{fill:none;stroke:var(--spb-road-asphalt)}
.arch-lab .spb-road-edge{fill:none;stroke:var(--spb-road-line);stroke-width:1.2;opacity:.9}
.arch-lab .spb-road-dash{fill:none;stroke:var(--spb-road-line);stroke-width:1.4;opacity:.75}
.arch-lab .spb-road-post{fill:var(--spb-road-post);stroke:#1f2937;stroke-width:.8}
.arch-lab .spb-road-band{fill:var(--spb-road-band);stroke:none}
.arch-lab .spb-road-reflector{fill:var(--spb-road-reflector);stroke:none}
.arch-lab .spb-road-plate-bg{fill:var(--spb-road-plate);stroke:var(--spb-road-plate-line);stroke-width:1.3}
.arch-lab svg text.spb-road-letter{fill:#1f2937;font-weight:700;stroke:none}
.arch-lab .spb-road-plate-white .spb-road-plate-bg{fill:#ffffff}
.arch-lab .spb-road-plate-black .spb-road-plate-bg{fill:#111827;stroke:#111827}
.arch-lab svg .spb-road-plate-black text.spb-road-letter{fill:#ffffff}
.arch-lab .spb-road-plate-on .spb-road-plate-bg{stroke:var(--arch-focus);stroke-width:3.2}
.arch-lab .spb-road-car-body{fill:var(--spb-road-car);stroke:#0f172a;stroke-width:1.2}
.arch-lab .spb-road-car-roof{fill:var(--spb-road-car-roof);stroke:none}
.arch-lab .spb-road-car-glass{fill:var(--spb-road-glass);stroke:#0f172a;stroke-width:.8}
.arch-lab .spb-road-car-light{fill:#fde68a;stroke:none}
.arch-lab .spb-road-bush-shadow{fill:var(--spb-road-shadow);opacity:.25;stroke:none}
.arch-lab .spb-road-bush-a{fill:var(--spb-road-bush);stroke:var(--spb-road-shadow);stroke-width:1}
.arch-lab .spb-road-bush-b{fill:var(--spb-road-bush2);stroke:none;opacity:.8}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the jute rope and its pieces (visuals/art/rope.mjs).
   The rope is jute with darker slanted strands and a light fibre line; pieces are dyed blue (tone a) or orange (tone b),
   light enough for a dark number on them in both themes; a part that does not fit is red-striped; an unused bit is a dashed
   outline. In the dark branches the rope keeps its jute colour, the lines get lighter. */
.arch-lab{--spb-rope-body:#d9b77e;--spb-rope-strand:#9c7538;--spb-rope-shine:#f6e8c9;--spb-rope-edge:#7a5a28;--spb-rope-fibre:#9c7538;
 --spb-rope-a:#93c5fd;--spb-rope-a2:#bfdbfe;--spb-rope-a-strand:#1d4ed8;--spb-rope-b:#fdba74;--spb-rope-b2:#fed7aa;--spb-rope-b-strand:#c2410c;--spb-rope-plain2:#ead2a4;
 --spb-rope-cutend:#1f2937;--spb-rope-ink:#111827;--spb-rope-over-fill:#fee2e2;--spb-rope-over-stripe:#dc2626;--spb-rope-over-edge:#b91c1c;--spb-rope-spare:#64748b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-rope-body:#c9a56a;--spb-rope-strand:#7a5a28;--spb-rope-shine:#f1dfb8;--spb-rope-edge:#efdcb5;--spb-rope-fibre:#e2c48d;
 --spb-rope-a:#7cb5fb;--spb-rope-a2:#a9cffd;--spb-rope-a-strand:#1e3a8a;--spb-rope-b:#fca85e;--spb-rope-b2:#fdc896;--spb-rope-b-strand:#9a3412;--spb-rope-plain2:#ddc08b;
 --spb-rope-cutend:#0b1220;--spb-rope-ink:#0b1220;--spb-rope-over-fill:#5b1d1d;--spb-rope-over-stripe:#f87171;--spb-rope-over-edge:#fca5a5;--spb-rope-spare:#a7b4c6}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-rope-body:#c9a56a;--spb-rope-strand:#7a5a28;--spb-rope-shine:#f1dfb8;--spb-rope-edge:#efdcb5;--spb-rope-fibre:#e2c48d;
 --spb-rope-a:#7cb5fb;--spb-rope-a2:#a9cffd;--spb-rope-a-strand:#1e3a8a;--spb-rope-b:#fca85e;--spb-rope-b2:#fdc896;--spb-rope-b-strand:#9a3412;--spb-rope-plain2:#ddc08b;
 --spb-rope-cutend:#0b1220;--spb-rope-ink:#0b1220;--spb-rope-over-fill:#5b1d1d;--spb-rope-over-stripe:#f87171;--spb-rope-over-edge:#fca5a5;--spb-rope-spare:#a7b4c6}
.arch-lab .spb-rope-body{fill:var(--spb-rope-body);stroke:none}
.arch-lab .spb-rope-strand{fill:none;stroke:var(--spb-rope-strand);stroke-width:1.6;stroke-linecap:round;opacity:.8}
.arch-lab .spb-rope-shine{stroke:var(--spb-rope-shine);stroke-width:1.4;stroke-linecap:round;opacity:.85}
.arch-lab .spb-rope-edge{fill:none;stroke:var(--spb-rope-edge);stroke-width:1.2}
.arch-lab .spb-rope-fibre{fill:none;stroke:var(--spb-rope-fibre);stroke-width:1.2;stroke-linecap:round}
.arch-lab .spb-rope-piece-body{stroke:none;fill:var(--spb-rope-body)}
.arch-lab .spb-rope-a .spb-rope-piece-body{fill:var(--spb-rope-a)}
.arch-lab .spb-rope-a.spb-rope-shade .spb-rope-piece-body{fill:var(--spb-rope-a2)}
.arch-lab .spb-rope-b .spb-rope-piece-body{fill:var(--spb-rope-b)}
.arch-lab .spb-rope-b.spb-rope-shade .spb-rope-piece-body{fill:var(--spb-rope-b2)}
.arch-lab .spb-rope-plain.spb-rope-shade .spb-rope-piece-body{fill:var(--spb-rope-plain2)}
.arch-lab .spb-rope-piece-strand{fill:none;stroke:var(--spb-rope-strand);stroke-width:1.2;stroke-linecap:round;opacity:.45}
.arch-lab .spb-rope-a .spb-rope-piece-strand{stroke:var(--spb-rope-a-strand)}
.arch-lab .spb-rope-b .spb-rope-piece-strand{stroke:var(--spb-rope-b-strand)}
.arch-lab .spb-rope-cutend{fill:none;stroke:var(--spb-rope-cutend);stroke-width:1.2}
.arch-lab .spb-rope-over-fill{fill:var(--spb-rope-over-fill);opacity:.55;stroke:none}
.arch-lab .spb-rope-over-stripe{fill:none;stroke:var(--spb-rope-over-stripe);stroke-width:2}
.arch-lab .spb-rope-over-edge{fill:none;stroke:var(--spb-rope-over-edge);stroke-width:2}
.arch-lab .spb-rope-spare{fill:none;stroke:var(--spb-rope-spare);stroke-width:1.3;stroke-dasharray:3 2.5}
.arch-lab svg text.spb-rope-ink{fill:var(--spb-rope-ink);stroke:none;paint-order:normal;font-weight:700;font-variant-numeric:tabular-nums}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the rubber stamp and the ink pad
   (visuals/art/rubber-stamp.mjs). A small picture beside the controls: wood, rubber and ink keep their colours in both
   themes; in the dark branches only the outline is lighter, to separate the picture from the dark page. */
.arch-lab{--spb-stamp-wood:#c98a4b;--spb-stamp-wood-dark:#9a6431;--spb-stamp-shine:#f1c995;--spb-stamp-block:#8b5a2b;--spb-stamp-rubber:#3f3f46;
 --spb-stamp-relief:#a5b4fc;--spb-stamp-tin:#9ca3af;--spb-stamp-felt:#3949ab;--spb-stamp-outline:#5b3b1c}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-stamp-outline:#e5c39b}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-stamp-outline:#e5c39b}
.arch-lab .spb-stamp-wood{fill:var(--spb-stamp-wood);stroke:var(--spb-stamp-outline);stroke-width:1.2}
.arch-lab .spb-stamp-shine{fill:var(--spb-stamp-shine);stroke:none}
.arch-lab .spb-stamp-block{fill:var(--spb-stamp-block);stroke:var(--spb-stamp-outline);stroke-width:1.2}
.arch-lab .spb-stamp-rubber{fill:var(--spb-stamp-rubber);stroke:var(--spb-stamp-outline);stroke-width:1}
.arch-lab .spb-stamp-relief{fill:none;stroke:var(--spb-stamp-relief);stroke-width:1.6;stroke-linecap:round}
.arch-lab .spb-stamp-tin{fill:var(--spb-stamp-tin);stroke:var(--spb-stamp-outline);stroke-width:1}
.arch-lab .spb-stamp-felt{fill:var(--spb-stamp-felt);stroke:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the close-up school chalkboard
   (visuals/art/school-board.mjs). The board is a picture of a real board and stays dark green with a wooden frame in
   both themes; in the dark branches only the outer rim of the frame is lighter, to separate it from the page. Chalk
   strokes and chalk text use the classes and fixed colours of visuals/art/chalk.css. */
.arch-lab{--spb-sboard-frame:#a8703d;--spb-sboard-rim:#5b3a1c;--spb-sboard-surface:#2d5b48;--spb-sboard-smudge:#e8efe9;
 --spb-sboard-ledge:#bf8a55;--spb-sboard-ledge-edge:#7a4d26;--spb-sboard-duster-back:#8a5a2e;--spb-sboard-duster-felt:#6b7280}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-sboard-rim:#c99a68}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-sboard-rim:#c99a68}
.arch-lab svg .spb-sboard-frame{fill:var(--spb-sboard-frame);stroke:var(--spb-sboard-rim);stroke-width:1.6}
.arch-lab svg .spb-sboard-surface{fill:var(--spb-sboard-surface);stroke:#1c3a2e;stroke-width:1.2}
.arch-lab svg .spb-sboard-smudge{fill:none;stroke:var(--spb-sboard-smudge);stroke-width:14;stroke-linecap:round;opacity:.03}
.arch-lab svg .spb-sboard-ledge{fill:var(--spb-sboard-ledge);stroke:var(--spb-sboard-ledge-edge);stroke-width:1}
.arch-lab svg .spb-sboard-ledge-edge{stroke:var(--spb-sboard-ledge-edge);stroke-width:1.2}
.arch-lab svg .spb-sboard-chalk{stroke:#9ca3af;stroke-width:.6}
.arch-lab svg .spb-sboard-chalk-white{fill:var(--spb-chalk-white,#f8fafc)}
.arch-lab svg .spb-sboard-chalk-yellow{fill:var(--spb-chalk-yellow,#fde047)}
.arch-lab svg .spb-sboard-duster-back{fill:var(--spb-sboard-duster-back);stroke:#3f2a14;stroke-width:.8}
.arch-lab svg .spb-sboard-duster-felt{fill:var(--spb-sboard-duster-felt);stroke:none}
.arch-lab svg .spb-sboard-dashed .spb-chalk-stroke{stroke-dasharray:7 6}
.arch-lab svg .spb-sboard-dashed .spb-chalk-stroke-2{stroke-dasharray:7 6;stroke-dashoffset:2}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the school building (visuals/art/school-building.mjs):
   an ochre St Petersburg facade with white trim, a green roof, light windows, a brown door, the dark sign, the bow of a
   school for girls and the cap of a school for boys. The wall and the glass get darker in the dark branches; outlines stay
   dark in both themes, as in visuals/art/classroom.css. */
.arch-lab{--spb-school-wall:#f3d9a4;--spb-school-trim:#fdfaf2;--spb-school-roof:#3f7d6b;--spb-school-glass:#dcecf8;--spb-school-frame:#fdfaf2;
 --spb-school-door:#8a5a35;--spb-school-step:#cbd5e1;--spb-school-plate:#1e3a8a;--spb-school-plate-ink:#ffffff;--spb-school-bow:#e0517a;--spb-school-cap:#2f7bea;
 --spb-school-line:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-school-wall:#8a7650;--spb-school-trim:#d9d4c7;
 --spb-school-roof:#2f6355;--spb-school-glass:#3a5a78;--spb-school-frame:#c9c4b8;--spb-school-door:#6b452a;--spb-school-step:#64748b;--spb-school-plate:#3b5bdb;
 --spb-school-bow:#f27aa0;--spb-school-cap:#6aa5f7}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-school-wall:#8a7650;--spb-school-trim:#d9d4c7;
 --spb-school-roof:#2f6355;--spb-school-glass:#3a5a78;--spb-school-frame:#c9c4b8;--spb-school-door:#6b452a;--spb-school-step:#64748b;--spb-school-plate:#3b5bdb;
 --spb-school-bow:#f27aa0;--spb-school-cap:#6aa5f7}
.arch-lab svg .spb-school-o{stroke:var(--spb-school-line);stroke-width:1.3;stroke-linejoin:round}
.arch-lab svg .spb-school-o-thin{stroke:var(--spb-school-line);stroke-width:.8;stroke-linejoin:round}
.arch-lab svg .spb-school-frame{stroke:var(--spb-school-frame);stroke-width:1.2}
.arch-lab svg .spb-school-frame-dark{stroke:var(--spb-school-line);stroke-width:.8}
.arch-lab svg text.spb-school-plate-text{fill:var(--spb-school-plate-ink);stroke:none;font-weight:700;font-variant-numeric:tabular-nums}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the school compass (visuals/art/school-compass.mjs):
   steel legs with a light shine, a darker hinge and handle, a yellow pencil with a sharpened wooden point and a graphite
   lead. In the dark branches the steel is a little lighter and the shadow darker, so the compass stays visible on the
   dark stage. */
.arch-lab{--spb-compass-metal:#aeb8c4;--spb-compass-metal-edge:#5b6673;--spb-compass-shine:#f1f5f9;--spb-compass-hinge:#6b7785;--spb-compass-screw:#e2e8f0;--spb-compass-needle:#334155;--spb-compass-pencil:#f4b400;--spb-compass-pencil-edge:#c98a00;--spb-compass-wood:#ecc48f;--spb-compass-lead:#374151;--spb-compass-clamp:#7c8794;--spb-compass-shadow:#0f172a;--spb-compass-shadow-op:.12}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-compass-metal:#c3ccd7;--spb-compass-metal-edge:#e2e8f0;--spb-compass-shine:#ffffff;--spb-compass-hinge:#94a3b8;--spb-compass-screw:#1e293b;--spb-compass-needle:#e2e8f0;--spb-compass-pencil:#f5c242;--spb-compass-pencil-edge:#b8860b;--spb-compass-wood:#e8c08a;--spb-compass-lead:#cbd5e1;--spb-compass-clamp:#94a3b8;--spb-compass-shadow:#000000;--spb-compass-shadow-op:.45}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-compass-metal:#c3ccd7;--spb-compass-metal-edge:#e2e8f0;--spb-compass-shine:#ffffff;--spb-compass-hinge:#94a3b8;--spb-compass-screw:#1e293b;--spb-compass-needle:#e2e8f0;--spb-compass-pencil:#f5c242;--spb-compass-pencil-edge:#b8860b;--spb-compass-wood:#e8c08a;--spb-compass-lead:#cbd5e1;--spb-compass-clamp:#94a3b8;--spb-compass-shadow:#000000;--spb-compass-shadow-op:.45}
.arch-lab .spb-compass{pointer-events:none}
.arch-lab .spb-compass-shadow{fill:none;stroke:var(--spb-compass-shadow);stroke-opacity:var(--spb-compass-shadow-op);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
.arch-lab .spb-compass-metal{fill:var(--spb-compass-metal);stroke:var(--spb-compass-metal-edge);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-compass-shine{stroke:var(--spb-compass-shine);stroke-width:1.2;opacity:.8}
.arch-lab .spb-compass-needle{stroke:var(--spb-compass-needle);stroke-width:1.6;stroke-linecap:round}
.arch-lab .spb-compass-pencil{fill:var(--spb-compass-pencil);stroke:var(--spb-compass-pencil-edge);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-compass-pencil-edge{stroke:var(--spb-compass-pencil-edge);stroke-width:1;opacity:.7}
.arch-lab .spb-compass-wood{fill:var(--spb-compass-wood);stroke:var(--spb-compass-pencil-edge);stroke-width:.8;stroke-linejoin:round}
.arch-lab .spb-compass-lead{fill:var(--spb-compass-lead);stroke:none}
.arch-lab .spb-compass-clamp{fill:var(--spb-compass-clamp);stroke:var(--spb-compass-metal-edge);stroke-width:.8}
.arch-lab .spb-compass-handle{fill:var(--spb-compass-hinge);stroke:var(--spb-compass-metal-edge);stroke-width:1}
.arch-lab .spb-compass-knurl{stroke:var(--spb-compass-metal-edge);stroke-width:1}
.arch-lab .spb-compass-hinge{fill:var(--spb-compass-hinge);stroke:var(--spb-compass-metal-edge);stroke-width:1.2}
.arch-lab .spb-compass-screw{fill:var(--spb-compass-screw);stroke:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the school ruler (visuals/art/school-ruler.mjs):
   a light transparent plastic strip with dark ticks and numbers; in the dark branches the strip is a dim smoky plastic
   with light ticks, so the numbers stay readable on the dark stage. */
.arch-lab{--spb-ruler-body:#fff7d6;--spb-ruler-edge:#c9a94a;--spb-ruler-tick:#3b3320;--spb-ruler-num:#3b3320;--spb-ruler-shadow:#0f172a;--spb-ruler-shadow-op:.10;--spb-ruler-shine:#ffffff}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-ruler-body:#3a3524;--spb-ruler-edge:#a8913f;--spb-ruler-tick:#f1e7c4;--spb-ruler-num:#f5ecd0;--spb-ruler-shadow:#000000;--spb-ruler-shadow-op:.35;--spb-ruler-shine:#5a5338}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-ruler-body:#3a3524;--spb-ruler-edge:#a8913f;--spb-ruler-tick:#f1e7c4;--spb-ruler-num:#f5ecd0;--spb-ruler-shadow:#000000;--spb-ruler-shadow-op:.35;--spb-ruler-shine:#5a5338}
.arch-lab .spb-ruler-body{fill:var(--spb-ruler-body);stroke:var(--spb-ruler-edge);stroke-width:1.2;opacity:.94}
.arch-lab .spb-ruler-shadow{fill:var(--spb-ruler-shadow);opacity:var(--spb-ruler-shadow-op);stroke:none}
.arch-lab .spb-ruler-shine{stroke:var(--spb-ruler-shine);stroke-width:1.5;opacity:.7}
.arch-lab .spb-ruler-tick{fill:none;stroke:var(--spb-ruler-tick);stroke-width:1.1;stroke-linecap:butt}
.arch-lab svg text.spb-ruler-num{fill:var(--spb-ruler-num);font-weight:600;font-variant-numeric:tabular-nums;stroke:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the school supplies (visuals/art/school-supplies.mjs).
   The supplies keep their colours in both themes; in the dark branches they are a little deeper and the outline is the
   light figure line of lab.css, so every object stays outlined on a dark card. Strokes do not scale with the object. */
.arch-lab{--spb-school-leather:#8a5a2e;--spb-school-flap:#6e4220;--spb-school-strap:#4a2c14;--spb-school-buckle:#e3b341;--spb-school-handle:#4a2c14;
 --spb-school-stitch:#d9b48a;--spb-school-cover:#2e9d63;--spb-school-spine:#237a4c;--spb-school-pages:#f8fafc;--spb-school-label:#ffffff;
 --spb-school-label-line:#94a3b8;--spb-school-cover-line:#8fd3ae;--spb-school-ruler:#f2cd73;--spb-school-tick:#5b4210;--spb-school-ruler-hole:#ffffff;
 --spb-school-pen-body:#2563eb;--spb-school-pen-grip:#1e3a8a;--spb-school-pen-tip:#cbd5e1;--spb-school-pen-cap:#1d4ed8;--spb-school-clip:#cbd5e1;
 --spb-school-shadow:.14}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-school-leather:#9a6634;--spb-school-flap:#7d4c25;--spb-school-cover:#2a8a57;--spb-school-spine:#1f6b43;--spb-school-pages:#e2e8f0;--spb-school-label:#eef2f7;--spb-school-ruler:#e2bd62;--spb-school-pen-body:#3b74f0;--spb-school-pen-cap:#2c5ce0;--spb-school-shadow:.35}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-school-leather:#9a6634;--spb-school-flap:#7d4c25;--spb-school-cover:#2a8a57;--spb-school-spine:#1f6b43;--spb-school-pages:#e2e8f0;--spb-school-label:#eef2f7;--spb-school-ruler:#e2bd62;--spb-school-pen-body:#3b74f0;--spb-school-pen-cap:#2c5ce0;--spb-school-shadow:.35}
.arch-lab svg .spb-school-o{stroke:var(--arch-fig-line);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.arch-lab svg .spb-school-o-thin{stroke:var(--arch-fig-line);stroke-width:1;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.arch-lab svg .spb-school-none{stroke:none}
.arch-lab svg .spb-school-shadow{stroke:none;fill-opacity:var(--spb-school-shadow)}
.arch-lab svg .spb-school-handle{fill:none;stroke:var(--spb-school-handle);stroke-width:5;stroke-linecap:round}
.arch-lab svg .spb-school-stitch{fill:none;stroke:var(--spb-school-stitch);stroke-width:1.2;stroke-dasharray:3 2.5;stroke-linecap:round}
.arch-lab svg .spb-school-shine{fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:round;opacity:.45}
.arch-lab svg .spb-school-label-line{fill:none;stroke:var(--spb-school-label-line);stroke-width:1.2;stroke-linecap:round}
.arch-lab svg .spb-school-cover-line{fill:none;stroke:var(--spb-school-cover-line);stroke-width:1.4;stroke-linecap:round}
.arch-lab svg .spb-school-tick{fill:none;stroke:var(--spb-school-tick);stroke-width:1;stroke-linecap:round}
.arch-lab svg .spb-school-ruler-edge{fill:none;stroke:#ffffff;stroke-width:1.6;opacity:.5}
.arch-lab svg .spb-school-clip{fill:none;stroke:var(--spb-school-clip);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the school table (visuals/art/school-table.mjs).
   The wood and the metal legs keep their colours in both themes, a little darker in the dark branches. */
.arch-lab{--spb-table-line:#1f2937;--spb-table-top:#e2b679;--spb-table-edge:#a8743d;--spb-table-panel:#c99a5e;--spb-table-leg:#7b8794;--spb-table-foot:#4b5563}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-table-line:#0b1120;--spb-table-top:#c99a5e;
 --spb-table-edge:#8a5a2b;--spb-table-panel:#a77a45;--spb-table-leg:#94a3b8;--spb-table-foot:#64748b}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-table-line:#0b1120;--spb-table-top:#c99a5e;
 --spb-table-edge:#8a5a2b;--spb-table-panel:#a77a45;--spb-table-leg:#94a3b8;--spb-table-foot:#64748b}
.arch-lab svg .spb-table-o{stroke:var(--spb-table-line);stroke-width:1.3;stroke-linejoin:round}
.arch-lab svg .spb-table-o-thin{stroke:var(--spb-table-line);stroke-width:.9;stroke-linejoin:round}
.arch-lab svg .spb-table-grain{stroke:var(--spb-table-edge);stroke-width:.8;opacity:.7}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the scissors and the cut line
   (visuals/art/scissors.mjs). They are drawn on paper-light pages that stay light in both themes, so the colours are fixed. */
.arch-lab{--spb-scissors-blade:#cbd5e1;--spb-scissors-edge:#334155;--spb-scissors-handle:#e11d48;--spb-scissors-cut:#dc2626}
.arch-lab .spb-scissors-blade{fill:var(--spb-scissors-blade);stroke:var(--spb-scissors-edge);stroke-width:1;stroke-linejoin:round}
.arch-lab .spb-scissors-handle{fill:none;stroke:var(--spb-scissors-handle);stroke-width:2.2}
.arch-lab .spb-scissors-pin{fill:var(--spb-scissors-edge);stroke:none}
.arch-lab .spb-scissors-cut{stroke:var(--spb-scissors-cut);stroke-width:2.4;stroke-dasharray:5 4;stroke-linecap:round}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the household goods (visuals/art/shop-goods.mjs).
   The goods keep their colours in both themes; in the dark branches they are a little deeper and the outline is the
   light figure line of lab.css, so every object stays outlined on a dark card. Strokes do not scale with the object. */
.arch-lab{--spb-goods-pot:#e4572e;--spb-goods-pot-band:#fbe3d6;--spb-goods-pot-rim:#f1f5f9;--spb-goods-pot-lid:#d24a24;--spb-goods-knob:#334155;
 --spb-goods-flower:#f59e0b;--spb-goods-petal:#ffffff;--spb-goods-handle:#475569;
 --spb-goods-plate:#ffffff;--spb-goods-plate-well:#f3f7fd;--spb-goods-plate-ink:#2f5fb3;--spb-goods-wood:#b07a43;
 --spb-goods-bag:#f8fafc;--spb-goods-bag-hole:#e2e8f0;--spb-goods-bag-stripe:#22a06b;--spb-goods-logo:#22a06b;--spb-goods-fold:#cbd5e1;
 --spb-goods-pillow:#c7d7f5;--spb-goods-pillow-button:#7c93c9;--spb-goods-seam:#7c93c9;
 --spb-goods-brush-handle:#22a06b;--spb-goods-brush-cup:#f1f5f9;--spb-goods-brush-rim:#e2e8f0;--spb-goods-bristle:#15803d;
 --spb-goods-shadow:.14}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-goods-pot:#c9461f;--spb-goods-pot-band:#f2cdb9;--spb-goods-pot-rim:#d8dee8;--spb-goods-pot-lid:#b43d1a;--spb-goods-knob:#1f2937;--spb-goods-plate:#e9edf5;--spb-goods-plate-well:#dde5f2;--spb-goods-bag:#e2e8f0;--spb-goods-bag-hole:#94a3b8;--spb-goods-pillow:#a9bfe8;--spb-goods-brush-cup:#d8dee8;--spb-goods-brush-rim:#c3cbd8;--spb-goods-shadow:.35}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-goods-pot:#c9461f;--spb-goods-pot-band:#f2cdb9;--spb-goods-pot-rim:#d8dee8;--spb-goods-pot-lid:#b43d1a;--spb-goods-knob:#1f2937;--spb-goods-plate:#e9edf5;--spb-goods-plate-well:#dde5f2;--spb-goods-bag:#e2e8f0;--spb-goods-bag-hole:#94a3b8;--spb-goods-pillow:#a9bfe8;--spb-goods-brush-cup:#d8dee8;--spb-goods-brush-rim:#c3cbd8;--spb-goods-shadow:.35}
.arch-lab svg .spb-goods-o{stroke:var(--arch-fig-line);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.arch-lab svg .spb-goods-o-thin{stroke:var(--arch-fig-line);stroke-width:1;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.arch-lab svg .spb-goods-none{stroke:none}
.arch-lab svg .spb-goods-shadow{stroke:none;fill-opacity:var(--spb-goods-shadow)}
.arch-lab svg .spb-goods-handle{fill:none;stroke:var(--spb-goods-handle);stroke-width:5;stroke-linecap:round}
.arch-lab svg .spb-goods-shine{fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:round;opacity:.55}
.arch-lab svg .spb-goods-stand{fill:none;stroke:var(--spb-goods-wood);stroke-width:4;stroke-linecap:round}
.arch-lab svg .spb-goods-logo{fill:none;stroke:var(--spb-goods-logo);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .spb-goods-fold{fill:none;stroke:var(--spb-goods-fold);stroke-width:1.6;stroke-linecap:round}
.arch-lab svg .spb-goods-seam{fill:none;stroke:var(--spb-goods-seam);stroke-width:1.2;stroke-dasharray:3 2.5;stroke-linecap:round}
.arch-lab svg .spb-goods-stitch{fill:none;stroke:#1f2937;stroke-width:1.2;stroke-linecap:round}
.arch-lab svg .spb-goods-bristle{fill:none;stroke:var(--spb-goods-bristle);stroke-width:2.4;stroke-linecap:round}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the shop pan scales (visuals/art/shop-scale.mjs):
   the cream body with a green trim, metal pans and rods, the pointer beaks, brass weights, enamel plates and the wooden
   counter. Text on the plates stays dark on the light enamel in both themes. */
.arch-lab{--spb-scale-body:#efe6cf;--spb-scale-trim:#5f7f73;--spb-scale-slot:#3a3f47;--spb-scale-metal:#c4ccd7;--spb-scale-metal-hi:#eef2f7;--spb-scale-beak:#d9473b;--spb-scale-brass:#d8ab3e;--spb-scale-band:#9c7320;--spb-scale-plate:#fffdf7;--spb-scale-plate-ink:#1f2937;--spb-scale-plate-muted:#4b5563;--spb-scale-tone-a:#2563eb;--spb-scale-tone-b:#c2410c;--spb-scale-wood:#c79a5f;--spb-scale-wood-edge:#8a5a2b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-scale-body:#d3c8ab;--spb-scale-trim:#4f6c61;--spb-scale-slot:#262a31;--spb-scale-metal:#a7b0bd;--spb-scale-metal-hi:#d6dce5;--spb-scale-beak:#e0574b;--spb-scale-brass:#c99b33;--spb-scale-band:#8a651a;--spb-scale-plate:#f3efe2;--spb-scale-tone-a:#3b82f6;--spb-scale-tone-b:#ea580c;--spb-scale-wood:#a8783f;--spb-scale-wood-edge:#6f4a22}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-scale-body:#d3c8ab;--spb-scale-trim:#4f6c61;--spb-scale-slot:#262a31;--spb-scale-metal:#a7b0bd;--spb-scale-metal-hi:#d6dce5;--spb-scale-beak:#e0574b;--spb-scale-brass:#c99b33;--spb-scale-band:#8a651a;--spb-scale-plate:#f3efe2;--spb-scale-tone-a:#3b82f6;--spb-scale-tone-b:#ea580c;--spb-scale-wood:#a8783f;--spb-scale-wood-edge:#6f4a22}
.arch-lab .spb-scale-o{stroke:#1f2937;stroke-width:1.3;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-scale-flat{stroke:none}
.arch-lab .spb-scale-edge{stroke-width:2.2;stroke-linejoin:round}
.arch-lab .spb-scale-stem{stroke:var(--spb-scale-slot);stroke-width:2.2;fill:none}
.arch-lab .spb-scale-shine{stroke:#ffffff;stroke-width:1.8;opacity:.75;fill:none}
.arch-lab .spb-scale-band{stroke:var(--spb-scale-band);stroke-width:1.4;fill:none}
.arch-lab .spb-scale-grain{stroke:var(--spb-scale-wood-edge);stroke-width:1.2;opacity:.5;fill:none}
.arch-lab svg text.spb-scale-plate-text{fill:var(--spb-scale-plate-ink);stroke:none;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg text.spb-scale-plate-small{fill:var(--spb-scale-plate-muted);stroke:none;font-weight:600}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the child with a placard (visuals/art/sign-kid.mjs).
   Hair, shirts and the cap keep their colours in both themes; in the dark branches the outline is darker and the skin a
   little warmer, so a figure on a dark stage keeps its silhouette. The placard stays paper-light with dark ink. */
.arch-lab{--spb-sk-line:#1f2937;--spb-sk-skin:#f6d2b4;--spb-sk-cheek:#f4a3a3;--spb-sk-ink:#1f2937;--spb-sk-bow:#e11d48;
 --spb-sk-hair-0:#7c4a25;--spb-sk-hair-1:#2b2b33;--spb-sk-hair-2:#d9a441;--spb-sk-hair-3:#b4532a;
 --spb-sk-shirt-0:#3b82f6;--spb-sk-shirt-1:#22a06b;--spb-sk-shirt-2:#8b5cf6;--spb-sk-shirt-3:#f59e0b;--spb-sk-shirt-4:#ec4899;--spb-sk-shirt-5:#14b8a6;
 --spb-sk-cap:#dc2626;--spb-sk-cap-visor:#991b1b;--spb-sk-placard:#fffdf5;--spb-sk-placard-ink:#111827}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-sk-line:#0b1120;--spb-sk-skin:#e8bf9c;--spb-sk-shirt-0:#4f8ff7;--spb-sk-shirt-2:#9d74f9;--spb-sk-placard:#f6f1e3}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-sk-line:#0b1120;--spb-sk-skin:#e8bf9c;--spb-sk-shirt-0:#4f8ff7;--spb-sk-shirt-2:#9d74f9;--spb-sk-placard:#f6f1e3}
.arch-lab svg .spb-sk-o{stroke:var(--spb-sk-line);stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round}
.arch-lab svg .spb-sk-o-thin{stroke:var(--spb-sk-line);stroke-width:1.1}
.arch-lab svg .spb-sk-none{stroke:none}
.arch-lab svg .spb-sk-face{stroke:var(--spb-sk-ink);stroke-width:1.8;stroke-linecap:round}
.arch-lab svg .spb-sk-collar{stroke:var(--spb-sk-line);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .spb-sk-cheek{stroke:none;opacity:.55}
.arch-lab svg .spb-sk-arm{fill:none;stroke-width:7;stroke-linecap:round}
.arch-lab svg .spb-sk-placard{stroke:#7c6a45;stroke-width:1.6}
.arch-lab svg text.spb-sk-num{fill:var(--spb-sk-placard-ink);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the squared exercise-book page and the handwritten
   digits on it (visuals/art/squared-paper.mjs). The page stays paper-light in both themes, so the inks drawn on it keep
   fixed dark colours; in the dark branches the paper is a little dimmer and the covers a little deeper. */
.arch-lab{--spb-sqp-paper:#fffef8;--spb-sqp-edge:#b9b39c;--spb-sqp-grid:#bfd3ea;--spb-sqp-margin:#ef8f8f;--spb-sqp-spine:#e7e1cc;
 --spb-sqp-stitch:#8c8672;--spb-sqp-cover-a:#3b82f6;--spb-sqp-cover-b:#22a06b;--spb-sqp-cover-c:#ef6c3a;
 --spb-sqp-ink:#1e3a8a;--spb-sqp-dark:#1f2937;--spb-sqp-a:#1d4ed8;--spb-sqp-b:#b4370f;--spb-sqp-accent:#9a3412;--spb-sqp-pencil:#57534e;
 --spb-sqp-marker-yellow:#fde047;--spb-sqp-marker-blue:#93c5fd;--spb-sqp-ring:#c2410c}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-sqp-paper:#eceae0;--spb-sqp-edge:#8f8a74;--spb-sqp-grid:#b3c4d8;--spb-sqp-spine:#d6d0ba;--spb-sqp-cover-a:#2f63c4;--spb-sqp-cover-b:#1b7f55;--spb-sqp-cover-c:#c4552c}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-sqp-paper:#eceae0;--spb-sqp-edge:#8f8a74;--spb-sqp-grid:#b3c4d8;--spb-sqp-spine:#d6d0ba;--spb-sqp-cover-a:#2f63c4;--spb-sqp-cover-b:#1b7f55;--spb-sqp-cover-c:#c4552c}
.arch-lab .spb-sqp-page{fill:var(--spb-sqp-paper);stroke:var(--spb-sqp-edge);stroke-width:1.2}
.arch-lab .spb-sqp-cover{stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .spb-sqp-cover-a{fill:var(--spb-sqp-cover-a)}
.arch-lab .spb-sqp-cover-b{fill:var(--spb-sqp-cover-b)}
.arch-lab .spb-sqp-cover-c{fill:var(--spb-sqp-cover-c)}
.arch-lab .spb-sqp-grid{fill:none;stroke:var(--spb-sqp-grid);stroke-width:.8}
.arch-lab .spb-sqp-margin{stroke:var(--spb-sqp-margin);stroke-width:1.2}
.arch-lab .spb-sqp-spine{fill:var(--spb-sqp-spine);stroke:none}
.arch-lab .spb-sqp-stitch{stroke:var(--spb-sqp-stitch);stroke-width:1.4;stroke-linecap:round}
.arch-lab svg text.spb-sqp-hand{stroke:none;paint-order:normal;font-family:"Segoe Print","Comic Sans MS","Chalkboard SE","Bradley Hand",system-ui,sans-serif;font-weight:600}
.arch-lab svg text.spb-sqp-ink{fill:var(--spb-sqp-ink)}
.arch-lab svg text.spb-sqp-a{fill:var(--spb-sqp-a)}
.arch-lab svg text.spb-sqp-dark{fill:var(--spb-sqp-dark)}
.arch-lab svg text.spb-sqp-b{fill:var(--spb-sqp-b)}
.arch-lab svg text.spb-sqp-accent{fill:var(--spb-sqp-accent)}
.arch-lab svg text.spb-sqp-pencil{fill:var(--spb-sqp-pencil)}
.arch-lab svg text.spb-sqp-bold{font-weight:800}
.arch-lab .spb-sqp-marker{stroke:none;opacity:.5}
.arch-lab .spb-sqp-marker-yellow{fill:var(--spb-sqp-marker-yellow)}
.arch-lab .spb-sqp-marker-blue{fill:var(--spb-sqp-marker-blue)}
.arch-lab .spb-sqp-ring{fill:none;stroke:var(--spb-sqp-ring);stroke-width:1.8}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the steppe portraits (visuals/art/steppe-folk.mjs):
   печенег — sea-blue kaftan, indigo felt cap on fur; хазар — crimson kaftan, steel helmet with gold; гунн — blue kaftan,
   felt cap with fur flaps; скиф — ochre kaftan and hood. Costume colours stay the same in both themes; in the dark branches
   the outline turns a little darker and the steel a little lighter, so a portrait keeps its silhouette on a dark field. */
.arch-lab{--spb-folk-line:#1f2937;--spb-folk-skin:#f3cfae;--spb-folk-ink:#1f2937;--spb-folk-dark-hair:#4a2e1a;--spb-folk-black-hair:#1c1917;--spb-folk-brown-hair:#7c4a25;
 --spb-folk-pech-coat:#0e7490;--spb-folk-pech-cap:#3730a3;--spb-folk-fur:#c9a27a;--spb-folk-fur-line:#7c5a3a;--spb-folk-trim:#fbbf24;
 --spb-folk-khaz-coat:#b91c1c;--spb-folk-steel:#cbd5e1;--spb-folk-shine:#f8fafc;--spb-folk-mail:#94a3b8;--spb-folk-gold:#eab308;
 --spb-folk-hun-coat:#1d4ed8;--spb-folk-hun-cap:#334155;--spb-folk-tassel:#dc2626;
 --spb-folk-scyth-coat:#c2410c;--spb-folk-hood:#d97706;--spb-folk-hood-rim:#92400e}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-folk-line:#0b1120;--spb-folk-steel:#dbe3ec;--spb-folk-skin:#ecc29f}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-folk-line:#0b1120;--spb-folk-steel:#dbe3ec;--spb-folk-skin:#ecc29f}
.arch-lab svg .spb-folk-o{stroke:var(--spb-folk-line);stroke-width:1.1;stroke-linejoin:round;stroke-linecap:round}
.arch-lab svg .spb-folk-o-thin{stroke:var(--spb-folk-line);stroke-width:.8;stroke-linejoin:round}
.arch-lab svg .spb-folk-brow{fill:none;stroke:var(--spb-folk-line);stroke-width:1.2;stroke-linecap:round}
.arch-lab svg .spb-folk-mouth{fill:none;stroke:var(--spb-folk-line);stroke-width:1;stroke-linecap:round}
.arch-lab svg .spb-folk-trim{fill:none;stroke:var(--spb-folk-trim);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .spb-folk-fur-line{fill:none;stroke:var(--spb-folk-fur-line);stroke-width:.9;stroke-linecap:round}
.arch-lab svg .spb-folk-shine{fill:none;stroke:var(--spb-folk-shine);stroke-width:1.4;stroke-linecap:round;opacity:.85}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the sumo tournament (visuals/art/sumo.mjs):
   the wrestlers (skin, hair, four mawashi colours that tell the pairs apart without text) and the ring (clay, straw
   bale, white starting lines). The mawashi keeps its colour in both themes; the clay and the skin get a little deeper
   in the dark branches, and the outline stays dark, as in visuals/art/school-table.css. */
.arch-lab{--spb-sumo-line:#1f2937;--spb-sumo-ink:#1f2937;--spb-sumo-skin:#f0c49b;--spb-sumo-hair:#1c1917;
 --spb-sumo-belt-0:#1d4ed8;--spb-sumo-belt-1:#b91c1c;--spb-sumo-belt-2:#15803d;--spb-sumo-belt-3:#7c3aed;
 --spb-sumo-clay:#d9a066;--spb-sumo-bale:#b57636;--spb-sumo-chalk:#fdf6ec}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-sumo-line:#0b1120;--spb-sumo-skin:#e3b188;
 --spb-sumo-belt-0:#3b82f6;--spb-sumo-belt-1:#ef4444;--spb-sumo-belt-2:#22c55e;--spb-sumo-belt-3:#a78bfa;
 --spb-sumo-clay:#b9834c;--spb-sumo-bale:#8a5a27;--spb-sumo-chalk:#f8f3ea}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-sumo-line:#0b1120;--spb-sumo-skin:#e3b188;
 --spb-sumo-belt-0:#3b82f6;--spb-sumo-belt-1:#ef4444;--spb-sumo-belt-2:#22c55e;--spb-sumo-belt-3:#a78bfa;
 --spb-sumo-clay:#b9834c;--spb-sumo-bale:#8a5a27;--spb-sumo-chalk:#f8f3ea}
.arch-lab svg .spb-sumo-o{stroke:var(--spb-sumo-line);stroke-width:1.3;stroke-linejoin:round;stroke-linecap:round}
.arch-lab svg .spb-sumo-o-thin{stroke:var(--spb-sumo-line);stroke-width:.9;stroke-linejoin:round}
.arch-lab svg .spb-sumo-none{stroke:none}
.arch-lab svg .spb-sumo-crease{fill:none;stroke:var(--spb-sumo-line);stroke-width:.9;opacity:.5;stroke-linecap:round}
.arch-lab svg .spb-sumo-seam{fill:none;stroke:var(--spb-sumo-line);stroke-width:.8;opacity:.45;stroke-linecap:round}
.arch-lab svg .spb-sumo-mouth{fill:none;stroke:var(--spb-sumo-line);stroke-width:1.1;stroke-linecap:round}
.arch-lab svg .spb-sumo-line{stroke:var(--spb-sumo-chalk);stroke-width:2.4;stroke-linecap:round}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the story portraits (visuals/art/tale-heads.mjs).
   The rounded frame is light paper in both themes (a little dimmer in the dark branches), so the figures keep their colours
   and their dark outlines stay visible; the ring around the frame follows the theme. */
.arch-lab{--spb-tale-bg:#fdf7e8;--spb-tale-ring:#c9b98f;--spb-tale-line:#1f2937;
 --spb-tale-skin:#f6d2b4;--spb-tale-skin2:#eab48f;--spb-tale-cheek:#f4a3a3;--spb-tale-eye:#1f2937;--spb-tale-fair:#e0b04f;--spb-tale-hair:#6b4423;
 --spb-tale-kerchief:#dc2626;--spb-tale-dot:#ffffff;--spb-tale-blouse:#fff7f0;--spb-tale-sarafan:#be123c;
 --spb-tale-fur:#b7793f;--spb-tale-fur2:#9a6233;--spb-tale-muzzle:#ecc89f;--spb-tale-nose:#1f2937;
 --spb-tale-jumper:#2f855a;--spb-tale-jumper2:#276749;--spb-tale-stripe:#f0fff4;
 --spb-tale-jacket:#1e3a8a;--spb-tale-strap:#7c4a25;--spb-tale-shirt:#e5e7eb;--spb-tale-cap:#1e3a8a;--spb-tale-band:#b91c1c;--spb-tale-visor:#0f172a;--spb-tale-badge:#facc15;--spb-tale-moustache:#4b5563}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-tale-bg:#ece3cc;--spb-tale-ring:#8f8466}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-tale-bg:#ece3cc;--spb-tale-ring:#8f8466}
.arch-lab .spb-tale-frame{fill:var(--spb-tale-bg);stroke:none}
.arch-lab .spb-tale-ring{fill:none;stroke:var(--spb-tale-ring);stroke-width:1.4}
.arch-lab .spb-tale :is(path,circle,ellipse,rect):not(.spb-tale-frame):not(.spb-tale-ring):not(.spb-tale-line){stroke:var(--spb-tale-line);stroke-width:.7;stroke-linejoin:round}
.arch-lab .spb-tale .spb-tale-line{fill:none;stroke:var(--spb-tale-line);stroke-width:.9;stroke-linecap:round}
.arch-lab .spb-tale .spb-tale-eye,.arch-lab .spb-tale .spb-tale-nose{fill:var(--spb-tale-eye);stroke:none}
.arch-lab .spb-tale .spb-tale-cheek{fill:var(--spb-tale-cheek);stroke:none;opacity:.6}
.arch-lab .spb-tale .spb-tale-dot{fill:var(--spb-tale-dot);stroke:none}
.arch-lab .spb-tale-skin{fill:var(--spb-tale-skin)}
.arch-lab .spb-tale-skin2{fill:var(--spb-tale-skin2)}
.arch-lab .spb-tale-fair{fill:var(--spb-tale-fair)}
.arch-lab .spb-tale-hair{fill:var(--spb-tale-hair)}
.arch-lab .spb-tale-kerchief{fill:var(--spb-tale-kerchief)}
.arch-lab .spb-tale-blouse{fill:var(--spb-tale-blouse)}
.arch-lab .spb-tale-sarafan{fill:var(--spb-tale-sarafan)}
.arch-lab .spb-tale-fur{fill:var(--spb-tale-fur)}
.arch-lab .spb-tale-fur2{fill:var(--spb-tale-fur2)}
.arch-lab .spb-tale-muzzle{fill:var(--spb-tale-muzzle)}
.arch-lab .spb-tale-jumper{fill:var(--spb-tale-jumper)}
.arch-lab .spb-tale-jumper2{fill:var(--spb-tale-jumper2)}
.arch-lab .spb-tale-stripe{fill:var(--spb-tale-stripe)}
.arch-lab .spb-tale-jacket{fill:var(--spb-tale-jacket)}
.arch-lab .spb-tale-strap{fill:var(--spb-tale-strap)}
.arch-lab .spb-tale-shirt{fill:var(--spb-tale-shirt)}
.arch-lab .spb-tale-cap{fill:var(--spb-tale-cap)}
.arch-lab .spb-tale-band{fill:var(--spb-tale-band)}
.arch-lab .spb-tale-visor{fill:var(--spb-tale-visor)}
.arch-lab .spb-tale-badge{fill:var(--spb-tale-badge)}
.arch-lab .spb-tale-moustache{fill:var(--spb-tale-moustache)}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the small towns and palaces of
   visuals/art/town.mjs. Walls and roofs get a little darker in the dark branches; outlines stay dark. */
.arch-lab{--spb-town-wall-a:#f4d6a8;--spb-town-wall-b:#bcd7ef;--spb-town-wall-c:#f2b8a6;--spb-town-roof:#b5523b;--spb-town-roof-red:#c2410c;
 --spb-town-window:#fff4c2;--spb-town-door:#7c4a25;--spb-town-grass:#86c06c;--spb-town-trunk:#8a5a2b;--spb-town-tree:#4f9d4a;
 --spb-town-logs:#d4a066;--spb-town-gold:#f0bf34;--spb-town-marble:#f8f5ee;--spb-town-dome:#3b82c4;--spb-town-line:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-town-wall-a:#d9b884;--spb-town-wall-b:#93b4d4;--spb-town-wall-c:#d39886;--spb-town-grass:#5f9d4b;--spb-town-marble:#e6e1d6;--spb-town-logs:#c08e57}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-town-wall-a:#d9b884;--spb-town-wall-b:#93b4d4;--spb-town-wall-c:#d39886;--spb-town-grass:#5f9d4b;--spb-town-marble:#e6e1d6;--spb-town-logs:#c08e57}
.arch-lab .spb-town-o{stroke:var(--spb-town-line);stroke-width:1.3;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-town-o-thin{stroke:var(--spb-town-line);stroke-width:.9;stroke-linejoin:round}
.arch-lab .spb-town-seam{stroke:#8a5a2b;stroke-width:1;fill:none;opacity:.7}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the sheet in triangles and of the paint on it
   (visuals/art/triangle-paper.mjs). The paper stays light in both themes, so the grid ink, the three layers of paint and
   the digits keep fixed colours; in the dark branches only the paper is a little dimmer and the shadow deeper. */
.arch-lab{--spb-tri-paper:#fffef9;--spb-tri-grid:#8d99ab;--spb-tri-shadow:#0f172a;--spb-tri-shadow-op:.12;
 --spb-tri-paint-1:#d3dffc;--spb-tri-paint-2:#8fa6f2;--spb-tri-paint-3:#3247b5;--spb-tri-digit-2:#0f1d4d;--spb-tri-digit-3:#ffffff;
 --spb-tri-edge:#25356f}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-tri-paper:#eceae0;--spb-tri-grid:#7f8b9d;--spb-tri-shadow:#000000;--spb-tri-shadow-op:.35}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-tri-paper:#eceae0;--spb-tri-grid:#7f8b9d;--spb-tri-shadow:#000000;--spb-tri-shadow-op:.35}
.arch-lab .spb-tri-paper{fill:var(--spb-tri-paper);stroke:none}
.arch-lab .spb-tri-shadow{fill:var(--spb-tri-shadow);opacity:var(--spb-tri-shadow-op);stroke:none}
.arch-lab .spb-tri-grid{fill:none;stroke:var(--spb-tri-grid);stroke-width:1;stroke-linecap:round}
.arch-lab .spb-tri-paint{stroke:none}
.arch-lab .spb-tri-paint-1{fill:var(--spb-tri-paint-1)}
.arch-lab .spb-tri-paint-2{fill:var(--spb-tri-paint-2)}
.arch-lab .spb-tri-paint-3{fill:var(--spb-tri-paint-3)}
.arch-lab svg text.spb-tri-digit{font-weight:700;font-variant-numeric:tabular-nums;stroke:none}
.arch-lab svg text.spb-tri-digit-2{fill:var(--spb-tri-digit-2)}
.arch-lab svg text.spb-tri-digit-3{fill:var(--spb-tri-digit-3)}
.arch-lab .spb-tri-icon{flex:none;display:inline-block;vertical-align:middle}
.arch-lab .spb-tri-icon-paper{fill:var(--spb-tri-paper);stroke:var(--spb-tri-grid);stroke-width:1}
.arch-lab .spb-tri-icon-zig{fill:none;stroke:var(--spb-tri-edge);stroke-width:.9;opacity:.7}
.arch-lab .spb-tri-icon-edge{fill:none;stroke:var(--spb-tri-edge);stroke-width:1.2}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: colours of the Field of Wonders (visuals/art/wonder-field.mjs):
   the tree, the dug hole, gold coins, the fox and the cat, set for the light theme and both dark branches. */
.arch-lab{--spb-field-trunk:#8b5a2b;--spb-field-leaf:#4ade80;--spb-field-leaf2:#22c55e;--spb-field-ground:#c9a26b;--spb-field-hole:#4a3020;--spb-field-coin:#facc15;
 --spb-field-fox:#f97316;--spb-field-cream:#fff7ed;--spb-field-paw:#7c2d12;--spb-field-cat:#9ca3af;--spb-field-cat-paw:#4b5563}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--spb-field-trunk:#7a4f26;--spb-field-leaf:#2f9e5a;--spb-field-leaf2:#22804a;--spb-field-ground:#8a6a3f;--spb-field-hole:#21160d;--spb-field-coin:#eab308;
 --spb-field-fox:#ea6a12;--spb-field-cream:#f5e6d3;--spb-field-paw:#5a200c;--spb-field-cat:#8b93a1;--spb-field-cat-paw:#374151}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--spb-field-trunk:#7a4f26;--spb-field-leaf:#2f9e5a;--spb-field-leaf2:#22804a;--spb-field-ground:#8a6a3f;--spb-field-hole:#21160d;--spb-field-coin:#eab308;
 --spb-field-fox:#ea6a12;--spb-field-cream:#f5e6d3;--spb-field-paw:#5a200c;--spb-field-cat:#8b93a1;--spb-field-cat-paw:#374151}
.arch-lab .spb-field-o{stroke:var(--arch-fig-line);stroke-width:1.3;stroke-linejoin:round;stroke-linecap:round}
.arch-lab .spb-field-o-thin{stroke:var(--arch-fig-line);stroke-width:.8;stroke-linejoin:round}
.arch-lab .spb-field-coin-ring{fill:none;stroke:#a16207;stroke-width:1}
.arch-lab .spb-field-root{stroke:var(--spb-field-trunk);stroke-width:3;fill:none;stroke-linecap:round}
.arch-lab .spb-field-stripe{stroke:#4b5563;stroke-width:2.4;fill:none;stroke-linecap:round}
.arch-lab .spb-field-whisker{stroke:#1f2937;stroke-width:.9;fill:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2021/22, 6 класс, задача 1 «Слагаемые наоборот».
   The terms as pairs of wooden toy blocks (colours of the blocks in visuals/art/digit-blocks.css) on a light table top,
   the selected block, the digit pad, the result and the place-value panel. Light and both dark branches. */
.arch-lab .arch-s2261{--s2261-table:#f7efe1;--s2261-table-edge:#d9c7a6;--s2261-tens:#1e3a8a;--s2261-tens-bg:#dbeafe;--s2261-units:#9a3412;--s2261-units-bg:#ffedd5;--s2261-block:52px}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2261{--s2261-table:#2b2620;--s2261-table-edge:#5b4c36;--s2261-tens:#bfdbfe;--s2261-tens-bg:#1e3a5f;--s2261-units:#fed7aa;--s2261-units-bg:#4a2a12}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2261{--s2261-table:#2b2620;--s2261-table-edge:#5b4c36;--s2261-tens:#bfdbfe;--s2261-tens-bg:#1e3a5f;--s2261-units:#fed7aa;--s2261-units-bg:#4a2a12}
.arch-lab .arch-s2261-task{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink);padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0}
/* the table top with the blocks */
.arch-lab .arch-s2261-stage{background:var(--s2261-table);border-color:var(--s2261-table-edge);padding:10px 10px 6px;container-type:inline-size}
.arch-lab .arch-s2261-scenehead{margin:0 0 6px;font-weight:600;font-size:15px;color:var(--arch-label)}
.arch-lab .arch-s2261-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px 4px;min-width:0;padding-top:4px}
.arch-lab .arch-s2261-item{display:flex;align-items:flex-start;gap:4px}
.arch-lab .arch-s2261-term{display:grid;justify-items:center;gap:0}
.arch-lab .arch-s2261-pair{display:flex;gap:4px}
.arch-lab .arch-s2261-plus,.arch-lab .arch-s2261-eq{align-self:flex-start;line-height:var(--s2261-block);font-size:22px;font-weight:700;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2261-plus{min-width:14px;text-align:center}
.arch-lab .arch-s2261-eq{margin-left:4px;white-space:nowrap}
.arch-lab .arch-s2261-was{min-height:18px;font-size:13px;line-height:18px;color:var(--arch-muted);font-variant-numeric:tabular-nums;white-space:pre}
.arch-lab .arch-s2261-empty{line-height:var(--s2261-block);color:var(--arch-muted)}
.arch-lab button.arch-s2261-block{width:var(--s2261-block);height:var(--s2261-block);min-width:var(--s2261-block);min-height:var(--s2261-block);padding:0;border:0;border-radius:10px;background:transparent;line-height:0;touch-action:manipulation}
.arch-lab .arch-s2261-blocksvg{display:block;width:100%;height:100%;overflow:visible}
.arch-lab button.arch-s2261-block.arch-s2261-sel{outline:3px solid var(--arch-focus);outline-offset:0;transform:translateY(-3px)}
.arch-lab button.arch-s2261-block:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
/* the digit pad: ten keys in a row when the lab is wide (10 × 44 px + 9 gaps = 494 px), otherwise five keys that share
   the width (at a 240 px lab: 44,8 px each with 4 px gaps — nothing sticks out of the lab, which clips overflow) */
.arch-lab .arch-s2261-info{margin:0;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2261-pad{display:grid;grid-template-columns:repeat(10,minmax(44px,1fr));gap:6px;max-width:620px}
@media (max-width:620px){.arch-lab .arch-s2261-pad{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}}
.arch-lab .arch-s2261-key{padding:0;font-size:18px;font-weight:700;border-radius:12px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2261-key[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line)}
.arch-lab .arch-s2261-note:empty{display:none}
.arch-lab .arch-s2261-locked{opacity:.55}
.arch-lab .arch-s2261-swap{min-width:min(100%,280px)}
.arch-lab .arch-s2261-result{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2261-reading[hidden],.arch-lab .arch-s2261-parts[hidden],.arch-lab .arch-s2261-partsbtn[hidden]{display:none}
/* the place-value panel: the same two colours as the blocks */
.arch-lab .arch-s2261-parts{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2261-chip{display:inline-block;padding:1px 8px;border-radius:999px;font-size:14px;font-weight:700}
.arch-lab .arch-s2261-chip-t{color:var(--s2261-tens);background:var(--s2261-tens-bg)}
.arch-lab .arch-s2261-chip-u{color:var(--s2261-units);background:var(--s2261-units-bg)}
@media (prefers-reduced-motion: reduce){.arch-lab button.arch-s2261-block.arch-s2261-sel{transform:none}}
/* wide labs: larger blocks; narrow tables (phones): 44-px blocks, so that «37 + 63 = 100» stays on one line at 320 px.
   Last in the file, so that they override the base sizes above. */
@media (min-width:600px){.arch-lab .arch-s2261{--s2261-block:62px}.arch-lab .arch-s2261-plus,.arch-lab .arch-s2261-eq{font-size:26px}}
@container (max-width:340px){.arch-lab .arch-s2261-row{--s2261-block:44px;gap:6px 3px}.arch-lab .arch-s2261-item{gap:3px}.arch-lab .arch-s2261-plus,.arch-lab .arch-s2261-eq{font-size:19px}.arch-lab .arch-s2261-plus{min-width:11px}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2021/22, 6 класс, задача 2 «Прогулка по парку».
   The park map (paths, trees and the «no entry» sign come from visuals/art/park.css and ring-road.css), the badges with
   walked / figure numbers, the glow of the paths where the walker may go, the move buttons and the result panels.
   Light and both dark branches. */
.arch-lab .arch-s2262{--s2262-may:#22c55e;--s2262-badge:#fffdf7;--s2262-badge-line:#8a7a55;--s2262-ok:#dcfce7;--s2262-ok-line:#15803d;--s2262-over:#fee2e2;--s2262-over-line:#b91c1c;--s2262-unknown:#fef3c7;--s2262-letter:#1f2937;--s2262-letter-halo:#f6fbef;--s2262-chip:#dbeafe;--s2262-chip-line:#2563eb;--s2262-chip-ink:#1e3a8a;--s2262-chip-zero:#f8fafc;--s2262-chip-zero-line:#94a3b8;--s2262-sum:#ffedd5;--s2262-sum-line:#c2410c}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2262{--s2262-may:#4ade80;--s2262-badge:#f3efe2;--s2262-badge-line:#8f8466;--s2262-ok:#bbf7d0;--s2262-ok-line:#15803d;--s2262-over:#fecaca;--s2262-over-line:#b91c1c;--s2262-unknown:#fde68a;--s2262-letter:#f8fafc;--s2262-letter-halo:#1b3326;--s2262-chip:#cfe0fb;--s2262-chip-line:#1d4ed8;--s2262-chip-ink:#1e3a8a;--s2262-chip-zero:#e5e7eb;--s2262-chip-zero-line:#94a3b8;--s2262-sum:#fed7aa;--s2262-sum-line:#c2410c}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2262{--s2262-may:#4ade80;--s2262-badge:#f3efe2;--s2262-badge-line:#8f8466;--s2262-ok:#bbf7d0;--s2262-ok-line:#15803d;--s2262-over:#fecaca;--s2262-over-line:#b91c1c;--s2262-unknown:#fde68a;--s2262-letter:#f8fafc;--s2262-letter-halo:#1b3326;--s2262-chip:#cfe0fb;--s2262-chip-line:#1d4ed8;--s2262-chip-ink:#1e3a8a;--s2262-chip-zero:#e5e7eb;--s2262-chip-zero-line:#94a3b8;--s2262-sum:#fed7aa;--s2262-sum-line:#c2410c}
.arch-lab .arch-s2262 input{box-sizing:border-box}
.arch-lab .arch-s2262-stage{padding:8px}
.arch-lab .arch-s2262-svg{display:block;width:100%;height:auto;touch-action:manipulation}
.arch-lab .arch-s2262-may{fill:none;stroke:var(--s2262-may);stroke-linecap:round;opacity:.4}
.arch-lab .arch-s2262-hit,.arch-lab .arch-s2262-hit-path{fill:transparent;stroke:transparent;cursor:pointer}
.arch-lab .arch-s2262-hit-path{fill:none;pointer-events:stroke}
.arch-lab .arch-s2262-badge rect{fill:var(--s2262-badge);stroke:var(--s2262-badge-line);stroke-width:1.3}
.arch-lab .arch-s2262-badge-ok rect{fill:var(--s2262-ok);stroke:var(--s2262-ok-line);stroke-width:2}
.arch-lab .arch-s2262-badge-over rect{fill:var(--s2262-over);stroke:var(--s2262-over-line);stroke-width:2}
.arch-lab .arch-s2262-badge-unknown rect{fill:var(--s2262-unknown);stroke:#b45309;stroke-width:1.6}
.arch-lab .arch-s2262-svg text.arch-s2262-badge-n{fill:#1f2937;font-size:17px;font-weight:800;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2262-svg text.arch-s2262-badge-t{fill:#4b5563;font-size:11.5px;font-weight:600;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2262-svg text.arch-s2262-letter{fill:var(--s2262-letter);font-size:18px;font-weight:800;stroke:var(--s2262-letter-halo);stroke-width:3.5px;paint-order:stroke;stroke-linejoin:round}
.arch-lab .arch-s2262-heading{margin:0;font-size:17px}
.arch-lab .arch-s2262-where{margin:0;color:var(--arch-ink);font-weight:600}
.arch-lab .arch-s2262-route{overflow-wrap:anywhere}
.arch-lab .arch-s2262-moves{gap:8px}
.arch-lab .arch-s2262-move{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2262-back{text-decoration:line-through;text-decoration-thickness:1.5px}
.arch-lab .arch-s2262-note:empty{display:none}
.arch-lab .arch-s2262-note{color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s2262-loop[hidden],.arch-lab .arch-s2262-compare[hidden],.arch-lab .arch-s2262-turns[hidden],.arch-lab .arch-s2262-guess[hidden]{display:none}
.arch-lab .arch-s2262-loop-text{margin:0;color:var(--arch-ink)}
.arch-lab .arch-s2262-loop .phx-param[hidden]{display:none}
.arch-lab .arch-s2262-neutral::before{content:'•';color:var(--arch-muted);font-weight:700;flex-shrink:0;width:1.2em}
.arch-lab .arch-s2262-turn{margin:4px 0;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2262-fork{border-top:1px solid var(--arch-soft-line);padding-top:6px;margin-top:6px}
.arch-lab .arch-s2262-fork p{margin:0}
.arch-lab .arch-s2262-compare:focus,.arch-lab .arch-s2262-guess:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s2262-locked{opacity:.55}
.arch-lab .arch-s2262-keyicon{flex:0 0 auto;display:block;width:30px;height:24px}
.arch-lab .arch-s2262-keyicon .spb-park-path-sand{fill:none;stroke:var(--spb-park-sand)}
.arch-lab .arch-s2262-key-badge{fill:var(--s2262-badge);stroke:var(--s2262-badge-line);stroke-width:1.3}
.arch-lab .arch-s2262-keyicon text.arch-s2262-key-text{fill:#1f2937;font-size:13px;font-weight:800;stroke:none}
/* the passes through the forks on the map: a number in every angle between two paths; the two numbers of the sum at A in
   orange; the line with the sum under the park */
.arch-lab .arch-s2262-chip rect{fill:var(--s2262-chip);stroke:var(--s2262-chip-line);stroke-width:1.4}
.arch-lab .arch-s2262-svg .arch-s2262-chip text{fill:var(--s2262-chip-ink);font-size:12.5px;font-weight:800;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2262-chip-zero rect{fill:var(--s2262-chip-zero);stroke:var(--s2262-chip-zero-line);stroke-width:1.1}
.arch-lab .arch-s2262-svg .arch-s2262-chip-zero text{fill:#64748b;font-weight:700}
.arch-lab .arch-s2262-chip-sum rect{fill:var(--s2262-sum);stroke:var(--s2262-sum-line);stroke-width:2.4}
.arch-lab .arch-s2262-svg .arch-s2262-chip-sum text{fill:#7c2d12}
.arch-lab .arch-s2262-sum rect{fill:var(--s2262-badge);stroke:var(--s2262-badge-line);stroke-width:1.2}
.arch-lab .arch-s2262-svg .arch-s2262-sum text{stroke:none;fill:#1f2937}
.arch-lab .arch-s2262-svg text.arch-s2262-sum-main{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2262-svg text.arch-s2262-sum-note{font-size:12.5px;font-weight:600;fill:#4b5563}
.arch-lab .arch-s2262-key-chip{fill:var(--s2262-chip);stroke:var(--s2262-chip-line);stroke-width:1.3}
.arch-lab .arch-s2262-keyicon text.arch-s2262-key-chip-text{fill:var(--s2262-chip-ink);font-size:11px;font-weight:800;stroke:none}
.arch-lab .arch-s2262-svg .arch-s2262-chip-small text{font-size:11px}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2021/22, 6 класс, задача 3 «Верёвка Медведя».
   The task line, the two heroes, the scene (rope, parts, pieces, tape), the cut field with four steps, the pieces as toggle
   chips (blue — out of the left part, orange — out of the right part), the result and the list of checked cuts. Colours of
   the rope and the pieces are in visuals/art/rope.css; light and both dark branches here are for the inks of the parts. */
.arch-lab .arch-s2263{--s2263-a:#1d4ed8;--s2263-b:#c2410c;--s2263-a-bg:#dbeafe;--s2263-b-bg:#ffedd5;--s2263-flag:#64748b;--s2263-win:#047857}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2263{--s2263-a:#93c5fd;--s2263-b:#fdba74;--s2263-a-bg:#1e3a5f;--s2263-b-bg:#4a2a12;--s2263-flag:#a7b4c6;--s2263-win:#34d399}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2263{--s2263-a:#93c5fd;--s2263-b:#fdba74;--s2263-a-bg:#1e3a5f;--s2263-b-bg:#4a2a12;--s2263-flag:#a7b4c6;--s2263-win:#34d399}
.arch-lab .arch-s2263-task{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink);padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0}
/* the two heroes */
.arch-lab .arch-s2263-roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:8px 14px}
.arch-lab .arch-s2263-role{display:flex;gap:10px;align-items:center;min-width:0}
.arch-lab .arch-s2263-face{flex:0 0 46px;width:46px;height:46px;display:block}
.arch-lab .arch-s2263-roletext{margin:0;font-size:14px;line-height:1.45;color:var(--arch-ink);min-width:0}
/* the scene */
.arch-lab .arch-s2263 .phx-svg .arch-s2263-dim{fill:none;stroke-width:1.4}
.arch-lab .arch-s2263 .phx-svg .arch-s2263-dim-a{stroke:var(--s2263-a)}
.arch-lab .arch-s2263 .phx-svg .arch-s2263-dim-b{stroke:var(--s2263-b)}
.arch-lab .arch-s2263 svg text.arch-s2263-dimtext{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2263 svg text.arch-s2263-ink-a,.arch-lab .arch-s2263 .arch-s2263-ink-a{fill:var(--s2263-a);color:var(--s2263-a)}
.arch-lab .arch-s2263 svg text.arch-s2263-ink-b,.arch-lab .arch-s2263 .arch-s2263-ink-b{fill:var(--s2263-b);color:var(--s2263-b)}
.arch-lab .arch-s2263 svg text.arch-s2263-piecetext{font-size:11.5px}
.arch-lab .arch-s2263 svg text.arch-s2263-tick{font-size:12px}
.arch-lab .arch-s2263 .phx-svg .arch-s2263-flag{fill:none;stroke:var(--s2263-flag);stroke-width:1.4;stroke-linejoin:round}
.arch-lab .arch-s2263 .phx-svg .arch-s2263-flag-win{fill:var(--s2263-win);stroke:var(--s2263-win)}
/* the magnifier: the window frame on the tape, the two lines down and the frame of the enlarged picture */
.arch-lab .arch-s2263 .phx-svg .arch-s2263-win{fill:none;stroke:var(--s2263-flag);stroke-width:1.2;stroke-linejoin:round}
.arch-lab .arch-s2263 .phx-svg .arch-s2263-loupe{fill:none;stroke:var(--s2263-flag);stroke-width:1.4}
.arch-lab .arch-s2263 svg text.arch-s2263-overtext{font-size:12px;font-weight:700;fill:var(--spb-rope-over-edge)}
.arch-lab .arch-s2263 svg text.arch-s2263-sparetext{font-size:12px;font-weight:600;fill:var(--spb-rope-spare)}
.arch-lab .arch-s2263-parts{display:grid;gap:2px;font-size:15px;line-height:1.5;color:var(--arch-ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.arch-lab .arch-s2263-parts p{margin:0}
.arch-lab .arch-s2263-try{margin-top:2px}
/* the cut: −1 см, −0,1, the exact field, +0,1, +1 см; the slider under them */
.arch-lab .arch-s2263-cutrow{display:grid;grid-template-columns:auto auto minmax(64px,128px) auto auto;justify-content:start;gap:6px;align-items:center;min-width:0}
.arch-lab button.arch-s2263-step{min-height:48px;padding:8px 12px;border-radius:12px;font-size:17px;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.arch-lab input.arch-s2263-num{box-sizing:border-box;width:100%;min-width:0;min-height:48px;padding:8px 6px;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2263-rangerow{display:flex;max-width:560px}
.arch-lab .arch-s2263-range{flex:1 1 auto;width:100%}
/* narrow screens: the field gets a row of its own (the whole value stays visible), the four steps share the row under it */
@media (max-width:420px){.arch-lab .arch-s2263-cutrow{grid-template-columns:repeat(4,minmax(44px,1fr));gap:6px}.arch-lab input.arch-s2263-num{grid-column:1/-1;grid-row:1}.arch-lab button.arch-s2263-step{padding:8px 2px;font-size:16px}}
/* the pieces */
.arch-lab .arch-s2263-pieces{grid-template-columns:minmax(0,1fr)}
.arch-lab .arch-s2263-chips{display:grid;min-width:0;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px;max-width:720px}
.arch-lab button.arch-s2263-chip{display:grid;justify-items:center;gap:0;padding:6px 6px;border-radius:12px;border:2px solid var(--s2263-b);background:var(--s2263-b-bg);color:var(--arch-ink);line-height:1.25;font-variant-numeric:tabular-nums}
.arch-lab button.arch-s2263-chip.arch-s2263-chip-left{border-color:var(--s2263-a);background:var(--s2263-a-bg)}
.arch-lab .arch-s2263-chiplen{font-size:17px;font-weight:700}
.arch-lab .arch-s2263-chipside{font-size:12.5px;color:var(--s2263-b);font-weight:600}
.arch-lab .arch-s2263-chip-left .arch-s2263-chipside{color:var(--s2263-a)}
.arch-lab .arch-s2263-place{display:grid;gap:0;font-size:15px;line-height:1.45;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2263-place p{margin:0}
.arch-lab .arch-s2263-again{margin:0 0 4px}
.arch-lab .arch-s2263-check{min-width:min(100%,240px)}
.arch-lab .arch-s2263-result{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2263-result:focus{outline:none}
.arch-lab .arch-s2263-result:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s2263-log{display:grid;gap:6px}
.arch-lab .arch-s2263-log[hidden]{display:none}
.arch-lab .arch-s2263-loglist{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2263-lost::before{content:'·';color:var(--arch-muted);font-weight:700;flex-shrink:0;width:1.2em;text-align:center}
.arch-lab .arch-s2263-note:empty{display:none}
.arch-lab .arch-s2263-locked{opacity:.55}

/* SPb 2021/22, grade 6, problem 4 — «Журнал дежурств» (labs/s22-6-4-duty.mjs). The class is a grid of buttons, one per
   pupil in the order of height (age): the number, the duty count in a circle, the child of visuals/art/classroom.mjs (a red
   armband of visuals/art/duty-armband.mjs on the day's duty pupils); under it the day panel with the tables of
   visuals/art/school-table.mjs (children standing behind their table, numbers above the heads, the duty pupil's number on
   a red tag), the «дней подряд» counter and the recording buttons. The status line of the day (the choice and the broken
   rule) closes the stage and, after the first tap, sticks to the bottom of the screen while the line is in view — above the phone
   taskbar of the lesson page — so the answer to a tap is on the same screen as the tapped pupil; it returns to its place
   under the line when the student scrolls on. Own colours: the duty tile, the tile chosen for a swap, the marks of the
   explanation «Почему так выходит?», the count circle — light theme and both dark branches; everything else goes
   through --arch-* tokens. */
.arch-lab .arch-s224{--s224-pick-bg:#fff1e6;--s224-pick-line:#dc2626;--s224-sel-line:#2563eb;--s224-top:#b45309;--s224-top-bg:#fef3c7;--s224-low:#6d28d9;--s224-low-bg:#ede9fe;
 --s224-count-bg:#e6eefb;--s224-count-ink:#1e3a8a;--s224-tag-duty:#dc2626;--s224-tag-duty-ink:#ffffff;--s224-tag-halo:#ffffff}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s224{--s224-pick-bg:#3b1d12;--s224-pick-line:#f87171;--s224-sel-line:#93c5fd;
 --s224-top:#fbbf24;--s224-top-bg:#3b2a0c;--s224-low:#c4b5fd;--s224-low-bg:#2e1f4f;--s224-count-bg:#1e3a5f;--s224-count-ink:#dbeafe;--s224-tag-duty:#ef4444;--s224-tag-halo:#111827}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s224{--s224-pick-bg:#3b1d12;--s224-pick-line:#f87171;--s224-sel-line:#93c5fd;
 --s224-top:#fbbf24;--s224-top-bg:#3b2a0c;--s224-low:#c4b5fd;--s224-low-bg:#2e1f4f;--s224-count-bg:#1e3a5f;--s224-count-ink:#dbeafe;--s224-tag-duty:#ef4444;--s224-tag-halo:#111827}
.arch-lab .arch-s224-predict{border-top:0;padding-top:0}
.arch-lab .arch-s224-predict p{margin:0}
.arch-lab .arch-s224-variant-note{margin:0;font-size:15px;color:var(--arch-ink);line-height:1.5}
.arch-lab .arch-s224-readouts{gap:4px 16px}
.arch-lab .arch-s224-stage{padding:8px 6px;display:grid;gap:8px}
.arch-lab .arch-s224-cap{margin:0 4px;font-size:14px;font-weight:600;color:var(--arch-label);line-height:1.4}
/* the line of pupils */
.arch-lab .arch-s224-grid{--per:5;display:grid;grid-template-columns:repeat(var(--per),minmax(0,1fr));gap:6px 4px;min-width:0}
.arch-lab .arch-s224-kid{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-end;gap:0;min-width:44px;min-height:44px;width:100%;padding:3px 2px 4px;margin:0;
 border:1px solid var(--arch-soft-line);border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);cursor:pointer;line-height:1.1;-webkit-tap-highlight-color:transparent}
@media (hover:hover){.arch-lab .arch-s224-kid:hover{border-color:var(--arch-field-line);background:var(--arch-pressed-bg)}}
.arch-lab .arch-s224-kid:focus-visible{outline:3px solid var(--arch-focus);outline-offset:1px}
.arch-lab .arch-s224-kid.arch-s224-picked{background:var(--s224-pick-bg);border:2px solid var(--s224-pick-line);padding:2px 1px 3px}
.arch-lab .arch-s224-kid.arch-s224-sel{border:2px dashed var(--s224-sel-line);box-shadow:0 0 0 2px var(--s224-sel-line) inset;padding:2px 1px 3px}
.arch-lab .arch-s224-kid.arch-s224-mark-top:not(.arch-s224-picked){background:var(--s224-top-bg)}
.arch-lab .arch-s224-kid.arch-s224-mark-low:not(.arch-s224-picked){background:var(--s224-low-bg)}
.arch-lab .arch-s224-kid.arch-s224-bad{border:2px dashed var(--s224-pick-line);background:var(--arch-bad-bg);padding:2px 1px 3px}
.arch-lab .arch-s224-kid.arch-s224-need{border:2px dashed var(--s224-top);padding:2px 1px 3px}
.arch-lab .arch-s224-kid.arch-s224-refused{border:2px dashed var(--arch-bad);background:var(--arch-bad-bg);padding:2px 1px 3px}
.arch-lab .arch-s224-bad .arch-s224-mark,.arch-lab .arch-s224-refused .arch-s224-mark{color:var(--arch-bad)}
.arch-lab .arch-s224-need .arch-s224-mark{color:var(--s224-top)}
.arch-lab .arch-s224-top{display:flex;justify-content:space-between;align-items:center;gap:1px;min-height:18px;padding:0 1px}
.arch-lab .arch-s224-num{font-size:12px;font-weight:700;color:var(--arch-muted);font-variant-numeric:tabular-nums;letter-spacing:-.02em;white-space:nowrap}
.arch-lab .arch-s224-kid{position:relative}
.arch-lab .arch-s224-kid .arch-s224-mark{position:absolute;left:4px;top:22px;font-size:15px}
.arch-lab .arch-s224-mark{font-size:13px;font-weight:800;line-height:1}
.arch-lab .arch-s224-mark-top .arch-s224-mark,.arch-lab .arch-s224-legend li:nth-child(2) .arch-s224-mark{color:var(--s224-top)}
.arch-lab .arch-s224-mark-low .arch-s224-mark,.arch-lab .arch-s224-legend li:nth-child(3) .arch-s224-mark{color:var(--s224-low)}
.arch-lab .arch-s224-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 3px;border-radius:9px;background:var(--s224-count-bg);color:var(--s224-count-ink);
 font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;box-sizing:border-box}
.arch-lab .arch-s224-count.arch-s224-zero{background:transparent;color:var(--arch-muted);font-weight:500;border:1px solid var(--arch-soft-line)}
.arch-lab .arch-s224-stage svg.arch-s224-fig{display:block;width:100%;max-width:44px;height:auto;margin:2px auto 0;overflow:visible;pointer-events:none}
.arch-lab .arch-s224-legend{gap:6px 16px;align-items:center}
.arch-lab .arch-s224-legend li{display:flex;gap:6px;align-items:center}
.arch-lab .arch-stage svg.arch-s224-legend-icon{width:22px;height:16px;flex:none;display:inline-block}
/* the status line of the day: after the first tap on the line it sticks to the bottom of the screen while the stage is in
   view; --s224-dock is the height of the lesson page's fixed taskbar on phones and tablets (measured by the lab, 0 without
   it) */
.arch-lab .arch-s224-status{display:grid;gap:4px;margin:2px 0 0;padding:8px 12px;border:1px solid var(--arch-field-line);border-radius:12px;
 background:var(--arch-surface);color:var(--arch-ink);line-height:1.45;min-width:0;overflow-wrap:anywhere}
.arch-lab .arch-s224-status.arch-s224-sticky{position:sticky;bottom:var(--s224-dock,0px);z-index:2;box-shadow:0 -6px 14px -6px rgb(15 23 42 / .28)}
.arch-lab .arch-s224-status p{margin:0}
.arch-lab .arch-s224-daystatus{font-weight:500}
/* the day */
.arch-lab .arch-s224-day{display:grid;gap:8px;padding:12px 12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink);min-width:0}
.arch-lab .arch-s224-day p{margin:0;line-height:1.5}
.arch-lab .arch-s224-problem[hidden]{display:none}
.arch-lab .arch-s224-tables{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0}
.arch-lab .arch-s224-tables[hidden]{display:none}
.arch-lab .arch-s224-table{margin:0;padding:4px 4px 6px;border:1px solid var(--arch-soft-line);border-radius:10px;min-width:0;display:grid;gap:2px}
.arch-lab .arch-s224-day svg.arch-s224-table-svg{display:block;width:100%;height:auto;max-width:220px;margin:0 auto;overflow:visible}
.arch-lab .arch-s224-table figcaption{font-size:13px;line-height:1.35;text-align:center;color:var(--arch-ink);overflow-wrap:anywhere}
.arch-lab .arch-s224 svg text.arch-s224-tag{font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums;fill:var(--arch-ink);paint-order:stroke;stroke:var(--s224-tag-halo);stroke-width:3px;stroke-linejoin:round}
.arch-lab .arch-s224 svg text.arch-s224-tag-on{fill:var(--s224-tag-duty-ink);stroke:none}
.arch-lab .arch-s224 svg .arch-s224-tag-duty{fill:var(--s224-tag-duty);stroke:none}
.arch-lab .arch-s224-record{gap:6px}
.arch-lab .arch-s224-stepper{display:inline-flex;align-items:center;gap:4px;flex-wrap:nowrap}
.arch-lab .arch-s224-count-label{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s224-count-out{min-width:4.6em;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab .arch-s224-step{min-width:44px;padding:8px 0;font-weight:700}
/* result, journal, explanation */
.arch-lab .arch-s224-changed{color:var(--arch-ink)}
.arch-lab .arch-s224-journal{border:1px solid var(--arch-soft-line);border-radius:12px;padding:0 12px;background:var(--arch-surface);color:var(--arch-ink)}
.arch-lab .arch-s224-journal[hidden]{display:none}
.arch-lab .arch-s224-journal summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:600;color:var(--arch-link)}
.arch-lab .arch-s224-journal summary:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s224-log{margin:0 0 10px;font-size:14px;line-height:1.45}
.arch-lab .arch-s224-toggle[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s224-panel{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.55;min-width:0}
.arch-lab .arch-s224-panel[hidden]{display:none}
.arch-lab .arch-s224-panel p{margin:0}
.arch-lab .arch-s224-key-line{border-left:4px solid var(--arch-pressed-line);padding-left:10px}
.arch-lab .arch-s224-now{border-left:3px dotted var(--arch-field-line);padding-left:10px;margin-left:2px}
.arch-lab .arch-s224-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (max-width:520px){.arch-lab .arch-s224-tables{grid-template-columns:repeat(2,minmax(0,1fr))}
 .arch-lab .arch-s224-stage svg.arch-s224-fig{max-width:34px}.arch-lab .arch-s224-num{font-size:11px;letter-spacing:-.04em}
 .arch-lab .arch-s224-count{min-width:16px;height:16px;font-size:11px;padding:0 2px}.arch-lab .arch-s224-kid .arch-s224-mark{top:19px;left:3px}}
/* a phone (the lab is 240–340 px wide, tiles of 44–53 px): five tiles and four gaps fit the line, and the number with the
   count circle («№30» and «31») fit one tile, also a tile with the 2 px frame of a duty pupil */
@media (max-width:420px){.arch-lab .arch-s224-stage{padding:6px 3px}.arch-lab .arch-s224-grid{gap:5px 2px}
 .arch-lab .arch-s224-top{padding:0;gap:1px}.arch-lab .arch-s224-num{font-size:10.5px;letter-spacing:-.07em}
 .arch-lab .arch-s224-count{flex:none;min-width:14px;padding:0 1px;font-size:10px;letter-spacing:-.03em}.arch-lab .arch-s224-day{padding:10px 8px}.arch-lab .arch-s224-panel{padding:10px}
 .arch-lab .arch-s224-tables{gap:6px}.arch-lab .arch-s224-table{padding:4px 2px 6px}.arch-lab .arch-s224-table figcaption{font-size:12.5px}
 .arch-lab .arch-s224-status{padding:7px 9px;font-size:14.5px;line-height:1.4}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2021/22, 7 класс, задача 1 «Не ошибся ли Костя?».
   The park map with two circles (paths, the flower bed and the «no entry» sign come from visuals/art/park.css, the lawn from
   ring-road.css, the trees from park-tree.css, the fence from fence.css), the badges «walked / noted» and the chips of paths
   without a note, the glow of the paths where the walker may go and of the paths the fence crosses, the switch «walk /
   fence» and the panel right under the map, the move and fence buttons and the result panels.
   Light and both dark branches. */
.arch-lab .arch-s2271{--s2271-may:#22c55e;--s2271-cross:#f59e0b;--s2271-badge:#fffdf7;--s2271-badge-line:#8a7a55;--s2271-ok:#dcfce7;--s2271-ok-line:#15803d;--s2271-over:#fee2e2;--s2271-over-line:#b91c1c;--s2271-chip:#eef2f7;--s2271-chip-line:#94a3b8;--s2271-letter:#1f2937;--s2271-letter-halo:#f6fbef}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2271{--s2271-may:#4ade80;--s2271-cross:#fbbf24;--s2271-badge:#f3efe2;--s2271-badge-line:#8f8466;--s2271-ok:#bbf7d0;--s2271-ok-line:#15803d;--s2271-over:#fecaca;--s2271-over-line:#b91c1c;--s2271-chip:#dfe5ee;--s2271-chip-line:#64748b;--s2271-letter:#f8fafc;--s2271-letter-halo:#1b3326}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2271{--s2271-may:#4ade80;--s2271-cross:#fbbf24;--s2271-badge:#f3efe2;--s2271-badge-line:#8f8466;--s2271-ok:#bbf7d0;--s2271-ok-line:#15803d;--s2271-over:#fecaca;--s2271-over-line:#b91c1c;--s2271-chip:#dfe5ee;--s2271-chip-line:#64748b;--s2271-letter:#f8fafc;--s2271-letter-halo:#1b3326}
.arch-lab .arch-s2271 input{box-sizing:border-box}
.arch-lab .arch-s2271-stage{padding:8px}
.arch-lab .arch-s2271-svg{display:block;width:100%;height:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.arch-lab .arch-s2271-may{fill:none;stroke:var(--s2271-may);stroke-linecap:round;opacity:.4}
.arch-lab .arch-s2271-cross{fill:none;stroke:var(--s2271-cross);stroke-linecap:round;opacity:.45}
.arch-lab .arch-s2271-hit,.arch-lab .arch-s2271-hit-path{fill:transparent;stroke:transparent;cursor:pointer}
.arch-lab .arch-s2271-hit-path{fill:none;pointer-events:stroke}
.arch-lab .arch-s2271-badge rect{fill:var(--s2271-badge);stroke:var(--s2271-badge-line);stroke-width:1.3}
.arch-lab .arch-s2271-badge-ok rect{fill:var(--s2271-ok);stroke:var(--s2271-ok-line);stroke-width:2}
.arch-lab .arch-s2271-badge-over rect{fill:var(--s2271-over);stroke:var(--s2271-over-line);stroke-width:2}
.arch-lab .arch-s2271-chip rect{fill:var(--s2271-chip);stroke:var(--s2271-chip-line);stroke-width:1.1;stroke-dasharray:3 2}
.arch-lab .arch-s2271-svg text.arch-s2271-badge-n{fill:#1f2937;font-weight:800;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2271-svg text.arch-s2271-badge-w{fill:#334155;font-weight:700;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2271-badge-bar{fill:none;stroke:var(--s2271-badge-line);stroke-width:1.3;stroke-linecap:round}
.arch-lab .arch-s2271-svg text.arch-s2271-chip-n{fill:#334155;font-weight:700;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2271-svg text.arch-s2271-letter{fill:var(--s2271-letter);font-size:16px;font-weight:800;stroke:var(--s2271-letter-halo);stroke-width:3.5px;paint-order:stroke;stroke-linejoin:round}
.arch-lab .arch-s2271-svg text.arch-s2271-letter-narrow{font-size:14px;stroke-width:3px}
.arch-lab .arch-s2271-heading{margin:0;font-size:17px}
.arch-lab .arch-s2271-where{margin:0;color:var(--arch-ink);font-weight:600}
.arch-lab .arch-s2271-route{overflow-wrap:anywhere}
.arch-lab .arch-s2271-moves{gap:8px}
.arch-lab .arch-s2271-move{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2271-back{text-decoration:line-through;text-decoration-thickness:1.5px}
.arch-lab .arch-s2271-note:empty{display:none}
.arch-lab .arch-s2271-note{color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s2271-loop[hidden],.arch-lab .arch-s2271-compare[hidden],.arch-lab .arch-s2271-fence[hidden],.arch-lab .arch-s2271-notes[hidden],
.arch-lab .arch-s2271-panel[hidden],.arch-lab .arch-s2271-mode[hidden],.arch-lab .arch-s2271-loop .arch-actions[hidden],.arch-lab .arch-s2271-fence-line[hidden]{display:none}
.arch-lab .arch-s2271-panel{display:grid;gap:10px;min-width:0}
.arch-lab .arch-s2271-mode .arch-toggle button{flex:1 1 auto}
.arch-lab .arch-s2271-fence-line{color:var(--arch-ink)}
.arch-lab .arch-s2271-loop-text{margin:0;color:var(--arch-ink)}
.arch-lab .arch-s2271-loop .phx-param[hidden]{display:none}
.arch-lab .arch-s2271-fence-row{gap:6px}
.arch-lab .arch-s2271-fp{min-width:48px;padding:10px 12px;font-weight:700}
.arch-lab .arch-s2271-fp[aria-pressed=true]{background:var(--arch-ok-bg);border-color:var(--arch-good);color:var(--arch-ink)}
.arch-lab .arch-s2271-compare:focus,.arch-lab .arch-s2271-notes:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s2271-locked{opacity:.55}
.arch-lab .arch-s2271-keyicon{flex:0 0 auto;display:block;width:34px;height:24px}
.arch-lab .arch-s2271-keyicon .spb-park-path-sand{fill:none;stroke:var(--spb-park-sand)}
.arch-lab .arch-s2271-key-badge{fill:var(--s2271-badge);stroke:var(--s2271-badge-line);stroke-width:1.3}
.arch-lab .arch-s2271-key-chip{fill:var(--s2271-chip);stroke:var(--s2271-chip-line);stroke-width:1.1;stroke-dasharray:3 2}
.arch-lab .arch-s2271-keyicon text.arch-s2271-key-text{fill:#1f2937;font-size:11px;font-weight:800;stroke:none}
.arch-lab .arch-s2271-keyicon-badge{width:26px;height:32px}
.arch-lab .arch-s2271-keyicon text.arch-s2271-key-want{fill:#334155;font-weight:700}
.arch-lab .arch-s2271-key-bar{fill:none;stroke:var(--s2271-badge-line);stroke-width:1.2}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Гонка на самокатах» (SPb 2021/22, 7 класс, №2).
   The road of two parts (the first part bluish, the second sandy — the same colours in the lengths above the road),
   the border knob, the riders (visuals/art/e-scooter.css), the race controls, the result and the table of the student's
   borders. Colours follow the --arch-* variables of lab.css or the variables below for both themes. */
.arch-lab{--arch-s22-7-2-seg1:#c9dcf3;--arch-s22-7-2-seg2:#f1dcb4;--arch-s22-7-2-seg1-ink:#1e4f8f;--arch-s22-7-2-seg2-ink:#8a5410;--arch-s22-7-2-knob:#c2410c;--arch-s22-7-2-warn:#b45309}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s22-7-2-seg1:#2c4a6e;--arch-s22-7-2-seg2:#6b5126;--arch-s22-7-2-seg1-ink:#9cc3f5;--arch-s22-7-2-seg2-ink:#f3c27a;--arch-s22-7-2-knob:#fb923c;--arch-s22-7-2-warn:#fbbf24}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s22-7-2-seg1:#2c4a6e;--arch-s22-7-2-seg2:#6b5126;--arch-s22-7-2-seg1-ink:#9cc3f5;--arch-s22-7-2-seg2-ink:#f3c27a;--arch-s22-7-2-knob:#fb923c;--arch-s22-7-2-warn:#fbbf24}
.arch-lab :is(.arch-s22-7-2-log,.arch-s22-7-2-verdict,.arch-s22-7-2-whybox,.arch-s22-7-2-why,.arch-s22-7-2-note)[hidden]{display:none}
.arch-lab .arch-s22-7-2-head{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s22-7-2-variant{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink);padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0;overflow-wrap:anywhere}
.arch-lab .arch-s22-7-2-goal{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s22-7-2-label{margin:0;font-weight:600;color:var(--arch-label)}
/* the scene keeps its full height on phones: the controls are below it in the normal flow */
.arch-lab .arch-s22-7-2-stage.phx-stage{max-height:none;padding:4px}
.arch-lab .arch-s22-7-2-stage .phx-svg{max-height:none;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.arch-lab .phx-svg .arch-s22-7-2-seglabel{font-size:13px;font-weight:600}
.arch-lab .phx-svg .arch-s22-7-2-seg1-text{fill:var(--arch-s22-7-2-seg1-ink)}
.arch-lab .phx-svg .arch-s22-7-2-seg2-text{fill:var(--arch-s22-7-2-seg2-ink)}
.arch-lab .phx-svg .arch-s22-7-2-dim{stroke-width:4;stroke-linecap:butt}
.arch-lab .phx-svg .arch-s22-7-2-dim1{stroke:var(--arch-s22-7-2-seg1-ink)}
.arch-lab .phx-svg .arch-s22-7-2-dim2{stroke:var(--arch-s22-7-2-seg2-ink)}
.arch-lab .phx-svg .arch-s22-7-2-tick{stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab .phx-svg .arch-s22-7-2-road{stroke:var(--arch-fig-line);stroke-width:.8}
.arch-lab .phx-svg .arch-s22-7-2-road1{fill:var(--arch-s22-7-2-seg1)}
.arch-lab .phx-svg .arch-s22-7-2-road2{fill:var(--arch-s22-7-2-seg2)}
.arch-lab .phx-svg .arch-s22-7-2-speed{font-size:12.5px;fill:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .phx-svg .arch-s22-7-2-speed-bad{fill:var(--arch-bad);font-weight:700}
.arch-lab .phx-svg .arch-s22-7-2-name{font-size:14px;font-weight:700}
.arch-lab .phx-svg .arch-s22-7-2-start{stroke:var(--arch-fig-line);stroke-width:2.5}
.arch-lab .phx-svg .arch-s22-7-2-endlabel{font-size:12.5px;fill:var(--arch-muted)}
.arch-lab .phx-svg .arch-s22-7-2-knob{cursor:ew-resize;outline:none}
.arch-lab .phx-svg .arch-s22-7-2-hit{fill:transparent;stroke:none}
.arch-lab .phx-svg .arch-s22-7-2-borderline{stroke:var(--arch-s22-7-2-knob);stroke-width:2.2;stroke-dasharray:6 4}
.arch-lab .phx-svg .arch-s22-7-2-knobdot{fill:var(--arch-surface);stroke:var(--arch-s22-7-2-knob);stroke-width:3}
.arch-lab .phx-svg .arch-s22-7-2-knobarrows{fill:none;stroke:var(--arch-s22-7-2-knob);stroke-width:1.8;stroke-linecap:round}
.arch-lab .phx-svg .arch-s22-7-2-knob:focus-visible .arch-s22-7-2-knobdot,.arch-lab .phx-svg .arch-s22-7-2-knob.is-drag .arch-s22-7-2-knobdot{stroke:var(--arch-focus);stroke-width:4}
.arch-lab .phx-svg .arch-s22-7-2-knob:focus-visible .arch-s22-7-2-hit{fill:var(--arch-focus);fill-opacity:.12}
/* the border control */
.arch-lab .arch-s22-7-2-border{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);min-width:0}
.arch-lab .arch-s22-7-2-border-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.arch-lab .arch-s22-7-2-field{display:inline-flex;gap:6px;align-items:center;color:var(--arch-ink)}
.arch-lab input.arch-s22-7-2-num{width:84px;min-height:44px;text-align:right;font-variant-numeric:tabular-nums}
.arch-lab .arch-s22-7-2-step{min-width:64px;border-radius:12px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s22-7-2-second{font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s22-7-2-msg{margin:0;font-size:14px;color:var(--arch-bad)}
.arch-lab .arch-s22-7-2-msg:empty{display:none}
/* the race */
.arch-lab .arch-s22-7-2-race{display:grid;gap:6px;min-width:0}
.arch-lab .arch-s22-7-2-play{flex:0 0 auto;min-width:132px}
.arch-lab .arch-s22-7-2-range{flex:1 1 140px}
.arch-lab .arch-s22-7-2-clock{font-variant-numeric:tabular-nums;font-weight:600;min-width:10.5em;color:var(--arch-ink)}
.arch-lab .arch-s22-7-2-event{margin:0;font-size:15px;color:var(--arch-label);min-height:1.5em;overflow-wrap:anywhere}
/* the result */
.arch-lab .arch-s22-7-2-verdict{display:grid;gap:4px;background:var(--arch-surface);border:1px solid var(--arch-soft-line);border-radius:14px;padding:10px 14px;color:var(--arch-ink);line-height:1.5;min-width:0;overflow-wrap:anywhere}
.arch-lab .arch-s22-7-2-verdict p{margin:0}
.arch-lab .arch-s22-7-2-head-ok{color:var(--arch-good);font-weight:700}
.arch-lab .arch-s22-7-2-head-bad{color:var(--arch-bad);font-weight:700}
.arch-lab .arch-s22-7-2-list li.arch-s22-7-2-li{padding-left:calc(1.2em + 8px)}
.arch-lab .arch-s22-7-2-whybox{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s22-7-2-whybtn{justify-self:start}
.arch-lab .arch-s22-7-2-why ol.arch-s22-7-2-whylist{margin:2px 0;padding-left:1.4em;display:grid;gap:6px}
/* the table of the student's borders */
.arch-lab .arch-s22-7-2-log{display:grid;gap:6px;min-width:0}
.arch-lab table.arch-s22-7-2-table{width:100%;font-size:15px}
.arch-lab table.arch-s22-7-2-table th{font-size:14px;line-height:1.3}
/* units live in the headers, so the cells are short; headers wrap between words */
.arch-lab table.arch-s22-7-2-table th{overflow-wrap:normal;hyphens:manual}
.arch-lab table.arch-s22-7-2-table tr.arch-s22-7-2-current td{background:var(--arch-pressed-bg);font-weight:600}
.arch-lab table.arch-s22-7-2-table td.arch-s22-7-2-cell-ok{color:var(--arch-good)}
.arch-lab table.arch-s22-7-2-table td.arch-s22-7-2-cell-bad{color:var(--arch-bad)}
.arch-lab table.arch-s22-7-2-table td.arch-s22-7-2-cell-warn{color:var(--arch-s22-7-2-warn);font-weight:600}
.arch-lab .arch-s22-7-2-sum{margin:0;font-size:15px;color:var(--arch-ink);line-height:1.5}
.arch-lab .arch-s22-7-2-note{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s22-7-2-note:empty{display:none}
@media (max-width:420px){
 .arch-lab .arch-s22-7-2-border{padding:8px}
 .arch-lab table.arch-s22-7-2-table{font-size:14px}
 .arch-lab table.arch-s22-7-2-table td,.arch-lab table.arch-s22-7-2-table th{padding:4px}
 .arch-lab table.arch-s22-7-2-table th{font-size:13px}
 .arch-lab .arch-s22-7-2-play{min-width:112px}
}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2021/22, 7 класс, задача 3 «Где спряталась точка F».
   The compass and the ruler come from visuals/art/{school-compass,school-ruler}.css. Here: the circle with centre E and
   radius CE (teal), the circle with centre B and radius AC (violet), the segment EF (orange when it is the point of the
   statement, red dashed for the other point), the continued line CD (dashed), the crossing of EF and BD (orange ring),
   the numbered common points of the circles (blue rings), the ruler's band and the segments of the same length (amber),
   the fills and angle marks of the example's equal triangles, letters with a halo. Light and both dark branches. */
.arch-lab .arch-s2273{--s2273-e:#0f766e;--s2273-b:#7c3aed;--s2273-f:#c2410c;--s2273-cand:#1d4ed8;--s2273-band:#d97706;--s2273-halo:#ffffff;--s2273-fill-a:rgba(59,130,246,.2);--s2273-fill-b:rgba(234,88,12,.2);--s2273-fill-c:rgba(22,163,74,.22);--s2273-fill-d:rgba(124,58,237,.2);--s2273-ex-c:#15803d}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2273{--s2273-e:#5eead4;--s2273-b:#c4b5fd;--s2273-f:#fdba74;--s2273-cand:#93c5fd;--s2273-band:#fbbf24;--s2273-halo:#141c2b;--s2273-fill-a:rgba(96,165,250,.26);--s2273-fill-b:rgba(251,146,60,.26);--s2273-fill-c:rgba(74,222,128,.22);--s2273-fill-d:rgba(167,139,250,.26);--s2273-ex-c:#86efac}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2273{--s2273-e:#5eead4;--s2273-b:#c4b5fd;--s2273-f:#fdba74;--s2273-cand:#93c5fd;--s2273-band:#fbbf24;--s2273-halo:#141c2b;--s2273-fill-a:rgba(96,165,250,.26);--s2273-fill-b:rgba(251,146,60,.26);--s2273-fill-c:rgba(74,222,128,.22);--s2273-fill-d:rgba(167,139,250,.26);--s2273-ex-c:#86efac}
.arch-lab .arch-s2273 [hidden]{display:none!important}
.arch-lab .arch-s2273-stage{padding:8px}
.arch-lab .arch-s2273-svg{display:block;width:100%;max-width:100%;height:auto;margin:0 auto;touch-action:manipulation}
.arch-lab .arch-s2273-frame{display:grid;gap:10px;min-width:0}
.arch-lab .arch-s2273-frame>*{margin:0}
.arch-lab .arch-s2273-quick{gap:6px 18px}
.arch-lab .arch-s2273-quick dd{font-size:17px}
.arch-lab .arch-s2273-msg:empty{display:none}
.arch-lab .arch-s2273-msg{color:var(--arch-label);font-weight:600;margin:6px 0 0}
.arch-lab .arch-s2273-info{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2273-keyicon{flex:0 0 auto}
.arch-lab .arch-s2273-result .arch-checks{margin:0 0 6px}
/* the drawing */
.arch-lab .arch-s2273-side{stroke:var(--arch-fig-line);stroke-width:2.4;stroke-linecap:round}
.arch-lab .arch-s2273-ext{stroke:var(--arch-fig-line);stroke-width:1.6;stroke-dasharray:6 5;opacity:.8}
.arch-lab .arch-s2273-cd{stroke:var(--arch-fig-line);stroke-width:1.6;stroke-linecap:round}
.arch-lab .arch-s2273-thin{stroke:var(--arch-fig-line);stroke-width:1.3;opacity:.85}
.arch-lab .arch-s2273-dash{stroke-dasharray:6 4}
.arch-lab .arch-s2273-tick{stroke:var(--arch-fig-line);stroke-width:1.8}
.arch-lab .arch-s2273-circle-e{fill:none;stroke:var(--s2273-e);stroke-width:2.2}
.arch-lab .arch-s2273-circle-b{fill:none;stroke:var(--s2273-b);stroke-width:2.2}
.arch-lab .arch-s2273-radius{fill:none;stroke:var(--arch-fig-line);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:0.5 5.5}
.arch-lab .arch-s2273-lineCD{stroke:var(--arch-muted);stroke-width:1.6;stroke-dasharray:8 5}
.arch-lab .arch-s2273-mirror{stroke:var(--spb-cut-fold,#8a7a52);stroke-width:1.6;stroke-dasharray:10 4 2 4}
.arch-lab .arch-s2273-ef{stroke:var(--s2273-f);stroke-width:3.2;stroke-linecap:round}
.arch-lab .arch-s2273-ef-bad{stroke:var(--arch-bad);stroke-width:3;stroke-linecap:round;stroke-dasharray:7 4}
.arch-lab .arch-s2273-ex-b{stroke:var(--s2273-f);stroke-width:3;stroke-linecap:round}
.arch-lab .arch-s2273-ex-c{stroke:var(--s2273-ex-c);stroke-width:3;stroke-linecap:round}
.arch-lab .arch-s2273-fill-a{fill:var(--s2273-fill-a);stroke:none}
.arch-lab .arch-s2273-fill-b{fill:var(--s2273-fill-b);stroke:none}
.arch-lab .arch-s2273-fill-c{fill:var(--s2273-fill-c);stroke:none}
.arch-lab .arch-s2273-fill-d{fill:var(--s2273-fill-d);stroke:none}
.arch-lab .arch-s2273-angle{fill:none;stroke:var(--arch-fig-line);stroke-width:1.8}
.arch-lab .arch-s2273-angle-bad{fill:none;stroke:var(--arch-bad);stroke-width:2}
.arch-lab .arch-s2273-band{stroke:var(--s2273-band);stroke-width:9;stroke-linecap:round;opacity:.5}
.arch-lab .arch-s2273-band-eq{stroke:var(--s2273-band);stroke-width:7;stroke-linecap:round;opacity:.35}
.arch-lab .arch-s2273-band-eq.arch-s2273-dash{stroke-dasharray:3 6;opacity:.5}
.arch-lab .arch-s2273-cross{fill:none;stroke:var(--s2273-f);stroke-width:2.4}
.arch-lab .arch-s2273-dot{fill:var(--arch-ink);stroke:var(--s2273-halo);stroke-width:1.5}
.arch-lab .arch-s2273-dot-f{fill:var(--s2273-f)}
.arch-lab .arch-s2273-cand{fill:var(--arch-surface);stroke:var(--s2273-cand);stroke-width:2.4}
.arch-lab .arch-s2273-svg text.arch-s2273-candnum{fill:var(--s2273-cand);font-weight:700;pointer-events:none}
.arch-lab .arch-s2273-hit{fill:transparent;cursor:pointer}
.arch-lab .arch-s2273-svg text.arch-s2273-label{fill:var(--arch-ink);font-weight:700;stroke:var(--s2273-halo);stroke-width:4px;paint-order:stroke;stroke-linejoin:round}
.arch-lab .arch-s2273-svg text.arch-s2273-label-f{fill:var(--s2273-f)}
.arch-lab .arch-s2273-svg text.arch-s2273-label-bad{fill:var(--arch-bad);font-weight:600}
/* the construction, the ruler, the example */
.arch-lab .arch-s2273-tool[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s2273-pick[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s2273-chips{gap:6px}
.arch-lab .arch-s2273-chip{min-width:44px;padding:8px 12px;font-weight:700}
.arch-lab .arch-s2273-chip[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--s2273-band);border-width:2px}
.arch-lab .arch-s2273-rulerout p{margin:0 0 4px}
.arch-lab .arch-s2273-extitle{margin:0}
.arch-lab .phx-param-msg.arch-s2273-accepted{color:var(--arch-label)}
.arch-lab .arch-s2273 input{box-sizing:border-box}

/* SPb 2021/22, grade 7, problem 4 — «Доска с дыркой» (labs/s22-7-4-rooks.mjs). The wooden chessboard with the hole and
   the rooks is an SVG (visuals/art/chess.mjs, colours in art/chess.css) under a grid of transparent buttons, one per cell.
   Own colours: the red line between attacking rooks, the marked corner and the preview of a new hole, the tint of full
   rows and columns in the explanation, the table of checked holes — light theme and both dark branches; everything else
   goes through --arch-* tokens. The row numbers stay at the left edge of the frame when a phone scrolls the board
   sideways; the explanation puts a small copy of the board beside each part of its text. */
.arch-lab .arch-s2274{--arch-s2274-attack:#dc2626;--arch-s2274-row:rgba(59,130,246,.5);--arch-s2274-hatch:#c2410c;--arch-s2274-preview:#047857;--arch-s2274-pending:#b45309;--arch-s2274-now:#fef3c7}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2274{--arch-s2274-attack:#f87171;--arch-s2274-row:rgba(96,165,250,.5);--arch-s2274-hatch:#fb923c;--arch-s2274-preview:#4ade80;--arch-s2274-pending:#fbbf24;--arch-s2274-now:#3b2f12}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2274{--arch-s2274-attack:#f87171;--arch-s2274-row:rgba(96,165,250,.5);--arch-s2274-hatch:#fb923c;--arch-s2274-preview:#4ade80;--arch-s2274-pending:#fbbf24;--arch-s2274-now:#3b2f12}
.arch-lab .arch-s2274-predict{border-top:0;padding-top:0}
.arch-lab .arch-s2274-question{margin:0}
.arch-lab .arch-s2274-variant-note{margin:0;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s2274-stage{padding:10px;transition:border-color .3s}
.arch-lab .arch-s2274-stage.arch-s2274-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
/* the board: row numbers (bottom = 1) | field; column letters below. The row numbers span the whole first grid row
   (only 20 px wide, at its start) and are sticky: when the zoomed board scrolls sideways they stay at the left edge of
   the frame, over the board, and let the taps through. */
.arch-lab .arch-s2274-board{--n:9;display:grid;grid-template-columns:20px minmax(0,1fr);grid-template-rows:auto 20px;width:min(100%,540px);margin:auto}
.arch-lab .arch-zoomed .arch-s2274-board{width:calc(var(--n) * 48px + 20px);max-width:none}
.arch-lab .arch-s2274-rowlabels{grid-column:1 / -1;grid-row:1;justify-self:start;width:20px;position:sticky;left:0;z-index:3;pointer-events:none;background:var(--arch-surface);box-shadow:-6px 0 0 var(--arch-surface);display:grid;grid-template-rows:repeat(var(--n),minmax(0,1fr))}
.arch-lab .arch-s2274-field{grid-column:2;grid-row:1}
.arch-lab .arch-s2274-board>span{grid-column:1;grid-row:2}
.arch-lab .arch-s2274-collabels{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));align-items:start;padding-top:2px}
.arch-lab .arch-s2274-rowlabels span,.arch-lab .arch-s2274-collabels span{display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2274-field{position:relative;aspect-ratio:1}
.arch-lab .arch-stage .arch-s2274-svg{position:absolute;inset:0;width:100%;height:100%;max-height:none;z-index:0;pointer-events:none;overflow:visible}
.arch-lab .arch-s2274-cells{position:relative;z-index:1;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1}
.arch-lab .arch-s2274-cell{min-width:0;min-height:0;width:100%;height:100%;padding:0;margin:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.arch-lab .arch-s2274-cell.arch-s2274-in-hole{cursor:not-allowed}
@media (hover:hover){.arch-lab .arch-s2274-cell:hover{background:rgba(255,255,255,.18)}}
.arch-lab .arch-s2274-cell:focus-visible{outline:4px solid var(--arch-focus);outline-offset:-4px;position:relative;z-index:2}
/* SVG layers drawn by the lab (100 units per cell) */
.arch-lab .arch-s2274-fullrow{fill:var(--arch-s2274-row)}
.arch-lab .arch-s2274-hatch-line{stroke:var(--arch-s2274-hatch)}
.arch-lab .arch-s2274-attack{stroke:var(--arch-s2274-attack);stroke-width:9;stroke-linecap:round;stroke-dasharray:1 16;opacity:.95}
.arch-lab .arch-s2274-pending{fill:none;stroke:var(--arch-s2274-pending);stroke-width:9;stroke-dasharray:16 9}
.arch-lab .arch-s2274-preview{fill:none;stroke:var(--arch-s2274-preview);stroke-width:8;stroke-dasharray:22 10}
.arch-lab .arch-s2274-preview-bad{stroke:var(--arch-bad)}
/* legend keys */
.arch-lab .arch-s2274-key{flex:none}
.arch-lab .arch-s2274-key-attack{stroke-width:3.4;stroke-dasharray:1 5}
.arch-lab .arch-s2274-cut[aria-pressed=true],.arch-lab .arch-s2274-lines[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
/* result box */
.arch-lab .arch-s2274-readouts div{flex-wrap:wrap}
.arch-lab .arch-s2274-readouts dt{flex:none}
.arch-lab .arch-s2274-readouts dd.arch-s2274-dd-wrap{white-space:normal;min-width:0}
.arch-lab .arch-s2274-readouts dd.arch-s2274-muted{color:var(--arch-muted);font-weight:400}
/* the table of checked holes */
.arch-lab .arch-s2274-checks{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2274-checks p{margin:0}
.arch-lab .arch-s2274-checknote{color:var(--arch-ink)}
.arch-lab .arch-s2274-table{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s2274-table caption{text-align:left;font-weight:600;color:var(--arch-label);padding-bottom:4px}
.arch-lab .arch-s2274-table th,.arch-lab .arch-s2274-table td{border:1px solid var(--arch-soft-line);padding:6px 10px;text-align:left}
.arch-lab .arch-s2274-table th{font-weight:600;font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s2274-table tr.arch-s2274-now td{background:var(--arch-s2274-now);font-weight:600}
/* the explanation on the student's board: a small copy of the board beside each part of the text (above it on phones) */
.arch-lab .arch-s2274-linetext{display:grid;gap:12px;color:var(--arch-ink);line-height:1.55;min-width:0}
.arch-lab .arch-s2274-linetext p{margin:0}
.arch-lab .arch-s2274-pair{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:start}
.arch-lab .arch-s2274-pair-text{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2274-mini{margin:0;width:min(100%,220px);justify-self:center;display:grid;gap:4px}
.arch-lab .arch-s2274-mini svg{display:block;width:100%;height:auto}
.arch-lab .arch-s2274-mini figcaption{font-size:14px;line-height:1.4;color:var(--arch-muted)}
.arch-lab .arch-s2274-mini-num{font-size:60px;font-weight:600;fill:var(--arch-muted)}
.arch-lab .arch-s2274-mini-two{fill:var(--arch-accent);font-weight:700}
@media (min-width:600px){.arch-lab .arch-s2274-pair{grid-template-columns:220px minmax(0,1fr);gap:16px}}
.arch-lab .arch-s2274-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-s2274-stage{transition:none}}

/* SPb 2021/22, grade 8, problem 2 — «Числа по кругу» (labs/s22-8-2-ring.mjs). The circle is written in chalk on the
   school board of visuals/art/school-board.mjs; the board stays dark green in both themes (it is a picture of a board),
   so the chalk colours on it are fixed: white numbers, light-blue place names, yellow for the next place and for what
   the closing equality needs, pink for a repeat or a dead end, green for a closed circle. The controls, the check of
   the circle, the attempts and the reasoning go through --arch-* tokens (light theme and both dark branches). */
.arch-lab .arch-s2282{--arch-s2282-chalk:#f8fafc;--arch-s2282-blue:#bae6fd;--arch-s2282-yellow:#fde047;--arch-s2282-pink:#f9a8d4;
 --arch-s2282-green:#86efac;--arch-s2282-card:#356a54;--arch-s2282-board:#2d5b48;--arch-s2282-mine:#244974}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2282{--arch-s2282-mine:#93c5fd}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2282{--arch-s2282-mine:#93c5fd}
.arch-lab .arch-s2282-variant{border-top:0;padding-top:0}
.arch-lab .arch-s2282-variant-note{color:var(--arch-ink);font-size:15px}
.arch-lab .arch-s2282-guess-msg:empty{display:none}
.arch-lab .arch-s2282 sub{font-size:.72em;line-height:0}
.arch-lab .arch-s2282-v{white-space:nowrap;font-style:italic}
/* the board keeps its full width on phones (the picture is tall there), so the phone height cap of .phx-stage is lifted */
.arch-lab .arch-s2282-stage{padding:4px}
.arch-lab .arch-s2282-stage .phx-svg{max-height:none}
@media (max-width:600px) and (min-height:500px){.arch-lab .arch-s2282-stage{max-height:none}.arch-lab .arch-s2282-stage .phx-svg{max-height:none}}
/* chalk on the board */
.arch-lab svg .arch-s2282-card{stroke-width:2;stroke-linejoin:round}
.arch-lab svg .arch-s2282-card-done{fill:var(--arch-s2282-card);stroke:var(--arch-s2282-chalk)}
.arch-lab svg .arch-s2282-card-dup{fill:var(--arch-s2282-card);stroke:var(--arch-s2282-pink);stroke-width:3}
.arch-lab svg .arch-s2282-card-next{fill:var(--arch-s2282-board);stroke:var(--arch-s2282-yellow);stroke-width:2.6;stroke-dasharray:6 4}
.arch-lab svg .arch-s2282-card-dead{fill:var(--arch-s2282-board);stroke:var(--arch-s2282-pink);stroke-width:2.6;stroke-dasharray:6 4}
.arch-lab svg .arch-s2282-card-empty{fill:var(--arch-s2282-board);stroke:var(--arch-s2282-chalk);stroke-opacity:.55;stroke-dasharray:4 4}
.arch-lab svg text.arch-s2282-idx{fill:var(--arch-s2282-blue);font-weight:600}
.arch-lab svg text.arch-s2282-val{fill:var(--arch-s2282-chalk);font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s2282-val-dup,.arch-lab svg text.arch-s2282-val-dead{fill:var(--arch-s2282-pink)}
.arch-lab svg text.arch-s2282-val-next{fill:var(--arch-s2282-yellow)}
.arch-lab svg .arch-s2282-link{fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .arch-s2282-link-done{stroke:var(--arch-s2282-chalk);opacity:.9}
.arch-lab svg .arch-s2282-link-next,.arch-lab svg .arch-s2282-link-need{stroke:var(--arch-s2282-yellow);stroke-dasharray:6 5}
.arch-lab svg .arch-s2282-link-dead{stroke:var(--arch-s2282-pink);stroke-dasharray:6 5}
.arch-lab svg .arch-s2282-link-future{stroke:var(--arch-s2282-chalk);stroke-dasharray:3 5;opacity:.5}
.arch-lab svg .arch-s2282-link-gap{stroke:var(--arch-s2282-chalk);stroke-dasharray:1.5 5;opacity:.75}
.arch-lab svg .arch-s2282-link-ok{stroke:var(--arch-s2282-green);stroke-width:3}
.arch-lab svg .arch-s2282-link-bad{stroke:var(--arch-s2282-pink);stroke-width:3}
.arch-lab svg .arch-s2282-head{stroke-dasharray:none}
.arch-lab svg .arch-s2282-knot{fill:var(--arch-s2282-board);stroke-width:2}
.arch-lab svg .arch-s2282-knot-need{stroke:var(--arch-s2282-yellow)}
.arch-lab svg .arch-s2282-knot-ok{stroke:var(--arch-s2282-green)}
.arch-lab svg .arch-s2282-knot-bad{stroke:var(--arch-s2282-pink)}
.arch-lab svg text.arch-s2282-knot-mark{font-weight:700}
.arch-lab svg text.arch-s2282-mark-need{fill:var(--arch-s2282-yellow)}
.arch-lab svg text.arch-s2282-mark-ok{fill:var(--arch-s2282-green)}
.arch-lab svg text.arch-s2282-mark-bad{fill:var(--arch-s2282-pink)}
.arch-lab svg .arch-s2282-dot{fill:var(--arch-s2282-chalk)}
.arch-lab svg text.arch-s2282-gap-n,.arch-lab svg text.arch-s2282-gap-w{font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s2282-gap-w{fill:var(--arch-s2282-blue)}
.arch-lab svg text.arch-s2282-tx-ok{fill:var(--arch-s2282-green)}
.arch-lab svg text.arch-s2282-tx-bad{fill:var(--arch-s2282-pink)}
.arch-lab .arch-s2282-summary{margin:0;font-weight:600;color:var(--arch-ink)}
/* the next number */
.arch-lab .arch-s2282-next{display:grid;gap:8px;min-width:0;padding:10px 12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s2282-prompt{margin:0;color:var(--arch-ink);line-height:1.55;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.arch-lab .arch-s2282-opts[hidden],.arch-lab .arch-s2282-own[hidden]{display:none}
.arch-lab .arch-s2282-opt{font-size:18px;font-weight:700;min-width:96px;font-variant-numeric:tabular-nums;border-radius:12px}
.arch-lab .arch-s2282-own{display:grid;gap:4px;min-width:0}
.arch-lab .arch-s2282-own-label{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2282-own-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;min-width:0;max-width:360px}
.arch-lab input.arch-s2282-own-input{box-sizing:border-box;width:100%;min-width:0;min-height:48px;padding:8px 10px;font-size:20px;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2282-own-msg{margin:0;font-size:14px;color:var(--arch-bad);line-height:1.5;overflow-wrap:anywhere}
.arch-lab .arch-s2282-own-msg:empty{display:none}
.arch-lab .arch-s2282-fast-box{display:grid;gap:4px;justify-items:start}
.arch-lab .arch-s2282-note{margin:0;color:var(--arch-ink);line-height:1.55;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.arch-lab .arch-s2282-note-bad{color:var(--arch-bad)}
/* the check of the circle and the attempts */
.arch-lab .arch-s2282-verdict .arch-checks li{line-height:1.5}
.arch-lab .arch-s2282-wait::before{content:'…';color:var(--arch-muted);font-weight:700;flex-shrink:0;width:1.2em}
.arch-lab .arch-s2282-outcome{font-weight:600}
.arch-lab .arch-s2282-journal-list{margin:4px 0;padding-left:1.2em;display:grid;gap:4px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2282-journal-ok{color:var(--arch-good);font-weight:600}
.arch-lab .arch-s2282-ask{font-weight:600;color:var(--arch-accent)}
.arch-lab .arch-s2282-guess-cmp{font-weight:600;color:var(--arch-label)}
/* the reasoning */
.arch-lab .arch-s2282-explain{display:grid;gap:8px}
@media (max-width:420px){.arch-lab .arch-s2282-explain{padding:12px 8px}}
.arch-lab .arch-s2282-explain-body{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2282-explain-body p{margin:0}
.arch-lab .arch-s2282-formula{font-size:17px;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums;display:grid;justify-items:center;gap:2px;text-align:center}
.arch-lab .arch-s2282-mine{padding-left:10px;border-left:3px solid var(--arch-s2282-mine);color:var(--arch-ink)}
.arch-lab .arch-s2282-answer{font-weight:700;color:var(--arch-label)}
/* smaller circles */
.arch-lab .arch-s2282-size-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.arch-lab .arch-s2282-size-row[hidden]{display:none}
.arch-lab .arch-s2282-size-step{min-width:48px;min-height:48px;padding:0;font-size:22px;font-weight:600;border-radius:12px}
.arch-lab .arch-s2282-size-out{font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums;min-width:5.5em;text-align:center}
.arch-lab .arch-s2282-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* SPb 2021/22, grade 8, problem 3 — «Периметры на 17 и 19» (labs/s22-8-3-perimeters.mjs). The visible part of the board is
   a floor of black and white tiles with grout between them (the colours of the statement stay black and white in both
   themes, a little softened in the dark one); a counted perimeter on the asked ending (19; variant 2: 21) gets a gold
   frame, one that breaks the statement a red dashed frame (the dash, not only the colour, tells it apart); the chosen tile a blue frame, its column and row a
   blue tint and blue headers. The map of the whole board: gold marks, red marks, the blue frame of the visible part.
   Controls, checks and texts go through --arch-* tokens (light theme and both dark branches). */
.arch-lab .arch-s2283{--arch-s2283-black:#1d2430;--arch-s2283-black2:#2f3846;--arch-s2283-white:#ffffff;--arch-s2283-white2:#e8edf3;
 --arch-s2283-grout:#9aa6b6;--arch-s2283-ink-on-black:#f8fafc;--arch-s2283-ink-on-white:#1f2937;
 --arch-s2283-gold:#f59e0b;--arch-s2283-gold-on-black:#fcd34d;--arch-s2283-gold-on-white:#92400e;
 --arch-s2283-red:#dc2626;--arch-s2283-red-on-black:#fca5a5;--arch-s2283-red-on-white:#b91c1c;
 --arch-s2283-sel:#2563eb;--arch-s2283-tint:rgba(37,99,235,.16);--arch-s2283-map-bg:#eef1f5;--arch-s2283-map-edge:#64748b;
 --arch-s2283-mark:#d97706;--arch-s2283-mark-bad:#dc2626}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2283{--arch-s2283-black:#0b0f16;--arch-s2283-black2:#1a212c;
 --arch-s2283-white:#d9dfe7;--arch-s2283-white2:#b9c2ce;--arch-s2283-grout:#4b5563;--arch-s2283-ink-on-black:#e5e7eb;--arch-s2283-ink-on-white:#111827;
 --arch-s2283-gold:#fbbf24;--arch-s2283-gold-on-white:#78350f;--arch-s2283-red:#f87171;--arch-s2283-red-on-white:#991b1b;
 --arch-s2283-sel:#60a5fa;--arch-s2283-tint:rgba(96,165,250,.22);--arch-s2283-map-bg:#2a3240;--arch-s2283-map-edge:#94a3b8;
 --arch-s2283-mark:#fbbf24;--arch-s2283-mark-bad:#f87171}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2283{--arch-s2283-black:#0b0f16;--arch-s2283-black2:#1a212c;
 --arch-s2283-white:#d9dfe7;--arch-s2283-white2:#b9c2ce;--arch-s2283-grout:#4b5563;--arch-s2283-ink-on-black:#e5e7eb;--arch-s2283-ink-on-white:#111827;
 --arch-s2283-gold:#fbbf24;--arch-s2283-gold-on-white:#78350f;--arch-s2283-red:#f87171;--arch-s2283-red-on-white:#991b1b;
 --arch-s2283-sel:#60a5fa;--arch-s2283-tint:rgba(96,165,250,.22);--arch-s2283-map-bg:#2a3240;--arch-s2283-map-edge:#94a3b8;
 --arch-s2283-mark:#fbbf24;--arch-s2283-mark-bad:#f87171}
.arch-lab .arch-s2283-variant{border-top:0;padding-top:0}
.arch-lab .arch-s2283-variant-note,.arch-lab .arch-s2283-guess-q{color:var(--arch-ink);font-size:15px;margin:0}
.arch-lab .arch-s2283-guess-msg:empty{display:none}
.arch-lab .arch-s2283-challenge{margin:0;color:var(--arch-ink);font-weight:600}
/* the work area: tiles, navigation, editors, the message and the check, the actions and the map; on a narrow lab one
   column in this order (tiles, fields and the response in one frame), on a wide lab the map stands beside the tiles */
.arch-lab .arch-s2283-work{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0}
.arch-lab .arch-s2283-work.arch-s2283-wide{grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"win map" "nav map" "ed ed" "msg msg" "act act";column-gap:16px}
.arch-lab .arch-s2283-wide .arch-s2283-area-win{grid-area:win}
.arch-lab .arch-s2283-wide .arch-s2283-area-nav{grid-area:nav}
.arch-lab .arch-s2283-wide .arch-s2283-area-ed{grid-area:ed}
.arch-lab .arch-s2283-wide .arch-s2283-area-msg{grid-area:msg}
.arch-lab .arch-s2283-wide .arch-s2283-area-act{grid-area:act}
.arch-lab .arch-s2283-wide .arch-s2283-area-map{grid-area:map;align-self:start}
.arch-lab .arch-s2283-area-win,.arch-lab .arch-s2283-area-nav,.arch-lab .arch-s2283-area-ed,.arch-lab .arch-s2283-area-msg,.arch-lab .arch-s2283-area-act,.arch-lab .arch-s2283-area-map{min-width:0}
.arch-lab .arch-s2283-area-msg{display:grid;gap:10px}
.arch-lab .arch-s2283-area-act{margin:0}
/* the visible part of the board */
.arch-lab .arch-s2283-win{display:grid;gap:2px;background:var(--arch-s2283-grout);border:2px solid var(--arch-s2283-grout);border-radius:6px;
 min-width:0;font-variant-numeric:tabular-nums;overflow:hidden}
.arch-lab .arch-s2283-corner,.arch-lab .arch-s2283-colh,.arch-lab .arch-s2283-rowh{background:var(--arch-surface);color:var(--arch-ink);display:flex;
 flex-direction:column;align-items:center;justify-content:center;line-height:1.15;min-width:0;overflow:hidden;text-align:center}
.arch-lab .arch-s2283-corner{min-height:44px;font-size:10px;color:var(--arch-muted)}
.arch-lab .arch-s2283-colh{min-height:44px}
.arch-lab .arch-s2283-hn{font-size:11px;color:var(--arch-muted)}
.arch-lab .arch-s2283-hv{font-size:13px;font-weight:700}
.arch-lab .arch-s2283-hv-long{font-size:11.5px;letter-spacing:-.02em}
.arch-lab .arch-s2283-head-on{background:var(--arch-pressed-bg);box-shadow:inset 0 0 0 2px var(--arch-s2283-sel)}
.arch-lab .arch-s2283-head-on .arch-s2283-hn{color:var(--arch-ink)}
.arch-lab button.arch-s2283-cell{position:relative;aspect-ratio:1;width:100%;min-width:0;min-height:0;padding:0;border:0;border-radius:0;
 display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;line-height:1;cursor:pointer;overflow:visible}
/* the perimeter stays inside the frame (inset 3 px + border 2.5 px, a gap of 1 px more) of a tile of 44 px and more:
   4 characters 13 px, 5 characters 11 px, 6–7 characters in two lines after the comma */
.arch-lab button.arch-s2283-cell.arch-s2283-mid{font-size:13px;letter-spacing:-.01em}
.arch-lab button.arch-s2283-cell.arch-s2283-long{font-size:11px;letter-spacing:-.02em}
.arch-lab button.arch-s2283-cell.arch-s2283-two{font-size:12px;line-height:1.1;letter-spacing:-.02em}
.arch-lab .arch-s2283-two .arch-s2283-cv{text-align:center}
.arch-lab button.arch-s2283-black{background:linear-gradient(145deg,var(--arch-s2283-black2),var(--arch-s2283-black));color:var(--arch-s2283-ink-on-black)}
.arch-lab button.arch-s2283-white{background:linear-gradient(145deg,var(--arch-s2283-white),var(--arch-s2283-white2));color:var(--arch-s2283-ink-on-white)}
.arch-lab button.arch-s2283-inline{background-image:linear-gradient(var(--arch-s2283-tint),var(--arch-s2283-tint)),linear-gradient(145deg,var(--arch-s2283-black2),var(--arch-s2283-black))}
.arch-lab button.arch-s2283-white.arch-s2283-inline{background-image:linear-gradient(var(--arch-s2283-tint),var(--arch-s2283-tint)),linear-gradient(145deg,var(--arch-s2283-white),var(--arch-s2283-white2))}
/* the ending of a counted perimeter: gold frame (the asked ending), red dashed frame and «!» (not by the statement) */
.arch-lab .arch-s2283-cell::before{content:'';position:absolute;inset:3px;border-radius:4px;pointer-events:none}
.arch-lab .arch-s2283-k2::before{border:2.5px solid var(--arch-s2283-gold)}
.arch-lab .arch-s2283-black.arch-s2283-k2{color:var(--arch-s2283-gold-on-black)}
.arch-lab .arch-s2283-white.arch-s2283-k2{color:var(--arch-s2283-gold-on-white)}
.arch-lab .arch-s2283-k3::before{border:2.5px dashed var(--arch-s2283-red)}
.arch-lab .arch-s2283-black.arch-s2283-k3{color:var(--arch-s2283-red-on-black)}
.arch-lab .arch-s2283-white.arch-s2283-k3{color:var(--arch-s2283-red-on-white)}
/* the chosen tile */
.arch-lab .arch-s2283-cell[aria-current=true]::after{content:'';position:absolute;inset:0;border:3px solid var(--arch-s2283-sel);box-shadow:inset 0 0 0 1px var(--arch-surface);pointer-events:none;z-index:1}
.arch-lab button.arch-s2283-cell:focus-visible{outline:3px solid var(--arch-focus);outline-offset:-8px;z-index:2}
/* navigation and the chosen rectangle */
.arch-lab .arch-s2283-area-nav{display:grid;gap:6px}
.arch-lab .arch-s2283-nav{display:flex;gap:8px;flex-wrap:wrap}
.arch-lab .arch-s2283-nav-btn{min-width:52px;font-size:18px;padding:6px 12px}
.arch-lab .arch-s2283-where{margin:0}
.arch-lab .arch-s2283-picked{margin:0;color:var(--arch-ink);font-size:15px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2283-picked.arch-s2283-bad{color:var(--arch-bad)}
/* exact editors */
.arch-lab .arch-s2283-area-ed{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.arch-lab .arch-s2283-ed{display:grid;gap:4px;min-width:0}
.arch-lab .arch-s2283-ed-label{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2283-ed-row{display:flex;gap:6px;align-items:center;min-width:0}
.arch-lab input.arch-s2283-ed-num{box-sizing:border-box;flex:1 1 90px;width:100%;min-width:0;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2283-step{flex:0 0 auto;min-width:52px;padding:8px 10px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2283-ed-msg{margin:0;font-size:14px;color:var(--arch-bad)}
.arch-lab .arch-s2283-ed-msg:empty{display:none}
/* the map of the whole board */
.arch-lab .arch-s2283-area-map{display:grid;gap:6px;justify-items:center}
.arch-lab .arch-s2283-map-title{margin:0;justify-self:start}
.arch-lab svg.arch-s2283-map{display:block;max-width:100%;height:auto;aspect-ratio:1;cursor:crosshair;touch-action:manipulation}
.arch-lab svg .arch-s2283-map-bg{fill:var(--arch-s2283-map-bg)}
.arch-lab svg .arch-s2283-map-asked{fill:var(--arch-s2283-mark)}
.arch-lab svg .arch-s2283-map-bad{fill:var(--arch-s2283-mark-bad)}
.arch-lab svg .arch-s2283-map-cross{stroke:var(--arch-s2283-sel);stroke-width:1;stroke-opacity:.55}
.arch-lab svg .arch-s2283-map-frame{fill:none;stroke:var(--arch-s2283-sel);stroke-width:2}
.arch-lab svg .arch-s2283-map-edge{fill:none;stroke:var(--arch-s2283-map-edge);stroke-width:1.5}
.arch-lab .arch-s2283-legend{justify-self:start;font-size:13px}
.arch-lab .arch-s2283-key{display:inline-block;width:14px;height:14px;border-radius:2px;flex:0 0 auto}
.arch-lab .arch-s2283-key-asked{background:var(--arch-s2283-mark)}
.arch-lab .arch-s2283-key-bad{background:var(--arch-s2283-mark-bad)}
.arch-lab .arch-s2283-key-frame{border:2px solid var(--arch-s2283-sel);box-sizing:border-box}
/* messages, the checks, the record, the reasoning */
.arch-lab .arch-s2283-note{margin:0;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2283-note-bad{color:var(--arch-bad)}
.arch-lab .arch-s2283-verdict p,.arch-lab .arch-s2283-record p,.arch-lab .arch-s2283-sum p{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2283-ok{color:var(--arch-good);font-weight:600}
.arch-lab .arch-s2283-bad{color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s2283-formula{margin:8px 0;padding:8px 12px;border-left:3px solid var(--arch-soft-line);font-weight:600;color:var(--arch-ink)}
.arch-lab .arch-s2283-sum .arch-label{margin-top:10px}
.arch-lab .arch-s2283-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;margin:-1px}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2021/22, 8 класс, задача 4 «Сумма двух отрезков».
   The squared page comes from visuals/art/squared-paper.css and stays paper-light in both themes, so the drawing on it
   keeps fixed dark inks (as the handwritten digits of that page do). Here: the sides (ink), the bound AB (violet), the
   summands EX (teal) and DY (orange), the student's PX (orange, dashed — to compare with DY), EP (violet, dashed), the
   equal triangles of the solution (two light tints), the handle X and the point P (blue), letters with a paper halo.
   The key icons under the drawing sit on the page background and get theme colours (light and both dark branches). */
.arch-lab .arch-s2284{--s2284-ink:#1f2937;--s2284-rm:#0f766e;--s2284-on:#c2410c;--s2284-bound:#7c3aed;--s2284-p:#1d4ed8;
 --s2284-tri-a:rgba(124,58,237,.13);--s2284-tri-b:rgba(29,78,216,.13);--s2284-halo:var(--spb-sqp-paper,#fffef8);
 --s2284-key-rm:#0f766e;--s2284-key-on:#c2410c;--s2284-key-bound:#7c3aed;--s2284-key-p:#1d4ed8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2284{--s2284-key-rm:#5eead4;--s2284-key-on:#fdba74;--s2284-key-bound:#c4b5fd;--s2284-key-p:#93c5fd}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2284{--s2284-key-rm:#5eead4;--s2284-key-on:#fdba74;--s2284-key-bound:#c4b5fd;--s2284-key-p:#93c5fd}
.arch-lab .arch-s2284-stage{padding:6px}
.arch-lab .arch-s2284-svg{display:block;width:100%;max-width:100%;height:auto;margin:0 auto;outline-offset:3px;touch-action:manipulation}
.arch-lab .arch-s2284-frame{display:grid;gap:10px}
.arch-lab .arch-s2284-frame>*{margin:0}
.arch-lab .arch-s2284-quick{gap:8px 20px}
.arch-lab .arch-s2284-quick dt{display:flex;align-items:center;gap:6px;font-size:15px}
.arch-lab .arch-s2284-quick dd{font-size:18px}
.arch-lab .arch-s2284-quick [data-key=bound] dd{color:var(--s2284-key-bound)}
.arch-lab .arch-s2284-msg:empty{display:none}
.arch-lab .arch-s2284-msg{color:var(--arch-label);font-weight:600}
.arch-lab .arch-s2284-keyicon{flex:0 0 auto}
.arch-lab .arch-s2284-keyicon line{stroke-width:3.4;stroke-linecap:round}
.arch-lab .arch-s2284-keyicon .arch-s2284-rm{stroke:var(--s2284-key-rm)}
.arch-lab .arch-s2284-keyicon .arch-s2284-on{stroke:var(--s2284-key-on)}
.arch-lab .arch-s2284-keyicon .arch-s2284-bound{stroke:var(--s2284-key-bound)}
.arch-lab .arch-s2284-keyicon .arch-s2284-pm{stroke:var(--s2284-key-on);stroke-dasharray:5 3}
.arch-lab .arch-s2284-keyicon .arch-s2284-rp{stroke:var(--s2284-key-bound);stroke-dasharray:5 3}
/* the drawing on the paper */
.arch-lab .arch-s2284-svg .arch-s2284-side{stroke:var(--s2284-ink);stroke-width:2.2;stroke-linecap:round}
.arch-lab .arch-s2284-svg .arch-s2284-bound{stroke:var(--s2284-bound);stroke-width:3;stroke-linecap:round}
.arch-lab .arch-s2284-svg .arch-s2284-rm{stroke:var(--s2284-rm);stroke-width:3.6;stroke-linecap:round}
.arch-lab .arch-s2284-svg .arch-s2284-on{stroke:var(--s2284-on);stroke-width:3.6;stroke-linecap:round}
.arch-lab .arch-s2284-svg .arch-s2284-pm{stroke:var(--s2284-on);stroke-width:2.6;stroke-dasharray:7 5;stroke-linecap:round}
.arch-lab .arch-s2284-svg .arch-s2284-rp{stroke:var(--s2284-bound);stroke-width:2.6;stroke-dasharray:7 5;stroke-linecap:round}
.arch-lab .arch-s2284-svg .arch-s2284-tick{stroke:var(--s2284-ink);stroke-width:1.7}
.arch-lab .arch-s2284-tri-a{fill:var(--s2284-tri-a);stroke:none}
.arch-lab .arch-s2284-tri-b{fill:var(--s2284-tri-b);stroke:none}
.arch-lab .arch-s2284-dot{fill:var(--s2284-ink);stroke:var(--s2284-halo);stroke-width:1.5}
.arch-lab .arch-s2284-dot-n{fill:var(--s2284-on)}
.arch-lab .arch-s2284-dot.arch-s2284-handle,.arch-lab .arch-s2284-dot.arch-s2284-dot-p{fill:var(--s2284-p);stroke-width:2}
.arch-lab .arch-s2284-hit{fill:transparent;cursor:grab;touch-action:none}
.arch-lab .arch-s2284-svg text.arch-s2284-label{fill:var(--s2284-ink);font-weight:700;stroke:var(--s2284-halo);stroke-width:4px;paint-order:stroke;stroke-linejoin:round}
.arch-lab .arch-s2284-svg text.arch-s2284-label-m,.arch-lab .arch-s2284-svg text.arch-s2284-label-p{fill:var(--s2284-p)}
/* parameters and the idea panel */
.arch-lab .arch-s2284-params .phx-param .arch-help{margin-top:2px}
.arch-lab .arch-s2284-params .phx-param-msg.arch-s2284-accepted{color:var(--arch-label)}
.arch-lab .arch-s2284-idea[hidden]{display:none}
.arch-lab .arch-s2284-idea>p{margin:0}
.arch-lab .arch-s2284-pad{display:grid;grid-template-columns:repeat(4,48px);gap:8px}
.arch-lab .arch-s2284-arrow{min-width:48px;min-height:48px;padding:0;font-size:22px;border-radius:12px}
.arch-lab .arch-s2284-pnow{margin:0;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2284-toggle[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s2284-toggle[hidden],.arch-lab .arch-s2284-exrow button[hidden]{display:none}
.arch-lab .arch-s2284 input{box-sizing:border-box}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2021/22, 8 класс, задача 5 «Вычёркиваем цифры».
   The buttons a₁ … aₙ with the verdict of each equality, the number field, the exercise-book page (paper and inks from
   visuals/art/squared-paper.css: the paper stays light in both themes, so the pencil marks on it keep fixed dark colours)
   and the list «add up all the equalities», for the light theme and both dark branches. */
.arch-lab .arch-s2285{--s2285-less:#9a3412;--s2285-more:#1d4ed8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2285{--s2285-less:#fdba74;--s2285-more:#93c5fd}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2285{--s2285-less:#fdba74;--s2285-more:#93c5fd}
.arch-lab .arch-s2285>.arch-sub{grid-template-columns:minmax(0,1fr);min-width:0}
.arch-lab .arch-s2285-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px}
.arch-lab .arch-s2285-chip{min-height:44px;min-width:44px;padding:4px 6px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2285-chip[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600;box-shadow:inset 0 0 0 1px var(--arch-pressed-line)}
.arch-lab .arch-s2285-mark{font-weight:700;min-width:.9em;text-align:center}
.arch-lab .arch-s2285-mark-ok{color:var(--arch-good)}
.arch-lab .arch-s2285-mark-bad{color:var(--arch-bad)}
.arch-lab .arch-s2285-editor{display:grid;gap:4px;min-width:0}
.arch-lab .arch-s2285-field-label{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2285-editor-row{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start;min-width:0}
.arch-lab textarea.arch-s2285-num{flex:1 1 220px;min-width:0;box-sizing:border-box;font:inherit;font-size:16px;line-height:1.5;min-height:44px;padding:9px 10px;border:1px solid var(--arch-field-line);border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);resize:none;overflow:hidden;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.arch-lab textarea.arch-s2285-num:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s2285-page-box{padding:4px;overflow-x:auto;overscroll-behavior-x:contain}
.arch-lab .arch-s2285-page{display:block;margin:0 auto;max-width:none}
.arch-lab .arch-s2285-info p{margin:6px 0;line-height:1.55;overflow-wrap:anywhere;color:var(--arch-ink)}
.arch-lab .arch-s2285-verdict p,.arch-lab .arch-s2285-sum p{margin:4px 0;overflow-wrap:anywhere}
.arch-lab .arch-s2285-sum[hidden],.arch-lab .arch-s2285-rows[hidden],.arch-lab .arch-s2285-body[hidden],.arch-lab .arch-s2285-lock[hidden]{display:none}
.arch-lab .arch-s2285-rows{margin:6px 0;padding-left:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));gap:2px 16px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2285-row-name{font-weight:600}
.arch-lab .arch-s2285-less{color:var(--s2285-less)}
.arch-lab .arch-s2285-more{color:var(--s2285-more)}
.arch-lab .arch-s2285-body{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0}
.arch-lab .arch-s2285-lock{font-style:italic}
.arch-lab .arch-s2285-what-note.arch-s2285-own{color:var(--s2285-less);font-weight:600}
.arch-lab .arch-s2285-note:empty{display:none}
.arch-lab .arch-s2285-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* the exercise book: labels in the margin, the heading over the crossed-out column, the pencil strokes and the sign */
.arch-lab svg text.arch-s2285-label{fill:var(--spb-sqp-pencil);stroke:none;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s2285-label-on{fill:var(--spb-sqp-ink);font-weight:700}
.arch-lab .arch-s2285-strike{stroke:var(--spb-sqp-ring);stroke-width:1.6;stroke-linecap:round}
.arch-lab .arch-s2285-arrow{fill:none;stroke:var(--spb-sqp-ring);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg text.arch-s2285-sign{font-weight:800;stroke:none}
.arch-lab svg text.arch-s2285-sign-ok{fill:#047857}
.arch-lab svg text.arch-s2285-sign-bad{fill:#b91c1c}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Взмахи меча» (SPb 2022/23, grade 6, problem 1).
   The scene has a day sky in the light theme and a dusk sky in the dark ones; the wooden sign with the number of heads
   keeps its colours (dark ink on wood) in both. The controls under the scene follow the site theme. */
.arch-lab{--arch-heads-sky:#dcefff;--arch-heads-hill:#bfe0a6;--arch-heads-ground:#8cc56f;--arch-heads-water:#8cc3d6;--arch-heads-water-front:rgba(120,180,204,.55);
 --arch-heads-wave:#ffffff;--arch-heads-reed:#4d7c3a;--arch-heads-board:#c98f52;--arch-heads-board-edge:#8a5a2b;--arch-heads-board-ink:#2b1a0b;--arch-heads-fx:#c2410c;
 --arch-heads-op-bg:#eef2f7;--arch-heads-op-ink:#334155;--arch-heads-grow:#b45309}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-heads-sky:#1c2a45;--arch-heads-hill:#2c4636;--arch-heads-ground:#3b6533;
 --arch-heads-water:#22506a;--arch-heads-water-front:rgba(34,80,106,.55);--arch-heads-wave:#9cc7dc;--arch-heads-reed:#7aa863;--arch-heads-board:#c08850;--arch-heads-fx:#fdba74;
 --arch-heads-op-bg:#263043;--arch-heads-op-ink:#dbe4f0;--arch-heads-grow:#fbbf24}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-heads-sky:#1c2a45;--arch-heads-hill:#2c4636;--arch-heads-ground:#3b6533;
 --arch-heads-water:#22506a;--arch-heads-water-front:rgba(34,80,106,.55);--arch-heads-wave:#9cc7dc;--arch-heads-reed:#7aa863;--arch-heads-board:#c08850;--arch-heads-fx:#fdba74;
 --arch-heads-op-bg:#263043;--arch-heads-op-ink:#dbe4f0;--arch-heads-grow:#fbbf24}
.arch-lab .arch-heads-stage{padding:4px;display:grid;gap:6px}
.arch-lab .arch-heads-svg{display:block;width:100%;height:auto;touch-action:manipulation}
.arch-lab .arch-heads-svg .arch-heads-sky{fill:var(--arch-heads-sky)}
.arch-lab .arch-heads-svg .arch-heads-hill{fill:var(--arch-heads-hill)}
.arch-lab .arch-heads-svg .arch-heads-ground{fill:var(--arch-heads-ground)}
.arch-lab .arch-heads-svg .arch-heads-water{fill:var(--arch-heads-water)}
.arch-lab .arch-heads-svg .arch-heads-water-front{fill:var(--arch-heads-water-front)}
.arch-lab .arch-heads-svg .arch-heads-wave{fill:none;stroke:var(--arch-heads-wave);stroke-width:1.5;opacity:.7}
.arch-lab .arch-heads-svg .arch-heads-reed{fill:none;stroke:var(--arch-heads-reed);stroke-width:2.2;stroke-linecap:round}
.arch-lab .arch-heads-svg .arch-heads-board{fill:var(--arch-heads-board);stroke:var(--arch-heads-board-edge);stroke-width:2}
.arch-lab .arch-heads-svg .arch-heads-board-edge{fill:none;stroke:var(--arch-heads-board-edge);stroke-width:1;stroke-dasharray:2 3;opacity:.7}
.arch-lab .arch-heads-svg text.arch-heads-plate-label{fill:var(--arch-heads-board-ink);font-size:13px;font-weight:600}
.arch-lab .arch-heads-svg text.arch-heads-plate-num{fill:var(--arch-heads-board-ink);font-weight:800;font-variant-numeric:tabular-nums;transform-box:fill-box;transform-origin:center}
.arch-lab .arch-heads-svg text.arch-heads-fx{fill:var(--arch-heads-fx);font-size:20px;font-weight:800;paint-order:stroke;stroke:var(--arch-heads-sky);stroke-width:4px;stroke-linejoin:round}
.arch-lab .arch-heads-svg text.arch-heads-fx-grow{font-size:17px;fill:var(--arch-heads-board-ink);stroke:var(--arch-heads-board)}
.arch-lab .arch-heads-counters{padding:0 8px 4px}
.arch-lab .arch-heads-cuts button{flex:1 1 180px}
.arch-lab .arch-heads-batchrow{display:grid;gap:6px;min-width:0}
.arch-lab .arch-heads-klabel{font-size:15px}
.arch-lab .arch-heads-kbox{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.arch-lab .arch-heads-step{width:44px;min-width:44px;height:44px;padding:0;font-size:22px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab input.arch-heads-k{box-sizing:border-box;width:84px;min-height:44px;padding:6px 8px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}
.arch-lab .arch-heads-batch{flex:1 1 150px}
.arch-lab .arch-heads-msg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-heads-msg:empty{display:none}
.arch-lab .arch-heads-change{margin:0}
.arch-lab .arch-heads-why{margin:6px 0 0;color:var(--arch-label)}
.arch-lab .arch-heads-verdict{margin:6px 0 0;font-weight:600}
.arch-lab .arch-heads-variant-note{margin:0}
.arch-lab .arch-heads-ribbon{display:grid;gap:6px;min-width:0}
.arch-lab .arch-heads-ribbon-head{margin:0}
.arch-lab .arch-heads-ribbon-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 4px;align-items:center;font-variant-numeric:tabular-nums}
.arch-lab .arch-heads-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.arch-lab .arch-heads-item+.arch-heads-item::before{content:'→';color:var(--arch-muted);margin-right:2px}
.arch-lab .arch-heads-op{font-size:13px;padding:1px 7px;border-radius:999px;background:var(--arch-heads-op-bg);color:var(--arch-heads-op-ink);font-weight:600}
.arch-lab .arch-heads-num{font-weight:700;color:var(--arch-ink)}
.arch-lab .arch-heads-num small{font-size:12px;font-weight:600;color:var(--arch-heads-grow)}
.arch-lab .arch-heads-num strong{font-weight:800}
.arch-lab .arch-heads-start .arch-heads-num{padding:1px 8px;border:1px solid var(--arch-soft-line);border-radius:8px}
.arch-lab .arch-heads-zero .arch-heads-num{color:var(--arch-good)}
.arch-lab .arch-heads-guided .arch-heads-op{outline:1px dashed var(--arch-field-line)}
.arch-lab .arch-heads-empty,.arch-lab .arch-heads-more{color:var(--arch-muted);font-size:14px}
.arch-lab .arch-heads-guide{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink)}
.arch-lab .arch-heads-guide[hidden]{display:none}
.arch-lab .arch-heads-guide-text{margin:0}
.arch-lab .arch-heads-wins{margin:0}
.arch-lab .arch-heads-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* SPb 2022/23, grade 6, problem 2 — «Выбери лжецов» (labs/s23-6-2-knights.mjs). The row is a grid of buttons, one per
   person (a speech bubble, the figure of visuals/art/knight-liar.mjs, the number of people on the named side), wrapped
   like lines of a book. Own colours: the two phrases («чёт» teal, «нечёт» orange), the Ч/Н places of «Разобрать мой
   ряд» and the last changed person — light theme and both dark branches; everything else goes through --arch-* tokens. */
.arch-lab .arch-s232{--s232-even-bg:#ccfbf1;--s232-even-line:#0f766e;--s232-even-ink:#134e4a;--s232-even-bar:#14b8a6;
 --s232-odd-bg:#ffedd5;--s232-odd-line:#c2410c;--s232-odd-ink:#7c2d12;--s232-odd-bar:#fb923c;
 --s232-place-even:#dbeafe;--s232-place-even-ink:#1e3a8a;--s232-place-odd:#e7e5e4;--s232-place-odd-ink:#44403c;--s232-last:#b45309}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s232{--s232-even-bg:#134e4a;--s232-even-line:#5eead4;--s232-even-ink:#ccfbf1;--s232-even-bar:#0d9488;
 --s232-odd-bg:#7c2d12;--s232-odd-line:#fdba74;--s232-odd-ink:#ffedd5;--s232-odd-bar:#ea580c;
 --s232-place-even:#1e3a5f;--s232-place-even-ink:#dbeafe;--s232-place-odd:#3f3f46;--s232-place-odd-ink:#f4f4f5;--s232-last:#fbbf24}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s232{--s232-even-bg:#134e4a;--s232-even-line:#5eead4;--s232-even-ink:#ccfbf1;--s232-even-bar:#0d9488;
 --s232-odd-bg:#7c2d12;--s232-odd-line:#fdba74;--s232-odd-ink:#ffedd5;--s232-odd-bar:#ea580c;
 --s232-place-even:#1e3a5f;--s232-place-even-ink:#dbeafe;--s232-place-odd:#3f3f46;--s232-place-odd-ink:#f4f4f5;--s232-last:#fbbf24}
.arch-lab .arch-s232-predict{border-top:0;padding-top:0}
.arch-lab .arch-s232-predict p{margin:0}
.arch-lab .arch-s232-variant-note{margin:0;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s232-stage{padding:8px 6px}
.arch-lab .arch-s232-dir{margin:0 4px 6px;font-size:13px;color:var(--arch-muted)}
/* the row */
.arch-lab .arch-s232-row{--per:6;display:grid;grid-template-columns:repeat(var(--per),minmax(0,1fr));gap:10px 4px;min-width:0}
.arch-lab .arch-s232-person{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:44px;min-height:44px;width:100%;padding:4px 0 5px;margin:0;
 border:1px solid transparent;border-radius:12px;background:transparent;color:var(--arch-ink);cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1.1}
@media (hover:hover){.arch-lab .arch-s232-person:hover{border-color:var(--arch-soft-line);background:var(--arch-pressed-bg)}}
.arch-lab .arch-s232-person:focus-visible{outline:3px solid var(--arch-focus);outline-offset:1px}
.arch-lab .arch-s232-person.arch-s232-last{border:2px dashed var(--s232-last)}
.arch-lab .arch-s232-fig{display:block;width:auto;height:58px;max-width:100%;overflow:visible;pointer-events:none}
/* speech bubble with a small tail towards the speaker */
.arch-lab .arch-s232-bubble{position:relative;display:inline-block;min-width:34px;padding:2px 5px;border-radius:9px;border:1.5px solid var(--s232-even-line);background:var(--s232-even-bg);color:var(--s232-even-ink);
 font-size:12px;font-weight:700;text-align:center;white-space:nowrap;margin-bottom:4px}
.arch-lab .arch-s232-bubble::after{content:'';position:absolute;left:50%;bottom:-6px;margin-left:-4px;border:5px solid transparent;border-top-color:var(--s232-even-line);border-bottom:0}
.arch-lab [data-says=odd] .arch-s232-bubble,.arch-lab .arch-s232-bubble[data-says=odd]{border-color:var(--s232-odd-line);background:var(--s232-odd-bg);color:var(--s232-odd-ink)}
.arch-lab [data-says=odd] .arch-s232-bubble::after,.arch-lab .arch-s232-bubble[data-says=odd]::after{border-top-color:var(--s232-odd-line)}
/* the number of people on the named side: a small floor tile under the feet */
.arch-lab .arch-s232-count{display:inline-flex;align-items:center;justify-content:center;min-width:30px;padding:1px 4px;border-radius:6px;border:1px solid var(--arch-soft-line);
 font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--arch-muted);background:var(--arch-surface);white-space:nowrap}
.arch-lab .arch-s232-places [data-place=even] .arch-s232-count{background:var(--s232-place-even);color:var(--s232-place-even-ink);border-color:var(--s232-place-even-ink)}
.arch-lab .arch-s232-places [data-place=odd] .arch-s232-count{background:var(--s232-place-odd);color:var(--s232-place-odd-ink);border-color:var(--s232-place-odd-ink);border-style:dashed}
.arch-lab .arch-s232-places [data-place=even]{background:color-mix(in srgb,var(--s232-place-even) 45%,transparent)}
/* legend */
.arch-lab .arch-s232-legend{gap:6px 14px}
.arch-lab .arch-s232-icon{flex:none;overflow:visible}
.arch-lab .arch-s232-bubble-key{margin:0}
.arch-lab .arch-s232-bubble-key::after{display:none}
/* readouts and the split bar */
.arch-lab .arch-s232-readouts dd.arch-s232-n-even{color:var(--s232-even-ink);background:var(--s232-even-bg);padding:0 6px;border-radius:6px}
.arch-lab .arch-s232-readouts dd.arch-s232-n-odd{color:var(--s232-odd-ink);background:var(--s232-odd-bg);padding:0 6px;border-radius:6px}
.arch-lab .arch-s232-bar{position:relative;margin:30px 0 6px}
.arch-lab .arch-s232-bar-track{display:flex;height:26px;border-radius:8px;overflow:hidden;border:1px solid var(--arch-soft-line)}
/* the numbers sit at the outer ends of the bar, away from the target marks at n·7/24 and n·17/24 */
.arch-lab .arch-s232-bar-even,.arch-lab .arch-s232-bar-odd{flex-basis:0;display:flex;align-items:center;padding:0 8px;font-size:14px;font-weight:700;color:#0b1120;transition:flex-grow .2s ease-out;min-width:0;overflow:hidden}
.arch-lab .arch-s232-bar-even{background:var(--s232-even-bar);justify-content:flex-start}
.arch-lab .arch-s232-bar-odd{background:var(--s232-odd-bar);justify-content:flex-end}
.arch-lab .arch-s232-mark{position:absolute;top:-24px;bottom:-4px;transform:translateX(-50%);padding:0 3px;font-size:12px;font-weight:600;color:var(--arch-muted);white-space:nowrap;border-left:0;pointer-events:none}
.arch-lab .arch-s232-mark::after{content:'';position:absolute;left:50%;top:18px;bottom:0;border-left:2px dashed var(--arch-ink)}
.arch-lab .arch-s232-mark-hit{color:var(--arch-good)}
.arch-lab .arch-s232-changed{color:var(--arch-ink)}
.arch-lab .arch-s232-log{color:var(--arch-ink);font-variant-numeric:tabular-nums}
/* «Разобрать мой ряд» and «Перебрать все ряды» */
.arch-lab .arch-s232-toggle[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s232-panel{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.55;min-width:0}
.arch-lab .arch-s232-panel[hidden]{display:none}
.arch-lab .arch-s232-panel p{margin:0}
.arch-lab .arch-s232-cells{display:grid;gap:4px;min-width:0}
.arch-lab .arch-s232-caption{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s232-table{font-size:15px}
.arch-lab .arch-s232-table th,.arch-lab .arch-s232-table td{padding:6px 8px}
.arch-lab .arch-s232-cells .arch-s232-table{width:100%;table-layout:fixed}
.arch-lab .arch-s232-cells .arch-s232-table th:first-child,.arch-lab .arch-s232-cells .arch-s232-corner{width:26%}
.arch-lab .arch-s232-cells .arch-s232-corner{border:0}
.arch-lab .arch-s232-cells th>span,.arch-lab .arch-s232-cells td>span,.arch-lab .arch-s232-cells td>strong{display:block}
.arch-lab .arch-s232-cells th .arch-s232-place-key{display:inline-block;margin-bottom:2px}
.arch-lab .arch-s232-th-sub{font-size:13px;font-weight:400;color:var(--arch-muted)}
.arch-lab .arch-s232-table td strong{font-size:20px;line-height:1.2}
.arch-lab .arch-s232-c-even{background:var(--s232-even-bg);color:var(--s232-even-ink)}
.arch-lab .arch-s232-c-odd{background:var(--s232-odd-bg);color:var(--s232-odd-ink)}
.arch-lab .arch-s232-c-even span,.arch-lab .arch-s232-c-odd span{color:inherit}
.arch-lab .arch-s232-place-key{display:inline-block;min-width:1.6em;padding:0 4px;border-radius:5px;font-weight:700;text-align:center}
.arch-lab .arch-s232-place-even{background:var(--s232-place-even);color:var(--s232-place-even-ink);border:1px solid var(--s232-place-even-ink)}
.arch-lab .arch-s232-place-odd{background:var(--s232-place-odd);color:var(--s232-place-odd-ink);border:1px dashed var(--s232-place-odd-ink)}
.arch-lab .arch-s232-survey td{text-align:right}
.arch-lab .arch-s232-survey tr.arch-s232-now td{background:var(--arch-pressed-bg);font-weight:700}
.arch-lab .arch-s232-key-line{border-left:4px solid var(--s232-even-line);padding-left:10px}
.arch-lab .arch-s232-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (max-width:420px){.arch-lab .arch-s232-table{font-size:14px}.arch-lab .arch-s232-table th,.arch-lab .arch-s232-table td{padding:5px 4px}.arch-lab .arch-s232-panel{padding:10px}}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-s232-bar-even,.arch-lab .arch-s232-bar-odd{transition:none}}
@media (max-width:420px){.arch-lab .arch-s232-cells td>span{font-size:13px}.arch-lab .arch-s232-cells .arch-s232-table th,.arch-lab .arch-s232-cells .arch-s232-table td{padding:5px 3px}}
.arch-lab .arch-s232-bar-note{margin:0 0 4px;font-size:13px}

/* SPb 2022/23, grade 6, problem 3 — «Коробки и пакетики» (labs/s23-6-3-boxes.mjs). The scene: the hero and a sign with N
   and x, square gift boxes (visuals/art/candy-box.mjs), the open box with a heap or with rows, paper bags and the sweets
   left without a bag. Own colours: the highlight of the incomplete row and of the sweets without a bag, the sign, the
   bars of long rows — light theme and both dark branches; everything else goes through --arch-* tokens. */
.arch-lab.arch-s23-6-3,.arch-lab .arch-s23-6-3{--s236-hl:#c2410c;--s236-hl-bg:#ffedd5;--s236-sign:#fffbeb;--s236-sign-line:#d6b77a;--s236-bar-a:#f59e0b;--s236-bar-b:#ef4444;--s236-empty:#94a3b8;--s236-loose:#f8fafc}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab.arch-s23-6-3,:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s23-6-3{--s236-hl:#fb923c;--s236-hl-bg:#43230f;--s236-sign:#2b2618;--s236-sign-line:#8a7444;--s236-bar-a:#f59e0b;--s236-bar-b:#f87171;--s236-empty:#64748b;--s236-loose:#1b2333}}
:root[data-design="v2"][data-theme="dark"] .arch-lab.arch-s23-6-3,:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s23-6-3{--s236-hl:#fb923c;--s236-hl-bg:#43230f;--s236-sign:#2b2618;--s236-sign-line:#8a7444;--s236-bar-a:#f59e0b;--s236-bar-b:#f87171;--s236-empty:#64748b;--s236-loose:#1b2333}
.arch-lab .arch-s23-6-3-head{display:grid;gap:8px}
.arch-lab .arch-s23-6-3-variant{margin:0;font-size:15px;color:var(--arch-ink)}
/* scene texts */
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-t{font-size:13px;font-weight:600;fill:var(--arch-label)}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-c{font-size:12.5px;fill:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-c-hl{fill:var(--s236-hl);font-weight:600}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-good{fill:var(--arch-good);font-weight:700}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-more{font-size:22px;font-weight:700;fill:var(--arch-muted)}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-inside-text{font-size:12px;font-weight:600;fill:#fde68a}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-sign-title{font-size:13px;fill:var(--arch-muted)}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-sign-n{font-weight:800;fill:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-sign-x{font-size:14px;font-weight:600;fill:var(--arch-label);font-variant-numeric:tabular-nums}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-loose-n{font-size:20px;font-weight:800;fill:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s23-6-3 svg text.arch-s23-6-3-loose-n.arch-s23-6-3-good{fill:var(--arch-good)}
.arch-lab .arch-s23-6-3 .arch-s23-6-3-sign{fill:var(--s236-sign);stroke:var(--s236-sign-line);stroke-width:1.4}
.arch-lab .arch-s23-6-3 .arch-s23-6-3-empty{fill:none;stroke:var(--s236-empty);stroke-width:1.4;stroke-dasharray:5 4}
.arch-lab .arch-s23-6-3 .arch-s23-6-3-loose{fill:var(--s236-loose);stroke:var(--arch-soft-line);stroke-width:1.2}
.arch-lab .arch-s23-6-3 .arch-s23-6-3-loose.arch-s23-6-3-hl{fill:var(--s236-hl-bg)}
.arch-lab .arch-s23-6-3 .arch-s23-6-3-hl{fill:none;stroke:var(--s236-hl);stroke-width:2.2;stroke-dasharray:5 3}
.arch-lab .arch-s23-6-3 .arch-s23-6-3-hl-row{stroke:#fdba74;stroke-width:2.6;stroke-dasharray:none}
.arch-lab .arch-s23-6-3 .arch-s23-6-3-bar{fill:var(--s236-bar-a);stroke:#1f2937;stroke-width:.6;stroke-opacity:.5}
.arch-lab .arch-s23-6-3 .arch-s23-6-3-bar.arch-s23-6-3-bar-b{fill:var(--s236-bar-b)}
/* equations under the picture */
.arch-lab .arch-s23-6-3-eq{display:grid;gap:2px;padding:8px 12px;border:1px solid var(--arch-soft-line);border-radius:12px;background:var(--arch-surface)}
.arch-lab .arch-s23-6-3-eq p{margin:0;line-height:1.5;color:var(--arch-ink)}
.arch-lab .arch-s23-6-3-eq-label{color:var(--arch-muted);font-size:14px}
.arch-lab .arch-s23-6-3-math{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.arch-lab .arch-s23-6-3-good{color:var(--arch-good)}
/* fields: «−», the exact number, «+» */
.arch-lab .arch-s23-6-3-frow{display:grid;grid-template-columns:48px minmax(0,180px) 48px;gap:8px;align-items:center}
.arch-lab .arch-s23-6-3 input.arch-s23-6-3-num{text-align:center}
.arch-lab .arch-s23-6-3-nblock{display:grid;gap:8px}
.arch-lab .arch-s23-6-3-ntools{gap:8px}
.arch-lab .arch-s23-6-3-note{margin:0;padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);color:var(--arch-ink);border-radius:8px;font-size:15px;line-height:1.5}
.arch-lab .arch-s23-6-3-note.arch-s23-6-3-note-bad{border-left-color:var(--arch-bad);background:var(--arch-bad-bg)}
.arch-lab .arch-s23-6-3-target{margin:0 0 4px;color:var(--arch-muted);font-size:14px}
.arch-lab .arch-s23-6-3-rowsbtn{justify-self:start}
.arch-lab .arch-s23-6-3-rowsbtn[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s23-6-3-rows{display:grid;gap:4px;padding:10px 14px;border:2px dashed var(--s236-hl);border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.55}
.arch-lab .arch-s23-6-3-rows p{margin:0}
.arch-lab .arch-s23-6-3-rows strong{color:var(--s236-hl)}
.arch-lab .arch-s23-6-3-nowrap{white-space:nowrap;font-variant-numeric:tabular-nums}
/* the log */
.arch-lab .arch-s23-6-3-log{display:grid;gap:6px;min-width:0}
.arch-lab .arch-s23-6-3-log p{margin:0}
.arch-lab .arch-s23-6-3-log-title{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s23-6-3-table{font-size:15px}
.arch-lab .arch-s23-6-3-table th{font-size:13px;line-height:1.25}
.arch-lab .arch-s23-6-3-table td.arch-s23-6-3-good{font-weight:700;color:var(--arch-good)}
.arch-lab table.arch-table td.arch-s23-6-3-yes{color:var(--arch-good);font-weight:700}
.arch-lab table.arch-table td.arch-s23-6-3-no{color:var(--arch-bad);font-weight:700}
.arch-lab .arch-s23-6-3-not4{display:block;font-size:12px;color:var(--arch-bad);white-space:nowrap}
.arch-lab .arch-s23-6-3-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media(max-width:480px){.arch-lab .arch-s23-6-3-frow{grid-template-columns:48px minmax(0,1fr) 48px}.arch-lab .arch-s23-6-3-table{font-size:14px}.arch-lab .arch-s23-6-3-table th,.arch-lab .arch-s23-6-3-table td{padding:4px 5px}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Энтомолог Вася и кузнечики» (SPb 2022/23, grade 6,
   problem 4). The scene is a meadow with a strip of cells: a day meadow in the light theme, an evening one in the dark
   branches; the homes are tinted brown, the goal cells yellow, and every colour is backed by a text label under the strip.
   The chart of the sum uses the same colours in both themes with its own light or dark paper. The controls under the
   scene follow the site theme. */
.arch-lab{--arch-hop-meadow:#eaf6dd;--arch-hop-grass:#7fb560;--arch-hop-strip:#fbf3df;--arch-hop-strip-edge:#8a6a3a;--arch-hop-cell:#d9c7a1;--arch-hop-cell10:#a8875a;
 --arch-hop-homes:#e8c79a;--arch-hop-goal:#fde68a;--arch-hop-mark:#2f6b1f;--arch-hop-ink:#1f2937;--arch-hop-home-ink:#7c4a1e;--arch-hop-goal-ink:#854d0e;--arch-hop-leader:#2f6b1f;
 --arch-hop-chart-bg:#ffffff;--arch-hop-axis:#5b6b82;--arch-hop-sum:#1d4ed8;--arch-hop-need:#b45309;--arch-hop-ceil:#047857;--arch-hop-band-home:#dcfce7;--arch-hop-band-away:#eef2f7;--arch-hop-x:#7c3aed}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-hop-meadow:#1d3424;--arch-hop-grass:#4f8a3e;--arch-hop-strip:#3a3326;--arch-hop-strip-edge:#c9a46a;
 --arch-hop-cell:#5a4d36;--arch-hop-cell10:#9c8156;--arch-hop-homes:#6b4a2a;--arch-hop-goal:#6b5a12;--arch-hop-mark:#bfe6a6;--arch-hop-ink:#e5edf7;--arch-hop-home-ink:#f2c48d;--arch-hop-goal-ink:#fde68a;
 --arch-hop-leader:#a7d98c;--arch-hop-chart-bg:#141c2b;--arch-hop-axis:#9fb0c6;--arch-hop-sum:#93c5fd;--arch-hop-need:#fdba74;--arch-hop-ceil:#6ee7b7;--arch-hop-band-home:#173a26;--arch-hop-band-away:#222b3a;--arch-hop-x:#c4b5fd}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-hop-meadow:#1d3424;--arch-hop-grass:#4f8a3e;--arch-hop-strip:#3a3326;--arch-hop-strip-edge:#c9a46a;
 --arch-hop-cell:#5a4d36;--arch-hop-cell10:#9c8156;--arch-hop-homes:#6b4a2a;--arch-hop-goal:#6b5a12;--arch-hop-mark:#bfe6a6;--arch-hop-ink:#e5edf7;--arch-hop-home-ink:#f2c48d;--arch-hop-goal-ink:#fde68a;
 --arch-hop-leader:#a7d98c;--arch-hop-chart-bg:#141c2b;--arch-hop-axis:#9fb0c6;--arch-hop-sum:#93c5fd;--arch-hop-need:#fdba74;--arch-hop-ceil:#6ee7b7;--arch-hop-band-home:#173a26;--arch-hop-band-away:#222b3a;--arch-hop-x:#c4b5fd}
.arch-lab .arch-hop-stage{padding:4px;display:grid;gap:6px}
.arch-lab .arch-hop-svg{display:block;width:100%;height:auto;touch-action:manipulation}
.arch-lab .arch-hop-svg .arch-hop-meadow{fill:var(--arch-hop-meadow)}
.arch-lab .arch-hop-svg .arch-hop-grass{fill:none;stroke:var(--arch-hop-grass);stroke-width:1.4;stroke-linecap:round}
.arch-lab .arch-hop-svg .arch-hop-strip{fill:var(--arch-hop-strip)}
.arch-lab .arch-hop-svg .arch-hop-strip-edge{fill:none;stroke:var(--arch-hop-strip-edge);stroke-width:1.4}
.arch-lab .arch-hop-svg .arch-hop-homes{fill:var(--arch-hop-homes)}
.arch-lab .arch-hop-svg .arch-hop-goalcells{fill:var(--arch-hop-goal)}
.arch-lab .arch-hop-svg .arch-hop-cell{fill:none;stroke:var(--arch-hop-cell);stroke-width:.8}
.arch-lab .arch-hop-svg .arch-hop-cell-10{fill:none;stroke:var(--arch-hop-cell10);stroke-width:1.2}
.arch-lab .arch-hop-svg .arch-hop-mark{fill:var(--arch-hop-mark)}
.arch-lab .arch-hop-svg .arch-hop-leader{fill:none;stroke:var(--arch-hop-leader);stroke-width:1;stroke-dasharray:2 3;opacity:.7}
.arch-lab .arch-hop-svg text.arch-hop-tick{fill:var(--arch-hop-ink);font-size:12px;font-variant-numeric:tabular-nums}
.arch-lab .arch-hop-svg text.arch-hop-zone{font-size:12.5px;font-weight:700}
.arch-lab .arch-hop-svg text.arch-hop-zone-home{fill:var(--arch-hop-home-ink)}
.arch-lab .arch-hop-svg text.arch-hop-zone-goal{fill:var(--arch-hop-goal-ink)}
.arch-lab .arch-hop-counters{padding:0 8px 4px}
.arch-lab .arch-hop-controls{display:grid;gap:8px;min-width:0}
.arch-lab .arch-hop-q{margin:0}
.arch-lab .arch-hop-picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:6px;min-width:0}
.arch-lab .arch-hop-picks .arch-hop-pick{display:grid;justify-items:center;gap:0;padding:4px 2px;border-radius:12px;min-height:52px;line-height:1.15}
.arch-lab .arch-hop-pick-no{font-weight:700;font-size:17px}
.arch-lab .arch-hop-pick-at{font-size:13px;color:var(--arch-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.arch-lab .arch-hop-picks .arch-hop-pick[aria-pressed=true]{background:var(--arch-pressed-bg);border:2px solid var(--arch-focus)}
.arch-lab .arch-hop-picks .arch-hop-pick[aria-pressed=true] .arch-hop-pick-at{color:var(--arch-ink)}
.arch-lab .arch-hop-steps{display:grid;grid-template-columns:repeat(6,minmax(44px,1fr));gap:6px;min-width:0}
.arch-lab .arch-hop-steps .arch-hop-step{padding:6px 2px;border-radius:12px;font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab .arch-hop-msg{margin:0;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-hop-msg:empty{display:none}
.arch-lab .arch-hop-result p{margin:4px 0}
.arch-lab .arch-hop-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;margin:0}
.arch-lab .arch-hop-repeatrow{display:flex;flex-wrap:wrap;gap:8px 16px;min-width:0}
.arch-lab .arch-hop-stepper{display:grid;gap:4px;min-width:0}
.arch-lab .arch-hop-steplabel{font-size:14px}
.arch-lab .arch-hop-kbox{display:flex;gap:6px;align-items:center}
.arch-lab .arch-hop-pm{width:44px;min-width:44px;height:44px;padding:0;font-size:22px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab input.arch-hop-num{box-sizing:border-box;width:72px;min-height:44px;padding:6px 8px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}
.arch-lab .arch-hop-unit:empty{display:none}
.arch-lab .arch-hop-repeat{justify-self:start}
.arch-lab .arch-hop-sumbox{display:grid;gap:10px;min-width:0}
.arch-lab .arch-hop-sumbox[hidden]{display:none}
.arch-lab .arch-hop-ledger-head{margin:0;font-size:15px}
.arch-lab .arch-hop-ledger{font-size:15px;list-style:none;padding-left:0}
.arch-lab .arch-hop-chartbox{padding:4px}
.arch-lab .arch-hop-chart{display:block;width:100%;height:auto}
.arch-lab .arch-hop-chart .arch-hop-chart-bg{fill:var(--arch-hop-chart-bg)}
.arch-lab .arch-hop-chart .arch-hop-band-home{fill:var(--arch-hop-band-home)}
.arch-lab .arch-hop-chart .arch-hop-band-away{fill:var(--arch-hop-band-away)}
.arch-lab .arch-hop-chart .arch-hop-axis{fill:none;stroke:var(--arch-hop-axis);stroke-width:1.2}
.arch-lab .arch-hop-chart text.arch-hop-chart-text{fill:var(--arch-hop-axis);font-size:12px;font-variant-numeric:tabular-nums}
.arch-lab .arch-hop-chart text.arch-hop-chart-label{font-size:12.5px;font-weight:700;paint-order:stroke;stroke:var(--arch-hop-chart-bg);stroke-width:4px;stroke-linejoin:round}
.arch-lab .arch-hop-chart .arch-hop-need{fill:none;stroke:var(--arch-hop-need);stroke-width:1.6;stroke-dasharray:6 4}
.arch-lab .arch-hop-chart text.arch-hop-need-text{fill:var(--arch-hop-need)}
.arch-lab .arch-hop-chart .arch-hop-ceil{fill:none;stroke:var(--arch-hop-ceil);stroke-width:1.6;stroke-dasharray:2 3}
.arch-lab .arch-hop-chart text.arch-hop-ceil-text{fill:var(--arch-hop-ceil)}
.arch-lab .arch-hop-chart .arch-hop-sumline{fill:none;stroke:var(--arch-hop-sum);stroke-width:2;stroke-linejoin:round}
.arch-lab .arch-hop-chart .arch-hop-sumdot{fill:var(--arch-hop-sum)}
.arch-lab .arch-hop-chart .arch-hop-xline{fill:none;stroke:var(--arch-hop-x);stroke-width:1.4}
.arch-lab .arch-hop-chart text.arch-hop-x-text{fill:var(--arch-hop-x)}
.arch-lab .arch-hop-proof[hidden]{display:none}
.arch-lab .arch-hop-guide{display:grid;gap:8px}
.arch-lab .arch-hop-guide[hidden]{display:none}
.arch-lab .arch-hop-long[hidden]{display:none}
.arch-lab .arch-hop-guide-text{margin:0;font-weight:600;color:var(--arch-label)}
@media (max-width:480px){.arch-lab .arch-hop-picks{grid-template-columns:repeat(5,minmax(44px,1fr))}.arch-lab .arch-hop-steps{gap:4px}.arch-lab .arch-hop-steps .arch-hop-step{font-size:17px}}

/* SPb 2022/23, grade 7 (= grade 8), problem 2 — «Собери свой класс» (labs/s23-7-2-lineups.mjs). The lineup is a grid of
   buttons, one per child (the place in the current lineup, the marks «Ч» / «О», the child of visuals/art/sign-kid.mjs
   with the placard, the name, the value the lineup is sorted by), wrapped like lines of a book; the placard editor is a
   full-width row right under the selected child's line, with a small arrow pointing at his column. Own colours: the
   hero's tile, the two marks — light theme and both dark branches; everything else goes through --arch-* tokens. */
.arch-lab .arch-s272{--s272-hero-bg:#fef3c7;--s272-hero-line:#d97706;--s272-hero-ink:#92400e;--s272-num:#1d4ed8;--s272-rec:#c2410c}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s272{--s272-hero-bg:#3b2a0c;--s272-hero-line:#fbbf24;--s272-hero-ink:#fde68a;--s272-num:#2563eb;--s272-rec:#ea580c}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s272{--s272-hero-bg:#3b2a0c;--s272-hero-line:#fbbf24;--s272-hero-ink:#fde68a;--s272-num:#2563eb;--s272-rec:#ea580c}
.arch-lab .arch-s272-predict{border-top:0;padding-top:0}
.arch-lab .arch-s272-predict p{margin:0}
.arch-lab .arch-s272-variant-note{margin:0;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s272-stage{padding:8px 6px}
.arch-lab .arch-s272-dir{margin:0 4px 2px;font-size:14px;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s272-pick{margin:0 4px 8px;font-size:13px;color:var(--arch-muted)}
/* the lineup */
.arch-lab .arch-s272-grid{--per:5;display:grid;grid-template-columns:repeat(var(--per),minmax(0,1fr));gap:8px 4px;min-width:0}
.arch-lab .arch-s272-kid{display:flex;flex-direction:column;align-items:stretch;gap:1px;min-width:44px;min-height:44px;width:100%;padding:3px 2px 5px;margin:0;
 border:1px solid transparent;border-radius:12px;background:transparent;color:var(--arch-ink);cursor:pointer;line-height:1.15;-webkit-tap-highlight-color:transparent}
@media (hover:hover){.arch-lab .arch-s272-kid:hover{border-color:var(--arch-soft-line);background:var(--arch-pressed-bg)}}
.arch-lab .arch-s272-kid:focus-visible{outline:3px solid var(--arch-focus);outline-offset:1px}
.arch-lab .arch-s272-hero{background:var(--s272-hero-bg);border-color:var(--s272-hero-line)}
.arch-lab .arch-s272-kid[aria-pressed=true]{border:2px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);box-shadow:0 0 0 1px var(--arch-pressed-line)}
.arch-lab .arch-s272-hero[aria-pressed=true]{background:var(--s272-hero-bg)}
.arch-lab .arch-s272-top{display:flex;justify-content:space-between;align-items:center;gap:2px;min-height:17px;padding:0 2px}
.arch-lab .arch-s272-place{font-size:12px;font-weight:700;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-s272-hero .arch-s272-place,.arch-lab .arch-s272-hero .arch-s272-name{color:var(--s272-hero-ink);font-weight:800}
.arch-lab .arch-s272-hero .arch-s272-place{font-size:13px}
.arch-lab .arch-s272-marks{display:flex;gap:2px}
.arch-lab .arch-s272-stage svg.arch-s272-fig{display:block;width:100%;max-width:70px;height:auto;margin:0 auto;overflow:visible;pointer-events:none}
.arch-lab .arch-s272-name{font-size:12px;text-align:center;color:var(--arch-muted);white-space:nowrap;overflow:hidden;text-overflow:clip}
.arch-lab .arch-s272-val{font-size:13px;font-weight:650;text-align:center;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;min-height:1.2em;color:var(--arch-ink)}
/* the marks of «Сравнить каждого с …» */
.arch-lab .arch-s272-mark{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:10.5px;font-weight:800;line-height:1;color:#fff;flex:none}
.arch-lab .arch-s272-mark-num{background:var(--s272-num)}
.arch-lab .arch-s272-mark-rec{background:var(--s272-rec)}
.arch-lab .arch-s272-legend{gap:6px 16px}
.arch-lab .arch-s272-legend[hidden]{display:none}
/* the placard editor under the selected child's line */
.arch-lab .arch-s272-editor{--col:0;grid-column:1/-1;position:relative;display:grid;gap:8px;margin:4px 0 6px;padding:10px 12px;border:2px solid var(--arch-pressed-line);border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);min-width:0}
.arch-lab .arch-s272-editor::before{content:'';position:absolute;top:-10px;left:calc((var(--col) + .5) / var(--per) * 100% - 9px);border:9px solid transparent;border-top:0;border-bottom:10px solid var(--arch-pressed-line)}
.arch-lab .arch-s272-editor p{margin:0}
.arch-lab .arch-s272-who{line-height:1.45}
.arch-lab .arch-s272-fieldrow input{flex:1 1 110px;width:auto;min-width:0;max-width:220px;box-sizing:border-box}
.arch-lab .arch-s272-edmsg{line-height:1.5}
.arch-lab .arch-s272-edmsg[hidden]{display:none}
/* readouts, result, panel */
.arch-lab .arch-s272-readouts{gap:4px 14px}
.arch-lab .arch-s272-readouts dd.arch-s272-sq{padding:0 6px;border-radius:6px;background:var(--arch-pressed-bg)}
.arch-lab .arch-s272-changed,.arch-lab .arch-s272-log{color:var(--arch-ink)}
.arch-lab .arch-s272-toggle[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s272-panel{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.55;min-width:0}
.arch-lab .arch-s272-panel[hidden]{display:none}
.arch-lab .arch-s272-panel p{margin:0}
.arch-lab .arch-s272-key-line{border-left:4px solid var(--arch-pressed-line);padding-left:10px}
.arch-lab .arch-s272-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (max-width:420px){.arch-lab .arch-s272-stage{padding:6px 3px}.arch-lab .arch-s272-grid{gap:6px 3px}.arch-lab .arch-s272-editor{padding:8px 10px}.arch-lab .arch-s272-panel{padding:10px}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Доска делителей» (SPb 2022/23, grade 7, problem 3).
   The school board (art/school-board.css) and the chalk (art/chalk.css) keep their fixed colours in both themes — it is a
   picture of a real board; the marks drawn on it here are chalk too, so they are fixed as well. The controls and the texts
   follow the site theme through the shared --arch-* variables; the legend keys are small pieces of the board. */
.arch-lab .arch-s2373-stage{padding:2px;border:0;background:none}
.arch-lab .arch-s2373-stage svg{display:block;width:100%;height:auto;max-height:none}
/* the pupil stands at the board in both themes: dark outlines as in the light theme */
.arch-lab .arch-s2373-kid .p25-o,.arch-lab .arch-s2373-kid .p25-o-thin{stroke:#1f2937}
.arch-lab svg text.arch-s2373-num-t{font-variant-numeric:tabular-nums}
.arch-lab svg .arch-s2373-under{fill:none;stroke:var(--spb-chalk-yellow,#fde047);stroke-width:2;stroke-linecap:round;opacity:.9}
.arch-lab svg .arch-s2373-gone{opacity:.16}
.arch-lab svg .arch-s2373-wipe{fill:none;stroke:#e8efe9;stroke-linecap:round;opacity:.09}
.arch-lab svg .arch-s2373-dot{fill:var(--spb-chalk-white,#f8fafc);stroke:none}
.arch-lab svg .arch-s2373-dash{fill:var(--spb-chalk-yellow,#fde047);stroke:none}
.arch-lab svg .arch-s2373-link{stroke:var(--spb-chalk-white,#f8fafc);stroke-width:1.2;opacity:.5}
.arch-lab svg .arch-s2373-frame{fill:none;stroke-width:2;stroke-linejoin:round;opacity:.95}
/* «два чётных» — pink, «два нечётных» — blue; the lone middle divisor of a square is dashed in the colour of its parity */
.arch-lab svg .arch-s2373-frame-even{stroke:var(--spb-chalk-pink,#fbcfe8)}
.arch-lab svg .arch-s2373-frame-odd{stroke:var(--spb-chalk-blue,#bae6fd)}
.arch-lab svg .arch-s2373-frame-middle{stroke-dasharray:5 3}
/* the number */
.arch-lab .arch-s2373-n{margin:0;font-size:19px;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;line-height:1.4}
/* the six chips: two in a row on a phone (the lab is 280–310 px there), three in a row on a wide screen; in a very narrow
   lab (240 px at a 320 px screen) the label goes above «−» and «+», so that two chips still fit in a row */
.arch-lab .arch-s2373-number{container:s2373num/inline-size}
.arch-lab .arch-s2373-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;min-width:0}
.arch-lab .arch-s2373-chip{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:3px;padding:2px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
@container s2373num (min-width:420px){.arch-lab .arch-s2373-chips{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container s2373num (max-width:271.98px){
 .arch-lab .arch-s2373-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
 .arch-lab .arch-s2373-chip{grid-template-columns:44px 44px;grid-template-areas:'l l' 'm p';justify-content:center;row-gap:0;padding:2px 4px 4px}
 .arch-lab .arch-s2373-chip>:first-child{grid-area:m}
 .arch-lab .arch-s2373-chip>.arch-s2373-chip-label{grid-area:l;line-height:1.4}
 .arch-lab .arch-s2373-chip>:last-child{grid-area:p}
}
.arch-lab .arch-s2373-chip-label{text-align:center;font-size:18px;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums}
/* a prime that is not in N: its label is muted and the chip is dashed */
.arch-lab .arch-s2373-chip-off{border-style:dashed}
.arch-lab .arch-s2373-chip-off .arch-s2373-chip-label{color:var(--arch-muted);font-weight:500}
.arch-lab .arch-s2373-chips-help{margin-top:-4px}
.arch-lab .arch-s2373-step{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;font-size:22px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab .arch-s2373-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.arch-lab .arch-s2373-field{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
.arch-lab .arch-s2373-what{color:var(--arch-ink)}
/* «−», the field and «+» of one erasure stay together on a narrow screen */
.arch-lab .arch-s2373-stepper{display:inline-flex;flex-wrap:nowrap;gap:6px;align-items:center}
.arch-lab .arch-s2373-range{font-size:14px;color:var(--arch-muted)}
.arch-lab input.arch-s2373-num{box-sizing:border-box;width:64px;min-height:44px;padding:6px 4px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}
.arch-lab input.arch-s2373-nfield{width:176px;max-width:100%}
.arch-lab .arch-s2373-msg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s2373-msg:empty{display:none}
.arch-lab .arch-s2373-change{margin:0;color:var(--arch-label)}
.arch-lab .arch-s2373-viewrow .arch-toggle{flex:1 1 auto}
/* the legend: tiny pieces of the board */
/* the count of the erasure on the board, right under it */
.arch-lab .arch-s2373-boardcount{margin:-6px 0 0;font-size:16px;font-weight:600;line-height:1.4;color:var(--arch-ink)}
.arch-lab .arch-s2373-legend{margin-top:-6px;gap:4px 12px}
.arch-lab .arch-s2373-key{display:inline-flex;align-items:center;justify-content:center;min-width:2.2em;padding:1px 6px;border-radius:5px;background:#2d5b48;color:#f8fafc;font-weight:700;font-size:14px;line-height:1.5;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2373-key-even{color:#fde047;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.arch-lab .arch-s2373-key-mark{color:#fde047}
.arch-lab .arch-s2373-key-gone{color:rgba(248,250,252,.3)}
.arch-lab .arch-s2373-key-frame{color:#fde047;box-shadow:inset 0 0 0 2px #fbcfe8;white-space:nowrap}
.arch-lab .arch-s2373-key-frame-odd{color:#f8fafc;box-shadow:inset 0 0 0 2px #bae6fd}
.arch-lab .arch-s2373-key-mid{color:#fde047;outline:2px dashed #fbcfe8;outline-offset:-3px}
.arch-lab .arch-s2373-key-mid-odd{color:#f8fafc;outline-color:#bae6fd}
.arch-lab .arch-s2373-legend-note{color:var(--arch-muted)}
/* every erasure of this number */
.arch-lab .arch-s2373-scan-row{list-style:none;margin:6px 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.arch-lab .arch-s2373-scan-row li{display:inline-flex;flex-direction:column;align-items:center;min-width:3.6em;padding:3px 6px;border-radius:10px;border:1px solid var(--arch-soft-line);font-size:14px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2373-scan-a{font-weight:700;color:var(--arch-label)}
.arch-lab .arch-s2373-scan-a::before{content:'a = '}
.arch-lab .arch-s2373-yes{background:var(--arch-ok-bg);color:var(--arch-good)}
.arch-lab .arch-s2373-no{color:var(--arch-muted)}
.arch-lab .arch-s2373-scan[hidden],.arch-lab .arch-s2373-pairs[hidden]{display:none}
.arch-lab .arch-s2373-found{display:grid;gap:6px}
.arch-lab .arch-s2373-found:empty{display:none}
.arch-lab .arch-s2373-found p{margin:0}
.arch-lab .arch-s2373-log{margin:0;padding-left:22px;overflow-wrap:anywhere;color:var(--arch-ink)}
.arch-lab .arch-s2373-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* SPb 2022/23, grade 7, problem 4 — «Диагонали в тетради» (labs/s23-7-4-diagonals.mjs). The board is an SVG page of a
   squared exercise book (visuals/art/squared-paper.mjs, colours in art/squared-paper.css) under a grid of transparent
   buttons, one per cell. The page stays paper-light in both themes, so the ink drawn on it (board lines, diagonals,
   rings of the nodes, labels) keeps fixed dark colours; the dark branches only dim the paper a little (as the art file
   does). Everything outside the board goes through --arch-* tokens. */
.arch-lab .arch-s2374{--arch-s2374-ink:#1e3a8a;--arch-s2374-bad:#dc2626;--arch-s2374-frame:#1f2937;--arch-s2374-line:#8aa0bd;--arch-s2374-label:#334155;--arch-s2374-gap:#64748b;--arch-s2374-dot:#047857;--arch-s2374-add:#059669;--arch-s2374-num-bg:#ffffff;--arch-s2374-num-line:#64748b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2374{--arch-s2374-num-bg:#f8f7f0}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2374{--arch-s2374-num-bg:#f8f7f0}
.arch-lab .arch-s2374-predict{border-top:0;padding-top:0}
.arch-lab .arch-s2374-question{margin:0;color:var(--arch-ink)}
.arch-lab .arch-s2374-variant-note{margin:0;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s2374-tools{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.arch-lab .arch-s2374-tools-label{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2374-tool{font-size:18px}
.arch-lab .arch-s2374-stage{padding:6px;transition:border-color .3s}
.arch-lab .arch-s2374-stage.arch-s2374-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
/* the board: the SVG page fills the square field; the buttons cover exactly the cells (inset set by the lab) */
.arch-lab .arch-s2374-board{--n:9;width:min(100%,560px);margin:auto}
.arch-lab .arch-zoomed .arch-s2374-board{width:var(--zw);max-width:none}
.arch-lab .arch-s2374-field{position:relative;aspect-ratio:1}
.arch-lab .arch-stage .arch-s2374-svg{position:absolute;inset:0;width:100%;height:100%;max-height:none;pointer-events:none}
.arch-lab .arch-s2374-cells{position:absolute;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr))}
.arch-lab .arch-s2374-cell{min-width:0;min-height:0;width:100%;height:100%;padding:0;margin:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
@media (hover:hover){.arch-lab .arch-s2374-cell:hover{background:rgba(37,99,235,.10)}}
.arch-lab .arch-s2374-cell:focus-visible{outline:4px solid var(--arch-focus);outline-offset:-4px;position:relative;z-index:2}
/* SVG layers (100 units per cell) */
.arch-lab .arch-s2374 .spb-sqp-grid{stroke-width:2}
.arch-lab .arch-s2374-gridline{fill:none;stroke:var(--arch-s2374-line);stroke-width:3}
.arch-lab .arch-s2374-frame{fill:none;stroke:var(--arch-s2374-frame);stroke-width:6}
.arch-lab .arch-s2374 svg text.arch-s2374-label{font-size:46px;font-weight:600;fill:var(--arch-s2374-label);stroke:none}
.arch-lab .arch-s2374-diag{stroke:var(--arch-s2374-ink);stroke-width:8;stroke-linecap:round}
.arch-lab .arch-s2374-diag-bad{stroke:var(--arch-s2374-bad);stroke-width:10}
.arch-lab .arch-s2374-ghost{stroke:var(--arch-s2374-ink);stroke-width:6;stroke-linecap:round;stroke-dasharray:14 12;opacity:.7}
.arch-lab .arch-s2374-erase{stroke:#ffffff;stroke-width:4;stroke-dasharray:10 12}
.arch-lab .arch-s2374-gap{stroke:var(--arch-s2374-gap);stroke-width:4;stroke-dasharray:12 12;stroke-linecap:round}
.arch-lab .arch-s2374-addable{stroke:var(--arch-s2374-add);stroke-width:7;stroke-dasharray:16 12;stroke-linecap:round}
.arch-lab .arch-s2374-dot{fill:var(--arch-s2374-dot);stroke:#ffffff;stroke-width:3}
.arch-lab .arch-s2374-num circle{fill:var(--arch-s2374-num-bg);stroke:var(--arch-s2374-num-line);stroke-width:3}
.arch-lab .arch-s2374 svg .arch-s2374-num text{font-size:32px;font-weight:700;fill:var(--arch-s2374-frame);stroke:none}
.arch-lab .arch-s2374-badnode circle{fill:var(--arch-s2374-bad);stroke:#ffffff;stroke-width:4}
.arch-lab .arch-s2374 svg .arch-s2374-badnode text{font-size:38px;font-weight:800;fill:#ffffff;stroke:none}
/* legend keys */
.arch-lab .arch-s2374-key{flex:none}
.arch-lab .arch-s2374-key-paper{fill:var(--spb-sqp-paper);stroke:var(--arch-s2374-line);stroke-width:1}
.arch-lab .arch-s2374-key-diag{stroke:var(--arch-s2374-ink);stroke-width:2.6;stroke-linecap:round}
.arch-lab .arch-s2374-key-bad{fill:var(--arch-s2374-bad)}
.arch-lab .arch-s2374 svg text.arch-s2374-key-four{font-size:13px;font-weight:800;fill:#ffffff;stroke:none}
.arch-lab .arch-s2374-view[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
/* the result stands right under the board (one frame with it on phones), so it is kept compact */
.arch-lab .arch-s2374-result{padding:10px 14px}
.arch-lab .arch-s2374-result .arch-readouts{gap:2px 14px}
.arch-lab .arch-s2374-result p{margin:4px 0}
.arch-lab .arch-s2374-note{margin:4px 0}
/* the explanation: a small copy of the student's board beside the first parts of the text (above it on phones) */
.arch-lab .arch-s2374-explain{display:grid;gap:12px;color:var(--arch-ink);line-height:1.55;min-width:0}
.arch-lab .arch-s2374-explain p{margin:0}
.arch-lab .arch-s2374-pair{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:start}
.arch-lab .arch-s2374-pair-text{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2374-mini{margin:0;width:min(100%,260px);justify-self:center;display:grid;gap:4px}
.arch-lab .arch-s2374-mini svg{display:block;width:100%;height:auto}
.arch-lab .arch-s2374-mini figcaption{font-size:14px;line-height:1.4;color:var(--arch-muted)}
@media (min-width:600px){.arch-lab .arch-s2374-pair{grid-template-columns:240px minmax(0,1fr);gap:16px}.arch-lab .arch-s2374-mini{width:240px}}
.arch-lab .arch-s2374-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-s2374-stage{transition:none}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s23-8-1-weights (SPb 2022/23, 8 класс, №1).
   Only own classes; colours through --arch-* (both themes), the kettlebells of visuals/art/kettlebell.css and the beam
   balance of visuals/art/beam-balance.css. */
.arch-lab{--arch-s2381-a:#1d4ed8;--arch-s2381-b:#b4401f}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s2381-a:#93c5fd;--arch-s2381-b:#fdba74}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s2381-a:#93c5fd;--arch-s2381-b:#fdba74}
.arch-lab .arch-s2381-head{display:grid;gap:6px}
.arch-lab .arch-s2381-variant{margin:0}
.arch-lab .arch-s2381-goal{margin:0;line-height:1.55;color:var(--arch-ink)}
.arch-lab .arch-s2381-label{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab svg text.arch-s2381-t{font-size:14px;fill:var(--arch-ink);stroke:none;font-weight:600}
.arch-lab svg text.arch-s2381-t-a{fill:var(--arch-s2381-a)}
.arch-lab svg text.arch-s2381-t-b{fill:var(--arch-s2381-b)}
.arch-lab svg text.arch-s2381-sum{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s2381-tag{font-size:12px;fill:var(--arch-muted);stroke:none}
.arch-lab svg text.arch-s2381-tag-sel{fill:var(--arch-ink);font-weight:700}
.arch-lab .arch-s2381-editor{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2381-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:6px 8px;min-width:0}
.arch-lab .arch-s2381-cell{display:grid;gap:2px;min-width:0}
.arch-lab .arch-s2381-cell label{font-size:13px;font-weight:600}
.arch-lab input.arch-s2381-num{width:100%;box-sizing:border-box;min-height:44px;padding:6px 4px;text-align:center;font-variant-numeric:tabular-nums;font-size:17px}
.arch-lab input.arch-s2381-num-sel{border:2px solid var(--spb-bell-ring)}
.arch-lab input.arch-s2381-num-dup{color:var(--arch-bad);font-weight:700}
.arch-lab .arch-s2381-selrow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.arch-lab .arch-s2381-selname{min-width:5.5em;color:var(--arch-ink)}
.arch-lab .arch-s2381-step{border-radius:12px;font-weight:600;font-variant-numeric:tabular-nums;padding:8px 12px}
.arch-lab .phx-param-msg.arch-s2381-ok{color:var(--arch-good)}
.arch-lab .arch-s2381-result p{margin:4px 0}
.arch-lab .arch-s2381-tally{color:var(--arch-muted);font-size:15px}
.arch-lab .arch-s2381-log{display:grid;gap:6px;min-width:0}
.arch-lab table.arch-s2381-table{width:100%;table-layout:fixed}
.arch-lab table.arch-s2381-table th{font-size:12.5px;line-height:1.25;padding:4px 3px;vertical-align:bottom}
.arch-lab table.arch-s2381-table td{padding:4px 3px}
.arch-lab table.arch-s2381-table th:first-child,.arch-lab table.arch-s2381-table td:first-child{width:2.2em}
.arch-lab .arch-s2381-why{background:var(--arch-surface);color:var(--arch-ink);border:1px solid var(--arch-soft-line);border-radius:14px;padding:10px 16px;line-height:1.55}
.arch-lab .arch-s2381-why p{margin:6px 0}
.arch-lab .arch-s2381-whybtn{justify-self:start}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2022/23, 8 класс, задача 3 «Точка внутри угла».
   Triangular dot paper (stays light in both themes, like the exercise books of this package, so the ink keeps fixed
   colours), the figure of the statement, the sought segment (violet), the student's lines (blue, dashed), new points
   (blue), measured segments (orange), the equilateral triangle of the example (green). */
.arch-lab .arch-s2383{--s2383-paper:#fffef8;--s2383-dot:#9aa7b8;--s2383-ink:#1f2937;--s2383-thin:#64748b;--s2383-target:#7c3aed;
 --s2383-own:#1d4ed8;--s2383-measure:rgba(234,88,12,.55);--s2383-tri:rgba(16,185,129,.2);--s2383-sel:#d97706;--s2383-warn:#b45309}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2383{--s2383-paper:#eceae0;--s2383-dot:#7f8b9d;--s2383-warn:#fbbf24}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2383{--s2383-paper:#eceae0;--s2383-dot:#7f8b9d;--s2383-warn:#fbbf24}
.arch-lab .arch-s2383-stage{padding:8px}
.arch-lab .arch-s2383-svg{display:block;max-width:100%;height:auto;margin:0 auto;cursor:pointer}
.arch-lab .arch-s2383-frame{display:grid;gap:10px}
.arch-lab .arch-s2383-frame>*{margin:0}
.arch-lab .arch-s2383-prompt{margin:0;font-size:15px;color:var(--arch-ink);min-height:1.5em}
.arch-lab .arch-s2383-tools{display:grid;gap:6px}
.arch-lab .arch-s2383-tools>p{margin:0}
.arch-lab .arch-s2383-chips{display:flex;flex-wrap:wrap;gap:6px}
.arch-lab .arch-s2383-chip{min-width:48px;font-weight:600}
.arch-lab .arch-s2383-chip[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:0 0 0 2px var(--s2383-sel) inset}
.arch-lab .arch-s2383-paper{fill:var(--s2383-paper);stroke:var(--arch-soft-line)}
.arch-lab .arch-s2383-dots{stroke:var(--s2383-dot);stroke-linecap:round;fill:none}
.arch-lab .arch-s2383-ray{stroke:var(--s2383-ink);stroke-width:1.6}
.arch-lab .arch-s2383-edge{stroke:var(--s2383-ink);stroke-width:2.6;stroke-linecap:round}
.arch-lab .arch-s2383-thin{stroke:var(--s2383-thin);stroke-width:1.6}
.arch-lab .arch-s2383-tick{stroke:var(--s2383-ink);stroke-width:1.8}
.arch-lab .arch-s2383-arc{fill:none;stroke:var(--s2383-ink);stroke-width:1.5}
.arch-lab .arch-s2383-target{stroke:var(--s2383-target);stroke-width:4;stroke-linecap:round}
.arch-lab .arch-s2383-own{stroke:var(--s2383-own);stroke-width:2;stroke-dasharray:7 5}
.arch-lab .arch-s2383-measure{stroke:var(--s2383-measure);stroke-width:7;stroke-linecap:round}
.arch-lab .arch-s2383-tri{fill:var(--s2383-tri);stroke:none}
.arch-lab .arch-s2383-dot{fill:var(--s2383-ink);stroke:var(--s2383-paper);stroke-width:1.5}
.arch-lab .arch-s2383-dot-own{fill:var(--s2383-own)}
.arch-lab .arch-s2383-sel{fill:none;stroke:var(--s2383-sel);stroke-width:2.5}
.arch-lab .arch-s2383-svg text.arch-s2383-label{fill:var(--s2383-ink);font-weight:700;stroke:var(--s2383-paper);stroke-width:4px;paint-order:stroke;stroke-linejoin:round}
.arch-lab .arch-s2383-svg text.arch-s2383-label-own{fill:var(--s2383-own)}
.arch-lab .arch-s2383-measures p,.arch-lab .arch-s2383-data p{margin:0}
.arch-lab .arch-s2383-list{margin:0;padding-left:1.2em;display:grid;gap:4px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2383-mname{font-weight:600}
.arch-lab .arch-s2383-mval{font-weight:600;white-space:nowrap}
.arch-lab .arch-s2383-drows{display:flex;flex-wrap:wrap;gap:8px 18px}
.arch-lab .arch-s2383-drow{display:flex;align-items:center;gap:6px}
.arch-lab .arch-s2383-dname{min-width:4.6em;font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2383-step{min-width:48px;font-size:20px;line-height:1}
.arch-lab .arch-s2383-warn{color:var(--s2383-warn)}

/* SPb 2022/23, grade 8, problem 4 — «Штамп для большой доски» (labs/s23-8-4-stamp.mjs). The board is drawn on a page of
   a squared exercise book (visuals/art/squared-paper.mjs, colours in art/squared-paper.css); the page stays paper-light
   in both themes, so the ink on it (lines, diagonals, rings of the nodes, labels) keeps fixed dark colours. The stamp
   cells are buttons with the same paper. Everything outside the paper goes through --arch-* tokens. */
.arch-lab .arch-s2384{--arch-s2384-ink:#1e3a8a;--arch-s2384-bad:#dc2626;--arch-s2384-frame:#1f2937;--arch-s2384-line:#8aa0bd;--arch-s2384-label:#334155;
 --arch-s2384-print:#b45309;--arch-s2384-empty:#fde68a;--arch-s2384-lack:#c2410c;--arch-s2384-num-bg:#ffffff;--arch-s2384-num-line:#64748b;--arch-s2384-paper:#fffef8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2384{--arch-s2384-num-bg:#f8f7f0;--arch-s2384-paper:#eceae0}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2384{--arch-s2384-num-bg:#f8f7f0;--arch-s2384-paper:#eceae0}
.arch-lab .arch-s2384-first{border-top:0;padding-top:0}
.arch-lab .arch-s2384-text{margin:0;color:var(--arch-ink)}
.arch-lab .arch-s2384-small{font-size:15px}
.arch-lab .arch-s2384-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* the stamp: picture + size switch, then the editor of p × p cells (each 52 px) */
.arch-lab .arch-s2384-stamprow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.arch-lab .arch-s2384-art{width:76px;height:auto;flex:0 0 auto}
.arch-lab .arch-s2384-stampcol{display:grid;gap:6px;min-width:0;flex:1 1 180px}
.arch-lab .arch-s2384-sizes-label{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2384-stamp{--p:2;display:grid;grid-template-columns:repeat(var(--p),52px);gap:4px;padding:6px;width:max-content;max-width:100%;
 background:#3f3f46;border-radius:10px}
.arch-lab .arch-s2384-scell{width:52px;height:52px;min-width:0;min-height:0;padding:0;margin:0;border:0;border-radius:6px;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.arch-lab .arch-s2384-scell svg{display:block;width:100%;height:100%}
.arch-lab .arch-s2384-scell:focus-visible{outline:4px solid var(--arch-focus);outline-offset:1px}
.arch-lab .arch-s2384-scell-bg{fill:var(--arch-s2384-paper);stroke:none}
.arch-lab .arch-s2384-scell-bg.arch-s2384-scell-empty{fill:var(--arch-s2384-empty)}
.arch-lab .arch-s2384-sdiag{stroke:var(--arch-s2384-ink);stroke-width:9;stroke-linecap:round}
@media (hover:hover){.arch-lab .arch-s2384-scell:hover .arch-s2384-scell-bg{fill:#dbeafe}}
/* the board(s) */
.arch-lab .arch-s2384-stage{padding:6px;transition:border-color .3s}
.arch-lab .arch-s2384-stage.arch-s2384-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
.arch-lab .arch-s2384-boards{display:grid;gap:10px;grid-template-columns:minmax(0,1fr);justify-items:center}
.arch-lab .arch-s2384-boards.arch-s2384-two{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.arch-lab .arch-s2384-fig{margin:0;width:100%;max-width:440px;min-width:0}
.arch-lab .arch-s2384-fig figcaption{font-size:14px;color:var(--arch-muted);text-align:center;margin-top:4px}
.arch-lab .arch-stage .arch-s2384-svg{display:block;width:100%;height:auto;max-height:none}
.arch-lab .arch-s2384 .spb-sqp-grid{stroke-width:2}
.arch-lab .arch-s2384-gridline{fill:none;stroke:var(--arch-s2384-line);stroke-width:3}
.arch-lab .arch-s2384-print{fill:none;stroke:var(--arch-s2384-print);stroke-width:4;stroke-dasharray:14 10}
.arch-lab .arch-s2384-edge{fill:none;stroke:var(--arch-s2384-frame);stroke-width:7;stroke-linecap:square}
.arch-lab .arch-s2384-empty{fill:var(--arch-s2384-empty);stroke:none}
.arch-lab .arch-s2384 svg text.arch-s2384-label{font-size:36px;font-weight:600;fill:var(--arch-s2384-label);stroke:none}
.arch-lab .arch-s2384-diag{stroke:var(--arch-s2384-ink);stroke-width:7;stroke-linecap:round}
.arch-lab .arch-s2384-diag-bad{stroke:var(--arch-s2384-bad);stroke-width:9}
.arch-lab .arch-s2384-num circle{fill:var(--arch-s2384-num-bg);stroke:var(--arch-s2384-num-line);stroke-width:3}
.arch-lab .arch-s2384 svg .arch-s2384-num text{font-size:32px;font-weight:700;fill:var(--arch-s2384-frame);stroke:none}
.arch-lab .arch-s2384-lack circle{stroke:var(--arch-s2384-lack);stroke-width:7}
.arch-lab .arch-s2384-badnode circle{fill:var(--arch-s2384-bad);stroke:#ffffff;stroke-width:4}
.arch-lab .arch-s2384 svg .arch-s2384-badnode text{font-size:34px;font-weight:800;fill:#ffffff;stroke:none}
.arch-lab .arch-s2384-note{margin-top:8px}
/* long numbers of the big board: the value may wrap after «из», the label never shrinks */
.arch-lab .arch-s2384-result .arch-readouts dt{flex:none}
.arch-lab .arch-s2384-result .arch-readouts dd{white-space:normal}
.arch-lab .arch-s2384-explain{display:grid;gap:4px;color:var(--arch-ink);line-height:1.55;overflow-wrap:anywhere}
.arch-lab .arch-s2384-explain p{margin:4px 0}
.arch-lab .arch-s2384-formula{display:block;margin:6px 0;font-variant-numeric:tabular-nums;font-weight:600;text-align:center}
/* legend keys */
.arch-lab .arch-s2384-key{flex:0 0 auto}
.arch-lab .arch-s2384-key-paper{fill:var(--arch-s2384-paper);stroke:var(--arch-s2384-line);stroke-width:1}
.arch-lab .arch-s2384-key-diag{stroke:var(--arch-s2384-ink);stroke-width:2.5;stroke-linecap:round}
.arch-lab .arch-s2384-key-bad{fill:var(--arch-s2384-bad);stroke:#ffffff;stroke-width:1.5}
.arch-lab .arch-s2384 svg text.arch-s2384-key-four{font-size:13px;font-weight:800;fill:#ffffff;stroke:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Стёртые края» (SPb 2022/23, grade 8, problem 5).
   The school board (art/school-board.css) and the chalk (art/chalk.css) keep their fixed colours in both themes — it is a
   picture of a real board; the marks, rings and frames drawn on it here are chalk too, so they are fixed as well. The
   controls and the texts follow the site theme through the shared --arch-* variables; the legend keys are small pieces of
   the board. */
.arch-lab .arch-s2385-stage{padding:2px;border:0;background:none}
.arch-lab .arch-s2385-stage svg{display:block;width:100%;height:auto;max-height:none}
.arch-lab .arch-s2385-kid .p25-o,.arch-lab .arch-s2385-kid .p25-o-thin{stroke:#1f2937}
.arch-lab svg text.arch-s2385-num-t{font-variant-numeric:tabular-nums}
.arch-lab svg .arch-s2385-under{fill:none;stroke:var(--spb-chalk-yellow,#fde047);stroke-width:2;stroke-linecap:round;opacity:.9}
.arch-lab svg .arch-s2385-gone{opacity:.16}
.arch-lab svg .arch-s2385-wipe{fill:none;stroke:#e8efe9;stroke-linecap:round;opacity:.09}
.arch-lab svg .arch-s2385-dot{fill:var(--spb-chalk-white,#f8fafc);stroke:none}
.arch-lab svg .arch-s2385-dash{fill:var(--spb-chalk-yellow,#fde047);stroke:none}
/* the doubles: a blue chalk ring around an odd divisor left, a pink chalk frame around its double (paler when erased) */
.arch-lab svg .arch-s2385-ring{fill:none;stroke:#7dd3fc;stroke-width:2}
.arch-lab svg .arch-s2385-ring-thin{stroke-width:1.3}
.arch-lab svg .arch-s2385-frame{fill:none;stroke:#f9a8d4;stroke-width:2.2;stroke-linejoin:round}
.arch-lab svg .arch-s2385-frame-thin{stroke-width:1.3}
.arch-lab svg .arch-s2385-frame-gone{stroke-dasharray:4 2.5;opacity:.75}
.arch-lab .arch-s2385-n{margin:0;font-size:19px;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;line-height:1.4}
/* the eight chips: two in a row on a phone, four in a row on a wide screen; in a very narrow lab the label goes above
   «−» and «+», so that two chips still fit in a row */
.arch-lab .arch-s2385-number{container:s2385num/inline-size}
.arch-lab .arch-s2385-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0}
.arch-lab .arch-s2385-chip{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:3px;padding:2px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
@container s2385num (min-width:560px){.arch-lab .arch-s2385-chips{grid-template-columns:repeat(4,minmax(0,1fr))}}
@container s2385num (max-width:271.98px){
 .arch-lab .arch-s2385-chip{grid-template-columns:44px 44px;grid-template-areas:'l l' 'm p';justify-content:center;row-gap:0;padding:2px 4px 4px}
 .arch-lab .arch-s2385-chip>:first-child{grid-area:m}
 .arch-lab .arch-s2385-chip>.arch-s2385-chip-label{grid-area:l;line-height:1.4}
 .arch-lab .arch-s2385-chip>:last-child{grid-area:p}
}
.arch-lab .arch-s2385-chip-label{text-align:center;font-size:18px;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2385-chip-off{border-style:dashed}
.arch-lab .arch-s2385-chip-off .arch-s2385-chip-label{color:var(--arch-muted);font-weight:500}
.arch-lab .arch-s2385-chips-help{margin-top:-4px}
.arch-lab .arch-s2385-step{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;font-size:22px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab .arch-s2385-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.arch-lab .arch-s2385-field{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
.arch-lab .arch-s2385-what{color:var(--arch-ink)}
.arch-lab .arch-s2385-stepper{display:inline-flex;flex-wrap:nowrap;gap:6px;align-items:center}
.arch-lab .arch-s2385-range{font-size:14px;color:var(--arch-muted)}
.arch-lab input.arch-s2385-num{box-sizing:border-box;width:72px;min-height:44px;padding:6px 4px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}
.arch-lab input.arch-s2385-nfield{width:176px;max-width:100%}
.arch-lab .arch-s2385-msg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s2385-msg:empty{display:none}
.arch-lab .arch-s2385-change{margin:0;color:var(--arch-label)}
/* the counts of the board, right under it */
.arch-lab .arch-s2385-boardcount{margin:-6px 0 0;display:grid;gap:2px}
.arch-lab .arch-s2385-boardcount p{margin:0;font-size:16px;font-weight:600;line-height:1.4;color:var(--arch-ink)}
.arch-lab .arch-s2385-boardcount p.arch-s2385-all{font-weight:500}
.arch-lab .arch-s2385-legend{margin-top:-6px;gap:4px 12px}
.arch-lab .arch-s2385-key{display:inline-flex;align-items:center;justify-content:center;min-width:2.2em;padding:1px 6px;border-radius:5px;background:#2d5b48;color:#f8fafc;font-weight:700;font-size:14px;line-height:1.5;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2385-key-even{color:#fde047;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.arch-lab .arch-s2385-key-mark{color:#fde047}
.arch-lab .arch-s2385-key-gone{color:rgba(248,250,252,.3)}
.arch-lab .arch-s2385-key-ring{border-radius:999px;box-shadow:inset 0 0 0 2px #7dd3fc}
.arch-lab .arch-s2385-key-frame{color:#fde047;box-shadow:inset 0 0 0 2px #f9a8d4}
.arch-lab .arch-s2385-legend-note{color:var(--arch-muted)}
.arch-lab .arch-s2385-dbl[hidden]{display:none}
.arch-lab .arch-s2385-pairs{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2385-found{display:grid;gap:6px}
.arch-lab .arch-s2385-found:empty{display:none}
.arch-lab .arch-s2385-found p{margin:0}
.arch-lab .arch-s2385-log{margin:0;padding-left:22px;overflow-wrap:anywhere;color:var(--arch-ink)}
.arch-lab .arch-s2385-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Цены с вычеркнутыми цифрами» (SPb 2023/24, 6 класс, №1).
   Price tags and the receipt are paper that stays light in both themes (fixed dark ink); the rest follows the --arch-*
   colours of lab.css. The goods are drawn by visuals/art/shop-goods.mjs (colours in art/shop-goods.css). */
.arch-lab{--arch-s24-6-1-tag:#fff4c7;--arch-s24-6-1-tag-edge:#c9a227;--arch-s24-6-1-cell:#fffdf7;--arch-s24-6-1-cell-edge:#c9b98f;
 --arch-s24-6-1-paper:#fffef8;--arch-s24-6-1-paper-edge:#d6d3c4;--arch-s24-6-1-awning:#e4572e;--arch-s24-6-1-awning2:#ffffff;--arch-s24-6-1-cell-size:46px}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s24-6-1-tag:#efe3b0;--arch-s24-6-1-tag-edge:#a8862a;--arch-s24-6-1-cell:#f3efe2;--arch-s24-6-1-cell-edge:#8f8466;--arch-s24-6-1-paper:#eceae0;--arch-s24-6-1-paper-edge:#8f8a74;--arch-s24-6-1-awning:#c9461f;--arch-s24-6-1-awning2:#e9edf5}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s24-6-1-tag:#efe3b0;--arch-s24-6-1-tag-edge:#a8862a;--arch-s24-6-1-cell:#f3efe2;--arch-s24-6-1-cell-edge:#8f8466;--arch-s24-6-1-paper:#eceae0;--arch-s24-6-1-paper-edge:#8f8a74;--arch-s24-6-1-awning:#c9461f;--arch-s24-6-1-awning2:#e9edf5}
.arch-lab .arch-s24-6-1-head{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-6-1-variant{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink);padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0}
.arch-lab .arch-s24-6-1-label{margin:0;font-weight:600;color:var(--arch-label)}
/* the shop: a striped awning over three goods; phones — one under another, wide labs — side by side. overflow:clip (not
   a scroll container: focus never shifts the shop sideways); nothing inside is wider than the shop */
.arch-lab .arch-s24-6-1-shop{min-width:0;padding:0 10px 12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);container-type:inline-size;overflow:hidden;overflow:clip}
.arch-lab .arch-s24-6-1-sign{position:relative;margin:0 -10px 10px;padding:24px 12px 8px;text-align:center;font-weight:700;font-size:16px;color:var(--arch-label);border-bottom:1px solid var(--arch-soft-line)}
.arch-lab .arch-s24-6-1-sign::before{content:'';position:absolute;left:0;right:0;top:0;height:14px;background:repeating-linear-gradient(90deg,var(--arch-s24-6-1-awning) 0 18px,var(--arch-s24-6-1-awning2) 18px 36px);border-bottom:1px solid var(--arch-fig-line);border-radius:0 0 6px 6px}
.arch-lab .arch-s24-6-1-goods{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
/* a good: phones — the picture beside the name, the price tag under both; wide labs — a column, everything centred */
.arch-lab .arch-s24-6-1-good{display:grid;grid-template-columns:64px minmax(0,1fr);grid-template-areas:"pic info" "price price";gap:6px 10px;align-items:center;padding:8px;border:1px solid var(--arch-soft-line);border-radius:12px;min-width:0}
.arch-lab svg.arch-s24-6-1-pic{grid-area:pic;display:block;width:64px;height:auto;overflow:visible}
.arch-lab .arch-s24-6-1-info{grid-area:info;display:grid;gap:2px;min-width:0;justify-items:start}
.arch-lab .arch-s24-6-1-pricebox{grid-area:price}
.arch-lab .arch-s24-6-1-gname{margin:0;font-weight:700;font-size:17px;color:var(--arch-ink)}
.arch-lab .arch-s24-6-1-grule{margin:0;font-size:13px;line-height:1.35;color:var(--arch-muted)}
/* the price tag: a paper label with a hole; digits are cards of fixed dark ink */
.arch-lab .arch-s24-6-1-tag{position:relative;display:flex;gap:6px;align-items:center;padding:5px 8px 5px 20px;margin-top:2px;background:var(--arch-s24-6-1-tag);border:1.5px solid var(--arch-s24-6-1-tag-edge);border-radius:6px 12px 12px 6px}
.arch-lab .arch-s24-6-1-tag::before{content:'';position:absolute;left:6px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:var(--arch-surface);border:1.5px solid var(--arch-s24-6-1-tag-edge)}
.arch-lab .arch-s24-6-1-digit{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--arch-s24-6-1-cell-size);min-width:var(--arch-s24-6-1-cell-size);height:50px;padding:0;border-radius:8px;border:1.5px solid var(--arch-s24-6-1-cell-edge);background:var(--arch-s24-6-1-cell);color:#1f2937;font:700 28px/1 ui-serif,Georgia,"Times New Roman",serif;font-variant-numeric:tabular-nums}
.arch-lab button.arch-s24-6-1-digit{min-height:50px;cursor:pointer}
.arch-lab .arch-s24-6-1-digit.arch-s24-6-1-unknown{color:#94a3b8;border-style:dashed;font-size:22px}
.arch-lab .arch-s24-6-1-digit.arch-s24-6-1-missing{background:transparent}
.arch-lab button.arch-s24-6-1-digit.arch-s24-6-1-sel{outline:3px solid var(--arch-focus);outline-offset:1px;transform:translateY(-2px);box-shadow:0 3px 0 rgba(15,23,42,.18)}
.arch-lab .arch-s24-6-1-digit.arch-s24-6-1-struck .arch-s24-6-1-d{color:#9aa3b2}
.arch-lab .arch-s24-6-1-digit.arch-s24-6-1-struck::after{content:'';position:absolute;left:5px;right:5px;top:50%;height:3.5px;margin-top:-1.75px;background:#dc2626;border-radius:2px;transform:rotate(-24deg)}
.arch-lab .arch-s24-6-1-rub{font:600 20px/1 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:#475569;padding-left:2px}
.arch-lab .arch-s24-6-1-xbox{display:grid;gap:2px;justify-items:start}
.arch-lab .arch-s24-6-1-xlabel{margin:2px 0 0;font-size:13px;color:var(--arch-muted)}
/* the «✗» buttons stand right under the digits: same width, same gap, shifted by the tag's left padding and border */
.arch-lab .arch-s24-6-1-pricebox{display:grid;gap:2px;justify-items:start;width:max-content;max-width:100%}
.arch-lab .arch-s24-6-1-xrow{display:flex;gap:6px;padding-left:21.5px}
.arch-lab button.arch-s24-6-1-x{box-sizing:border-box;width:var(--arch-s24-6-1-cell-size);min-width:var(--arch-s24-6-1-cell-size);padding:0;border-radius:10px;font-size:18px;font-weight:700;color:var(--arch-bad)}
.arch-lab button.arch-s24-6-1-x[aria-pressed=true]{background:var(--arch-bad-bg);border-color:var(--arch-bad);box-shadow:inset 0 0 0 1px var(--arch-bad)}
/* the keypad: as many keys of at least 44 px in a row as fit (4 at a 240 px lab, 5 at 280, 6 at 310), ten when the lab is wide */
.arch-lab .arch-s24-6-1-keys{display:grid;gap:6px;min-width:0;padding:8px;border:1px dashed var(--arch-field-line);border-radius:12px}
.arch-lab .arch-s24-6-1-keygrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px;min-width:0}
.arch-lab button.arch-s24-6-1-key{padding:0;border-radius:10px;min-height:48px;font-size:21px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab button.arch-s24-6-1-key.arch-s24-6-1-key-on{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line)}
@container (min-width:600px){
 .arch-lab .arch-s24-6-1-goods{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"g0 g1 g2" "keys keys keys"}
 .arch-lab .arch-s24-6-1-good[data-good="0"]{grid-area:g0}.arch-lab .arch-s24-6-1-good[data-good="1"]{grid-area:g1}.arch-lab .arch-s24-6-1-good[data-good="2"]{grid-area:g2}
 .arch-lab .arch-s24-6-1-keys{grid-area:keys}
 .arch-lab .arch-s24-6-1-good{grid-template-columns:minmax(0,1fr);grid-template-areas:"pic" "info" "price";align-content:start;justify-items:center;text-align:center}
 .arch-lab svg.arch-s24-6-1-pic{width:104px}
 .arch-lab .arch-s24-6-1-info{justify-items:center}
 .arch-lab .arch-s24-6-1-keygrid{grid-template-columns:repeat(10,minmax(44px,56px));justify-content:center}
}
.arch-lab .arch-s24-6-1-step{min-height:2.6em}
/* the short sum line under the bag's tag and the message next to the place of the action */
.arch-lab .arch-s24-6-1-sum{margin:10px 0 0;padding:6px 10px;border-radius:8px;font-weight:700;font-size:17px;line-height:1.4;font-variant-numeric:tabular-nums;color:var(--arch-ink);background:var(--arch-pressed-bg);overflow-wrap:anywhere}
.arch-lab .arch-s24-6-1-sum[data-kind=ok]{color:var(--arch-good);background:var(--arch-ok-bg)}
.arch-lab .arch-s24-6-1-sum[data-kind=bad]{color:var(--arch-bad);background:var(--arch-bad-bg)}
.arch-lab .arch-s24-6-1-sum[hidden]{display:none}
.arch-lab .arch-s24-6-1-goods>.arch-s24-6-1-note{grid-column:1/-1}
.arch-lab .arch-s24-6-1-shop>.arch-s24-6-1-note{margin-top:8px}
.arch-lab .arch-s24-6-1-note{margin:0;color:var(--arch-label);font-weight:600;line-height:1.5}
.arch-lab .arch-s24-6-1-mini{display:block;width:fit-content;max-width:100%;box-sizing:border-box;margin-top:6px;padding:4px 10px;border-radius:8px;font-weight:700;font-size:17px;line-height:1.4;font-variant-numeric:tabular-nums;color:var(--arch-ink);background:var(--arch-pressed-bg);overflow-wrap:anywhere}
.arch-lab .arch-s24-6-1-mini[data-kind=ok]{color:var(--arch-good);background:var(--arch-ok-bg)}
.arch-lab .arch-s24-6-1-mini[data-kind=bad]{color:var(--arch-bad);background:var(--arch-bad-bg)}
.arch-lab .arch-s24-6-1-note[data-kind=warn]{padding:6px 10px;border-left:4px solid var(--arch-bad);background:var(--arch-bad-bg);border-radius:0 8px 8px 0;color:var(--arch-ink)}
.arch-lab .arch-s24-6-1-note[hidden],.arch-lab .arch-s24-6-1-log[hidden],.arch-lab .arch-s24-6-1-tnote[hidden],.arch-lab .arch-s24-6-1-all[hidden],.arch-lab .arch-s24-6-1-secret[hidden]{display:none}
/* the receipt and the verdict: side by side when there is room */
.arch-lab .arch-s24-6-1-check{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);container-type:inline-size;min-width:0}
@container (min-width:560px){.arch-lab .arch-s24-6-1-side{align-self:center}}
@media (min-width:640px){.arch-lab .arch-s24-6-1-check{grid-template-columns:minmax(220px,300px) minmax(0,1fr)}}
.arch-lab .arch-s24-6-1-receipt{position:relative;display:grid;gap:3px;padding:12px 14px 16px;margin-bottom:8px;background:var(--arch-s24-6-1-paper);color:#1f2937;border:1px solid var(--arch-s24-6-1-paper-edge);border-bottom:0;border-radius:4px 4px 0 0;font:500 16px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;box-shadow:0 2px 6px rgba(15,23,42,.08);min-width:0;max-width:340px}
.arch-lab .arch-s24-6-1-receipt::after{content:'';position:absolute;left:-1px;right:-1px;bottom:-8px;height:8px;background:linear-gradient(135deg,var(--arch-s24-6-1-paper) 50%,transparent 50%) 0 0/12px 8px repeat-x,linear-gradient(225deg,var(--arch-s24-6-1-paper) 50%,transparent 50%) 0 0/12px 8px repeat-x}
.arch-lab .arch-s24-6-1-rhead{margin:0 0 4px;text-align:center;font-weight:700;font-size:14px;letter-spacing:.02em;color:#334155;overflow-wrap:anywhere}
.arch-lab .arch-s24-6-1-rline{display:flex;gap:6px;align-items:baseline;min-width:0}
.arch-lab .arch-s24-6-1-rname{white-space:nowrap}
.arch-lab .arch-s24-6-1-dots{flex:1 1 auto;min-width:12px;border-bottom:2px dotted #94a3b8;transform:translateY(-4px)}
.arch-lab .arch-s24-6-1-rval{min-width:4ch;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-6-1-rval.arch-s24-6-1-q{color:#94a3b8}
.arch-lab .arch-s24-6-1-rtotal{margin-top:6px;padding-top:6px;border-top:2px dashed #94a3b8;font-weight:800;font-size:19px}
.arch-lab .arch-s24-6-1-receipt[data-kind=ok] .arch-s24-6-1-rtotal .arch-s24-6-1-rval{color:#047857}
.arch-lab .arch-s24-6-1-receipt[data-kind=bad] .arch-s24-6-1-rtotal .arch-s24-6-1-rval{color:#b91c1c}
.arch-lab .arch-s24-6-1-side{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-6-1-verdict{margin:0;font-size:16px;line-height:1.5;color:var(--arch-ink);overflow-wrap:anywhere}
.arch-lab .arch-s24-6-1-verdict[data-kind=ok]{color:var(--arch-good);font-weight:700}
.arch-lab .arch-s24-6-1-verdict[data-kind=wait]{color:var(--arch-muted)}
.arch-lab .arch-s24-6-1-tnote{display:grid;gap:6px;justify-items:start;padding:8px 10px;border-left:4px solid var(--arch-accent);background:var(--arch-surface);border-radius:0 8px 8px 0;color:var(--arch-ink)}
.arch-lab .arch-s24-6-1-tnote p{margin:0}
.arch-lab .arch-s24-6-1-log{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s24-6-1-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* the enumeration and another total */
.arch-lab .arch-s24-6-1-all{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.5;min-width:0}
.arch-lab .arch-s24-6-1-all p{margin:0}
.arch-lab .arch-s24-6-1-allinfo{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-6-1-all:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s24-6-1-tbox{display:grid;gap:6px;padding-top:8px;border-top:1px solid var(--arch-soft-line)}
.arch-lab .arch-s24-6-1-trow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.arch-lab input.arch-s24-6-1-tfield{width:96px;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab button.arch-s24-6-1-tstep{min-width:48px;padding:0 12px;font-size:20px;font-weight:700}
.arch-lab .arch-s24-6-1-tmsg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s24-6-1-tmsg:empty{display:none}
.arch-lab .arch-s24-6-1-reveal{justify-self:start}
.arch-lab .arch-s24-6-1-secret .arch-s24-6-1-own{font-weight:600}
@media (max-width:420px){.arch-lab .arch-s24-6-1-shop{padding:0 6px 8px}.arch-lab .arch-s24-6-1-sign{margin:0 -6px 8px}.arch-lab .arch-s24-6-1-good{grid-template-columns:56px minmax(0,1fr);gap:4px 8px;padding:6px}.arch-lab svg.arch-s24-6-1-pic{width:56px}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Автобусы между городами» (SPb 2023/24, 6 класс, №2).
   Two town cards with steppers and four trip cards (bus pictures from visuals/art/bus.css, portraits from
   visuals/art/faces.css, skylines from visuals/art/town.css); the rest follows the --arch-* colours of lab.css.
   Trips from the first place to the second have a blue edge, the trips back an orange one. */
.arch-lab{--arch-s24-6-2-ab:#2563eb;--arch-s24-6-2-ba:#c2410c;--arch-s24-6-2-morning-bg:#fef3c7;--arch-s24-6-2-morning-ink:#8a4b08;--arch-s24-6-2-evening-bg:#e0e7ff;--arch-s24-6-2-evening-ink:#3730a3}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s24-6-2-ab:#7aa7ff;--arch-s24-6-2-ba:#fb923c;--arch-s24-6-2-morning-bg:#4a3a12;--arch-s24-6-2-morning-ink:#fde68a;--arch-s24-6-2-evening-bg:#2a2f5a;--arch-s24-6-2-evening-ink:#c7d2fe}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s24-6-2-ab:#7aa7ff;--arch-s24-6-2-ba:#fb923c;--arch-s24-6-2-morning-bg:#4a3a12;--arch-s24-6-2-morning-ink:#fde68a;--arch-s24-6-2-evening-bg:#2a2f5a;--arch-s24-6-2-evening-ink:#c7d2fe}
.arch-lab .arch-s24-6-2-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.arch-lab .arch-s24-6-2-head{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-6-2-variant{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink);padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0}
.arch-lab .arch-s24-6-2-label{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s24-6-2-predict{display:grid;gap:6px}
.arch-lab .arch-s24-6-2-wrap{container-type:inline-size;min-width:0}
/* the towns: stacked on phones, side by side when the lab is wide */
.arch-lab .arch-s24-6-2-builder{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
@container (min-width:600px){.arch-lab .arch-s24-6-2-builder{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.arch-lab .arch-s24-6-2-town{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);min-width:0;container:s24-6-2-town/inline-size}
.arch-lab .arch-s24-6-2-townhead{display:flex;align-items:center;gap:10px;min-width:0}
.arch-lab svg.arch-s24-6-2-townicon{width:84px;height:64px;flex:0 0 auto;display:block}
.arch-lab .arch-s24-6-2-townname{margin:0;font-size:18px;color:var(--arch-label)}
.arch-lab .arch-s24-6-2-towncount{margin:2px 0 0;font-size:14px;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-6-2-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;grid-template-areas:"face kind stepper";gap:8px;align-items:center;min-width:0}
.arch-lab .arch-s24-6-2-row>svg{grid-area:face}.arch-lab .arch-s24-6-2-row>.arch-s24-6-2-kind{grid-area:kind}.arch-lab .arch-s24-6-2-row>.arch-s24-6-2-stepper{grid-area:stepper}
.arch-lab svg.arch-s24-6-2-face{width:44px;height:46px;display:block}
.arch-lab .arch-s24-6-2-kind{font-size:14px;line-height:1.25;color:var(--arch-ink);white-space:pre-line;overflow-wrap:normal;hyphens:none;min-width:0}
.arch-lab .arch-s24-6-2-stepper{display:flex;gap:3px;align-items:center}
.arch-lab .arch-s24-6-2-step{min-width:44px;min-height:44px;padding:0;font-size:22px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab input.arch-s24-6-2-num{width:48px;min-width:48px;min-height:44px;height:44px;padding:4px 2px;text-align:center;font-variant-numeric:tabular-nums;border-radius:10px}
.arch-lab .arch-s24-6-2-msg{margin:0;font-size:14px;color:var(--arch-bad)}
.arch-lab .arch-s24-6-2-msg:empty{display:none}
/* the day: chronological on phones, «утро | вечер» columns (a row per town) when wide */
.arch-lab .arch-s24-6-2-daytitle{margin-top:2px}
.arch-lab .arch-s24-6-2-board{display:grid;gap:10px;grid-template-columns:minmax(0,1fr);grid-template-areas:"m0" "m1" "e0" "e1"}
@container (min-width:600px){.arch-lab .arch-s24-6-2-board{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"m0 e0" "m1 e1"}}
.arch-lab .arch-s24-6-2-trip{margin:0;display:grid;gap:4px;align-content:start;padding:8px 10px 10px;border:1px solid var(--arch-soft-line);border-left:5px solid var(--arch-s24-6-2-ab);border-radius:12px;background:var(--arch-surface);min-width:0}
.arch-lab .arch-s24-6-2-trip[data-dir="1"]{border-left-color:var(--arch-s24-6-2-ba)}
.arch-lab .arch-s24-6-2-triphead{margin:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.arch-lab .arch-s24-6-2-time{font-size:13px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--arch-s24-6-2-morning-bg);color:var(--arch-s24-6-2-morning-ink)}
.arch-lab .arch-s24-6-2-time[data-time="evening"]{background:var(--arch-s24-6-2-evening-bg);color:var(--arch-s24-6-2-evening-ink)}
.arch-lab .arch-s24-6-2-route{font-size:17px;color:var(--arch-label)}
.arch-lab .arch-s24-6-2-riders{font-size:14px;color:var(--arch-muted)}
.arch-lab svg.arch-s24-6-2-bus{display:block;width:100%;max-width:440px;height:auto;justify-self:center}
.arch-lab .arch-s24-6-2-verdict{margin:0;display:grid;gap:3px;font-size:15px;line-height:1.5;color:var(--arch-ink);overflow-wrap:anywhere}
.arch-lab .arch-s24-6-2-rule{font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s24-6-2-check[data-kind=ok]{color:var(--arch-good);font-weight:600}
.arch-lab .arch-s24-6-2-check[data-kind=empty]{color:var(--arch-muted)}
.arch-lab .arch-s24-6-2-mark{font-weight:800;margin-right:5px}
.arch-lab .arch-s24-6-2-check[data-kind=bad] .arch-s24-6-2-mark{color:var(--arch-bad)}
/* results */
.arch-lab .arch-s24-6-2-summary{background:var(--arch-surface);border:1px solid var(--arch-soft-line);border-radius:14px;padding:10px 14px;color:var(--arch-ink);line-height:1.5;display:grid;gap:4px}
.arch-lab .arch-s24-6-2-summary p{margin:0}
.arch-lab .arch-s24-6-2-per{font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s24-6-2-wait{color:var(--arch-ink)}
.arch-lab .arch-s24-6-2-note{color:var(--arch-label);font-weight:600}
.arch-lab .arch-s24-6-2-note[hidden],.arch-lab .arch-s24-6-2-log[hidden]{display:none}
.arch-lab .arch-s24-6-2-log{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s24-6-2-reveal{justify-self:start}
.arch-lab .arch-s24-6-2-secret[hidden]{display:none}
.arch-lab .arch-s24-6-2-secret ol.arch-s24-6-2-why{margin:2px 0;padding-left:1.4em;display:grid;gap:6px}
@media (max-width:420px){.arch-lab .arch-s24-6-2-town{padding:8px}.arch-lab .arch-s24-6-2-trip{padding:6px 8px 8px}.arch-lab .arch-s24-6-2-row{gap:5px;grid-template-columns:38px minmax(0,1fr) auto}.arch-lab svg.arch-s24-6-2-face{width:38px;height:40px}}
/* a narrow town card (phones up to ~380 px): the label gets the whole line, the stepper goes under it, the face spans both */
@container s24-6-2-town (max-width:289px){
 .arch-lab .arch-s24-6-2-row{grid-template-columns:40px minmax(0,1fr);grid-template-areas:"face kind" "face stepper";row-gap:2px;column-gap:8px;padding:4px 0;border-top:1px solid var(--arch-soft-line)}
 .arch-lab svg.arch-s24-6-2-face{width:40px;height:42px;align-self:center}
 .arch-lab .arch-s24-6-2-kind{white-space:normal;font-size:15px;font-weight:600}
 .arch-lab .arch-s24-6-2-stepper{justify-self:start}
}

/* SPb 2023/24, grade 6, problem 3 — «Раскрась полосы сам» (labs/s24-6-3-strips.mjs). The sheet is an SVG of
   triangle-grid paper (visuals/art/triangle-paper.mjs, colours in art/triangle-paper.css). The paper stays light in both
   themes, so the marks drawn ON it (the dashed middle, the outlined crossings, the preview of a strip) keep fixed
   colours; everything around the sheet goes through --arch-* tokens. */
.arch-lab .arch-s243{--arch-s243-middle:#b45309;--arch-s243-rhomb:#c2410c;--arch-s243-rhomb-fill:rgba(251,146,60,.16);
 --arch-s243-preview:#047857;--arch-s243-preview-fill:rgba(16,185,129,.16);--arch-s243-erase:#7c2d12;--arch-s243-bad:#b91c1c;--arch-s243-bad-fill:rgba(220,38,38,.14);--arch-s243-key-edge:#25356f}
.arch-lab .arch-s243-predict{border-top:0;padding-top:0}
.arch-lab .arch-s243-variant-note{margin:0;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s243-dirs button{display:inline-flex;align-items:center;gap:8px;text-align:left}
.arch-lab .arch-s243-bar{gap:4px 16px}
.arch-lab .arch-s243-bar div{flex-wrap:wrap}
.arch-lab .arch-s243-bar dd{white-space:normal}
.arch-lab .arch-s243-stage{padding:6px}
.arch-lab .arch-s243-board{width:min(100%,500px);margin:auto}
.arch-lab .arch-zoomed .arch-s243-board{width:700px;max-width:none}
.arch-lab .arch-stage .arch-s243-svg{display:block;width:100%;height:auto;max-height:none;touch-action:manipulation;cursor:pointer;-webkit-tap-highlight-color:transparent}
.arch-lab .arch-s243-svg:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s243-svg>*{pointer-events:none}
.arch-lab .arch-s243-svg>.arch-s243-hit{pointer-events:all;fill:transparent;stroke:none}
/* marks on the paper (100 % light paper in both themes) */
.arch-lab .arch-s243-middle{fill:none;stroke:var(--arch-s243-middle);stroke-width:2.2;stroke-dasharray:9 6;stroke-linejoin:round}
.arch-lab .arch-s243-rhomb{fill:var(--arch-s243-rhomb-fill);stroke:var(--arch-s243-rhomb);stroke-width:2.6;stroke-linejoin:round}
.arch-lab .arch-s243-preview{fill:var(--arch-s243-preview-fill);stroke:var(--arch-s243-preview);stroke-width:3;stroke-dasharray:10 6}
.arch-lab .arch-s243-preview-on{stroke:var(--arch-s243-erase);fill:none}
.arch-lab .arch-s243-preview-bad{stroke:var(--arch-s243-bad);fill:var(--arch-s243-bad-fill)}
/* legend */
.arch-lab .arch-s243-key{flex:none}
.arch-lab .arch-s243-key-edge{fill:none;stroke:var(--arch-s243-key-edge);stroke-width:1}
.arch-lab .arch-s243-legend .arch-s243-middle{stroke-width:2}
/* text */
.arch-lab .arch-s243-found{color:var(--arch-ink);font-weight:600}
.arch-lab .arch-s243-prednote{color:var(--arch-ink)}
.arch-lab .arch-s243-explain[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s243-explain[aria-pressed=true]::before{content:'✓\00a0' / ''}
.arch-lab .arch-s243-explain-panel{display:grid;gap:8px}
.arch-lab .arch-s243-pairs{display:grid;gap:6px;margin:8px 0}
.arch-lab .arch-s243-pairs[hidden]{display:none}
.arch-lab .arch-s243-pairs-label{margin:0}
.arch-lab .arch-s243-bar .arch-s243-sum{color:var(--arch-ink);font-weight:600}
.arch-lab .arch-s243-lock[hidden],.arch-lab .arch-s243-explain[hidden]{display:none}
.arch-lab .arch-s243-explain-panel[hidden]{display:none}
.arch-lab .arch-s243-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Крупноостаточные числа» (SPb 2023/24, 6 класс, №4).
   Boxes and sweets come from visuals/art/candy-box.mjs (colours in art/candy-box.css); the paper cups of the open box,
   the bars of the sums and the texts are styled here, with the --arch-* colours of lab.css for both themes. */
.arch-lab{--arch-s24-6-4-cup:#f6e3c3;--arch-s24-6-4-cup-line:#b98a55;--arch-s24-6-4-free:#fff7e6;--arch-s24-6-4-track:#e8eef6;--arch-s24-6-4-mark:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s24-6-4-cup:#6b4a2a;--arch-s24-6-4-cup-line:#c49a66;--arch-s24-6-4-free:#f3dfbd;--arch-s24-6-4-track:#334155;--arch-s24-6-4-mark:#f1f5f9}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s24-6-4-cup:#6b4a2a;--arch-s24-6-4-cup-line:#c49a66;--arch-s24-6-4-free:#f3dfbd;--arch-s24-6-4-track:#334155;--arch-s24-6-4-mark:#f1f5f9}
.arch-lab .arch-s24-6-4-head{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-6-4-variant{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink);padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0}
.arch-lab .arch-s24-6-4-label{margin:0;font-weight:600;color:var(--arch-label)}
/* exact fields: «−» field «+» */
.arch-lab .arch-s24-6-4-param{display:grid;gap:6px;min-width:0;container-type:inline-size}
.arch-lab .arch-s24-6-4-plabel{margin:0;line-height:1.4}
.arch-lab .arch-s24-6-4-prow{display:flex;gap:8px;align-items:center;min-width:0}
.arch-lab input.arch-s24-6-4-field{width:150px;min-width:0;flex:0 1 150px;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab button.arch-s24-6-4-step{flex:0 0 auto;min-width:48px;min-height:48px;padding:0;font-size:24px;font-weight:600;line-height:1;border-radius:12px}
/* a narrow field (a phone): the «−»/«+» keep 48 px, the field takes the rest, with less padding, so «6 000 000» fits */
@container (max-width:300px){.arch-lab input.arch-s24-6-4-field{flex:1 1 0;width:auto;padding:8px 4px;font-size:17px}}
.arch-lab .arch-s24-6-4-msg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600;line-height:1.45}
.arch-lab .arch-s24-6-4-msg:empty{display:none}
.arch-lab .arch-s24-6-4-pairbox{display:grid;gap:10px;padding:clamp(8px,3cqi,12px);border:1px dashed var(--arch-field-line);border-radius:12px;min-width:0}
.arch-lab .arch-s24-6-4-pairbox[hidden],.arch-lab .arch-s24-6-4-checkrow[hidden],.arch-lab .arch-s24-6-4-count[hidden],.arch-lab .arch-s24-6-4-secret[hidden],.arch-lab .arch-s24-6-4-note[hidden],.arch-lab .arch-s24-6-4-legend[hidden],.arch-lab .arch-s24-6-4-verdict[hidden]{display:none}
/* the scene: two boxes with the same cell size; one under another on phones, side by side when there is room */
.arch-lab .arch-s24-6-4-scene{display:grid;gap:10px;min-width:0;padding:10px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);container-type:inline-size}
.arch-lab .arch-s24-6-4-boxes{display:grid;gap:12px;min-width:0}
.arch-lab .arch-s24-6-4-fig{margin:0;display:grid;gap:4px;align-content:start;min-width:0}
.arch-lab svg.arch-s24-6-4-svg{display:block;width:calc(var(--share,1) * 100%);height:auto;overflow:visible}
@container (min-width:540px){
 .arch-lab .arch-s24-6-4-boxes{display:flex;gap:14px;align-items:flex-start}
 .arch-lab .arch-s24-6-4-fig{flex:var(--grow,1) 1 0;min-width:0}
 .arch-lab svg.arch-s24-6-4-svg{width:100%}
}
.arch-lab .arch-s24-6-4-ftitle{margin:0;font-weight:700;color:var(--arch-label);font-size:15px}
.arch-lab .arch-s24-6-4-flines{display:grid;gap:2px}
.arch-lab .arch-s24-6-4-fline{margin:0;font-size:14.5px;line-height:1.45;color:var(--arch-ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.arch-lab .arch-s24-6-4-together{font-weight:600}
.arch-lab .arch-s24-6-4-together[data-kind=full]{color:var(--arch-good)}
.arch-lab .arch-s24-6-4-together[data-kind=extra]{color:var(--arch-bad)}
.arch-lab svg text.arch-s24-6-4-stxt{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-6-4-cup{fill:var(--arch-s24-6-4-cup);stroke:var(--arch-s24-6-4-cup-line);stroke-width:.8}
.arch-lab .arch-s24-6-4-cup-free{fill:var(--arch-s24-6-4-free);stroke:var(--arch-focus);stroke-width:2.2}
.arch-lab .arch-s24-6-4-cup-two{stroke:#dc2626;stroke-width:2.4}
.arch-lab .arch-s24-6-4-legend{margin:0;display:flex;flex-wrap:wrap;gap:2px 16px;font-size:14.5px;line-height:1.5;color:var(--arch-ink)}
.arch-lab .arch-s24-6-4-key{font-weight:600;white-space:nowrap}
.arch-lab .arch-s24-6-4-dot{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:5px;vertical-align:-1px;box-shadow:0 0 0 1px rgba(15,23,42,.35)}
/* the bars of the sums: 0 … largest sum, with the threshold mark */
.arch-lab .arch-s24-6-4-bars{display:grid;gap:10px;min-width:0}
.arch-lab .arch-s24-6-4-bar{display:grid;gap:4px;min-width:0}
.arch-lab .arch-s24-6-4-blabel{margin:0;font-size:14.5px;line-height:1.45;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-6-4-bar[data-large=true] .arch-s24-6-4-blabel{font-weight:600}
.arch-lab .arch-s24-6-4-track{position:relative;display:block;height:16px;border-radius:8px;background:var(--arch-s24-6-4-track);overflow:visible}
.arch-lab .arch-s24-6-4-fill{position:absolute;left:0;top:0;bottom:0;border-radius:8px 0 0 8px}
.arch-lab .arch-s24-6-4-mark{position:absolute;top:-5px;bottom:-5px;width:3px;margin-left:-1.5px;background:var(--arch-s24-6-4-mark);border-radius:2px}
.arch-lab .arch-s24-6-4-scale{position:relative;display:flex;justify-content:space-between;font-size:13px;color:var(--arch-muted);height:18px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-6-4-tmark{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s24-6-4-verdict{margin:0;font-size:15.5px;line-height:1.5;color:var(--arch-ink);font-weight:600;overflow-wrap:anywhere}
.arch-lab .arch-s24-6-4-verdict[data-kind=ok]{color:var(--arch-good)}
.arch-lab .arch-s24-6-4-verdict[data-kind=bad]{color:var(--arch-bad)}
.arch-lab .arch-s24-6-4-verdict[data-kind=wait]{color:var(--arch-muted);font-weight:400}
.arch-lab .arch-s24-6-4-checkrow{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-6-4-check p{margin:6px 0}
.arch-lab .arch-s24-6-4-check:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s24-6-4-note{margin:0;color:var(--arch-label);font-weight:600;line-height:1.5}
.arch-lab .arch-s24-6-4-note[data-kind=warn]{padding:6px 10px;border-left:4px solid var(--arch-bad);background:var(--arch-bad-bg);border-radius:0 8px 8px 0;color:var(--arch-ink)}
.arch-lab .arch-s24-6-4-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.arch-lab .arch-s24-6-4-count{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.5;min-width:0}
.arch-lab .arch-s24-6-4-count:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s24-6-4-countout{display:grid;gap:6px}
.arch-lab .arch-s24-6-4-countout p{margin:0}
.arch-lab .arch-s24-6-4-reveal{justify-self:start}
@media (max-width:420px){.arch-lab .arch-s24-6-4-scene{padding:6px}.arch-lab input.arch-s24-6-4-field{flex:1 1 120px}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Фигура из фанеры на весах» (SPb 2023/24, 7 класс, №1).
   The plywood and its grain come from visuals/art/plank.css (--spb-plank-…), the shop scales from
   visuals/art/shop-scale.css (--spb-scale-…); this file adds the layers of the model: the pencil lines, the removed
   corners (dashed), the dimensions with the unknown x in the accent colour, the four parts and the two halves of the
   explanation, the tags, the round handles over the drawing and the layout of the two scales. */
.arch-lab .arch-s24-7-1{--arch-s24-7-1-pencil:#374151;--arch-s24-7-1-ghost:#64748b;--arch-s24-7-1-left:#2563eb;--arch-s24-7-1-left-fill:rgba(37,99,235,.22);
 --arch-s24-7-1-bottom:#c2410c;--arch-s24-7-1-bottom-fill:rgba(234,88,12,.22);--arch-s24-7-1-knob:#ffffff;--arch-s24-7-1-knob-line:#1f2937}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s24-7-1{--arch-s24-7-1-pencil:#e5e7eb;--arch-s24-7-1-ghost:#94a3b8;--arch-s24-7-1-left:#93c5fd;--arch-s24-7-1-left-fill:rgba(147,197,253,.24);
 --arch-s24-7-1-bottom:#fdba74;--arch-s24-7-1-bottom-fill:rgba(253,186,116,.24);--arch-s24-7-1-knob:#f8fafc;--arch-s24-7-1-knob-line:#0f172a}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s24-7-1{--arch-s24-7-1-pencil:#e5e7eb;--arch-s24-7-1-ghost:#94a3b8;--arch-s24-7-1-left:#93c5fd;--arch-s24-7-1-left-fill:rgba(147,197,253,.24);
 --arch-s24-7-1-bottom:#fdba74;--arch-s24-7-1-bottom-fill:rgba(253,186,116,.24);--arch-s24-7-1-knob:#f8fafc;--arch-s24-7-1-knob-line:#0f172a}
.arch-lab .arch-s24-7-1-variant{border-top:0;padding-top:0}
.arch-lab .arch-s24-7-1-fields .phx-param{max-width:560px}
.arch-lab .arch-s24-7-1-fields input.phx-num{box-sizing:border-box}
.arch-lab .arch-s24-7-1-stage{padding:4px}
.arch-lab .arch-s24-7-1-board{position:relative}
.arch-lab .arch-stage svg.arch-s24-7-1-svg,.arch-lab .arch-stage svg.arch-s24-7-1-scale-svg{max-height:none}
/* the figure */
.arch-lab .phx-svg .arch-s24-7-1-ply{fill:var(--spb-plank-raw);stroke:none}
.arch-lab .phx-svg .arch-s24-7-1-piece{stroke:var(--spb-plank-edge);stroke-width:1.4;stroke-linejoin:round}
.arch-lab .phx-svg .arch-s24-7-1-edge{fill:none;stroke:var(--spb-plank-edge);stroke-width:2.4;stroke-linejoin:miter}
.arch-lab .phx-svg .arch-s24-7-1-ghost{fill:none;stroke:var(--arch-s24-7-1-ghost);stroke-width:1.2;stroke-dasharray:4 4}
.arch-lab .phx-svg text.arch-s24-7-1-notch-text{fill:var(--arch-muted);font-size:12px;font-variant-numeric:tabular-nums}
.arch-lab .phx-svg .arch-s24-7-1-line{stroke:var(--arch-s24-7-1-pencil);stroke-width:2;stroke-dasharray:2 5;stroke-linecap:round}
.arch-lab .phx-svg .arch-s24-7-1-part{stroke:none;opacity:.62}
.arch-lab .phx-svg .arch-s24-7-1-part-1{fill:var(--arch-piece-a)}
.arch-lab .phx-svg .arch-s24-7-1-part-2{fill:var(--arch-piece-b)}
.arch-lab .phx-svg .arch-s24-7-1-part-3{fill:var(--arch-piece-c)}
.arch-lab .phx-svg .arch-s24-7-1-part-4{fill:var(--arch-piece-d)}
.arch-lab .phx-svg .arch-s24-7-1-half{stroke:none}
.arch-lab .phx-svg .arch-s24-7-1-half-left{fill:var(--arch-s24-7-1-left-fill)}
.arch-lab .phx-svg .arch-s24-7-1-half-bottom{fill:var(--arch-s24-7-1-bottom-fill)}
.arch-lab .phx-svg .arch-s24-7-1-half-line{fill:none;stroke-width:3.5;stroke-linejoin:miter}
.arch-lab .phx-svg .arch-s24-7-1-half-left-line{stroke:var(--arch-s24-7-1-left)}
.arch-lab .phx-svg .arch-s24-7-1-half-bottom-line{stroke:var(--arch-s24-7-1-bottom);stroke-dasharray:9 5}
.arch-lab .phx-svg .arch-s24-7-1-dim-line{fill:none;stroke:var(--arch-ink);stroke-width:1.2}
.arch-lab .phx-svg .arch-s24-7-1-dim-head{fill:var(--arch-ink);stroke:none}
.arch-lab .phx-svg text.arch-s24-7-1-dim-text{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab .phx-svg .arch-s24-7-1-dim-x .arch-s24-7-1-dim-line{stroke:var(--arch-accent)}
.arch-lab .phx-svg .arch-s24-7-1-dim-x .arch-s24-7-1-dim-head,.arch-lab .phx-svg .arch-s24-7-1-dim-x text.arch-s24-7-1-dim-text{fill:var(--arch-accent)}
.arch-lab .phx-svg .arch-s24-7-1-tag-box{fill:var(--spb-plank-tag);stroke:var(--spb-plank-tag-line);stroke-width:1.5}
.arch-lab .phx-svg text.arch-s24-7-1-tag-small{fill:var(--spb-plank-tag-sub);font-size:10.5px;font-weight:600}
.arch-lab .phx-svg text.arch-s24-7-1-tag-text{fill:var(--spb-plank-tag-ink);font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
/* round handles over the drawing: a 44 px target with a small knob; the selected one has a ring */
.arch-lab button.arch-s24-7-1-handle{position:absolute;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;margin:0;border:0;border-radius:50%;
 background:transparent;transform:translate(-50%,-50%);touch-action:none;cursor:grab;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}
.arch-lab button.arch-s24-7-1-handle:active{cursor:grabbing}
.arch-lab .arch-s24-7-1-knob{width:16px;height:16px;border-radius:50%;background:var(--arch-s24-7-1-knob);border:2.5px solid var(--arch-s24-7-1-knob-line);box-shadow:0 1px 3px rgba(15,23,42,.45);pointer-events:none}
.arch-lab button.arch-s24-7-1-handle[aria-pressed=true] .arch-s24-7-1-knob{width:20px;height:20px;border-color:var(--arch-accent);box-shadow:0 0 0 4px var(--arch-s24-7-1-knob),0 0 0 6px var(--arch-accent)}
.arch-lab button.arch-s24-7-1-handle:focus-visible{outline:3px solid var(--arch-focus);outline-offset:-3px}
.arch-lab .arch-s24-7-1-parts{color:var(--arch-ink)}
/* the one-line readout of both scales under the drawing */
.arch-lab .arch-s24-7-1-readout{display:grid;gap:2px;margin:6px 0 2px}
.arch-lab .arch-s24-7-1-read{margin:0;font-size:15px;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-7-1-read.arch-good{color:var(--arch-good);font-weight:700}
/* the scales */
.arch-lab .arch-s24-7-1-scales{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));min-width:0}
.arch-lab .arch-s24-7-1-scale{display:grid;gap:4px;min-width:0;align-content:start}
.arch-lab .arch-s24-7-1-scale p{margin:0}
.arch-lab .arch-s24-7-1-scale-title{font-weight:700;color:var(--arch-label)}
.arch-lab .arch-s24-7-1-scale-stage{padding:4px}
.arch-lab .arch-s24-7-1-scale-out{font-size:15px}
.arch-lab .arch-s24-7-1-out p{margin:6px 0 0}
.arch-lab .arch-s24-7-1-out p:first-child{margin-top:0}
/* the explanation */
.arch-lab .arch-s24-7-1-explain p{margin:6px 0}
.arch-lab .arch-s24-7-1-explain-stage{margin:8px 0 4px}
.arch-lab .arch-s24-7-1-explain .arch-actions{margin-top:8px}
.arch-lab .arch-s24-7-1-step-title{font-weight:700;color:var(--arch-label)}
.arch-lab .arch-s24-7-1-explain:focus{outline:none}
.arch-lab .arch-s24-7-1-explain:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab button.arch-s24-7-1-on{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s24-7-1 .arch-actions button.arch-secondary[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line)}
.arch-lab .arch-s24-7-1-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Четыре покупки с вычеркнутыми цифрами» (SPb 2023/24, 7 класс, №2).
   Price tags and the receipt are paper that stays light in both themes (fixed dark ink); the rest follows the --arch-*
   colours of lab.css. Every digit carries a coloured stripe of its place in the first price (--arch-s24-7-2-o0…o3, the
   same on paper in both themes). The goods are drawn by visuals/art/{school-supplies,hand-mixer,shop-goods}.mjs. */
.arch-lab{--arch-s24-7-2-tag:#fff4c7;--arch-s24-7-2-tag-edge:#c9a227;--arch-s24-7-2-cell:#fffdf7;--arch-s24-7-2-cell-edge:#c9b98f;
 --arch-s24-7-2-paper:#fffef8;--arch-s24-7-2-paper-edge:#d6d3c4;--arch-s24-7-2-awning:#2f7dd1;--arch-s24-7-2-awning2:#ffffff;--arch-s24-7-2-cell-size:46px;
 --arch-s24-7-2-o0:#2563eb;--arch-s24-7-2-o1:#d97706;--arch-s24-7-2-o2:#059669;--arch-s24-7-2-o3:#c026d3}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s24-7-2-tag:#efe3b0;--arch-s24-7-2-tag-edge:#a8862a;--arch-s24-7-2-cell:#f3efe2;--arch-s24-7-2-cell-edge:#8f8466;--arch-s24-7-2-paper:#eceae0;--arch-s24-7-2-paper-edge:#8f8a74;--arch-s24-7-2-awning:#2a6bb3;--arch-s24-7-2-awning2:#e9edf5}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s24-7-2-tag:#efe3b0;--arch-s24-7-2-tag-edge:#a8862a;--arch-s24-7-2-cell:#f3efe2;--arch-s24-7-2-cell-edge:#8f8466;--arch-s24-7-2-paper:#eceae0;--arch-s24-7-2-paper-edge:#8f8a74;--arch-s24-7-2-awning:#2a6bb3;--arch-s24-7-2-awning2:#e9edf5}
.arch-lab .arch-s24-7-2-head{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-7-2-variant{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink);padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0}
.arch-lab .arch-s24-7-2-label{margin:0;font-weight:600;color:var(--arch-label)}
/* the shop: a striped awning over four goods; phones — one under another, wide labs — two by two */
.arch-lab .arch-s24-7-2-shop{min-width:0;padding:0 10px 12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);container-type:inline-size;overflow:hidden}
.arch-lab .arch-s24-7-2-sign{position:relative;margin:0 -10px 10px;padding:24px 12px 8px;text-align:center;font-weight:700;font-size:16px;color:var(--arch-label);border-bottom:1px solid var(--arch-soft-line)}
.arch-lab .arch-s24-7-2-sign::before{content:'';position:absolute;left:0;right:0;top:0;height:14px;background:repeating-linear-gradient(90deg,var(--arch-s24-7-2-awning) 0 18px,var(--arch-s24-7-2-awning2) 18px 36px);border-bottom:1px solid var(--arch-fig-line);border-radius:0 0 6px 6px}
.arch-lab .arch-s24-7-2-goods{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
.arch-lab .arch-s24-7-2-legend{margin-top:10px}
/* a good: the picture beside the name, the price tag (and, for the first good, the keypad) under both */
.arch-lab .arch-s24-7-2-good{display:grid;grid-template-columns:64px minmax(0,1fr);grid-template-areas:"pic info" "price price" "keys keys";gap:6px 10px;align-items:center;align-content:start;padding:8px;border:1px solid var(--arch-soft-line);border-radius:12px;min-width:0}
.arch-lab svg.arch-s24-7-2-pic{grid-area:pic;display:block;width:64px;height:auto;overflow:visible}
.arch-lab .arch-s24-7-2-info{grid-area:info;display:grid;gap:2px;min-width:0;justify-items:start}
.arch-lab .arch-s24-7-2-gname{margin:0;font-weight:700;font-size:17px;color:var(--arch-ink)}
.arch-lab .arch-s24-7-2-grule{margin:0;font-size:13px;line-height:1.35;color:var(--arch-muted)}
/* the price tag: a paper label with a hole; digits are cards of fixed dark ink with the stripe of their origin */
.arch-lab .arch-s24-7-2-pricebox{grid-area:price;display:grid;gap:2px;justify-items:start;width:max-content;max-width:100%}
.arch-lab .arch-s24-7-2-tag{position:relative;display:flex;gap:5px;align-items:center;padding:5px 8px 5px 19px;margin-top:2px;background:var(--arch-s24-7-2-tag);border:1.5px solid var(--arch-s24-7-2-tag-edge);border-radius:6px 12px 12px 6px}
.arch-lab .arch-s24-7-2-tag::before{content:'';position:absolute;left:5px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:var(--arch-surface);border:1.5px solid var(--arch-s24-7-2-tag-edge)}
.arch-lab .arch-s24-7-2-digit{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--arch-s24-7-2-cell-size);min-width:var(--arch-s24-7-2-cell-size);height:50px;padding:0 0 3px;border-radius:8px;border:1.5px solid var(--arch-s24-7-2-cell-edge);background:var(--arch-s24-7-2-cell);color:#1f2937;font:700 28px/1 ui-serif,Georgia,"Times New Roman",serif;font-variant-numeric:tabular-nums}
.arch-lab button.arch-s24-7-2-digit{min-height:50px;cursor:pointer}
.arch-lab .arch-s24-7-2-digit[data-from="0"]{box-shadow:inset 0 -5px 0 var(--arch-s24-7-2-o0)}
.arch-lab .arch-s24-7-2-digit[data-from="1"]{box-shadow:inset 0 -5px 0 var(--arch-s24-7-2-o1)}
.arch-lab .arch-s24-7-2-digit[data-from="2"]{box-shadow:inset 0 -5px 0 var(--arch-s24-7-2-o2)}
.arch-lab .arch-s24-7-2-digit[data-from="3"]{box-shadow:inset 0 -5px 0 var(--arch-s24-7-2-o3)}
.arch-lab .arch-s24-7-2-digit.arch-s24-7-2-unknown{color:#94a3b8;border-style:dashed;font-size:22px}
.arch-lab .arch-s24-7-2-digit.arch-s24-7-2-missing{background:transparent;box-shadow:none}
.arch-lab button.arch-s24-7-2-digit.arch-s24-7-2-sel{outline:3px solid var(--arch-focus);outline-offset:1px;transform:translateY(-2px)}
.arch-lab .arch-s24-7-2-digit.arch-s24-7-2-struck .arch-s24-7-2-d{color:#9aa3b2}
.arch-lab .arch-s24-7-2-digit.arch-s24-7-2-struck::after{content:'';position:absolute;left:5px;right:5px;top:50%;height:3.5px;margin-top:-1.75px;background:#dc2626;border-radius:2px;transform:rotate(-24deg)}
.arch-lab .arch-s24-7-2-rub{font:600 20px/1 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:#475569;padding-left:1px}
.arch-lab .arch-s24-7-2-xbox{display:grid;gap:2px;justify-items:start}
.arch-lab .arch-s24-7-2-xlabel{margin:2px 0 0;font-size:13px;color:var(--arch-muted)}
/* the «✗» buttons stand right under the digits: same width, same gap, shifted by the tag's left padding and border */
.arch-lab .arch-s24-7-2-xrow{display:flex;gap:5px;padding-left:20.5px}
.arch-lab button.arch-s24-7-2-x{box-sizing:border-box;width:var(--arch-s24-7-2-cell-size);min-width:var(--arch-s24-7-2-cell-size);padding:0;border-radius:10px;font-size:18px;font-weight:700;color:var(--arch-bad)}
.arch-lab button.arch-s24-7-2-x[aria-pressed=true]{background:var(--arch-bad-bg);border-color:var(--arch-bad);box-shadow:inset 0 0 0 1px var(--arch-bad)}
/* the keypad: as many keys of at least 44 px in a row as fit inside the card (five from a 244 px grid on; four at a
   320 px screen, where the grid is 210 px wide) — never more than the card can hold, since the lab clips overflow */
.arch-lab .arch-s24-7-2-keys{grid-area:keys;display:grid;gap:6px;min-width:0;padding:8px;border:1px dashed var(--arch-field-line);border-radius:12px}
.arch-lab .arch-s24-7-2-keygrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px}
.arch-lab button.arch-s24-7-2-key{padding:0;border-radius:10px;min-height:48px;font-size:21px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab button.arch-s24-7-2-key.arch-s24-7-2-key-on{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line)}
@container (min-width:600px){
 .arch-lab .arch-s24-7-2-goods{grid-template-columns:repeat(2,minmax(0,1fr))}
 .arch-lab svg.arch-s24-7-2-pic{width:84px}
 .arch-lab .arch-s24-7-2-good{grid-template-columns:84px minmax(0,1fr)}
}
/* narrow phones: a little smaller digit cards so that four of them and «₽» fit beside the hole of the tag */
@container (max-width:300px){
 .arch-lab .arch-s24-7-2-goods{--arch-s24-7-2-cell-size:44px}
 .arch-lab .arch-s24-7-2-tag{gap:4px;padding-right:6px}
 .arch-lab .arch-s24-7-2-xrow{gap:4px}
}
.arch-lab .arch-s24-7-2-step{min-height:2.6em}
.arch-lab .arch-s24-7-2-note{margin:0;color:var(--arch-label);font-weight:600;line-height:1.5}
.arch-lab .arch-s24-7-2-note[data-kind=warn]{padding:6px 10px;border-left:4px solid var(--arch-bad);background:var(--arch-bad-bg);border-radius:0 8px 8px 0;color:var(--arch-ink)}
.arch-lab .arch-s24-7-2-note[hidden],.arch-lab .arch-s24-7-2-log[hidden],.arch-lab .arch-s24-7-2-tnote[hidden],.arch-lab .arch-s24-7-2-all[hidden],.arch-lab .arch-s24-7-2-parts[hidden],.arch-lab .arch-s24-7-2-secret[hidden]{display:none}
/* the receipt (a column sum) and the verdict: side by side when there is room */
.arch-lab .arch-s24-7-2-check{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);min-width:0}
@media (min-width:640px){.arch-lab .arch-s24-7-2-check{grid-template-columns:minmax(240px,300px) minmax(0,1fr)}.arch-lab .arch-s24-7-2-side{align-self:center}}
.arch-lab .arch-s24-7-2-receipt{position:relative;display:grid;gap:2px;padding:12px 14px 16px;margin-bottom:8px;background:var(--arch-s24-7-2-paper);color:#1f2937;border:1px solid var(--arch-s24-7-2-paper-edge);border-bottom:0;border-radius:4px 4px 0 0;font:500 17px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;box-shadow:0 2px 6px rgba(15,23,42,.08);min-width:0;max-width:340px}
.arch-lab .arch-s24-7-2-receipt::after{content:'';position:absolute;left:-1px;right:-1px;bottom:-8px;height:8px;background:linear-gradient(135deg,var(--arch-s24-7-2-paper) 50%,transparent 50%) 0 0/12px 8px repeat-x,linear-gradient(225deg,var(--arch-s24-7-2-paper) 50%,transparent 50%) 0 0/12px 8px repeat-x}
.arch-lab .arch-s24-7-2-rhead{margin:0 0 4px;text-align:center;font-weight:700;font-size:14px;letter-spacing:.02em;color:#334155;overflow-wrap:anywhere}
.arch-lab .arch-s24-7-2-rline{display:grid;grid-template-columns:minmax(0,1fr) 1.3ch repeat(5,1.5ch);align-items:end;min-width:0}
.arch-lab .arch-s24-7-2-rname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15px}
.arch-lab .arch-s24-7-2-rsign{text-align:center;color:#475569}
.arch-lab .arch-s24-7-2-c{text-align:center;font-weight:700;font-variant-numeric:tabular-nums;border-bottom:3px solid transparent;line-height:1.3}
.arch-lab .arch-s24-7-2-c[data-from="0"]{border-bottom-color:var(--arch-s24-7-2-o0)}
.arch-lab .arch-s24-7-2-c[data-from="1"]{border-bottom-color:var(--arch-s24-7-2-o1)}
.arch-lab .arch-s24-7-2-c[data-from="2"]{border-bottom-color:var(--arch-s24-7-2-o2)}
.arch-lab .arch-s24-7-2-c[data-from="3"]{border-bottom-color:var(--arch-s24-7-2-o3)}
.arch-lab .arch-s24-7-2-c.arch-s24-7-2-q{color:#94a3b8}
.arch-lab .arch-s24-7-2-rtotal{margin-top:6px;padding-top:6px;border-top:2px dashed #94a3b8;font-weight:800;font-size:19px}
.arch-lab .arch-s24-7-2-rtotal .arch-s24-7-2-rname{font-size:16px;font-weight:800}
.arch-lab .arch-s24-7-2-rneed{color:#475569;font-size:15px}
.arch-lab .arch-s24-7-2-rneed .arch-s24-7-2-c{font-weight:600}
.arch-lab .arch-s24-7-2-receipt[data-kind=ok] .arch-s24-7-2-rtotal .arch-s24-7-2-c{color:#047857}
.arch-lab .arch-s24-7-2-receipt[data-kind=bad] .arch-s24-7-2-rtotal .arch-s24-7-2-c{color:#b91c1c}
.arch-lab .arch-s24-7-2-side{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-7-2-verdict{margin:0;font-size:16px;line-height:1.5;color:var(--arch-ink);overflow-wrap:anywhere}
.arch-lab .arch-s24-7-2-verdict[data-kind=ok]{color:var(--arch-good);font-weight:700}
.arch-lab .arch-s24-7-2-verdict[data-kind=wait]{color:var(--arch-muted)}
.arch-lab .arch-s24-7-2-tnote{display:grid;gap:6px;justify-items:start;padding:8px 10px;border-left:4px solid var(--arch-accent);background:var(--arch-surface);border-radius:0 8px 8px 0;color:var(--arch-ink)}
.arch-lab .arch-s24-7-2-tnote p{margin:0}
.arch-lab .arch-s24-7-2-log{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s24-7-2-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* what every digit adds */
.arch-lab .arch-s24-7-2-parts,.arch-lab .arch-s24-7-2-all{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.5;min-width:0}
.arch-lab .arch-s24-7-2-parts p,.arch-lab .arch-s24-7-2-all p{margin:0}
.arch-lab .arch-s24-7-2-parts:focus,.arch-lab .arch-s24-7-2-all:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s24-7-2-plist{margin:0;padding:0;list-style:none;display:grid;gap:6px}
.arch-lab .arch-s24-7-2-plist li{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;align-items:start}
.arch-lab .arch-s24-7-2-chip{display:inline-flex;align-items:center;justify-content:center;width:30px;height:32px;padding-bottom:3px;box-sizing:border-box;border-radius:6px;border:1.5px solid var(--arch-s24-7-2-cell-edge);background:var(--arch-s24-7-2-cell);color:#1f2937;font:700 19px/1 ui-serif,Georgia,"Times New Roman",serif}
.arch-lab .arch-s24-7-2-chip[data-from="0"]{box-shadow:inset 0 -4px 0 var(--arch-s24-7-2-o0)}
.arch-lab .arch-s24-7-2-chip[data-from="1"]{box-shadow:inset 0 -4px 0 var(--arch-s24-7-2-o1)}
.arch-lab .arch-s24-7-2-chip[data-from="2"]{box-shadow:inset 0 -4px 0 var(--arch-s24-7-2-o2)}
.arch-lab .arch-s24-7-2-chip[data-from="3"]{box-shadow:inset 0 -4px 0 var(--arch-s24-7-2-o3)}
.arch-lab .arch-s24-7-2-psum{font-weight:700;font-variant-numeric:tabular-nums}
/* the enumeration and another total */
.arch-lab .arch-s24-7-2-allinfo{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-7-2-tbox{display:grid;gap:6px;padding-top:8px;border-top:1px solid var(--arch-soft-line)}
.arch-lab .arch-s24-7-2-trow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.arch-lab input.arch-s24-7-2-tfield{box-sizing:border-box;width:104px;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab button.arch-s24-7-2-tstep{min-width:48px;padding:0 12px;font-size:20px;font-weight:700}
.arch-lab .arch-s24-7-2-tmsg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s24-7-2-tmsg:empty{display:none}
.arch-lab .arch-s24-7-2-reveal{justify-self:start}
.arch-lab .arch-s24-7-2-secret .arch-s24-7-2-own{font-weight:600}
@media (max-width:420px){.arch-lab .arch-s24-7-2-shop{padding:0 6px 8px}.arch-lab .arch-s24-7-2-sign{margin:0 -6px 8px}.arch-lab .arch-s24-7-2-good{grid-template-columns:56px minmax(0,1fr);gap:4px 8px;padding:6px}.arch-lab svg.arch-s24-7-2-pic{width:56px}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s24-7-3-balloons (SPb 2023/24, 7 класс, №3).
   Balloon colours come from visuals/art/balloons.css; the plan is blue (dashed), the real passes orange (solid). */
.arch-lab .arch-s2473{--s2473-plan:#1d4ed8;--s2473-real:#c2410c;--s2473-gold:#b45309;--s2473-star:#f59e0b;--s2473-halo:#fde68a;--s2473-ground:#94a3b8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2473{--s2473-plan:#93c5fd;--s2473-real:#fb923c;--s2473-gold:#fbbf24;--s2473-star:#fbbf24;--s2473-halo:#4a3b12;--s2473-ground:#64748b}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2473{--s2473-plan:#93c5fd;--s2473-real:#fb923c;--s2473-gold:#fbbf24;--s2473-star:#fbbf24;--s2473-halo:#4a3b12;--s2473-ground:#64748b}
.arch-lab .arch-s2473-head,.arch-lab .arch-s2473-block,.arch-lab .arch-s2473-editor{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2473-block{border-top:1px solid var(--arch-soft-line);padding-top:12px}
.arch-lab .arch-s2473-variant{margin:0;line-height:1.5;color:var(--arch-ink)}
.arch-lab .arch-s2473-title{margin:0;font-weight:700;color:var(--arch-label);font-size:17px}
.arch-lab .arch-s2473-label{margin:4px 0 0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2473-sum{margin:0;line-height:1.5}
.arch-lab .arch-s2473-best{margin:0}
.arch-lab .arch-s2473-gold{color:var(--s2473-gold);font-weight:700}
.arch-lab .arch-s2473-ring{max-width:440px;margin:0 auto;cursor:pointer}
.arch-lab .arch-s2473 svg .arch-s2473-halo{fill:var(--s2473-halo);stroke:var(--arch-focus);stroke-width:2}
.arch-lab .arch-s2473 svg .arch-s2473-hit{fill:transparent;stroke:none}
.arch-lab .arch-s2473 svg .arch-s2473-broken{fill:none;stroke:var(--arch-bad);stroke-width:2.6}
.arch-lab .arch-s2473 svg .arch-s2473-star{fill:var(--s2473-star);stroke:var(--s2473-gold);stroke-width:1.2;stroke-linejoin:round}
.arch-lab .arch-s2473 svg text.arch-s2473-num{fill:var(--arch-muted);font-weight:600}
.arch-lab .arch-s2473 svg text.arch-s2473-num-sel{fill:var(--arch-ink);font-weight:800}
.arch-lab .arch-s2473 svg text.arch-s2473-big{fill:var(--arch-ink);font-weight:800}
.arch-lab .arch-s2473 svg text.arch-s2473-small{fill:var(--arch-muted)}
.arch-lab .arch-s2473-navrow{display:flex;align-items:center;gap:8px}
.arch-lab .arch-s2473-navrow .arch-s2473-title{flex:1 1 auto;text-align:center}
.arch-lab .arch-s2473-nav{min-width:48px;flex:0 0 auto}
.arch-lab .arch-s2473-strip{max-width:520px;margin:0 auto}
.arch-lab .arch-s2473 svg .arch-s2473-ground{stroke:var(--s2473-ground);stroke-width:3;stroke-linecap:round}
.arch-lab .arch-s2473 svg .arch-s2473-sb{cursor:pointer}
.arch-lab .arch-s2473 svg .arch-s2473-slotring{fill:none;stroke:var(--arch-focus);stroke-width:3;stroke-dasharray:7 5}
.arch-lab .arch-s2473 svg .arch-s2473-tag-plan{fill:var(--arch-surface);stroke:var(--s2473-plan);stroke-width:2.5}
.arch-lab .arch-s2473 svg .arch-s2473-tag-real{fill:var(--arch-surface);stroke:var(--s2473-real);stroke-width:2.5}
.arch-lab .arch-s2473 svg text.arch-s2473-tagtext{fill:var(--arch-ink);font-weight:800}
.arch-lab .arch-s2473 svg .arch-s2473-lane-plan{stroke:var(--s2473-plan);stroke-width:3;stroke-dasharray:8 5;fill:none}
.arch-lab .arch-s2473 svg .arch-s2473-lane-plan-head{fill:var(--s2473-plan);stroke:none}
.arch-lab .arch-s2473 svg .arch-s2473-lane-real{stroke:var(--s2473-real);stroke-width:3;fill:none}
.arch-lab .arch-s2473 svg .arch-s2473-lane-real-head{fill:var(--s2473-real);stroke:none}
.arch-lab .arch-s2473 svg text.arch-s2473-snum{fill:var(--arch-muted);font-weight:700}
.arch-lab .arch-s2473 svg text.arch-s2473-snum-sel{fill:var(--arch-ink)}
.arch-lab .arch-s2473 svg tspan.arch-s2473-mark-star{fill:var(--s2473-gold)}
.arch-lab .arch-s2473 svg tspan.arch-s2473-mark-bad{fill:var(--arch-bad)}
.arch-lab .arch-s2473 svg text.arch-s2473-role{fill:var(--arch-muted)}
.arch-lab .arch-s2473-keys{display:flex;flex-wrap:wrap;gap:4px 16px}
.arch-lab .arch-s2473-keys span{display:inline-flex;align-items:center;gap:6px}
.arch-lab .arch-s2473-key{flex:0 0 auto}
.arch-lab .arch-s2473-detail{margin:0;line-height:1.9;overflow-wrap:anywhere}
.arch-lab .arch-s2473-slots,.arch-lab .arch-s2473-picks,.arch-lab .arch-s2473-palette{display:flex;flex-wrap:wrap;gap:6px}
.arch-lab .arch-s2473 button.arch-s2473-slot{display:inline-flex;flex-direction:column;align-items:center;gap:2px;min-width:64px;min-height:64px;padding:6px 10px;border-radius:14px;background:var(--arch-surface);border:1px solid var(--arch-field-line);color:var(--arch-ink)}
.arch-lab .arch-s2473 button.arch-s2473-slot[aria-pressed=true]{border:2px solid var(--arch-focus);background:var(--arch-pressed-bg)}
.arch-lab .arch-s2473-marks{display:flex;gap:4px;min-height:1.2em;font-weight:800;font-size:15px;line-height:1.2}
.arch-lab .arch-s2473-m-plan{color:var(--s2473-plan)}
.arch-lab .arch-s2473-m-real{color:var(--s2473-real)}
.arch-lab .arch-s2473 button.arch-s2473-color{min-width:46px;min-height:48px;padding:4px;border-radius:12px;background:var(--arch-surface);border:1px solid var(--arch-field-line)}
.arch-lab .arch-s2473 button.arch-s2473-color[aria-pressed=true]{border:3px solid var(--arch-focus);background:var(--arch-pressed-bg)}
.arch-lab .arch-s2473 button.arch-s2473-pick{display:inline-flex;align-items:center;gap:6px;min-height:46px;padding:6px 12px;border-radius:999px;background:var(--arch-surface);border:1px solid var(--arch-field-line);color:var(--arch-ink)}
.arch-lab .arch-s2473 button.arch-s2473-pick[aria-pressed=true]{border:2px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);font-weight:700}
.arch-lab .arch-s2473-pnum{font-size:15px}
.arch-lab .arch-s2473-note{margin:0;padding:10px 12px;border-radius:10px;background:var(--arch-surface);border:1px solid var(--arch-soft-line);line-height:1.5}
.arch-lab .arch-s2473-note[data-kind=warn]{background:var(--arch-bad-bg);border-color:var(--arch-bad)}
.arch-lab .arch-s2473-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.arch-lab .arch-s2473-reveal{justify-self:start}
@media (max-width:480px){.arch-lab .arch-s2473 button.arch-s2473-pick{padding:6px 8px}.arch-lab .arch-s2473 button.arch-s2473-slot{min-width:56px}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: SPb 2023/24, 7 класс, №4 «Остатки Саши и Таи»
   (visuals/labs/s24-7-4-sums.mjs). Colours: the shared --arch-* tokens (both themes) and three local ones (the two columns and the highlight). The lab class sits on the body of the lab (mount(root)), so the
   variables are set on both «.arch-lab.arch-s24-7-4» and «.arch-lab .arch-s24-7-4», in the light theme and both dark branches. */
.arch-lab.arch-s24-7-4,.arch-lab .arch-s24-7-4{--s2474-a:#dbeafe;--s2474-b:#fce7f3;--s2474-hit:#fef3c7}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab.arch-s24-7-4,:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s24-7-4{--s2474-a:#1e3a5f;--s2474-b:#4a1d36;--s2474-hit:#4a3a10}}
:root[data-design="v2"][data-theme="dark"] .arch-lab.arch-s24-7-4,:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s24-7-4{--s2474-a:#1e3a5f;--s2474-b:#4a1d36;--s2474-hit:#4a3a10}
.arch-lab .arch-s24-7-4-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
/* the number N */
.arch-lab .arch-s24-7-4-nrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.arch-lab .arch-s24-7-4-nctl,.arch-lab .arch-s24-7-4-rctl{display:flex;align-items:center;gap:6px;min-width:0}
.arch-lab .arch-s24-7-4-nctl{flex:1 1 220px;max-width:360px}
.arch-lab .arch-s24-7-4-step{flex:0 0 auto;min-width:48px;padding:8px 10px;font-variant-numeric:tabular-nums}
.arch-lab input.arch-s24-7-4-nfield{width:0;flex:1 1 0;min-width:0;font-variant-numeric:tabular-nums;text-align:center}
.arch-lab input.arch-s24-7-4-rfield{width:5ch;flex:0 1 auto;font-variant-numeric:tabular-nums;text-align:center}
.arch-lab .arch-s24-7-4-msg{margin:0;font-size:14px;color:var(--arch-bad)}
.arch-lab .arch-s24-7-4-msg:not(.arch-s24-7-4-msg-on){display:none}
/* the board: two children with their remainders */
.arch-lab .arch-s24-7-4-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 8px;max-width:520px;margin:auto}
.arch-lab .arch-s24-7-4-nhead{grid-column:1/-1;margin:0;text-align:center;font-weight:700;font-size:18px;color:var(--arch-ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.arch-lab .arch-s24-7-4-col{display:grid;justify-items:center;align-content:start;gap:4px;min-width:0;border-radius:12px;padding:6px 4px 8px}
.arch-lab .arch-s24-7-4-col-0{background:var(--s2474-a)}
.arch-lab .arch-s24-7-4-col-1{background:var(--s2474-b)}
.arch-lab svg.arch-s24-7-4-kid{width:min(96px,80%);height:auto;display:block}
.arch-lab .arch-s24-7-4-name{margin:0;font-weight:700;color:var(--arch-label)}
.arch-lab .arch-s24-7-4-cells{list-style:none;margin:0;padding:0;display:grid;gap:4px;width:100%}
.arch-lab .arch-s24-7-4-cell{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 4px;background:var(--arch-surface);border:1px solid var(--arch-soft-line);border-radius:8px;padding:2px 5px;min-width:0;font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-7-4-cell-d{font-size:13px;color:var(--arch-muted);white-space:nowrap}
.arch-lab .arch-s24-7-4-cell-r{font-size:18px;font-weight:700;color:var(--arch-ink)}
.arch-lab .arch-s24-7-4-total{margin:0;font-size:14px;color:var(--arch-ink);text-align:center;font-variant-numeric:tabular-nums;overflow-wrap:normal}
.arch-lab .arch-s24-7-4-diff{grid-column:1/-1;text-align:center;border-top:1px dashed var(--arch-soft-line);padding-top:8px}
.arch-lab .arch-s24-7-4-diff p{margin:0}
.arch-lab .arch-s24-7-4-diff-main{font-size:20px;font-weight:700;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-7-4-diff-to{font-size:15px;color:var(--arch-muted)}
.arch-lab .arch-s24-7-4-hit{color:var(--arch-good);font-weight:700}
.arch-lab .arch-s24-7-4-details summary{cursor:pointer;color:var(--arch-link);min-height:44px;display:flex;align-items:center}
.arch-lab .arch-s24-7-4-divs{margin:4px 0 0;padding-left:1.2em;display:grid;gap:2px;font-variant-numeric:tabular-nums;color:var(--arch-ink);overflow-wrap:normal}
/* own remainders */
.arch-lab .arch-s24-7-4-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:10px}
.arch-lab .arch-s24-7-4-group{margin:0;border:1px solid var(--arch-soft-line);border-radius:12px;padding:6px 10px 10px;display:grid;gap:8px;min-width:0}
.arch-lab .arch-s24-7-4-group:first-child{background:var(--s2474-a)}
.arch-lab .arch-s24-7-4-group:last-child{background:var(--s2474-b)}
.arch-lab .arch-s24-7-4-group legend{font-weight:700;color:var(--arch-label);padding:0 4px;background:var(--arch-surface);border-radius:6px}
.arch-lab .arch-s24-7-4-rrow{display:grid;gap:2px;min-width:0}
.arch-lab .arch-s24-7-4-rlabel{font-weight:600;font-size:15px}
.arch-lab .arch-s24-7-4-bounds{font-weight:400;font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s24-7-4-osums{margin:0;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-7-4-hitline{background:var(--s2474-hit);border-radius:8px;padding:2px 6px}
.arch-lab .arch-s24-7-4-checks{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:8px}
.arch-lab .arch-s24-7-4-check{border-left:4px solid var(--arch-soft-line);padding:2px 0 2px 10px}
.arch-lab .arch-s24-7-4-check-bad{border-left-color:var(--arch-bad)}
.arch-lab .arch-s24-7-4-check-ok{border-left-color:var(--arch-good)}
.arch-lab .arch-s24-7-4-check-title{font-weight:600;display:flex;gap:6px;align-items:baseline}
.arch-lab .arch-s24-7-4-mark{flex:0 0 auto;font-weight:700}
.arch-lab .arch-s24-7-4-check-bad .arch-s24-7-4-mark{color:var(--arch-bad)}
.arch-lab .arch-s24-7-4-check-ok .arch-s24-7-4-mark{color:var(--arch-good)}
.arch-lab .arch-s24-7-4-step-n{margin:0 0 4px}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s24-8-1-schools (SPb 2023/24, 8 класс, №1).
   Only own classes; colours through --arch-* (both themes), the pupils' colours of visuals/art/classroom.css and the
   buildings of visuals/art/school-building.css. */
.arch-lab{--arch-s24-8-1-kids:#0f9488}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s24-8-1-kids:#2dd4bf}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s24-8-1-kids:#2dd4bf}
.arch-lab .arch-s24-8-1-head{display:grid;gap:8px}
.arch-lab .arch-s24-8-1-variant{margin:0}
.arch-lab .arch-s24-8-1-goal{margin:0;line-height:1.55;color:var(--arch-ink)}
.arch-lab .arch-s24-8-1-label{margin:4px 0 0;font-weight:600;color:var(--arch-label)}
/* the compact result under the placement fields (the full one is in the status above) */
.arch-lab .arch-s24-8-1-capacity{margin:0;line-height:1.55;color:var(--arch-ink);font-variant-numeric:tabular-nums}
/* the scene */
.arch-lab svg .arch-s24-8-1-ground{stroke:var(--arch-fig-line);stroke-width:1.5}
.arch-lab svg .arch-s24-8-1-fill{opacity:.62;stroke:none}
.arch-lab svg .arch-s24-8-1-over{opacity:.8;stroke:none}
.arch-lab svg .arch-s24-8-1-fill-girl{fill:var(--spb-class-girl)}
.arch-lab svg .arch-s24-8-1-fill-boy{fill:var(--spb-class-boy)}
.arch-lab svg .arch-s24-8-1-fill-kids{fill:var(--arch-s24-8-1-kids)}
.arch-lab svg .arch-s24-8-1-fill-mark{stroke:var(--arch-fig-line);stroke-width:1.2;stroke-dasharray:4 3}
.arch-lab svg .arch-s24-8-1-over-frame{fill:none;stroke:var(--arch-bad);stroke-width:2;stroke-linejoin:round}
.arch-lab svg text.arch-s24-8-1-overtext{fill:var(--arch-bad);font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s24-8-1-line1{font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s24-8-1-line1.arch-s24-8-1-bad{fill:var(--arch-bad)}
.arch-lab svg text.arch-s24-8-1-line2{fill:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab svg .arch-s24-8-1-arrow{stroke:var(--arch-accent);stroke-width:3;stroke-linecap:round}
.arch-lab svg .arch-s24-8-1-arrowhead{fill:var(--arch-accent);stroke:none}
.arch-lab svg .arch-s24-8-1-arrow.arch-s24-8-1-arrow-off{stroke:var(--arch-muted);stroke-dasharray:5 4}
.arch-lab svg .arch-s24-8-1-arrowhead.arch-s24-8-1-arrow-off{fill:var(--arch-muted)}
.arch-lab svg text.arch-s24-8-1-movetext{font-weight:700;fill:var(--arch-accent);font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s24-8-1-movetext.arch-s24-8-1-bad{fill:var(--arch-bad)}
.arch-lab svg text.arch-s24-8-1-movesub{fill:var(--arch-ink)}
/* the legend: a square for girls, a circle for boys, a rounded bar for pupils of any kind, a red frame for the extra */
.arch-lab .arch-s24-8-1-legend{font-size:14px}
.arch-lab .arch-s24-8-1-swatch{display:inline-block;width:14px;height:14px;flex:0 0 auto;opacity:.85}
.arch-lab .arch-s24-8-1-sw-girl{background:var(--spb-class-girl);border-radius:2px}
.arch-lab .arch-s24-8-1-sw-boy{background:var(--spb-class-boy);border-radius:50%}
.arch-lab .arch-s24-8-1-sw-kids{background:var(--arch-s24-8-1-kids);border-radius:4px;width:20px;height:10px}
.arch-lab .arch-s24-8-1-sw-over{border:2px solid var(--arch-bad);border-radius:2px;width:12px;height:12px;background:none}
/* the status and the search */
.arch-lab .arch-s24-8-1-facts p{margin:3px 0;font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-8-1-note{margin:0}
.arch-lab .arch-s24-8-1-search{display:grid;gap:6px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink)}
.arch-lab .arch-s24-8-1-search p{margin:0;line-height:1.55;font-variant-numeric:tabular-nums}
.arch-lab .arch-s24-8-1-exhead{margin:0;font-size:16px;color:var(--arch-label)}
.arch-lab .arch-s24-8-1-exhead:focus{outline:none}
.arch-lab .arch-s24-8-1-exhead:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}

/* SPb 2023/24, grade 8, problem 2 — «Весы неравенства» (labs/s24-8-2-balance.mjs). The balance and the weights are
   pictures (visuals/art/beam-balance.mjs and the brass weight of visuals/art/shop-scale.mjs, their own colours); the colours
   of the three numbers, of the two sides, of the tapes and of the marks are defined here for the light theme and both
   dark branches; everything else goes through --arch-* tokens. */
.arch-lab .arch-s2482{--arch-s2482-c0:#1d4ed8;--arch-s2482-c1:#c2410c;--arch-s2482-c2:#047857;--arch-s2482-on:#ffffff;--arch-s2482-p0:#bfdbfe;--arch-s2482-p1:#fed7aa;--arch-s2482-p2:#a7f3d0;--arch-s2482-piece-ink:#1f2937;--arch-s2482-left:#1e3a8a;--arch-s2482-right:#7c2d12;--arch-s2482-out-bg:#fff7ed;--arch-s2482-out-line:#c2410c}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2482{--arch-s2482-c0:#93c5fd;--arch-s2482-c1:#fdba74;--arch-s2482-c2:#6ee7b7;--arch-s2482-on:#0f172a;--arch-s2482-p0:#1e40af;--arch-s2482-p1:#9a3412;--arch-s2482-p2:#065f46;--arch-s2482-piece-ink:#f8fafc;--arch-s2482-left:#bfdbfe;--arch-s2482-right:#fed7aa;--arch-s2482-out-bg:#3a2412;--arch-s2482-out-line:#fb923c}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2482{--arch-s2482-c0:#93c5fd;--arch-s2482-c1:#fdba74;--arch-s2482-c2:#6ee7b7;--arch-s2482-on:#0f172a;--arch-s2482-p0:#1e40af;--arch-s2482-p1:#9a3412;--arch-s2482-p2:#065f46;--arch-s2482-piece-ink:#f8fafc;--arch-s2482-left:#bfdbfe;--arch-s2482-right:#fed7aa;--arch-s2482-out-bg:#3a2412;--arch-s2482-out-line:#fb923c}
.arch-lab .arch-s2482-variant{border-top:0;padding-top:0}
.arch-lab .arch-s2482-variant-note{color:var(--arch-ink);font-size:15px}
/* the guess */
.arch-lab .arch-s2482-guess button{min-height:44px}
.arch-lab .arch-s2482-guess-cmp{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2482-guess-cmp.arch-s2482-refuted{color:var(--arch-bad)}
/* the balance */
.arch-lab .arch-s2482-stage{padding:4px}
.arch-lab .phx-svg text.arch-s2482-term{font-weight:700;fill:var(--arch-ink)}
.arch-lab .phx-svg text.arch-s2482-term.arch-s2482-side-0,.arch-lab .phx-svg text.arch-s2482-val.arch-s2482-side-0{fill:var(--arch-s2482-left)}
.arch-lab .phx-svg text.arch-s2482-term.arch-s2482-side-1,.arch-lab .phx-svg text.arch-s2482-val.arch-s2482-side-1{fill:var(--arch-s2482-right)}
.arch-lab .phx-svg text.arch-s2482-val{font-weight:700;fill:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .phx-svg text.arch-s2482-verdict{font-weight:600;fill:var(--arch-label)}
.arch-lab .phx-svg text.arch-s2482-verdict.arch-s2482-v-right{fill:var(--arch-bad)}
.arch-lab .phx-svg text.arch-s2482-verdict.arch-s2482-v-level{fill:var(--arch-good)}
/* the three number fields */
.arch-lab .arch-s2482-eds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0}
@media (max-width:700px){.arch-lab .arch-s2482-eds{grid-template-columns:minmax(0,1fr)}}
.arch-lab .arch-s2482-ed{display:grid;gap:4px;min-width:0;padding:8px 10px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s2482-ed-name{display:flex;align-items:center;gap:8px}
.arch-lab .arch-s2482-ed-text{font-weight:600}
.arch-lab .arch-s2482-ed-tag{display:inline-flex;justify-content:center;min-width:2em;padding:1px 8px;border-radius:999px;font-size:16px;font-weight:700;font-style:italic;color:var(--arch-s2482-on);background:var(--arch-s2482-c0)}
.arch-lab .arch-s2482-ed[data-i="1"] .arch-s2482-ed-tag{background:var(--arch-s2482-c1)}
.arch-lab .arch-s2482-ed[data-i="2"] .arch-s2482-ed-tag{background:var(--arch-s2482-c2)}
.arch-lab .arch-s2482-ed-row{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;gap:6px;align-items:center;min-width:0}
.arch-lab .arch-s2482-step{min-width:48px;min-height:48px;padding:0;font-size:18px;font-weight:600;border-radius:12px;font-variant-numeric:tabular-nums}
.arch-lab input.arch-s2482-num-input{box-sizing:border-box;width:100%;height:48px;min-height:48px;padding:4px 6px;text-align:center;font-size:20px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2482-ed-msg{margin:0;font-size:14px;color:var(--arch-bad)}
.arch-lab .arch-s2482-ed-msg:empty{display:none}
/* the order of the statement */
.arch-lab .arch-s2482-order{display:flex;gap:8px;align-items:flex-start;margin:0;padding:8px 10px;border-left:4px solid var(--arch-good);border-radius:4px;background:var(--arch-ok-bg);color:var(--arch-ink);font-weight:600}
.arch-lab .arch-s2482-order.arch-s2482-order-out{border-left-color:var(--arch-s2482-out-line);background:var(--arch-s2482-out-bg)}
.arch-lab .arch-s2482-mark{flex:0 0 auto;display:inline-flex;justify-content:center;width:1.3em;font-weight:700}
.arch-lab .arch-s2482-mark-ok{color:var(--arch-good)}
.arch-lab .arch-s2482-mark-out{color:var(--arch-s2482-out-line)}
.arch-lab .arch-s2482-note{color:var(--arch-ink)}
/* the sides in full */
.arch-lab .arch-s2482-pans{list-style:none;padding:0;margin:0;display:grid;gap:6px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2482-pan-name{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2482-level{color:var(--arch-good);font-weight:600}
.arch-lab .arch-s2482-rec-list{margin:4px 0;padding-left:1.2em;display:grid;gap:4px;font-variant-numeric:tabular-nums}
/* the reasoning */
.arch-lab .arch-s2482-explain{display:grid;gap:8px}
.arch-lab .arch-s2482-explain-body{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2482-formula{margin:2px 0;font-size:17px;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}
.arch-lab .arch-s2482-formula span{max-width:100%;overflow-wrap:anywhere}
.arch-lab .arch-s2482-concl{font-weight:600;color:var(--arch-good)}
.arch-lab .arch-s2482-outside{padding:8px 10px;border-left:4px solid var(--arch-s2482-out-line);border-radius:4px;background:var(--arch-s2482-out-bg)}
.arch-lab .arch-s2482-tape-stage{padding:4px}
.arch-lab .arch-s2482-piece{stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab .arch-s2482-piece.arch-s2482-c0{fill:var(--arch-s2482-p0)}
.arch-lab .arch-s2482-piece.arch-s2482-c1{fill:var(--arch-s2482-p1)}
.arch-lab .arch-s2482-piece.arch-s2482-c2{fill:var(--arch-s2482-p2)}
.arch-lab .phx-svg text.arch-s2482-piece-t{font-weight:700;font-style:italic;fill:var(--arch-s2482-piece-ink);stroke:none}
.arch-lab .phx-svg text.arch-s2482-tape-title{font-weight:600;fill:var(--arch-label)}
.arch-lab .arch-s2482-mark6{fill:none;stroke:var(--arch-ink);stroke-width:2;stroke-dasharray:5 4}
.arch-lab .phx-svg text.arch-s2482-mark6-t{font-weight:700;fill:var(--arch-ink)}
.arch-lab .arch-s2482-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: SPb 2023/24, 8 класс, задача 3 «Федя и разбиения» (labs/s24-8-3-pairs.mjs).
   Own colours for the badges under the cards and the map of pairs, with the light branch and both dark branches. */
.arch-lab{--arch-s2483-yes-bg:#dcfce7;--arch-s2483-yes-line:#15803d;--arch-s2483-yes-ink:#14532d;--arch-s2483-no-bg:#fee2e2;--arch-s2483-no-line:#b91c1c;--arch-s2483-no-ink:#7f1d1d;--arch-s2483-open-bg:#f1f5f9;--arch-s2483-open-line:#94a3b8;--arch-s2483-open-ink:#334155;--arch-s2483-tried-bg:#fef3c7;--arch-s2483-tried-line:#b45309;--arch-s2483-tried-ink:#78350f;
 --arch-s2483-c-open:#e2e8f0;--arch-s2483-c-half:#bfdbfe;--arch-s2483-c-left:#2563eb;--arch-s2483-c-right:#d97706;--arch-s2483-c-clash:#dc2626;--arch-s2483-focus:#111827}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s2483-c-open:#3f4654;--arch-s2483-c-half:#1e3a5f;--arch-s2483-c-left:#60a5fa;--arch-s2483-c-right:#fbbf24;--arch-s2483-c-clash:#f87171;--arch-s2483-focus:#f8fafc}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s2483-c-open:#3f4654;--arch-s2483-c-half:#1e3a5f;--arch-s2483-c-left:#60a5fa;--arch-s2483-c-right:#fbbf24;--arch-s2483-c-clash:#f87171;--arch-s2483-focus:#f8fafc}
.arch-lab .arch-s2483-stage{padding:6px}
.arch-lab .arch-s2483-board text{font-variant-numeric:tabular-nums}
/* badges sit on the dark green board: the same light colours in both themes */
.arch-lab .arch-s2483-badge rect{stroke-width:1.5}
.arch-lab svg .arch-s2483-badge text{font-weight:700;font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif;stroke:none}
.arch-lab .arch-s2483-badge-yes rect{fill:var(--arch-s2483-yes-bg);stroke:var(--arch-s2483-yes-line)}
.arch-lab svg .arch-s2483-badge-yes text{fill:var(--arch-s2483-yes-ink)}
.arch-lab .arch-s2483-badge-no rect{fill:var(--arch-s2483-no-bg);stroke:var(--arch-s2483-no-line)}
.arch-lab svg .arch-s2483-badge-no text{fill:var(--arch-s2483-no-ink)}
.arch-lab .arch-s2483-badge-open rect{fill:var(--arch-s2483-open-bg);stroke:var(--arch-s2483-open-line)}
.arch-lab svg .arch-s2483-badge-open text{fill:var(--arch-s2483-open-ink)}
.arch-lab .arch-s2483-badge-tried rect{fill:var(--arch-s2483-tried-bg);stroke:var(--arch-s2483-tried-line)}
.arch-lab svg .arch-s2483-badge-tried text{fill:var(--arch-s2483-tried-ink)}
.arch-lab .arch-s2483-choose button{flex:1 1 200px}
.arch-lab .arch-s2483-why ul,.arch-lab .arch-s2483-whylist{margin:0;padding-left:1.2em;display:grid;gap:4px;line-height:1.5}
.arch-lab .arch-s2483-fact{font-weight:700}
.arch-lab .arch-s2483-yes{color:var(--arch-good)}
.arch-lab .arch-s2483-no{color:var(--arch-bad)}
.arch-lab .arch-s2483-reason{color:var(--arch-ink)}
.arch-lab .arch-s2483-chainbox{display:grid;gap:12px;min-width:0}
.arch-lab .arch-s2483-chainbox[hidden]{display:none}
.arch-lab .arch-s2483-chainbox:focus{outline:none}
.arch-lab .arch-s2483-chainbox:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s2483-branch{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--arch-soft-line);border-radius:12px;background:var(--arch-surface);min-width:0}
.arch-lab .arch-s2483-branch-head{margin:0;line-height:1.5}
.arch-lab .arch-s2483-chainwrap{display:grid;gap:6px;min-width:0}
.arch-lab ol.arch-s2483-chain{margin:0;padding-left:1.7em;display:grid;gap:6px;line-height:1.5;overflow-wrap:anywhere}
.arch-lab .arch-s2483-chain li::marker{font-weight:700;color:var(--arch-muted)}
.arch-lab .arch-s2483-choice-line .arch-s2483-fact{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.arch-lab .arch-s2483-clash-line{background:var(--arch-bad-bg);border-radius:8px;padding:2px 6px}
.arch-lab .arch-s2483-verdict{margin:0;padding:8px 10px;border-left:4px solid var(--arch-bad);background:var(--arch-surface);line-height:1.5}
.arch-lab .arch-s2483-mapstage{padding:6px}
.arch-lab .arch-s2483-map{display:block;width:100%;height:auto;cursor:pointer}
.arch-lab .arch-s2483-cell{stroke:none}
.arch-lab .arch-s2483-cell-open{fill:var(--arch-s2483-c-open);background:var(--arch-s2483-c-open)}
.arch-lab .arch-s2483-cell-half{fill:var(--arch-s2483-c-half);background:var(--arch-s2483-c-half)}
.arch-lab .arch-s2483-cell-left{fill:var(--arch-s2483-c-left);background:var(--arch-s2483-c-left)}
.arch-lab .arch-s2483-cell-right{fill:var(--arch-s2483-c-right);background:var(--arch-s2483-c-right)}
.arch-lab .arch-s2483-cell-clash{fill:var(--arch-s2483-c-clash);background:var(--arch-s2483-c-clash)}
.arch-lab .arch-s2483-cell-focus{fill:none;stroke:var(--arch-s2483-focus);stroke-width:2}
.arch-lab .arch-s2483-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px;font-size:14px;color:var(--arch-ink)}
.arch-lab .arch-s2483-legend li{display:flex;gap:6px;align-items:center}
.arch-lab .arch-s2483-key{display:inline-block;width:14px;height:14px;border-radius:3px;flex:0 0 auto}
.arch-lab .arch-s2483-nrow .arch-s2483-nbox{flex:1 1 160px;width:auto;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2483-nrow button{flex:0 0 auto}
.arch-lab .arch-s2483-nout:empty{display:none}
.arch-lab .arch-s2483-param input.phx-num,.arch-lab input.arch-s2483-nbox{box-sizing:border-box}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2023/24, 8 класс, задача 4 «Биссектриса и сумма сторон».
   The paper triangle comes from visuals/art/paper-cutout.css. Here: the side BC (blue) and AB (orange), the segment CE
   (teal) — the same colours on the drawing and on the strips under it —, the bisector (dashed, two equal arcs), the
   construction of hint 2 (violet: K, KL, KE, the triangle CKE), the angles ∠C = ∠LKE (amber) and ∠B = ∠EKC (green),
   letters with a halo. Light and both dark branches. */
.arch-lab .arch-s2484{--s2484-bc:#1d4ed8;--s2484-ab:#c2410c;--s2484-ce:#0f766e;--s2484-k:#7c3aed;--s2484-cke:rgba(124,58,237,.14);--s2484-ang-c:rgba(217,119,6,.38);--s2484-ang-b:rgba(22,163,74,.32);--s2484-halo:#ffffff;--s2484-short:#94a3b8;--s2484-ok:#047857}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2484{--s2484-bc:#93c5fd;--s2484-ab:#fdba74;--s2484-ce:#5eead4;--s2484-k:#c4b5fd;--s2484-cke:rgba(196,181,253,.18);--s2484-ang-c:rgba(251,191,36,.42);--s2484-ang-b:rgba(74,222,128,.34);--s2484-halo:#141c2b;--s2484-short:#64748b;--s2484-ok:#6ee7b7}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2484{--s2484-bc:#93c5fd;--s2484-ab:#fdba74;--s2484-ce:#5eead4;--s2484-k:#c4b5fd;--s2484-cke:rgba(196,181,253,.18);--s2484-ang-c:rgba(251,191,36,.42);--s2484-ang-b:rgba(74,222,128,.34);--s2484-halo:#141c2b;--s2484-short:#64748b;--s2484-ok:#6ee7b7}
.arch-lab .arch-s2484-stage{padding:8px}
.arch-lab .arch-s2484-svg{display:block;width:100%;max-width:100%;height:auto;margin:0 auto}
.arch-lab .arch-s2484-frame{display:grid;gap:10px}
.arch-lab .arch-s2484-frame>*{margin:0}
.arch-lab .arch-s2484-quick{gap:6px 20px}
.arch-lab .arch-s2484-quick dd{font-size:17px}
.arch-lab .arch-s2484-quick [data-tone=ce] dt,.arch-lab .arch-s2484-quick [data-tone=ce] dd{color:var(--s2484-ce)}
.arch-lab .arch-s2484-msg:empty{display:none}
.arch-lab .arch-s2484-msg{color:var(--arch-label);font-weight:600}
.arch-lab .arch-s2484-keyicon{flex:0 0 auto}
/* the drawing */
.arch-lab .arch-s2484-side{stroke:var(--arch-fig-line);stroke-width:2.2;stroke-linecap:round}
.arch-lab .arch-s2484-bc{stroke:var(--s2484-bc);stroke-width:3.2;stroke-linecap:round}
.arch-lab .arch-s2484-ab{stroke:var(--s2484-ab);stroke-width:3.2;stroke-linecap:round}
.arch-lab .arch-s2484-ce{stroke:var(--s2484-ce);stroke-width:6;stroke-linecap:butt;opacity:.85}
.arch-lab .arch-s2484-bis{stroke:var(--arch-fig-line);stroke-width:1.6;stroke-dasharray:6 4}
.arch-lab .arch-s2484-bisarc{fill:none;stroke:var(--arch-fig-line);stroke-width:1.3}
.arch-lab .arch-s2484-extend{stroke:var(--arch-fig-line);stroke-width:1.3;stroke-dasharray:3 4;opacity:.75}
.arch-lab .arch-s2484-kl{stroke:var(--s2484-k);stroke-width:2;stroke-dasharray:5 3}
.arch-lab .arch-s2484-ke{stroke:var(--s2484-k);stroke-width:2.4;stroke-linecap:round}
.arch-lab .arch-s2484-cke{fill:var(--s2484-cke);stroke:none}
.arch-lab .arch-s2484-ang-c{fill:var(--s2484-ang-c);stroke:none}
.arch-lab .arch-s2484-ang-b{fill:var(--s2484-ang-b);stroke:none}
.arch-lab .arch-s2484-tick{stroke:var(--arch-fig-line);stroke-width:1.8}
.arch-lab .arch-s2484-dot{fill:var(--arch-ink);stroke:var(--s2484-halo);stroke-width:1.5}
.arch-lab .arch-s2484-dot-e{fill:var(--s2484-ce)}
.arch-lab .arch-s2484-dot-k{fill:var(--s2484-k)}
.arch-lab .arch-s2484-svg text.arch-s2484-label{fill:var(--arch-ink);font-weight:700;stroke:var(--s2484-halo);stroke-width:4px;paint-order:stroke;stroke-linejoin:round}
.arch-lab .arch-s2484-svg text.arch-s2484-label-e{fill:var(--s2484-ce)}
.arch-lab .arch-s2484-svg text.arch-s2484-label-k{fill:var(--s2484-k)}
.arch-lab .arch-s2484-svg text.arch-s2484-note{fill:var(--arch-muted);font-weight:600}
/* the strips under the drawing */
.arch-lab .arch-s2484-svg text.arch-s2484-striptext{fill:var(--arch-ink);font-weight:600}
.arch-lab .arch-s2484-svg tspan.arch-s2484-t-bc{fill:var(--s2484-bc);font-weight:700}
.arch-lab .arch-s2484-svg tspan.arch-s2484-t-ab{fill:var(--s2484-ab);font-weight:700}
.arch-lab .arch-s2484-svg tspan.arch-s2484-t-ce{fill:var(--s2484-ce);font-weight:700}
.arch-lab .arch-s2484-strip-bc{fill:var(--s2484-bc)}
.arch-lab .arch-s2484-strip-ab{fill:var(--s2484-ab)}
.arch-lab .arch-s2484-strip-ce{fill:var(--s2484-ce)}
.arch-lab .arch-s2484-strip-long{fill:var(--arch-fig-line)}
.arch-lab .arch-s2484-strip-short{fill:var(--s2484-short)}
.arch-lab .arch-s2484-cmp{stroke:var(--arch-bad);stroke-width:1.6;stroke-dasharray:3 3}
.arch-lab .arch-s2484-cmp-ok{stroke:var(--s2484-ok);stroke-width:2.2;stroke-dasharray:none}
/* parameters, construction, found triangles, sweep */
.arch-lab .arch-s2484-params .phx-param-msg.arch-s2484-accepted{color:var(--arch-label)}
.arch-lab .arch-s2484-toggle[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s2484-build[hidden],.arch-lab .arch-s2484-sweep[hidden]{display:none}
.arch-lab .arch-s2484-build p,.arch-lab .arch-s2484-found p{margin:0}
.arch-lab .arch-s2484-angles{gap:6px 18px}
.arch-lab .arch-s2484-angles [data-tone=c] dd{color:#b45309}
.arch-lab .arch-s2484-angles [data-tone=b] dd{color:#15803d}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2484-angles [data-tone=c] dd{color:#fbbf24}:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2484-angles [data-tone=b] dd{color:#4ade80}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2484-angles [data-tone=c] dd{color:#fbbf24}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2484-angles [data-tone=b] dd{color:#4ade80}
.arch-lab .arch-s2484 input{box-sizing:border-box}

/* SPb 2023/24, grade 8, problem 5 — «Раскрась доску сам» (labs/s24-8-5-paint.mjs). The board is a grid of real buttons
   (one per cell) with an SVG overlay above it for the corners of the example, the crossroads of «Почему не больше?» and
   the link of the last move. The paint uses the gouache colours of visuals/art/gouache.css, so the jars of the scene and
   the cells are painted with the same paint. Own colours: the white board, its lines and frame, the holes of the cut
   cells, the marks of the chosen cell and of its neighbours, the crossroads, the corners and the link — light theme and
   both dark branches; everything else goes through --arch-* tokens. */
.arch-lab .arch-s585{--arch-s585-board:#fdfdf8;--arch-s585-line:#b9c3d0;--arch-s585-frame:#8a6a45;--arch-s585-hole:#3b4554;--arch-s585-pick:#b45309;
 --arch-s585-cross:#7c3aed;--arch-s585-corner:#f59e0b;--arch-s585-link:#111827;--arch-s585-letter:#ffffff}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s585{--arch-s585-board:#d9dee6;--arch-s585-line:#8e9aab;--arch-s585-frame:#a87440;--arch-s585-hole:#0b1220;--arch-s585-pick:#d97706;--arch-s585-cross:#6d28d9;--arch-s585-corner:#f59e0b;--arch-s585-link:#0b1220}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s585{--arch-s585-board:#d9dee6;--arch-s585-line:#8e9aab;--arch-s585-frame:#a87440;--arch-s585-hole:#0b1220;--arch-s585-pick:#d97706;--arch-s585-cross:#6d28d9;--arch-s585-corner:#f59e0b;--arch-s585-link:#0b1220}
.arch-lab .arch-s585-top{border-top:0;padding-top:0}
.arch-lab .arch-s585-variant-note{margin:0;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s585-size-label{font-size:15px;color:var(--arch-muted)}
/* the scene and the legend of the two taps: side by side when there is room */
.arch-lab .arch-s585-scene-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;min-width:0}
.arch-lab .arch-s585-scene{display:block;flex:0 1 300px;width:100%;max-width:300px;height:auto;min-width:0}
.arch-lab .arch-s585-table{fill:var(--p25-wood);opacity:.55}
.arch-lab .arch-s585-badge{fill:var(--arch-primary-bg)}
.arch-lab .arch-s585-badge-t{fill:var(--arch-primary-ink);font-size:17px;font-weight:700}
.arch-lab .arch-s585-taps{flex:1 1 220px;display:grid;gap:6px;margin:0;padding:0;list-style:none;font-size:15px;color:var(--arch-ink);min-width:0}
.arch-lab .arch-s585-taps li{display:flex;align-items:center;gap:8px}
.arch-lab .arch-s585-swatch{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:28px;padding:0 4px;box-sizing:border-box;border-radius:6px 9px 7px 10px;color:var(--arch-s585-letter);font-weight:700;font-size:14px}
.arch-lab .arch-s585-c-green{background-color:var(--spb-gouache-green)}
.arch-lab .arch-s585-c-red{background-color:var(--spb-gouache-red)}
.arch-lab .arch-s585-c-blue{background-color:var(--spb-gouache-blue)}
.arch-lab .arch-s585-stage{padding:10px;transition:border-color .3s}
.arch-lab .arch-s585-stage.arch-s585-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
/* the board: column numbers on top, row numbers on the left (rows from the top, as in the text) */
.arch-lab .arch-s585-board{--n:6;display:grid;grid-template-columns:22px minmax(0,1fr);grid-template-rows:22px auto;width:min(100%,calc(var(--n) * 58px + 22px));margin:auto}
.arch-lab .arch-zoomed .arch-s585-board{width:calc(var(--n) * 48px + 22px);max-width:none}
.arch-lab .arch-s585-collabels{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr))}
.arch-lab .arch-s585-rowlabels{display:grid;grid-template-rows:repeat(var(--n),minmax(0,1fr))}
.arch-lab .arch-s585-rowlabels span,.arch-lab .arch-s585-collabels span{display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-s585-field{position:relative;aspect-ratio:1;background:var(--arch-s585-board);box-shadow:0 0 0 3px var(--arch-s585-frame)}
.arch-lab .arch-s585-cells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr))}
.arch-lab .arch-stage .arch-s585-overlay{position:absolute;inset:0;width:100%;height:100%;max-height:none;pointer-events:none;overflow:visible;z-index:2}
.arch-lab .arch-s585-cell{position:relative;min-width:0;min-height:0;width:100%;height:100%;padding:0;margin:0;border:0;border-radius:0;background:transparent;color:var(--arch-s585-letter);cursor:pointer;
 box-shadow:inset -1px -1px 0 var(--arch-s585-line),inset 1px 1px 0 var(--arch-s585-line);-webkit-tap-highlight-color:transparent;display:flex;align-items:center;justify-content:center}
/* paint: a slightly uneven stroke inside the cell, so the grid lines stay visible */
.arch-lab .arch-s585-cell::before{content:'';position:absolute;inset:3px;border-radius:5px 9px 6px 10px;z-index:0}
.arch-lab .arch-s585-cell.arch-s585-c-green,.arch-lab .arch-s585-cell.arch-s585-c-red,.arch-lab .arch-s585-cell.arch-s585-c-blue{background-color:transparent}
.arch-lab .arch-s585-cell.arch-s585-c-green::before{background:var(--spb-gouache-green) linear-gradient(100deg,rgba(255,255,255,.2),transparent 45%,rgba(0,0,0,.1))}
.arch-lab .arch-s585-cell.arch-s585-c-red::before{background:var(--spb-gouache-red) linear-gradient(100deg,rgba(255,255,255,.2),transparent 45%,rgba(0,0,0,.1))}
.arch-lab .arch-s585-cell.arch-s585-c-blue::before{background:var(--spb-gouache-blue) linear-gradient(100deg,rgba(255,255,255,.2),transparent 45%,rgba(0,0,0,.1))}
.arch-lab .arch-s585-cell.is-cut{background:var(--arch-s585-hole);box-shadow:inset 0 4px 7px rgba(0,0,0,.55),inset 0 0 0 1px rgba(0,0,0,.4);cursor:not-allowed}
.arch-lab .arch-s585-cell{align-items:flex-end;padding-bottom:5px}
.arch-lab .arch-s585-letter{position:relative;z-index:1;font-weight:700;font-size:14px;line-height:1;text-shadow:0 1px 1px rgba(0,0,0,.35)}
.arch-lab .arch-s585-dots{position:absolute;top:5px;right:5px;display:flex;gap:2px;z-index:1;padding:2px 3px;border-radius:7px;background:#ffffff}
.arch-lab .arch-s585-dots:empty{display:none}
.arch-lab .arch-s585-dot{display:block;width:8px;height:8px;border-radius:50%}
@media (hover:hover){.arch-lab .arch-s585-cell:not(.is-cut):hover{background-color:rgba(36,73,116,.12)}}
.arch-lab .arch-s585-cell:focus-visible{outline:4px solid var(--arch-focus);outline-offset:-4px;z-index:3}
.arch-lab .arch-s585-cell.is-pending{outline:4px solid var(--arch-s585-pick);outline-offset:-4px;z-index:2}
.arch-lab .arch-s585-cell.is-pending:focus-visible{outline-style:double;outline-width:6px}
.arch-lab .arch-s585-cell.is-cand::after,.arch-lab .arch-s585-cell.is-bad::after{content:'';position:absolute;inset:7px;border:3px dashed var(--arch-s585-pick);border-radius:8px;z-index:1}
.arch-lab .arch-s585-cell.is-bad::after{border:3px solid var(--arch-bad);inset:5px}
/* overlay (100 units per cell) */
.arch-lab .arch-s585-corner{fill:none;stroke:var(--arch-s585-corner);stroke-width:7;stroke-linejoin:round}
.arch-lab .arch-s585-cross-under{fill:none;stroke:#ffffff;stroke-width:9}
.arch-lab .arch-s585-cross{fill:none;stroke:var(--arch-s585-cross);stroke-width:6;stroke-dasharray:16 9}
.arch-lab .arch-s585-link{stroke:var(--arch-s585-link);stroke-width:5;stroke-linecap:round;opacity:.75}
.arch-lab .arch-s585-link-end{fill:var(--arch-s585-link);opacity:.75}
/* legend keys */
.arch-lab .arch-s585-key{position:relative;flex:none;display:inline-block;width:34px;height:24px;border-radius:4px;background:var(--arch-s585-board);box-shadow:inset 0 0 0 1px var(--arch-s585-line)}
.arch-lab .arch-s585-key-cut{background:var(--arch-s585-hole);box-shadow:inset 0 3px 5px rgba(0,0,0,.55),0 0 0 1px var(--arch-field-line)}
.arch-lab .arch-s585-key-dots{top:4px;right:2px;padding:2px}
.arch-lab .arch-s585-key-link::after{content:'';position:absolute;left:5px;right:5px;top:10px;height:4px;border-radius:2px;background:var(--arch-s585-link);opacity:.75}
.arch-lab .arch-s585-why[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s585-why[aria-pressed=true]::before{content:'✓\00a0' / ''}
.arch-lab .arch-s585-readouts dt{flex:none}
.arch-lab .arch-s585-why-text{color:var(--arch-ink)}
.arch-lab .arch-s585-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-s585-stage{transition:none}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Одна строка — три тетради» (SPb 2024/25, 6 класс, №1).
   Letter cards and places of the common row are paper cards that stay light in both themes (fixed dark letters);
   the rest follows the --arch-* colours of lab.css. Notebook pictures use visuals/art/exercise-book.css. */
.arch-lab{--arch-s25-6-1-ring:#f59e0b;--arch-s25-6-1-ok:#047857;--arch-s25-6-1-bad:#b91c1c;--arch-s25-6-1-slot-empty:transparent}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s25-6-1-slot-empty:rgba(255,255,255,.04)}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s25-6-1-slot-empty:rgba(255,255,255,.04)}
.arch-lab .arch-s25-6-1-head{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s25-6-1-variant{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink);padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0}
.arch-lab .arch-s25-6-1-label{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s25-6-1-predict{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.arch-lab .arch-s25-6-1-builder{display:grid;gap:8px;min-width:0;padding:12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);container-type:inline-size}
/* the row: five places in a line on phones, all ten when the lab is wide enough */
.arch-lab .arch-s25-6-1-slots{display:grid;grid-template-columns:repeat(5,minmax(44px,58px));gap:6px;justify-content:center}
@container (min-width:520px){.arch-lab .arch-s25-6-1-slots{grid-template-columns:repeat(10,minmax(44px,58px))}}
.arch-lab button.arch-s25-6-1-slot{position:relative;min-width:44px;min-height:54px;padding:0;border-radius:10px;border:1.5px solid var(--p25-card-edge);background:var(--p25-card);color:#1f2937;display:flex;align-items:center;justify-content:center;font-family:ui-serif,Georgia,"Times New Roman",serif}
.arch-lab button.arch-s25-6-1-slot.arch-s25-6-1-empty{border-style:dashed;border-color:var(--arch-field-line);background:var(--arch-s25-6-1-slot-empty)}
.arch-lab .arch-s25-6-1-num{position:absolute;top:2px;left:5px;font:600 11px/1 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:#64748b}
.arch-lab .arch-s25-6-1-empty .arch-s25-6-1-num{color:var(--arch-muted)}
.arch-lab .arch-s25-6-1-letter{font-size:25px;font-weight:700;line-height:1}
.arch-lab button.arch-s25-6-1-slot.arch-s25-6-1-sel{outline:3px solid var(--arch-focus);outline-offset:1px;transform:translateY(-2px);box-shadow:0 3px 0 rgba(15,23,42,.18)}
.arch-lab button.arch-s25-6-1-slot.arch-s25-6-1-cyc,.arch-lab button.arch-s25-6-1-tile.arch-s25-6-1-cyc{box-shadow:inset 0 0 0 3px var(--arch-s25-6-1-ring)}
.arch-lab .arch-s25-6-1-move{gap:6px}
@container (max-width:400px){.arch-lab .arch-s25-6-1-wide-only{display:none}.arch-lab .arch-s25-6-1-move{gap:4px}.arch-lab .arch-s25-6-1-move button{padding-left:8px;padding-right:8px}}
.arch-lab .arch-s25-6-1-selhelp{min-height:2.6em}
.arch-lab .arch-s25-6-1-tiles{display:flex;flex-wrap:wrap;gap:6px}
.arch-lab button.arch-s25-6-1-tile{position:relative;min-width:48px;min-height:48px;padding:0 6px;border-radius:10px;border:1.5px solid var(--p25-card-edge);background:var(--p25-card);color:#1f2937;box-shadow:0 2px 0 var(--p25-card-edge);font-family:ui-serif,Georgia,"Times New Roman",serif}
.arch-lab .arch-s25-6-1-tile-letter{font-size:23px;font-weight:700;line-height:1}
.arch-lab .arch-s25-6-1-tile-place{position:absolute;right:4px;bottom:2px;font:600 11px/1 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:#475569}
.arch-lab button.arch-s25-6-1-tile.arch-s25-6-1-used{background:transparent;color:var(--arch-muted);border-style:dashed;border-color:var(--arch-field-line);box-shadow:none}
.arch-lab button.arch-s25-6-1-tile.arch-s25-6-1-used .arch-s25-6-1-tile-place{color:var(--arch-muted)}
.arch-lab button.arch-s25-6-1-tile.arch-s25-6-1-used.arch-s25-6-1-cyc{box-shadow:inset 0 0 0 3px var(--arch-s25-6-1-ring)}
/* the results: a short count with the named pairs right under the cards, then the three notebooks */
.arch-lab .arch-s25-6-1-summary{background:var(--arch-surface);border:1px solid var(--arch-soft-line);border-radius:14px;padding:10px 14px;color:var(--arch-ink);line-height:1.5}
.arch-lab .arch-s25-6-1-summary p{margin:0}
.arch-lab .arch-s25-6-1-marks{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:15px}
.arch-lab .arch-s25-6-1-marks li{display:flex;gap:6px;align-items:baseline}
.arch-lab .arch-s25-6-1-mark{font-weight:700;width:1em;text-align:center}
.arch-lab .arch-s25-6-1-marks li[data-kind=ok] .arch-s25-6-1-mark{color:var(--arch-good)}
.arch-lab .arch-s25-6-1-marks li[data-kind=bad] .arch-s25-6-1-mark{color:var(--arch-bad)}
.arch-lab .arch-s25-6-1-marks li[data-kind=wait] .arch-s25-6-1-mark{color:var(--arch-muted)}
.arch-lab .arch-s25-6-1-note{color:var(--arch-label);font-weight:600}
.arch-lab .arch-s25-6-1-note[hidden],.arch-lab .arch-s25-6-1-log[hidden]{display:none}
.arch-lab .arch-s25-6-1-books{display:grid;gap:10px;min-width:0;container-type:inline-size}
.arch-lab .arch-s25-6-1-bookbox{display:grid;gap:2px;justify-items:center;padding:6px 8px 8px;border:1px solid var(--arch-soft-line);border-left:4px solid var(--arch-soft-line);border-radius:12px;background:var(--arch-surface);min-width:0}
.arch-lab .arch-s25-6-1-bookbox[data-kind=ok]{border-left-color:var(--arch-good)}
.arch-lab .arch-s25-6-1-bookbox[data-kind=bad]{border-left-color:var(--arch-bad)}
.arch-lab svg.arch-s25-6-1-book{display:block;width:100%;max-width:540px;height:auto}
.arch-lab .arch-s25-6-1-verdict{margin:0;justify-self:stretch;font-size:15px;line-height:1.5;color:var(--arch-ink);overflow-wrap:anywhere}
.arch-lab .arch-s25-6-1-verdict[data-kind=ok]{color:var(--arch-good);font-weight:600}
/* a wide lab: the notebook at its natural size (1 viewBox unit = 1 px) with the verdict beside it, so the row and the
   three notebooks fit in one screen */
@container (min-width:640px){
 .arch-lab .arch-s25-6-1-bookbox{grid-template-columns:minmax(0,400px) minmax(0,1fr);align-items:center;justify-items:start;gap:4px 14px;padding:4px 12px 4px 6px}
 .arch-lab svg.arch-s25-6-1-book{max-width:400px}
 .arch-lab .arch-s25-6-1-verdict{justify-self:stretch}
}
/* text on the paper page: fixed dark ink, no halo (the page is light in both themes) */
.arch-lab svg.arch-s25-6-1-book text{stroke:none;paint-order:normal}
.arch-lab svg.arch-s25-6-1-book text.arch-s25-6-1-name{fill:#1f2937;font-size:17px;font-weight:700}
.arch-lab svg.arch-s25-6-1-book text.arch-s25-6-1-target{font-size:18px}
.arch-lab svg.arch-s25-6-1-book text.arch-s25-6-1-kept{font-size:23px}
.arch-lab svg.arch-s25-6-1-book text.arch-s25-6-1-erased{fill:#9aa3b2;font-size:21px;font-family:"Segoe Print","Comic Sans MS","Chalkboard SE","Bradley Hand",system-ui,sans-serif;opacity:.55}
.arch-lab svg.arch-s25-6-1-book text.arch-s25-6-1-readlabel{fill:#475569;font-size:14px}
.arch-lab svg.arch-s25-6-1-book text.arch-s25-6-1-read{font-size:20px}
.arch-lab svg.arch-s25-6-1-book text.arch-s25-6-1-badletter{fill:#b91c1c}
.arch-lab svg.arch-s25-6-1-book .arch-s25-6-1-gap{stroke:#94a3b8;stroke-width:1.5;stroke-dasharray:3 3}
.arch-lab svg.arch-s25-6-1-book .arch-s25-6-1-wave{fill:none;stroke:#b91c1c;stroke-width:1.6;stroke-linecap:round}
.arch-lab svg.arch-s25-6-1-book .arch-s25-6-1-ring{fill:#fde68a;fill-opacity:.55;stroke:#b45309;stroke-width:1.8}
.arch-lab svg.arch-s25-6-1-book .arch-s25-6-1-tick{fill:none;stroke:#047857;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg.arch-s25-6-1-book .arch-s25-6-1-cross{fill:none;stroke:#b91c1c;stroke-width:3.5;stroke-linecap:round}
.arch-lab .arch-s25-6-1-log{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s25-6-1-reveal{justify-self:start}
.arch-lab .arch-s25-6-1-secret ul.arch-s25-6-1-chain{margin:2px 0;padding-left:1.3em}
.arch-lab .arch-s25-6-1-secret .arch-s25-6-1-own{font-weight:600}
.arch-lab .arch-s25-6-1-secret[hidden]{display:none}
@media (max-width:420px){.arch-lab .arch-s25-6-1-builder{padding:10px 8px}.arch-lab .arch-s25-6-1-bookbox{padding:4px 4px 8px}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Покрась таблицу» (SPb 2024/25, 6 класс, №2).
   The table lies on a light sheet of paper in both themes (its cells are real colours of the statement: red, blue, green or
   white, yellow, black), so the cell colours are fixed; the rest follows the --arch-* colours of lab.css. The pencils of
   the legend use visuals/art/color-pencil.css. */
.arch-lab{--arch-s25-6-2-paper:#f7f5ee;--arch-s25-6-2-paper-edge:#c9c2ad;--arch-s25-6-2-grid:rgba(31,41,55,.28);--arch-s25-6-2-frame:#1f2937;
 --arch-s25-6-2-red:#e5484d;--arch-s25-6-2-blue:#3e63dd;--arch-s25-6-2-green:#30a46c;--arch-s25-6-2-white:#ffffff;--arch-s25-6-2-yellow:#f5c400;--arch-s25-6-2-black:#1f2937;
 --arch-s25-6-2-ok:#065f46;--arch-s25-6-2-no:#cbd5e1;--arch-s25-6-2-sel:#f59e0b;--arch-s25-6-2-blank:#e2e0d8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s25-6-2-paper:#dedad0;--arch-s25-6-2-paper-edge:#8f8a74;--arch-s25-6-2-ok:#34d399;--arch-s25-6-2-no:#4b5563;--arch-s25-6-2-blank:#cfcbc0}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s25-6-2-paper:#dedad0;--arch-s25-6-2-paper-edge:#8f8a74;--arch-s25-6-2-ok:#34d399;--arch-s25-6-2-no:#4b5563;--arch-s25-6-2-blank:#cfcbc0}
.arch-lab .arch-s25-6-2-stage{padding:6px}
/* one frame: the table and its live result in one block; the shift field and the column picker follow it directly.
   A wide lab (two columns) keeps the table in view beside the controls on a tall screen (it never covers them: it has
   its own column); a narrow lab stays in one column, in document flow. */
.arch-lab .arch-s25-6-2-work{container:arch-s25-6-2-work / inline-size;min-width:0}
.arch-lab .arch-s25-6-2-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;min-width:0}
.arch-lab :is(.arch-s25-6-2-scene,.arch-s25-6-2-controls){display:grid;grid-template-columns:minmax(0,1fr);gap:14px;min-width:0;align-content:start}
.arch-lab .arch-s25-6-2-controls{container:arch-s25-6-2-ctrl / inline-size}
@container arch-s25-6-2-work (min-width:640px){.arch-lab .arch-s25-6-2-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}
@media (min-height:700px){@container arch-s25-6-2-work (min-width:640px){
 .arch-lab .arch-s25-6-2-scene{position:sticky;top:76px}
 .arch-lab .arch-s25-6-2-thumbwrap{display:none}
}}
.arch-lab .arch-s25-6-2-status{margin:6px 2px 2px;padding-top:8px;border-top:1px solid var(--arch-soft-line);display:grid;gap:4px;color:var(--arch-ink);line-height:1.45;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-6-2-status p{margin:0}
.arch-lab .arch-s25-6-2-stmain{font-weight:700;color:var(--arch-label)}
.arch-lab .arch-s25-6-2-allok .arch-s25-6-2-stmain{color:var(--arch-good)}
.arch-lab :is(.arch-s25-6-2-strows,.arch-s25-6-2-stcount){font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s25-6-2-stcount{color:var(--arch-ink)}
.arch-lab .arch-s25-6-2-colpick{display:grid;gap:6px;min-width:0}
.arch-lab .arch-s25-6-2-coldetail{margin:0;color:var(--arch-ink);line-height:1.5;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-6-2-nav{flex-wrap:nowrap}
.arch-lab .arch-s25-6-2-nav>button{min-width:44px;padding-left:10px;padding-right:10px}
.arch-lab .arch-s25-6-2-sellabel{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.arch-lab .arch-s25-6-2-nav input.arch-s25-6-2-colnum{box-sizing:border-box;width:calc(var(--digits,2) * 0.62em + 26px);min-width:48px;text-align:center;padding:8px 6px}
.arch-lab .phx-param-msg.arch-s25-6-2-msginfo{color:var(--arch-label)}
.arch-lab .arch-s25-6-2-ownfields .phx-param-row.arch-s25-6-2-noslider{grid-template-columns:48px minmax(0,120px) 48px;grid-template-areas:"minus num plus";justify-content:start}
.arch-lab .arch-s25-6-2-ownnow{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-start;min-width:0}
.arch-lab .arch-s25-6-2-thumbwrap{flex:0 0 auto;padding:5px;border-radius:6px;background:var(--arch-s25-6-2-paper);border:1px solid var(--arch-s25-6-2-paper-edge);line-height:0}
.arch-lab .arch-s25-6-2-thumb{display:block}
.arch-lab .arch-s25-6-2-thumb .arch-s25-6-2-frame{stroke-width:.8}
.arch-lab .arch-s25-6-2-ownstate{flex:1 1 180px;min-width:0;margin:0;line-height:1.5;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-6-2-ownwhich{font-weight:600;color:var(--arch-label)}
.arch-lab :is(.arch-s25-6-2-fields,.arch-s25-6-2-ownfields) input.phx-num{box-sizing:border-box}
.arch-lab .arch-s25-6-2-svg{cursor:pointer}
.arch-lab .arch-s25-6-2-svg:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s25-6-2-paper{fill:var(--arch-s25-6-2-paper);stroke:var(--arch-s25-6-2-paper-edge);stroke-width:1}
.arch-lab .arch-s25-6-2-cell{stroke:none}
.arch-lab .arch-s25-6-2-c-red{fill:var(--arch-s25-6-2-red)}
.arch-lab .arch-s25-6-2-c-blue{fill:var(--arch-s25-6-2-blue)}
.arch-lab .arch-s25-6-2-c-green{fill:var(--arch-s25-6-2-green)}
.arch-lab .arch-s25-6-2-c-white{fill:var(--arch-s25-6-2-white)}
.arch-lab .arch-s25-6-2-c-yellow{fill:var(--arch-s25-6-2-yellow)}
.arch-lab .arch-s25-6-2-c-black{fill:var(--arch-s25-6-2-black)}
.arch-lab .arch-s25-6-2-blank{fill:var(--arch-s25-6-2-blank)}
.arch-lab .arch-s25-6-2-blanklabel{fill:var(--arch-s25-6-2-paper);stroke:var(--arch-s25-6-2-paper-edge);stroke-width:1}
.arch-lab .arch-s25-6-2-nav[hidden]{display:none}
.arch-lab .arch-s25-6-2-grid{fill:none;stroke:var(--arch-s25-6-2-grid);stroke-width:.6}
.arch-lab .arch-s25-6-2-frame{fill:none;stroke:var(--arch-s25-6-2-frame);stroke-width:1.2}
.arch-lab .arch-s25-6-2-selback{fill:none;stroke:#1f2937;stroke-width:4.5}
.arch-lab .arch-s25-6-2-sel{fill:none;stroke:var(--arch-s25-6-2-sel);stroke-width:2}
.arch-lab .arch-s25-6-2-mark{fill:var(--arch-s25-6-2-sel);stroke:none}
.arch-lab .arch-s25-6-2-svg text.arch-s25-6-2-marktext{font-size:13px;font-weight:700}
.arch-lab .arch-s25-6-2-svg text.arch-s25-6-2-legend{font-size:13px;font-weight:600}
.arch-lab .arch-s25-6-2-svg text.arch-s25-6-2-blanktext{font-size:13px;font-weight:600;fill:#1f2937;stroke:none}
.arch-lab .arch-s25-6-2-ok{fill:var(--arch-s25-6-2-ok)}
.arch-lab .arch-s25-6-2-no{fill:var(--arch-s25-6-2-no)}
.arch-lab .arch-s25-6-2-rules{display:grid;gap:2px;margin:0;padding:8px 12px;border-left:4px solid var(--arch-pressed-line);background:var(--arch-pressed-bg);border-radius:0 10px 10px 0;color:var(--arch-ink);font-size:15px;line-height:1.5}
.arch-lab .arch-s25-6-2-rules p{margin:0}
.arch-lab .arch-s25-6-2-rulewho{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s25-6-2-nav{justify-content:center;gap:8px}
.arch-lab .arch-s25-6-2-sellabel{font-weight:600;color:var(--arch-label);font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-6-2-try{margin:0;padding:10px 12px;border-radius:10px;border:1px solid var(--arch-soft-line);background:var(--arch-surface);color:var(--arch-ink);line-height:1.5}
.arch-lab .arch-s25-6-2-count{display:grid;gap:8px;padding:12px 14px;border:2px solid var(--arch-pressed-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.55;min-width:0;overflow-wrap:anywhere}
.arch-lab .arch-s25-6-2-count:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s25-6-2-counthead{margin:0;font-weight:700;color:var(--arch-label)}
.arch-lab .arch-s25-6-2-countlist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.arch-lab .arch-s25-6-2-countrow{display:block;padding-left:26px;position:relative;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-6-2-swatch{position:absolute;left:0;top:.25em;width:16px;height:16px;border-radius:4px;border:1px solid var(--arch-fig-line)}
.arch-lab .arch-s25-6-2-sw-red{background:var(--arch-s25-6-2-red)}
.arch-lab .arch-s25-6-2-sw-blue{background:var(--arch-s25-6-2-blue)}
.arch-lab .arch-s25-6-2-sw-green{background:var(--arch-s25-6-2-green)}
.arch-lab .arch-s25-6-2-sw-white{background:var(--arch-s25-6-2-white)}
.arch-lab .arch-s25-6-2-sw-yellow{background:var(--arch-s25-6-2-yellow)}
.arch-lab .arch-s25-6-2-sw-black{background:var(--arch-s25-6-2-black)}
.arch-lab .arch-s25-6-2-agree{color:var(--arch-good);font-weight:700}
.arch-lab .arch-s25-6-2-disagree{color:var(--arch-bad);font-weight:700}
.arch-lab .arch-s25-6-2-countend{margin:0;font-weight:600}
.arch-lab .arch-s25-6-2-nw{white-space:nowrap}
.arch-lab .arch-s25-6-2-note{min-height:0}
.arch-lab :is(.arch-s25-6-2-note,.arch-s25-6-2-try,.arch-s25-6-2-colpick,.arch-s25-6-2-strows,.arch-s25-6-2-stcount)[hidden]{display:none}
.arch-lab .arch-s25-6-2-own{border:1px solid var(--arch-soft-line);border-radius:14px;padding:4px 14px;background:var(--arch-surface);display:grid;gap:10px}
.arch-lab .arch-s25-6-2-own[open]{padding-bottom:14px}
.arch-lab .arch-s25-6-2-own>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:600;color:var(--arch-link)}
.arch-lab .arch-s25-6-2-own>summary:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px;border-radius:6px}
.arch-lab .arch-s25-6-2-ownstate{margin:0}
@container arch-s25-6-2-ctrl (min-width:520px){.arch-lab .arch-s25-6-2-ownfields{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
/* a narrow column (phone, 240–300 px): the word «Столбец» is hidden visually (the field keeps its aria-label), so
   «◀ [n] из N ▶» fits even at 120 columns */
@container arch-s25-6-2-ctrl (max-width:300px){
 .arch-lab .arch-s25-6-2-nav{gap:4px}
 .arch-lab .arch-s25-6-2-sellabel>span:first-child{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s25-6-3-divisor (SPb 2024/25, 6 класс, №3).
   Only own classes; colours through --arch-* (both themes) and the squared page of visuals/art/squared-paper.css. */
.arch-lab .arch-s25-6-3-head{display:grid;gap:6px}
.arch-lab .arch-s25-6-3-variant{margin:0}
.arch-lab .arch-s25-6-3-label{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab svg text.arch-s25-6-3-len{fill:#57534e;stroke:none;paint-order:normal;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s25-6-3-count{fill:#57534e;stroke:none;paint-order:normal;font-weight:700}
.arch-lab svg path.arch-s25-6-3-brace{fill:none;stroke:#57534e;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
/* the number of marks: «−», the exact field, «+» */
.arch-lab .arch-s25-6-3-k{max-width:420px}
.arch-lab .arch-s25-6-3-krow{display:grid;grid-template-columns:48px 76px 48px;gap:8px;align-items:center}
.arch-lab .arch-s25-6-3-krow input.phx-num{text-align:center;box-sizing:border-box;width:100%;min-width:0}
/* the student's divisor */
/* one column that never grows past the lab (minmax(0,1fr)): a long number in a message wraps instead of widening the
   field and pushing «Разделить» out of the frame */
.arch-lab .arch-s25-6-3-dbox{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;min-width:0;overflow-wrap:anywhere}
.arch-lab .arch-s25-6-3-dbox .phx-param-msg,.arch-lab .arch-s25-6-3-k .phx-param-msg{overflow-wrap:anywhere}
.arch-lab .arch-s25-6-3-drow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.arch-lab input.arch-s25-6-3-dnum{flex:1 1 220px;min-width:0;font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:18px}
.arch-lab .arch-s25-6-3-drow .arch-primary{flex:0 0 auto}
.arch-lab .phx-param-msg.arch-s25-6-3-ok{color:var(--arch-good)}
.arch-lab .arch-s25-6-3-num{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;word-break:break-all}
.arch-lab .arch-s25-6-3-tried{color:var(--arch-muted);font-size:14px}
/* the same divisor on the other numbers */
.arch-lab .arch-s25-6-3-perk{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;min-width:0;overflow-wrap:anywhere}
.arch-lab .arch-s25-6-3-perk p{margin:0}
.arch-lab .arch-s25-6-3-chips{display:flex;flex-wrap:wrap;gap:6px}
.arch-lab button.arch-s25-6-3-chip{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:52px;padding:6px 10px;border-radius:12px;
 background:var(--arch-surface);color:var(--arch-ink);border:1px solid var(--arch-field-line);font-variant-numeric:tabular-nums}
.arch-lab button.arch-s25-6-3-chip[data-ok=true]{background:var(--arch-ok-bg);border-color:var(--arch-good)}
.arch-lab button.arch-s25-6-3-chip[data-ok=false]{background:var(--arch-bad-bg);border-color:var(--arch-bad)}
.arch-lab button.arch-s25-6-3-chip.arch-s25-6-3-short{border-style:dashed}
.arch-lab button.arch-s25-6-3-chip.arch-s25-6-3-short .arch-s25-6-3-chipk{color:var(--arch-muted)}
.arch-lab button.arch-s25-6-3-chip[aria-pressed=true]{box-shadow:0 0 0 2px var(--arch-pressed-line);font-weight:700}
.arch-lab .arch-s25-6-3-chipk{font-weight:700}
.arch-lab .arch-s25-6-3-chip[data-ok=true] .arch-s25-6-3-chipmark{color:var(--arch-good);font-weight:700}
.arch-lab .arch-s25-6-3-chip[data-ok=false] .arch-s25-6-3-chipmark{color:var(--arch-bad);font-weight:700}
/* the column check */
.arch-lab .arch-s25-6-3-colsbtn{justify-self:start}
.arch-lab .arch-s25-6-3-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0;padding:12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s25-6-3-colshead{margin:0;font-weight:600;color:var(--arch-label);overflow-wrap:anywhere}
.arch-lab .arch-s25-6-3-colshead:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
/* the divisor and the quotient of the column check, each on its own line; the quotient breaks only between its groups */
.arch-lab .arch-s25-6-3-colsnums{margin:0;display:grid;gap:4px;min-width:0}
.arch-lab .arch-s25-6-3-colsnums dt{font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s25-6-3-colsnums dd{margin:0;color:var(--arch-ink);font-size:17px;line-height:1.45}
.arch-lab .arch-s25-6-3-num.arch-s25-6-3-grouped{word-break:normal;overflow-wrap:anywhere}
.arch-lab .arch-s25-6-3-colscroll{overflow-x:auto;overscroll-behavior-x:contain;min-width:0;padding:2px}
.arch-lab svg.arch-s25-6-3-colsvg{display:block;width:100%;max-width:calc(var(--w,100%) * 1.35);height:auto}
.arch-lab .arch-s25-6-3-zoomed svg.arch-s25-6-3-colsvg{width:var(--w);max-width:none}
.arch-lab .arch-s25-6-3-zoomhint{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s25-6-3-colscap p{margin:4px 0;line-height:1.55;overflow-wrap:anywhere}
.arch-lab svg .arch-s25-6-3-sumline{stroke:#1f2937;stroke-width:2}
.arch-lab .arch-s25-6-3-note{overflow-wrap:anywhere}
.arch-lab .arch-s25-6-3-note:empty{display:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Станок и лист» (SPb 2024/25, 6 класс, №4).
   The wall, the steel sheets, the cut parts and the cutting head come from visuals/art/metal-sheet.css (--spb-metal-…);
   this file adds the layers of the model: spare places on the test sheet, the extra column and row of the explanation
   (orange, dashed), the bottom row and the left column of the real parts (teal), dimension labels and the legend. */
.arch-lab .arch-s25-6-4{--arch-s25-6-4-ghost:rgba(251,146,60,.28);--arch-s25-6-4-ghost-line:#c2410c;--arch-s25-6-4-base:rgba(20,184,166,.45);--arch-s25-6-4-base-line:#0f766e;
 --arch-s25-6-4-spare-line:#64748b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s25-6-4{--arch-s25-6-4-ghost:rgba(251,146,60,.30);--arch-s25-6-4-ghost-line:#fdba74;--arch-s25-6-4-base:rgba(45,212,191,.45);--arch-s25-6-4-base-line:#5eead4;--arch-s25-6-4-spare-line:#94a3b8}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s25-6-4{--arch-s25-6-4-ghost:rgba(251,146,60,.30);--arch-s25-6-4-ghost-line:#fdba74;--arch-s25-6-4-base:rgba(45,212,191,.45);--arch-s25-6-4-base-line:#5eead4;--arch-s25-6-4-spare-line:#94a3b8}
.arch-lab .arch-s25-6-4-variant{border-top:0;padding-top:0}
.arch-lab .arch-s25-6-4-pred-input{width:120px;flex:0 0 auto}
.arch-lab .arch-s25-6-4-fields .phx-param{max-width:560px}
.arch-lab .arch-s25-6-4-fields input.phx-num{box-sizing:border-box}
.arch-lab .arch-s25-6-4-stage{padding:4px;overflow:hidden}
.arch-lab .arch-s25-6-4-stage svg.arch-s25-6-4-svg{max-height:none}
.arch-lab .arch-s25-6-4-spare{fill:none;stroke:var(--arch-s25-6-4-spare-line);stroke-width:1;stroke-dasharray:3 3}
.arch-lab .arch-s25-6-4-ghost{fill:var(--arch-s25-6-4-ghost);stroke:var(--arch-s25-6-4-ghost-line);stroke-width:1.6;stroke-dasharray:5 3}
.arch-lab .arch-s25-6-4-base{fill:var(--arch-s25-6-4-base);stroke:var(--arch-s25-6-4-base-line);stroke-width:2}
.arch-lab .arch-s25-6-4-corner{fill:var(--arch-s25-6-4-base-line);stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab .arch-s25-6-4-edge{fill:none;stroke:var(--spb-metal-edge);stroke-width:2}
.arch-lab .arch-s25-6-4-dimline{fill:none;stroke:var(--arch-muted);stroke-width:1.2}
.arch-lab .phx-svg text.arch-s25-6-4-dim{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-6-4-legend .arch-s25-6-4-sw{display:inline-block;width:18px;height:12px;border-radius:2px;flex:0 0 auto;box-sizing:border-box}
.arch-lab .arch-s25-6-4-sw-part{background:var(--spb-metal-part);border:1px solid var(--spb-metal-part-line)}
.arch-lab .arch-s25-6-4-sw-sheet{background:var(--spb-metal-sheet);border:1px solid var(--spb-metal-edge)}
.arch-lab .arch-s25-6-4-sw-ghost{background:var(--arch-s25-6-4-ghost);border:1.5px dashed var(--arch-s25-6-4-ghost-line)}
.arch-lab .arch-s25-6-4-sw-base{background:var(--arch-s25-6-4-base);border:2px solid var(--arch-s25-6-4-base-line)}
.arch-lab .arch-s25-6-4-out .arch-readouts dd{white-space:normal}
.arch-lab .arch-s25-6-4-out p,.arch-lab .arch-s25-6-4-machine p{margin:8px 0 0}
.arch-lab .arch-s25-6-4-machine p:first-child{margin-top:0}
.arch-lab .arch-s25-6-4-explain p{margin:6px 0}
.arch-lab .arch-s25-6-4-explain-stage{margin:8px 0 4px}
.arch-lab .arch-s25-6-4-explain .arch-actions{margin-top:8px}
.arch-lab .arch-s25-6-4-step-title{font-weight:700;color:var(--arch-label)}
.arch-lab .arch-s25-6-4-explain:focus{outline:none}
.arch-lab .arch-s25-6-4-explain:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab button.arch-s25-6-4-on{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s25-6-4-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s25-7-1-cubes («Разбери брусок — собери лист», SPb 2024/25,
   7 класс, №1). The cubes are physical objects: white cubes stay white and the paint keeps its colour in both themes (the
   paint tones come from visuals/art/paint-can.css), the outlines of the cubes are dark. Frames, labels and the table follow
   the theme. */
.arch-lab{--arch-s25-7-1-w1:#ffffff;--arch-s25-7-1-w2:#eef1f5;--arch-s25-7-1-w3:#d3d9e2;--arch-s25-7-1-edge:#1f2937;--arch-s25-7-1-slab:#e7e2d6}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s25-7-1-w1:#eef1f5;--arch-s25-7-1-w2:#dde2e9;--arch-s25-7-1-w3:#b9c1cc;--arch-s25-7-1-slab:#4a4436}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s25-7-1-w1:#eef1f5;--arch-s25-7-1-w2:#dde2e9;--arch-s25-7-1-w3:#b9c1cc;--arch-s25-7-1-slab:#4a4436}
.arch-lab .arch-s25-7-1-head{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s25-7-1-variant{margin:0;font-weight:600;color:var(--arch-label);line-height:1.5}
.arch-lab .arch-s25-7-1-label{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s25-7-1-predict{display:grid;gap:6px}
.arch-lab .arch-s25-7-1-predict[hidden]{display:none}
/* phones: brick, board, hand, slab; wide: the brick and the slab side by side over the board and the hand */
.arch-lab .arch-s25-7-1-scene{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"brick" "board" "hand" "sheet";gap:10px;min-width:0}
.arch-lab .arch-s25-7-1-a-brick{grid-area:brick}
.arch-lab .arch-s25-7-1-a-sheet{grid-area:sheet}
.arch-lab .arch-s25-7-1-a-board{grid-area:board}
.arch-lab .arch-s25-7-1-a-hand{grid-area:hand}
@media (min-width:640px){.arch-lab .arch-s25-7-1-scene{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"brick sheet" "board hand"}}
.arch-lab .arch-s25-7-1-fig{margin:0;display:grid;gap:6px;align-content:start;min-width:0}
.arch-lab .arch-s25-7-1-stage{padding:4px}
.arch-lab .arch-s25-7-1-stage svg{max-height:none}
.arch-lab .arch-s25-7-1-cap{font-size:13px}
.arch-lab .arch-s25-7-1-legend{font-size:13px;gap:4px 14px}
.arch-lab .arch-s25-7-1-sw{display:inline-block;position:relative;width:16px;height:16px;border:1px solid var(--arch-s25-7-1-edge);border-radius:2px;flex:0 0 auto;overflow:hidden}
.arch-lab .arch-s25-7-1-sw-corner>span{position:absolute;right:0;bottom:0;width:9px;height:9px;clip-path:polygon(100% 0,100% 100%,0 100%)}
/* drawings */
.arch-lab .phx-svg .arch-s25-7-1-cube{stroke:var(--arch-s25-7-1-edge);stroke-width:1.1;stroke-linejoin:round}
.arch-lab .phx-svg .arch-s25-7-1-white-light{fill:var(--arch-s25-7-1-w1)}
.arch-lab .phx-svg .arch-s25-7-1-white-base{fill:var(--arch-s25-7-1-w2)}
.arch-lab .phx-svg .arch-s25-7-1-white-dark{fill:var(--arch-s25-7-1-w3)}
.arch-lab .phx-svg .arch-s25-7-1-pick{cursor:pointer}
.arch-lab .phx-svg .arch-s25-7-1-focus{fill:none;stroke:var(--arch-focus);stroke-width:3.2;stroke-linejoin:round}
.arch-lab .phx-svg .arch-s25-7-1-focus-empty{stroke-width:2.6;stroke-dasharray:6 4}
.arch-lab .phx-svg .arch-s25-7-1-ghost{fill:none;stroke:var(--arch-muted);stroke-width:1.2;stroke-dasharray:5 4}
.arch-lab .phx-svg .arch-s25-7-1-tableline{stroke:var(--arch-fig-line);stroke-width:1.6;opacity:.7}
.arch-lab .phx-svg .arch-s25-7-1-shadow{fill:#0f172a;opacity:.12;stroke:none}
.arch-lab .phx-svg .arch-s25-7-1-dim{font-size:14px;font-weight:700}
.arch-lab .phx-svg .arch-s25-7-1-sheet-title{font-size:14px;font-weight:600}
.arch-lab .phx-svg .arch-s25-7-1-slab{fill:var(--arch-s25-7-1-slab);stroke:var(--arch-s25-7-1-edge);stroke-width:1.2}
.arch-lab .phx-svg .arch-s25-7-1-slab-side{fill:#0f172a;opacity:.2;stroke:none}
.arch-lab .phx-svg .arch-s25-7-1-empty{fill:none;stroke:var(--arch-muted);stroke-width:1;stroke-dasharray:3 3;opacity:.45}
.arch-lab .phx-svg .arch-s25-7-1-cell{stroke:var(--arch-s25-7-1-edge);stroke-width:1}
.arch-lab .phx-svg .arch-s25-7-1-bevel{fill:none;stroke:#ffffff;stroke-width:1.2;opacity:.28;stroke-linecap:round}
.arch-lab .phx-svg .arch-s25-7-1-bevel-white{stroke:#94a3b8;opacity:.4}
.arch-lab .phx-svg .arch-s25-7-1-corner{stroke:var(--arch-s25-7-1-edge);stroke-width:.8}
.arch-lab .phx-svg .arch-s25-7-1-last{fill:none;stroke:var(--arch-focus);stroke-width:3}
/* the see-through picture of the answer */
.arch-lab .arch-s25-7-1-xray-stage{max-width:460px}
.arch-lab .phx-svg .arch-s25-7-1-glass{fill-opacity:.2;stroke:none}
.arch-lab .phx-svg .arch-s25-7-1-glass-grid{stroke:var(--arch-fig-line);stroke-width:.7;opacity:.35}
.arch-lab .phx-svg .arch-s25-7-1-glass-edge{fill:none;stroke:var(--arch-fig-line);stroke-width:1.8;stroke-linejoin:round}
.arch-lab .phx-svg .arch-s25-7-1-hidden{stroke:var(--arch-fig-line);stroke-width:1.2;stroke-dasharray:4 4;opacity:.7}
.arch-lab .phx-svg .arch-s25-7-1-inner{stroke-width:1.4}
/* the top view and the hand */
.arch-lab .arch-s25-7-1-box{display:grid;gap:6px;align-content:start;padding:10px 12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);min-width:0}
.arch-lab .arch-s25-7-1-edge{text-align:center;font-size:13px;margin:0}
.arch-lab .arch-s25-7-1-board-wrap{overflow-x:auto;min-width:0;padding:2px}
.arch-lab .arch-s25-7-1-board{display:grid;grid-template-columns:repeat(var(--cols,4),minmax(44px,54px));gap:3px;justify-content:center}
.arch-lab .arch-s25-7-1-col{min-width:44px;min-height:44px;padding:0;border-radius:6px;border:1.5px solid var(--arch-s25-7-1-edge);font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;color:#1f2937;line-height:1}
/* white digits only on the base tone of the paint (4.8:1 red, 5.2:1 blue); the light tone is too pale for white text */
.arch-lab .arch-s25-7-1-col.arch-s25-7-1-bg-red-base,.arch-lab .arch-s25-7-1-col.arch-s25-7-1-bg-blue-base{color:#ffffff}
.arch-lab .arch-s25-7-1-col-empty{background:transparent;border:1.5px dashed var(--arch-field-line);color:var(--arch-muted);font-weight:500}
.arch-lab .arch-s25-7-1-col-focus{box-shadow:0 0 0 3px var(--arch-focus)}
.arch-lab .arch-s25-7-1-col[aria-disabled=true]{opacity:1;cursor:default}
.arch-lab .arch-s25-7-1-net{display:grid;grid-template-columns:repeat(4,minmax(44px,56px));grid-template-areas:". top . ." "left front right back" ". bottom . .";gap:3px;justify-content:center}
.arch-lab .arch-s25-7-1-face{min-width:44px;min-height:44px;aspect-ratio:1;padding:0;border-radius:4px;border:1.5px solid var(--arch-s25-7-1-edge);color:#1f2937;line-height:1.1}
.arch-lab .arch-s25-7-1-face-name{font-size:12px;font-weight:600}
.arch-lab .arch-s25-7-1-face.arch-s25-7-1-bg-red-light,.arch-lab .arch-s25-7-1-face.arch-s25-7-1-bg-red-base,.arch-lab .arch-s25-7-1-face.arch-s25-7-1-bg-red-dark,
.arch-lab .arch-s25-7-1-face.arch-s25-7-1-bg-blue-light,.arch-lab .arch-s25-7-1-face.arch-s25-7-1-bg-blue-base,.arch-lab .arch-s25-7-1-face.arch-s25-7-1-bg-blue-dark{color:#ffffff}
.arch-lab .arch-s25-7-1-face-off{background:transparent;border:1.5px dashed var(--arch-field-line);color:var(--arch-muted)}
.arch-lab .arch-s25-7-1-face[aria-disabled=true]{opacity:1;cursor:default}
.arch-lab .arch-s25-7-1-hand-text{margin:0;font-size:14px;line-height:1.5;color:var(--arch-ink)}
.arch-lab .arch-s25-7-1-hand-text .arch-s25-7-1-sw{vertical-align:-3px;margin-right:6px}
/* the count next to the net: phones only (on wide screens the summary is right under the board and the hand) */
.arch-lab .arch-s25-7-1-hand-count{margin:0;font-size:14px;font-weight:600;line-height:1.4;font-variant-numeric:tabular-nums;color:var(--arch-ink)}
@media (min-width:640px){.arch-lab .arch-s25-7-1-hand-count{display:none}}
/* backgrounds with the paint of the problem */
.arch-lab .arch-s25-7-1-bg-white{background:var(--arch-s25-7-1-w1)}
.arch-lab .arch-s25-7-1-bg-red-light{background:var(--spb-paint-red-light)}
.arch-lab .arch-s25-7-1-bg-red-base{background:var(--spb-paint-red-base)}
.arch-lab .arch-s25-7-1-bg-red-dark{background:var(--spb-paint-red-dark)}
.arch-lab .arch-s25-7-1-bg-blue-light{background:var(--spb-paint-blue-light)}
.arch-lab .arch-s25-7-1-bg-blue-base{background:var(--spb-paint-blue-base)}
.arch-lab .arch-s25-7-1-bg-blue-dark{background:var(--spb-paint-blue-dark)}
/* summary, answer, own brick */
.arch-lab .arch-s25-7-1-summary{display:grid;gap:4px;line-height:1.5}
.arch-lab .arch-s25-7-1-summary p{margin:0}
.arch-lab .arch-s25-7-1-count{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.arch-lab .arch-s25-7-1-note{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink)}
.arch-lab .arch-s25-7-1-note:empty{display:none}
.arch-lab .arch-s25-7-1-count-table thead th{max-width:11em;line-height:1.3}
.arch-lab .arch-s25-7-1-count-table tbody th,.arch-lab .arch-s25-7-1-count-table td{min-width:4em}
.arch-lab .arch-s25-7-1-caption{text-align:left;padding-bottom:4px}
.arch-lab .arch-s25-7-1-zero{background:var(--arch-bad-bg);font-weight:700}
.arch-lab .arch-s25-7-1-own{display:grid;gap:8px}
.arch-lab .arch-s25-7-1-steppers[hidden],.arch-lab .arch-s25-7-1-own p[hidden]{display:none}
.arch-lab .arch-s25-7-1-stepwrap{display:grid;gap:2px;min-width:0}
.arch-lab .arch-s25-7-1-steplabel{flex:1 1 auto;min-width:0;font-weight:600}
.arch-lab .arch-s25-7-1-stepper input.p25-step-num{font-size:18px}
/* phones: the board and the hand compact, so that the board, the net and the reply under it fit one screen */
@media (max-width:639px){
 .arch-lab .arch-s25-7-1-box{gap:4px}
 .arch-lab .arch-s25-7-1-net{grid-template-columns:repeat(4,minmax(44px,48px))}
 .arch-lab .arch-s25-7-1-board-help{font-size:13px;line-height:1.4}
}
@media (max-width:420px){
 .arch-lab .arch-s25-7-1-box{padding:8px 6px}
 .arch-lab .arch-s25-7-1-board{gap:2px}
}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s25-7-2-balance (SPb 2024/25, 7 класс, №2).
   Only own classes; colours through --arch-* (both themes) and the shop scales of visuals/art/shop-scale.css. */
.arch-lab{--arch-s25-7-2-a:#1d4ed8;--arch-s25-7-2-a-bg:#dbeafe;--arch-s25-7-2-b:#c2410c;--arch-s25-7-2-b-bg:#ffedd5}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-s25-7-2-a:#93c5fd;--arch-s25-7-2-a-bg:#1e3a5f;--arch-s25-7-2-b:#fdba74;--arch-s25-7-2-b-bg:#4a2a12}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-s25-7-2-a:#93c5fd;--arch-s25-7-2-a-bg:#1e3a5f;--arch-s25-7-2-b:#fdba74;--arch-s25-7-2-b-bg:#4a2a12}
.arch-lab .arch-s25-7-2-head{display:grid;gap:6px}
.arch-lab .arch-s25-7-2-variant{margin:0}
.arch-lab .arch-s25-7-2-goal{margin:0;line-height:1.55;color:var(--arch-ink)}
.arch-lab .arch-s25-7-2-label{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab svg text.arch-s25-7-2-rest{fill:var(--arch-ink);stroke:none;font-weight:700}
.arch-lab svg text.arch-s25-7-2-panlabel{stroke:none;font-weight:700}
.arch-lab svg text.arch-s25-7-2-panlabel[data-tone=a]{fill:var(--arch-s25-7-2-a)}
.arch-lab svg text.arch-s25-7-2-panlabel[data-tone=b]{fill:var(--arch-s25-7-2-b)}
/* pair numbers on the brass weights: dark ink on brass in both themes (the brass stays light) */
.arch-lab svg text.arch-s25-7-2-wnum{fill:#1f2937;stroke:none;font-weight:800;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s25-7-2-wnum[data-pair=none]{fill:#7f1d1d}
/* the number: «−100», the exact field, «+100», «Проверить» */
.arch-lab .arch-s25-7-2-nbox{display:grid;gap:6px;min-width:0}
.arch-lab .arch-s25-7-2-nrow{display:grid;grid-template-columns:64px minmax(0,1fr) 64px auto;gap:8px;align-items:center;min-width:0}
.arch-lab .arch-s25-7-2-step{min-height:48px;padding:0 4px;border-radius:12px;font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab input.arch-s25-7-2-nnum{width:100%;box-sizing:border-box;min-height:48px;padding:8px 6px;text-align:center;font-variant-numeric:tabular-nums;font-size:20px}
.arch-lab input.arch-s25-7-2-nnum::placeholder{font-size:16px}
@media (max-width:440px){
 .arch-lab .arch-s25-7-2-nrow{grid-template-columns:56px minmax(0,1fr) 56px}
 .arch-lab .arch-s25-7-2-nrow .arch-primary{grid-column:1 / -1}
 .arch-lab input.arch-s25-7-2-nnum{padding:8px 4px}
 .arch-lab input.arch-s25-7-2-nnum::placeholder{font-size:13px}
}
.arch-lab .phx-param-msg.arch-s25-7-2-ok{color:var(--arch-good)}
.arch-lab .arch-s25-7-2-tag{margin:0}
.arch-lab .arch-s25-7-2-outside{color:var(--arch-accent)}
.arch-lab .arch-s25-7-2-outside strong{color:var(--arch-ink)}
/* the divisors in two groups */
.arch-lab .arch-s25-7-2-groups{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s25-7-2-groups[hidden]{display:none}
.arch-lab .arch-s25-7-2-gpair{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;min-width:0}
.arch-lab .arch-s25-7-2-group{display:grid;gap:6px;align-content:start;padding:10px 12px;border-radius:14px;border:2px solid var(--arch-soft-line);background:var(--arch-surface);min-width:0}
.arch-lab .arch-s25-7-2-group[data-tone=a]{border-color:var(--arch-s25-7-2-a)}
.arch-lab .arch-s25-7-2-group[data-tone=b]{border-color:var(--arch-s25-7-2-b)}
.arch-lab .arch-s25-7-2-glabel{margin:0;font-weight:700;color:var(--arch-label)}
.arch-lab .arch-s25-7-2-gcount{font-weight:600;color:var(--arch-muted)}
.arch-lab .arch-s25-7-2-chips{display:flex;flex-wrap:wrap;gap:6px}
.arch-lab .arch-s25-7-2-chip{display:inline-flex;align-items:center;justify-content:center;min-width:2.6em;padding:3px 9px;border-radius:9px;border:1.5px solid var(--arch-soft-line);
 font-weight:700;font-variant-numeric:tabular-nums;color:var(--arch-ink);background:var(--arch-surface)}
.arch-lab .arch-s25-7-2-chip[data-tone=a]{border-color:var(--arch-s25-7-2-a);background:var(--arch-s25-7-2-a-bg)}
.arch-lab .arch-s25-7-2-chip[data-tone=b]{border-color:var(--arch-s25-7-2-b);background:var(--arch-s25-7-2-b-bg)}
.arch-lab .arch-s25-7-2-chip[data-tone=off]{border-style:dashed;color:var(--arch-muted)}
.arch-lab .arch-s25-7-2-others summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:6px;color:var(--arch-link);font-weight:600;list-style:none}
.arch-lab .arch-s25-7-2-others summary::-webkit-details-marker{display:none}
.arch-lab .arch-s25-7-2-others summary::before{content:'▸';display:inline-block;width:1em;transition:transform .15s}
.arch-lab .arch-s25-7-2-others[open] summary::before{transform:rotate(90deg)}
@media (prefers-reduced-motion:reduce){.arch-lab .arch-s25-7-2-others summary::before{transition:none}}
.arch-lab .arch-s25-7-2-otherlist{margin:0 0 4px;color:var(--arch-muted);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;line-height:1.6}
/* pairs */
.arch-lab .arch-s25-7-2-pairsbtn{justify-self:start}
.arch-lab .arch-s25-7-2-pairsbox{display:grid;gap:8px;min-width:0;padding:12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s25-7-2-pairsbox[hidden]{display:none}
.arch-lab .arch-s25-7-2-pairshead{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s25-7-2-pairshead:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s25-7-2-pairs{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.arch-lab .arch-s25-7-2-pair{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-7-2-op{color:var(--arch-muted);font-weight:600}
.arch-lab .arch-s25-7-2-pnum{display:inline-flex;align-items:center;justify-content:center;min-width:1.7em;height:1.7em;padding:0 4px;box-sizing:border-box;border-radius:999px;
 background:#d8ab3e;color:#1f2937;font-weight:800;font-size:14px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-7-2-pnum[data-pair=none]{color:#7f1d1d}
.arch-lab .arch-s25-7-2-mark{font-size:14px}
.arch-lab .arch-s25-7-2-pairstext p{margin:4px 0;line-height:1.55;color:var(--arch-ink)}
/* the log */
.arch-lab .arch-s25-7-2-log{display:grid;gap:6px;min-width:0}
.arch-lab .arch-s25-7-2-log[hidden]{display:none}
.arch-lab .arch-s25-7-2-log p{margin:0}
.arch-lab .arch-s25-7-2-table tr[data-current=true] td{font-weight:700;background:var(--arch-pressed-bg)}
.arch-lab .arch-s25-7-2-num{font-variant-numeric:tabular-nums;white-space:nowrap}
.arch-lab .arch-s25-7-2-in{color:var(--arch-good);font-weight:700}
.arch-lab .arch-s25-7-2-table th,.arch-lab .arch-s25-7-2-table td{padding:4px 7px}
.arch-lab .arch-s25-7-2-table td.arch-s25-7-2-sign{font-weight:700;min-width:1.4em}
.arch-lab .arch-s25-7-2-note:empty{display:none}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s25-7-3-rooms (SPb 2024/25, 7 класс, №3).
   Only own classes; colours through --arch-* (both themes) and the classroom of visuals/art/classroom.css. */
.arch-lab .arch-s25-7-3-head{display:grid;gap:6px}
.arch-lab .arch-s25-7-3-variant{margin:0}
.arch-lab .arch-s25-7-3-goal{margin:0;line-height:1.55;color:var(--arch-ink)}
.arch-lab .arch-s25-7-3-label{margin:0;font-weight:600;color:var(--arch-label)}
/* the scene */
.arch-lab svg .arch-s25-7-3-hit{fill:transparent;stroke:none;cursor:pointer}
.arch-lab svg text.arch-s25-7-3-kids{font-weight:700}
.arch-lab svg text.arch-s25-7-3-count{font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab svg .arch-s25-7-3-fill-girl{fill:var(--spb-class-girl)}
.arch-lab svg .arch-s25-7-3-fill-boy{fill:var(--spb-class-boy)}
.arch-lab svg .arch-s25-7-3-bar-rest{opacity:.32}
.arch-lab svg .arch-s25-7-3-bar-frame{fill:none;stroke:var(--arch-fig-line);stroke-width:1.3}
.arch-lab svg .arch-s25-7-3-track{fill:var(--arch-surface);stroke:none}
.arch-lab svg .arch-s25-7-3-seg{stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab svg .arch-s25-7-3-seg[data-shade="1"]{opacity:.78}
.arch-lab svg .arch-s25-7-3-seg[data-shade="2"]{opacity:.58}
.arch-lab svg text.arch-s25-7-3-segnum{fill:#ffffff;stroke:none;font-weight:700}
.arch-lab svg text.arch-s25-7-3-sumtext{font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg .arch-s25-7-3-tick{stroke:var(--arch-fig-line);stroke-width:1.2}
.arch-lab svg text.arch-s25-7-3-ticktext{fill:var(--arch-muted);stroke:none;font-variant-numeric:tabular-nums}
.arch-lab svg .arch-s25-7-3-target{stroke:var(--arch-accent);stroke-width:3;stroke-linecap:round}
.arch-lab svg .arch-s25-7-3-target-head{fill:var(--arch-accent);stroke:none}
.arch-lab svg text.arch-s25-7-3-targettext{fill:var(--arch-accent);font-weight:700}
/* the status under the drawing */
.arch-lab .arch-s25-7-3-facts p{margin:3px 0;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-7-3-verdict{margin-top:6px}
/* the editor of one room */
.arch-lab .arch-s25-7-3-editor{display:grid;gap:8px;min-width:0;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s25-7-3-pick{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.arch-lab .arch-s25-7-3-pick .arch-toggle button{min-width:52px;font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-7-3-edtitle{margin:0;color:var(--arch-ink);line-height:1.5}
.arch-lab .arch-s25-7-3-field{display:grid;gap:2px;min-width:0}
.arch-lab .arch-s25-7-3-frow{display:grid;grid-template-columns:minmax(72px,auto) 48px minmax(72px,120px) 48px;gap:8px;align-items:center;justify-content:start;min-width:0}
.arch-lab .arch-s25-7-3-flabel{font-weight:600;color:var(--arch-label)}
.arch-lab input.arch-s25-7-3-num{width:100%;box-sizing:border-box;min-height:48px;padding:8px 6px;text-align:center;font-size:20px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-7-3-bounds{font-size:13px}
/* label above the field while «Мальчиков − [ ] +» does not fit one line (the lab is 310 px wide on a 390 px screen) */
@media (max-width:400px){
 .arch-lab .arch-s25-7-3-frow{grid-template-columns:48px minmax(0,1fr) 48px}
 .arch-lab .arch-s25-7-3-flabel{grid-column:1 / -1}
}
.arch-lab .arch-s25-7-3-edmsg{margin:0;font-size:15px;line-height:1.5;color:var(--arch-ink)}
.arch-lab .arch-s25-7-3-edmsg:empty{display:none}
.arch-lab .arch-s25-7-3-edmsg-on{padding:8px 10px;border-radius:10px;border-left:4px solid var(--arch-accent);background:var(--arch-pressed-bg)}
/* found seatings */
.arch-lab .arch-s25-7-3-found{display:grid;gap:6px;min-width:0}
.arch-lab .arch-s25-7-3-found[hidden]{display:none}
.arch-lab .arch-s25-7-3-foundlist li{overflow-wrap:anywhere}
.arch-lab .arch-s25-7-3-foundlist li[data-record=true] strong{color:var(--arch-good)}
/* the reasoning */
.arch-lab .arch-s25-7-3-explain{display:grid;gap:8px;min-width:0;padding:12px 14px;border-radius:14px;border:2px solid var(--arch-good);background:var(--arch-surface);color:var(--arch-ink);line-height:1.55;container-type:inline-size}
.arch-lab .arch-s25-7-3-explain[hidden]{display:none}
.arch-lab .arch-s25-7-3-explain p{margin:0}
.arch-lab .arch-s25-7-3-exhead{margin:0;font-size:17px;color:var(--arch-label)}
.arch-lab .arch-s25-7-3-exhead:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s25-7-3-exbody{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s25-7-3-table{font-size:15px}
.arch-lab .arch-s25-7-3-table th{white-space:normal}
.arch-lab .arch-s25-7-3-table tr.arch-s25-7-3-total td,.arch-lab .arch-s25-7-3-table tr.arch-s25-7-3-total th{font-weight:700}
.arch-lab .arch-s25-7-3-lost,.arch-lab .arch-s25-7-3-rooms{margin:0;padding-left:1.2em;display:grid;gap:4px}
/* the student's seating: one line per room in a narrow panel, a table where it fits (no sideways scrolling) */
.arch-lab .arch-s25-7-3-wide{display:none}
@container (min-width:440px){
 .arch-lab .arch-s25-7-3-wide{display:block}
 .arch-lab .arch-s25-7-3-narrow{display:none}
}
@media (max-width:420px){.arch-lab .arch-s25-7-3-explain{padding:10px}}
/* exact numbers in the text: a sum never breaks inside «term +», a mixed number has a small vertical fraction */
.arch-lab .arch-s25-7-3-nw{white-space:nowrap}
.arch-lab .arch-s25-7-3-fr{display:inline-flex;flex-direction:column;vertical-align:middle;margin:0 .06em 0 .1em;font-size:.72em;line-height:1.12;text-align:center}
.arch-lab .arch-s25-7-3-fr>span{display:block;padding:0 .12em}
.arch-lab .arch-s25-7-3-fr>span+span{border-top:1px solid currentColor}
.arch-lab .arch-s25-7-3-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}

/* SPb 2024/25, grade 7, problem 4 — «Поле печенегов и хазар» (labs/s25-7-4-steppe.mjs). The field is an SVG (steppe grass
   with a tile in every cell, portraits from visuals/art/steppe-folk.mjs) under a grid of transparent buttons, one per cell.
   Own colours: the grass, the tiles of truth-tellers and liars, the speech bubbles, the badges of the explanation layer and
   the rings of the asked person — light theme and both dark branches; everything else goes through --arch-* tokens. */
.arch-lab .arch-s2574{--arch-s2574-grass:#9cc47a;--arch-s2574-edge:#4d7c2f;--arch-s2574-tile:#f1f8e9;--arch-s2574-tile-line:#7fae5a;--arch-s2574-liar:#fde4cf;--arch-s2574-liar-line:#e08a4a;
 --arch-s2574-bubble:#ffffff;--arch-s2574-bubble-line:#475569;--arch-s2574-bubble-liar:#fff7ed;--arch-s2574-said:#111827;--arch-s2574-badge:#fde047;--arch-s2574-badge-line:#854d0e;--arch-s2574-badge-ink:#1f2937;
 --arch-s2574-sel:#6d28d9;--arch-s2574-nb:#6d28d9;--arch-s2574-nb-fill:rgba(109,40,217,.16);--arch-s2574-ask-line:#7c3aed}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2574{--arch-s2574-grass:#2f4a24;--arch-s2574-edge:#6b8f4e;--arch-s2574-tile:#dde9cf;--arch-s2574-tile-line:#4d7031;--arch-s2574-liar:#f4cfae;--arch-s2574-liar-line:#b45f24;--arch-s2574-ask-line:#c4b5fd}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2574{--arch-s2574-grass:#2f4a24;--arch-s2574-edge:#6b8f4e;--arch-s2574-tile:#dde9cf;--arch-s2574-tile-line:#4d7031;--arch-s2574-liar:#f4cfae;--arch-s2574-liar-line:#b45f24;--arch-s2574-ask-line:#c4b5fd}
.arch-lab .arch-s2574-top{border-top:0;padding-top:0}
.arch-lab .arch-s2574-variant-note{margin:0;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s2574-tools{display:grid;gap:8px}
.arch-lab .arch-s2574-tool{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.arch-lab .arch-s2574-tool-label{font-size:14px;color:var(--arch-muted);min-width:9.5em}
.arch-lab .arch-s2574-show-note{margin:0}
.arch-lab .arch-s2574-stage{padding:10px;transition:border-color .3s}
.arch-lab .arch-s2574-stage.arch-s2574-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
/* the line right under the field: both sums with the change after the last tap, the answers of the asked person */
.arch-lab .arch-s2574-live{display:flex;flex-wrap:wrap;gap:2px 14px;align-items:baseline;margin:8px 4px 2px;font-size:15px;line-height:1.4;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2574-live b{font-weight:700}
.arch-lab .arch-s2574-live-sum.arch-good b{color:var(--arch-good)}
.arch-lab .arch-s2574-live-ask{flex:1 1 100%;margin:0;font-weight:600}
/* the field: column numbers on top, row numbers on the left (both from 1, rows from the top) */
.arch-lab .arch-s2574-board{--n:10;display:grid;grid-template-columns:20px minmax(0,1fr);grid-template-rows:20px auto;width:min(100%,560px);margin:auto}
.arch-lab .arch-zoomed .arch-s2574-board{width:calc(var(--n) * 48px + 20px);max-width:none}
.arch-lab .arch-s2574-rowlabels{display:grid;grid-template-rows:repeat(var(--n),minmax(0,1fr))}
.arch-lab .arch-s2574-collabels{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));align-items:end;padding-bottom:2px}
.arch-lab .arch-s2574-rowlabels span,.arch-lab .arch-s2574-collabels span{display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2574-field{position:relative;aspect-ratio:1}
.arch-lab .arch-stage .arch-s2574-svg{position:absolute;inset:0;width:100%;height:100%;max-height:none;z-index:0;pointer-events:none;overflow:visible}
.arch-lab .arch-s2574-cells{position:relative;z-index:1;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1}
.arch-lab .arch-s2574-cell{min-width:0;min-height:0;width:100%;height:100%;padding:0;margin:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
@media (hover:hover){.arch-lab .arch-s2574-cell:hover{background:rgba(255,255,255,.25)}}
.arch-lab .arch-s2574-cell:focus-visible{outline:4px solid var(--arch-focus);outline-offset:-4px;position:relative;z-index:2}
/* SVG layers (100 units per cell) */
.arch-lab .arch-s2574-ground{fill:var(--arch-s2574-grass)}
.arch-lab .arch-s2574-edge{fill:none;stroke:var(--arch-s2574-edge);stroke-width:6}
.arch-lab svg .arch-s2574-tile{fill:var(--arch-s2574-tile);stroke:var(--arch-s2574-tile-line);stroke-width:2}
.arch-lab svg .arch-s2574-tile-liar{fill:var(--arch-s2574-liar);stroke:var(--arch-s2574-liar-line)}
.arch-lab svg .arch-s2574-bubble{fill:var(--arch-s2574-bubble);stroke:var(--arch-s2574-bubble-line);stroke-width:2.5;stroke-linejoin:round}
.arch-lab svg .arch-s2574-bubble-liar{fill:var(--arch-s2574-bubble-liar);stroke:var(--arch-s2574-liar-line);stroke-width:3.5}
.arch-lab svg text.arch-s2574-said{fill:var(--arch-s2574-said);font-size:38px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg .arch-s2574-badge{fill:var(--arch-s2574-badge);stroke:var(--arch-s2574-badge-line);stroke-width:2.5}
.arch-lab svg text.arch-s2574-badge-text{fill:var(--arch-s2574-badge-ink);font-size:24px;font-weight:700}
.arch-lab .arch-s2574-sel{fill:none;stroke:var(--arch-s2574-sel);stroke-width:9}
.arch-lab .arch-s2574-nb{fill:var(--arch-s2574-nb-fill);stroke:var(--arch-s2574-nb);stroke-width:6;stroke-dasharray:14 8}
/* legend, the asked person, the explanation */
.arch-lab .arch-s2574-key{flex:none}
.arch-lab .arch-s2574-ask{display:flex;gap:12px;align-items:flex-start;background:var(--arch-surface);color:var(--arch-ink);border:2px solid var(--arch-s2574-ask-line);border-radius:14px;padding:12px 14px;line-height:1.5}
.arch-lab .arch-s2574-ask[hidden]{display:none}
.arch-lab .arch-s2574-ask p{margin:4px 0}
.arch-lab .arch-s2574-ask-title{font-weight:600}
.arch-lab .arch-s2574-ask-pic{flex:none;width:56px;height:56px}
.arch-lab .arch-s2574-readouts div{flex-wrap:wrap}
.arch-lab .arch-s2574-why{display:grid;gap:6px;border-top:1px solid var(--arch-soft-line);padding-top:10px;margin-top:8px}
.arch-lab .arch-s2574-why p{margin:0}
/* three narrow columns; the last one may break only before «=» (non-breaking spaces inside «4 · 3» and «= 12»),
   so the table fits the 206 px of the result box on a 320 px screen */
.arch-lab table.arch-s2574-table{font-size:14px}
.arch-lab table.arch-s2574-table th,.arch-lab table.arch-s2574-table td{white-space:nowrap;padding:4px 5px;overflow-wrap:normal}
.arch-lab table.arch-s2574-table :is(th,td):last-child{white-space:normal}
.arch-lab table.arch-s2574-table th[scope=col]{vertical-align:bottom;font-weight:600}
.arch-lab table.arch-s2574-table th[scope=row]{text-align:left;font-weight:400}
.arch-lab table.arch-s2574-table .arch-s2574-total :is(th,td){font-weight:700}
.arch-lab .arch-s2574-explain[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s2574-explain[aria-pressed=true]::before{content:'✓\00a0' / ''}
.arch-lab .arch-s2574-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-s2574-stage{transition:none}}
.arch-lab .arch-s2574-note{color:var(--arch-ink);font-size:15px}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s25-8-1-ribbons (SPb 2024/25, 8 класс, №1).
   Only own classes; colours through --arch-* (both themes) and the ribbon colours of visuals/art/ribbon.css. */
.arch-lab .arch-s25-8-1-head{display:grid;gap:6px}
.arch-lab .arch-s25-8-1-variant{margin:0}
.arch-lab .arch-s25-8-1-goal{margin:0;line-height:1.55;color:var(--arch-ink)}
.arch-lab .arch-s25-8-1-label{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s25-8-1-ink-a{color:var(--spb-ribbon-a-text)}
.arch-lab .arch-s25-8-1-ink-b{color:var(--spb-ribbon-b-text)}
.arch-lab .arch-s25-8-1-ink-c{color:var(--spb-ribbon-c-text)}
.arch-lab .phx-param-msg.arch-s25-8-1-ok{color:var(--arch-good)}
/* the three numbers */
.arch-lab .arch-s25-8-1-nums{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s25-8-1-ngrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:8px;min-width:0}
.arch-lab .arch-s25-8-1-nrow{display:grid;grid-template-columns:auto 48px minmax(64px,1fr) 48px;gap:6px;align-items:center;min-width:0;padding:4px 8px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s25-8-1-nlabel{display:flex;align-items:center;gap:6px;min-width:44px;font-size:18px;font-weight:700;white-space:nowrap}
.arch-lab .arch-s25-8-1-dot{width:14px;height:14px;border-radius:50%;flex:0 0 auto}
.arch-lab .arch-s25-8-1-dot-a{background:var(--spb-ribbon-a)}
.arch-lab .arch-s25-8-1-dot-b{background:var(--spb-ribbon-b)}
.arch-lab .arch-s25-8-1-dot-c{background:var(--spb-ribbon-c)}
.arch-lab .arch-s25-8-1-nrow input.phx-num{text-align:center;box-sizing:border-box;width:100%;min-width:0;padding:8px 4px}
/* the scene */
.arch-lab svg .arch-s25-8-1-rowsel{fill:var(--arch-pressed-bg);stroke:none}
.arch-lab svg text.arch-s25-8-1-rowname{font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s25-8-1-rowstat{font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-good{fill:var(--arch-good)}
.arch-lab svg text.arch-bad{fill:var(--arch-bad)}
.arch-lab svg text.arch-s25-8-1-muted,.arch-lab svg text.arch-s25-8-1-scaletext{fill:var(--arch-muted);font-weight:400}
.arch-lab svg .arch-s25-8-1-overbg{fill:var(--arch-bad);fill-opacity:.35;stroke:none}
.arch-lab svg .arch-s25-8-1-over{fill:none;stroke:var(--arch-bad);stroke-width:2;stroke-dasharray:5 3}
.arch-lab svg .arch-s25-8-1-short{fill:none;stroke:var(--arch-bad);stroke-width:1.6;stroke-dasharray:4 3}
.arch-lab svg .arch-s25-8-1-goal{stroke:var(--arch-ink);stroke-width:1.5;stroke-dasharray:3 3}
/* the table */
.arch-lab .arch-s25-8-1-table{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s25-8-1-tbody{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s25-8-1-trow{display:grid;grid-template-columns:minmax(112px,auto) minmax(0,1fr) 14px minmax(0,1fr) 14px minmax(0,1fr);gap:4px;align-items:center;min-width:0}
.arch-lab .arch-s25-8-1-tname{display:flex;align-items:center;gap:2px;font-weight:700;font-size:17px;white-space:nowrap;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-8-1-eq{color:var(--arch-muted);font-weight:600}
.arch-lab .arch-s25-8-1-mark{margin-left:6px;font-size:18px}
.arch-lab .arch-s25-8-1-colhead{font-size:13px;font-weight:600;text-align:center;line-height:1.2}
.arch-lab .arch-s25-8-1-plus{text-align:center;font-weight:700;color:var(--arch-muted)}
.arch-lab button.arch-s25-8-1-cell{min-width:0;min-height:48px;padding:4px 2px;border-radius:10px;font-size:18px;font-weight:600;font-variant-numeric:tabular-nums;
 background:var(--arch-surface);color:var(--arch-ink);border:1px solid var(--arch-field-line);border-top-width:5px;overflow-wrap:anywhere}
.arch-lab button.arch-s25-8-1-cell.arch-s25-8-1-col-a{border-top-color:var(--spb-ribbon-a)}
.arch-lab button.arch-s25-8-1-cell.arch-s25-8-1-col-b{border-top-color:var(--spb-ribbon-b)}
.arch-lab button.arch-s25-8-1-cell.arch-s25-8-1-col-c{border-top-color:var(--spb-ribbon-c)}
.arch-lab button.arch-s25-8-1-cell[data-state=empty]{color:var(--arch-muted)}
.arch-lab button.arch-s25-8-1-cell[data-state=ok]{background:var(--arch-ok-bg)}
.arch-lab button.arch-s25-8-1-cell[data-state=bad]{background:var(--arch-bad-bg);border-left-color:var(--arch-bad);border-right-color:var(--arch-bad);border-bottom-color:var(--arch-bad)}
.arch-lab button.arch-s25-8-1-cell[aria-pressed=true]{box-shadow:0 0 0 3px var(--arch-pressed-line)}
@media (max-width:520px){
 .arch-lab .arch-s25-8-1-trow{grid-template-columns:minmax(0,1fr) 12px minmax(0,1fr) 12px minmax(0,1fr);row-gap:2px}
 .arch-lab .arch-s25-8-1-trow .arch-s25-8-1-tname{grid-column:1/-1}
 .arch-lab .arch-s25-8-1-thead .arch-s25-8-1-tname{display:none}
 .arch-lab .arch-s25-8-1-colhead{font-size:12px}
}
/* the editor of the selected cell */
.arch-lab .arch-s25-8-1-editor{display:grid;gap:8px;min-width:0;padding:12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s25-8-1-edhead,.arch-lab .arch-s25-8-1-ednow,.arch-lab .arch-s25-8-1-ask{margin:0;line-height:1.5;overflow-wrap:anywhere}
.arch-lab .arch-s25-8-1-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:300px;overflow-y:auto;overscroll-behavior:contain;padding:3px}
.arch-lab button.arch-s25-8-1-chip{min-width:52px;padding:6px 10px;border-radius:12px;background:var(--arch-surface);color:var(--arch-ink);border:1px solid var(--arch-field-line);font-variant-numeric:tabular-nums}
.arch-lab button.arch-s25-8-1-chip.arch-s25-8-1-toobig{border-style:dashed;color:var(--arch-muted)}
.arch-lab button.arch-s25-8-1-chip[aria-pressed=true]{background:var(--arch-pressed-bg);box-shadow:0 0 0 2px var(--arch-pressed-line);font-weight:700;color:var(--arch-ink)}
.arch-lab .arch-s25-8-1-trow2{display:grid;gap:6px;min-width:0}
.arch-lab .arch-s25-8-1-tline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.arch-lab input.arch-s25-8-1-tnum{flex:1 1 110px;width:110px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-8-1-asker{display:grid;gap:6px;border-top:1px solid var(--arch-soft-line);padding-top:10px}
.arch-lab .arch-s25-8-1-ask[hidden]{display:none}
/* verdict and scaling */
.arch-lab .arch-s25-8-1-wait::before{content:'…';color:var(--arch-muted);font-weight:700;flex-shrink:0;width:1.2em}
.arch-lab .arch-s25-8-1-scale{display:grid;gap:8px;min-width:0;padding:12px;border:2px dashed var(--arch-good);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s25-8-1-scale p{margin:0;line-height:1.5}
.arch-lab input.arch-s25-8-1-knum{width:96px;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab .arch-s25-8-1-note:empty{display:none}
.arch-lab .arch-s25-8-1-more{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s25-8-1-more[hidden]{display:none}

/* SPb 2024/25, grade 8, problem 2 — «Три уравнения по кругу» (labs/s25-8-2-scales.mjs). The balances are pictures
   (visuals/art/beam-balance.mjs with the brass weights of art/shop-scale.mjs); the colours of the left side (blue) and the
   right side (orange) of every equation, the editors, the equation cards and the reasoning steps are defined here for the
   light theme and both dark branches; everything else goes through --arch-* tokens. */
.arch-lab .arch-s2582{--arch-s2582-l:#1d4ed8;--arch-s2582-r:#c2410c}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2582{--arch-s2582-l:#93c5fd;--arch-s2582-r:#fdba74}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2582{--arch-s2582-l:#93c5fd;--arch-s2582-r:#fdba74}
.arch-lab .arch-s2582-variant{border-top:0;padding-top:0}
.arch-lab .arch-s2582-variant-note{color:var(--arch-ink);font-size:15px}
.arch-lab .arch-s2582-guess-msg:empty{display:none}
.arch-lab .arch-s2582-guess-cmp{font-weight:600;color:var(--arch-label)}
/* the balances: the whole picture stays readable on phones (three rows), so the phone height cap of .phx-stage is lifted */
.arch-lab .arch-s2582-stage{padding:4px}
.arch-lab .arch-s2582-stage .phx-svg{max-height:none}
@media (max-width:600px) and (min-height:500px){.arch-lab .arch-s2582-stage{max-height:none}.arch-lab .arch-s2582-stage .phx-svg{max-height:none}}
.arch-lab .phx-svg text.arch-s2582-title{font-weight:700;fill:var(--arch-label)}
.arch-lab .phx-svg text.arch-s2582-ok{fill:var(--arch-good)}
.arch-lab .phx-svg text.arch-s2582-l{fill:var(--arch-s2582-l);font-weight:700}
.arch-lab .phx-svg text.arch-s2582-r{fill:var(--arch-s2582-r);font-weight:700}
.arch-lab .phx-svg text.arch-s2582-val{font-variant-numeric:tabular-nums;font-weight:700}
.arch-lab .phx-svg text.arch-s2582-verdict{font-weight:600;fill:var(--arch-muted)}
.arch-lab .phx-svg text.arch-s2582-verdict.arch-s2582-ok{fill:var(--arch-good)}
.arch-lab .phx-svg line.arch-s2582-bar{stroke-width:1.6}
.arch-lab .phx-svg line.arch-s2582-bar.arch-s2582-l{stroke:var(--arch-s2582-l)}
.arch-lab .phx-svg line.arch-s2582-bar.arch-s2582-r{stroke:var(--arch-s2582-r)}
.arch-lab .phx-svg line.arch-s2582-sep{stroke:var(--arch-soft-line);stroke-width:1}
.arch-lab .arch-s2582-summary{margin:0;font-weight:600;color:var(--arch-ink)}
/* the three number fields: in every editor «x =», «−1» and «+1» on the first line and the exact field on a line of its own,
   so that the longest number the model accepts (14 characters, e.g. 999999/1000001) is seen whole; three editors in a
   row only when the block is wide enough for that (a container query on the block of the editors) */
.arch-lab .arch-s2582-eds{min-width:0;container-type:inline-size}
.arch-lab .arch-s2582-eds-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
.arch-lab .arch-s2582-ed{display:grid;grid-template-columns:minmax(0,1fr) 48px 48px;grid-template-areas:"name minus plus" "input input input";gap:6px;align-items:center;min-width:0;padding:6px 10px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s2582-ed-name{grid-area:name;display:flex;align-items:center;min-width:0}
.arch-lab .arch-s2582-ed-tag{font-size:20px;font-weight:700;font-style:italic;color:var(--arch-label);white-space:nowrap}
.arch-lab .arch-s2582-minus{grid-area:minus}
.arch-lab .arch-s2582-plus{grid-area:plus}
.arch-lab .arch-s2582-step{min-width:48px;min-height:48px;padding:0;font-size:18px;font-weight:600;border-radius:12px;font-variant-numeric:tabular-nums}
.arch-lab input.arch-s2582-num-input{grid-area:input;box-sizing:border-box;width:100%;min-width:0;min-height:48px;padding:8px 6px;text-align:center;font-size:20px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2582-ed-msg{grid-column:1/-1;margin:0;font-size:14px;color:var(--arch-bad);overflow-wrap:anywhere}
@container (min-width:600px){.arch-lab .arch-s2582-eds-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.arch-lab input.arch-s2582-num-input{font-size:18px}}
.arch-lab .arch-s2582-ed-msg:empty{display:none}
.arch-lab .arch-s2582-note{color:var(--arch-ink)}
/* the equations in full */
.arch-lab .arch-s2582-cards{list-style:none;margin:0;padding:0;display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2582-card{display:grid;gap:6px;min-width:0;padding:10px 12px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.5;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.arch-lab .arch-s2582-card-ok{border-color:var(--arch-good)}
.arch-lab .arch-s2582-card p{margin:0}
.arch-lab .arch-s2582-mark{display:inline-flex;justify-content:center;width:1.4em;font-weight:700}
.arch-lab .arch-s2582-mark-ok{color:var(--arch-good)}
.arch-lab .arch-s2582-mark-bad{color:var(--arch-bad)}
.arch-lab .arch-s2582-fit-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.arch-lab .arch-s2582-fit-btns{display:inline-flex;gap:8px;flex-wrap:nowrap}
.arch-lab .arch-s2582-fit-label{font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s2582-fit{min-width:48px;min-height:44px;padding:0 12px;font-size:18px;font-weight:700;font-style:italic;border-radius:12px}
.arch-lab .arch-s2582-fit[aria-disabled=true]{opacity:.55}
.arch-lab .arch-s2582-card-msg{font-size:14px;color:var(--arch-bad)}
.arch-lab .arch-s2582-card-msg:empty{display:none}
.arch-lab .arch-s2582-card-msg.arch-s2582-card-msg-ok{color:var(--arch-good);font-weight:600}
/* finds */
.arch-lab .arch-s2582-found-list{margin:4px 0;padding-left:1.2em;display:grid;gap:4px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2582-found-all strong{color:var(--arch-good)}
.arch-lab .arch-s2582-ask{font-weight:600;color:var(--arch-accent)}
/* the reasoning */
.arch-lab .arch-s2582-explain{display:grid;gap:8px}
@media (max-width:420px){.arch-lab .arch-s2582-explain{padding:12px 8px}}
.arch-lab .arch-s2582-explain-body{display:grid;gap:8px;min-width:0}
.arch-lab .arch-s2582-formula{margin:2px 0;font-size:17px;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums;display:flex;flex-wrap:wrap;justify-content:center;gap:0 .6em}
.arch-lab .arch-s2582-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2024/25, 8 класс, задача 3 «Два равных отрезка и высота».
   The paper triangle and the ruler come from visuals/art/{paper-cutout,school-ruler}.css. Here: AE (teal) and CD (orange)
   — the two segments of the condition, the asked length on the line (violet band), the altitude (dashed), the handles of
   A and B (blue), the circle with centre A and radius CD (orange, dashed), the isosceles triangle AED′ of the example
   (blue tint), letters with a halo. Light and both dark branches. */
.arch-lab .arch-s2583{--s2583-ae:#0f766e;--s2583-cd:#c2410c;--s2583-ask:#7c3aed;--s2583-handle:#1d4ed8;--s2583-iso:rgba(59,130,246,.2);--s2583-halo:#ffffff;--s2583-trace:#64748b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2583{--s2583-ae:#5eead4;--s2583-cd:#fdba74;--s2583-ask:#c4b5fd;--s2583-handle:#93c5fd;--s2583-iso:rgba(96,165,250,.26);--s2583-halo:#141c2b;--s2583-trace:#94a3b8}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2583{--s2583-ae:#5eead4;--s2583-cd:#fdba74;--s2583-ask:#c4b5fd;--s2583-handle:#93c5fd;--s2583-iso:rgba(96,165,250,.26);--s2583-halo:#141c2b;--s2583-trace:#94a3b8}
.arch-lab .arch-s2583-stage{padding:8px}
.arch-lab .arch-s2583-svg{display:block;width:100%;max-width:100%;height:auto;margin:0 auto;outline-offset:3px;touch-action:manipulation}
.arch-lab .arch-s2583-frame{display:grid;gap:10px}
.arch-lab .arch-s2583-frame>*{margin:0}
.arch-lab .arch-s2583-quick{gap:8px 22px}
.arch-lab .arch-s2583-quick dt{display:flex;align-items:center;gap:6px;font-size:15px}
.arch-lab .arch-s2583-quick dd{font-size:18px}
.arch-lab .arch-s2583-quick [data-key=ask] dd{color:var(--s2583-ask)}
.arch-lab .arch-s2583-msg:empty{display:none}
.arch-lab .arch-s2583-msg{color:var(--arch-label);font-weight:600}
.arch-lab .arch-s2583-info{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2583-keyicon{flex:0 0 auto}
/* the drawing */
.arch-lab .arch-s2583-side{stroke:var(--arch-fig-line);stroke-width:2.4;stroke-linecap:round}
.arch-lab .arch-s2583-extend{stroke:var(--arch-fig-line);stroke-width:1.2;stroke-dasharray:4 5;opacity:.7}
.arch-lab .arch-s2583-tick{stroke:var(--arch-fig-line);stroke-width:1.8}
.arch-lab .arch-s2583-tick-eq{stroke:var(--arch-fig-line);stroke-width:2.2}
.arch-lab .arch-s2583-mark{fill:none;stroke:var(--arch-fig-line);stroke-width:1.4}
.arch-lab .arch-s2583-ae{stroke:var(--s2583-ae);stroke-width:3.4;stroke-linecap:round}
.arch-lab .arch-s2583-cd{stroke:var(--s2583-cd);stroke-width:3.4;stroke-linecap:round}
.arch-lab .arch-s2583-alt{stroke:var(--arch-fig-line);stroke-width:1.6;stroke-dasharray:6 4}
.arch-lab .arch-s2583-ask{stroke:var(--s2583-ask);stroke-width:9;stroke-linecap:butt;opacity:.55}
.arch-lab .arch-s2583-iso{fill:var(--s2583-iso);stroke:none}
.arch-lab .arch-s2583-circle{fill:none;stroke:var(--s2583-cd);stroke-width:1.8;stroke-dasharray:7 5}
.arch-lab .arch-s2583-cross{fill:none;stroke:var(--s2583-cd);stroke-width:2.6}
.arch-lab .arch-s2583-trace{stroke:var(--s2583-trace);stroke-width:1.6;stroke-dasharray:2 4;stroke-linecap:round}
.arch-lab .arch-s2583-rmark{stroke:none}
.arch-lab .arch-s2583-rmark-e{fill:var(--s2583-ae)}
.arch-lab .arch-s2583-rmark-d{fill:var(--s2583-cd)}
.arch-lab .arch-s2583-rmark-h{fill:var(--s2583-ask)}
.arch-lab .arch-s2583-dot{fill:var(--arch-ink);stroke:var(--s2583-halo);stroke-width:1.5}
.arch-lab .arch-s2583-dot-h{fill:var(--s2583-ask)}
.arch-lab .arch-s2583-dot-dp,.arch-lab .arch-s2583-dot-moving{fill:var(--s2583-cd)}
.arch-lab .arch-s2583-dot.arch-s2583-handle{fill:var(--s2583-handle);stroke-width:2}
.arch-lab .arch-s2583-hit{fill:transparent;cursor:grab;touch-action:none}
.arch-lab .arch-s2583-rulerhit{fill:transparent;cursor:pointer}
.arch-lab .arch-s2583-svg text.arch-s2583-label{fill:var(--arch-ink);font-weight:700;stroke:var(--s2583-halo);stroke-width:4px;paint-order:stroke;stroke-linejoin:round}
.arch-lab .arch-s2583-svg text.arch-s2583-label-h{fill:var(--s2583-ask)}
.arch-lab .arch-s2583-svg text.arch-s2583-label-dp,.arch-lab .arch-s2583-svg text.arch-s2583-label-moving{fill:var(--s2583-cd)}
.arch-lab .arch-s2583-svg text.arch-s2583-given{fill:var(--arch-muted)}
.arch-lab .arch-s2583-svg text.arch-s2583-label-axis{fill:var(--spb-cut-fold);font-weight:600}
/* parameters, the example's stages */
.arch-lab .arch-s2583-params .phx-param .arch-help{margin-top:2px}
.arch-lab .arch-s2583-params .phx-param-msg.arch-s2583-accepted{color:var(--arch-label)}
.arch-lab .arch-s2583-exnav[hidden],.arch-lab .arch-s2583-params .phx-param[hidden]{display:none}
.arch-lab .arch-s2583-extitle{margin:0}
.arch-lab .arch-s2583-fliprow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.arch-lab .arch-s2583-fliprow[hidden]{display:none}
.arch-lab .arch-s2583-fliplabel{flex:1 1 100%;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2583-fliprow input[type=range]{flex:1 1 180px}
/* the circle, the student's triangles, the sweep */
.arch-lab .arch-s2583-toggle[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s2583-circle-text{margin:0}
.arch-lab .arch-s2583-circle-text[hidden]{display:none}
.arch-lab .arch-s2583-found p{margin:0}
.arch-lab .arch-s2583-table th.arch-s2583-askcol,.arch-lab .arch-s2583-table td.arch-s2583-askcol{color:var(--s2583-ask);font-weight:700}
.arch-lab .arch-s2583-sweep[hidden]{display:none}
.arch-lab .arch-s2583 input{box-sizing:border-box}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: SPb 2024/25, 8 класс, задача 4 — «Три урока за партами»
   (visuals/labs/s25-8-4-desks.mjs). Only the classes of this lab; colours come from the --arch-* variables of
   visuals/lab.css, so the light theme and both dark branches work without a separate palette. One column at phone
   width, two or three as soon as there is room. */
.arch-lab .arch-s254-predict{display:grid;gap:8px}
.arch-lab .arch-s254-q{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s254-setup{align-items:center;gap:8px 12px}
.arch-lab .arch-s254-tag{font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s254-stage{display:grid;gap:10px}
.arch-lab .arch-s254-cap{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s254-freecap{margin:0;font-size:15px}
.arch-lab .arch-s254-desks{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.arch-lab .arch-s254-desk{display:grid;gap:2px;padding:6px 6px 8px;border-radius:14px;border:1px solid var(--arch-soft-line);
 background:var(--arch-surface);color:var(--arch-ink);text-align:center;min-height:44px;white-space:normal}
.arch-lab .arch-s254-desk.arch-s254-wrong{border-color:var(--arch-bad)}
.arch-lab .arch-s254-deskcap{font-size:13px;color:var(--arch-muted);line-height:1.35}
.arch-lab .arch-s254-deskmark{font-size:13px;font-weight:600;color:var(--arch-accent)}
.arch-lab .arch-s254-kids{display:flex;flex-wrap:wrap;gap:8px}
.arch-lab .arch-s254-kid{display:grid;gap:1px;width:74px;padding:4px 2px 6px;border-radius:14px;border:1px solid var(--arch-field-line);
 background:var(--arch-surface);color:var(--arch-ink);text-align:center;white-space:normal}
.arch-lab .arch-s254-kid[aria-pressed=true]{border-color:var(--arch-pressed-line);border-width:2px;background:var(--arch-pressed-bg)}
.arch-lab .arch-s254-kid.arch-s254-can{border-color:var(--arch-good)}
.arch-lab .arch-s254-svg{display:block;width:100%;height:auto}
.arch-lab .arch-s254-kidname{font-size:13px;font-weight:600;line-height:1.2}
.arch-lab .arch-s254-kidval,.arch-lab .arch-s254-kidsum{font-size:12px;color:var(--arch-muted);line-height:1.25}
.arch-lab .arch-s254-kidmark{font-size:12px;font-weight:600;color:var(--arch-accent);line-height:1.2}
.arch-lab svg text.arch-s254-fig{font-size:12px;fill:var(--arch-ink)}
.arch-lab svg text.arch-s254-figsum{font-weight:700;fill:var(--arch-ink)}
.arch-lab .arch-s254-result p{margin:4px 0}
.arch-lab .arch-s254-readouts{gap:8px 16px}
.arch-lab .arch-s254-sub{gap:10px}
.arch-lab .arch-s254-journal{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.arch-lab .arch-s254-col{border:1px solid var(--arch-soft-line);border-radius:12px;padding:8px 10px;background:var(--arch-surface)}
.arch-lab .arch-s254-col.arch-s254-colnow{border-color:var(--arch-pressed-line)}
.arch-lab .arch-s254-coltitle{margin:0 0 4px;font-weight:600;font-size:14px;color:var(--arch-label)}
.arch-lab .arch-s254-chips{list-style:none;margin:0;padding:0;display:grid;gap:3px;font-size:14px}
.arch-lab .arch-s254-chips li{line-height:1.35}
.arch-lab .arch-s254-chips li.arch-s254-rep{color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s254-editor{border:1px solid var(--arch-soft-line);border-radius:12px;padding:10px 12px;background:var(--arch-surface)}
.arch-lab .arch-s254-editor[hidden]{display:none}
.arch-lab .arch-s254-rows{display:grid;gap:6px;margin-top:8px}
.arch-lab .arch-s254-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.arch-lab .arch-s254-rowname{min-width:58px;font-weight:600;font-size:14px;color:var(--arch-label)}
.arch-lab input.arch-s254-num{box-sizing:border-box;width:92px;padding:8px 6px;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab .arch-s254-step{padding:10px 12px;font-size:19px;line-height:1}
.arch-lab .arch-s254-unit{font-size:14px;color:var(--arch-muted)}
.arch-lab .arch-s254-editmsg{margin:6px 0 0;font-size:14px;color:var(--arch-bad);min-height:0}
.arch-lab .arch-s254-editmsg:empty{display:none}
/* news about an accepted value (desks it dismissed) is not an error: ordinary ink */
.arch-lab .arch-s254-editmsg.arch-s254-editnews{color:var(--arch-ink)}
.arch-lab .arch-s254-panel{border:1px solid var(--arch-soft-line);border-radius:12px;padding:10px 12px;background:var(--arch-surface);line-height:1.55}
.arch-lab .arch-s254-panel p{margin:6px 0}
/* narrow: the name of the pupil takes its own line, so the stepper, the field and the unit stay on one row */
@media (max-width:460px){
 .arch-lab .arch-s254-rowname{flex:1 1 100%;min-width:0}
 .arch-lab .arch-s254-row{row-gap:2px;padding-bottom:4px}
 .arch-lab .arch-s254-rows{gap:10px}
}
@media (max-width:360px){
 .arch-lab .arch-s254-kid{width:68px}
 .arch-lab input.arch-s254-num{width:84px}
}

/* The feedback belongs to the edited row, including on a narrow screen. */
.arch-s254-row .arch-s254-editmsg{grid-column:1/-1;width:100%;margin:.3rem 0 0}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2024/25, 8 класс, задача 5 «Цифры после запятой».
   The exercise-book pages (paper and inks from visuals/art/squared-paper.css: the paper stays light in both themes, so the
   pencil marks on it keep fixed dark colours), the student's fraction fields and the ladder of rulers (ten cells per row,
   the window bar, the zoom lines) for the light theme and both dark branches. */
.arch-lab .arch-s2585{--s2585-cell:#fff7d6;--s2585-sure:#bbf7d0;--s2585-pair:#bfdbfe;--s2585-open:#fed7aa;--s2585-cap-pair:#1d4ed8;--s2585-cap-open:#9a3412;--s2585-zoom:#64748b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2585{--s2585-cell:#3a3524;--s2585-sure:#14532d;--s2585-pair:#1e3a8a;--s2585-open:#7c2d12;--s2585-cap-pair:#93c5fd;--s2585-cap-open:#fdba74;--s2585-zoom:#94a3b8}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2585{--s2585-cell:#3a3524;--s2585-sure:#14532d;--s2585-pair:#1e3a8a;--s2585-open:#7c2d12;--s2585-cap-pair:#93c5fd;--s2585-cap-open:#fdba74;--s2585-zoom:#94a3b8}
.arch-lab .arch-s2585 input{box-sizing:border-box}
.arch-lab .arch-s2585-examples button[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600;opacity:1}
.arch-lab .arch-s2585-own{display:grid;gap:6px}
.arch-lab .arch-s2585-own .arch-label{margin:0}
.arch-lab .arch-s2585-own-row{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;min-width:0}
.arch-lab .arch-s2585-field{display:grid;gap:2px;font-weight:400;color:var(--arch-muted);font-size:14px}
.arch-lab .arch-s2585-field input{width:116px;max-width:100%}
.arch-lab .arch-s2585-slash{font-size:24px;line-height:44px;color:var(--arch-ink)}
.arch-lab .arch-s2585-info p{margin:6px 0;line-height:1.55}
.arch-lab .arch-s2585-info:empty{display:none}
.arch-lab .arch-s2585-body{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0}
/* long numbers (five-digit denominators) may break anywhere rather than widen the lab at 320 px; the sections keep the lab width */
.arch-lab .arch-s2585-info p,.arch-lab .arch-s2585-check p,.arch-lab .arch-s2585-window p,.arch-lab .arch-s2585-body>.arch-help{overflow-wrap:anywhere}
.arch-lab .arch-s2585>.arch-sub{grid-template-columns:minmax(0,1fr);min-width:0}
.arch-lab .arch-s2585-body[hidden],.arch-lab .arch-s2585-lock[hidden],.arch-lab .arch-s2585-ladder-box[hidden],.arch-lab .arch-s2585-check[hidden],.arch-lab .arch-s2585-window[hidden]{display:none}
.arch-lab .arch-s2585-lock{font-style:italic}
.arch-lab .arch-s2585-nb-box{padding:4px}
.arch-lab .arch-s2585-nb{display:block;width:100%;height:auto}
.arch-lab .arch-s2585-window p{margin:4px 0;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-s2585-window p.arch-help{color:var(--arch-muted)}
.arch-lab .arch-s2585-note:empty{display:none}
.arch-lab .arch-s2585-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* the exercise book: place numbers in the margin, the pencil strike and the cut mark */
.arch-lab svg text.arch-s2585-place{fill:var(--spb-sqp-pencil);font-variant-numeric:tabular-nums;stroke:none}
.arch-lab .arch-s2585-strike{stroke:var(--spb-sqp-pencil);stroke-width:1.5;stroke-linecap:round;opacity:.85}
.arch-lab .arch-s2585-cut{stroke:var(--spb-sqp-ring);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:4 3}
/* the ladder of rulers */
.arch-lab .arch-s2585-ladder-box{padding:6px}
.arch-lab .arch-s2585-ladder{display:block;width:100%;height:auto}
.arch-lab .arch-s2585-cell{fill:var(--s2585-cell);stroke:var(--arch-fig-line);stroke-width:1}
.arch-lab .arch-s2585-cell-sure{fill:var(--s2585-sure)}
.arch-lab .arch-s2585-cell-pair{fill:var(--s2585-pair)}
.arch-lab .arch-s2585-cell-open{fill:var(--s2585-open)}
.arch-lab svg text.arch-s2585-celld{font-size:14px;fill:var(--arch-ink);stroke:none;font-variant-numeric:tabular-nums}
.arch-lab svg text.arch-s2585-celld-on{font-weight:700}
.arch-lab .arch-s2585-bar{fill:var(--arch-accent);stroke:none}
.arch-lab .arch-s2585-zoom{stroke:var(--s2585-zoom);stroke-width:1.2;stroke-dasharray:4 3;fill:none}
.arch-lab svg text.arch-s2585-cap{font-size:14px;fill:var(--arch-ink);stroke:none;font-variant-numeric:tabular-nums}
.arch-lab svg tspan.arch-s2585-cap-box{fill:var(--arch-accent);font-weight:700}
.arch-lab svg text.arch-s2585-cap-sure{fill:var(--arch-good);font-weight:600}
.arch-lab svg text.arch-s2585-cap-pair{fill:var(--s2585-cap-pair);font-weight:700}
.arch-lab svg text.arch-s2585-cap-open{fill:var(--s2585-cap-open);font-weight:600}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Собери гербарий» (SPb 2025/26, grade 6, problem 1).
   The album page stays paper-light in both themes (like the squared notebook pages of the shared lab.css), so the ink
   on it is fixed; the controls under it follow the site theme. */
.arch-lab{--arch-herb-paper:#fbf5e4;--arch-herb-edge:#d6c294;--arch-herb-ink:#3b2f1c;--arch-herb-title:#6b4f22;--arch-herb-sep:#e2d3ad;--arch-herb-maple:#b42318;--arch-herb-yellow:#9a5b06}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-herb-paper:#f1e8d0;--arch-herb-edge:#8f7d55;--arch-herb-sep:#d8c79c}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-herb-paper:#f1e8d0;--arch-herb-edge:#8f7d55;--arch-herb-sep:#d8c79c}
.arch-lab .arch-herb-stage{padding:4px}
.arch-lab .arch-herb-svg{display:block;width:100%;height:auto;touch-action:manipulation}
.arch-lab .arch-herb-svg text{fill:var(--arch-herb-ink);stroke:none;font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif}
.arch-lab .arch-herb-svg .arch-herb-paper{fill:var(--arch-herb-paper);stroke:var(--arch-herb-edge);stroke-width:1.5}
.arch-lab .arch-herb-svg .arch-herb-title{fill:var(--arch-herb-title);font-weight:600;font-family:"Segoe Print","Comic Sans MS","Chalkboard SE",system-ui,sans-serif}
.arch-lab .arch-herb-svg .arch-herb-count{font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab .arch-herb-svg .arch-herb-sep{stroke:var(--arch-herb-sep);stroke-width:1.2;stroke-dasharray:4 4}
.arch-lab .arch-herb-svg .arch-herb-loop-maple{fill:var(--arch-herb-maple);fill-opacity:.05;stroke:var(--arch-herb-maple);stroke-width:2.4;stroke-dasharray:9 5}
.arch-lab .arch-herb-svg .arch-herb-loop-yellow{fill:var(--arch-herb-yellow);fill-opacity:.05;stroke:var(--arch-herb-yellow);stroke-width:2.4;stroke-dasharray:3 4}
.arch-lab .arch-herb-svg .arch-herb-maple-text{fill:var(--arch-herb-maple);font-weight:700}
.arch-lab .arch-herb-svg .arch-herb-yellow-text{fill:var(--arch-herb-yellow);font-weight:700}
.arch-lab .arch-herb-leaf{transform-box:fill-box;transform-origin:center}
/* «−», the number and «+» under every column of the page: the grid has the page's side margins (8 px), so each
   control stands under its kind. Narrow columns stack the control (+ on top), wide ones lay it out in a row. */
.arch-lab .arch-herb-steppers{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:8px 8px 4px;container-type:inline-size}
.arch-lab .arch-herb-stepper{display:flex;flex-direction:column-reverse;align-items:center;gap:4px;min-width:0}
.arch-lab .arch-herb-step{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;font-size:22px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab input.arch-herb-num{box-sizing:border-box;width:54px;max-width:calc(100% - 4px);min-height:44px;padding:6px 4px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}
@container (min-width:640px){.arch-lab .arch-herb-stepper{flex-direction:row;justify-content:center}.arch-lab input.arch-herb-num{width:56px}}
.arch-lab .arch-herb-msg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-herb-msg:empty{display:none}
.arch-lab .arch-herb-change{margin:0 0 6px;color:var(--arch-label)}
.arch-lab .arch-herb-checks li span{min-width:0}
.arch-lab .arch-herb-verdict{margin:6px 0 0;font-weight:600}
.arch-lab .arch-herb-variant-note{margin:0}
.arch-lab .arch-herb-search{display:grid;gap:4px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface);color:var(--arch-ink);line-height:1.55}
.arch-lab .arch-herb-search p{margin:0}
.arch-lab .arch-herb-search:focus{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-herb-found{display:grid;gap:6px}
.arch-lab .arch-herb-found:empty{display:none}
.arch-lab .arch-herb-found p{margin:0}
.arch-lab .arch-herb-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* SPb 2025/26, grade 6, problem 2 — «Распили доску сам» (labs/s26-6-2-board.mjs). The wooden board is an SVG
   (visuals/art/plank.mjs, colours in art/plank.css) under a grid of transparent buttons, one per cell. Own colours: the
   diagonal-cell tint, the marked corner, the preview of the next piece and the frame of equal areas — light theme and
   both dark branches; everything else goes through --arch-* tokens. */
.arch-lab .arch-s262{--arch-s262-diag:rgba(147,197,253,.82);--arch-s262-pencil:#8a6a45;--arch-s262-preview:#047857;--arch-s262-pending:#b45309}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s262{--arch-s262-diag:rgba(59,130,246,.55);--arch-s262-pencil:#140e08;--arch-s262-preview:#4ade80;--arch-s262-pending:#fbbf24}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s262{--arch-s262-diag:rgba(59,130,246,.55);--arch-s262-pencil:#140e08;--arch-s262-preview:#4ade80;--arch-s262-pending:#fbbf24}
.arch-lab .arch-s262-predict{border-top:0;padding-top:0}
.arch-lab .arch-s262-variant-note{margin:0;font-size:15px;color:var(--arch-ink)}
.arch-lab .arch-s262-question{margin:0}
.arch-lab .arch-s262-stage{padding:10px;transition:border-color .3s}
.arch-lab .arch-s262-stage.arch-s262-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
/* the board: row numbers (bottom = 1) | field; column numbers below */
.arch-lab .arch-s262-board{--n:9;display:grid;grid-template-columns:20px minmax(0,1fr);grid-template-rows:auto 20px;width:min(100%,560px);margin:auto}
.arch-lab .arch-zoomed .arch-s262-board{width:calc(var(--n) * 48px + 20px);max-width:none}
.arch-lab .arch-s262-rowlabels{display:grid;grid-template-rows:repeat(var(--n),minmax(0,1fr))}
.arch-lab .arch-s262-collabels{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));align-items:start;padding-top:2px}
.arch-lab .arch-s262-rowlabels span,.arch-lab .arch-s262-collabels span{display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-s262-field{position:relative;aspect-ratio:1}
.arch-lab .arch-stage .arch-s262-svg{position:absolute;inset:0;width:100%;height:100%;max-height:none;z-index:0;pointer-events:none;overflow:visible}
.arch-lab .arch-s262-cells{position:relative;z-index:1;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1}
.arch-lab .arch-s262-cell{min-width:0;min-height:0;width:100%;height:100%;padding:0;margin:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
@media (hover:hover){.arch-lab .arch-s262-cell:hover{background:rgba(255,255,255,.22)}}
.arch-lab .arch-s262-cell:focus-visible{outline:4px solid var(--arch-focus);outline-offset:-4px;position:relative;z-index:2}
/* SVG layers drawn by the lab (100 units per cell) */
.arch-lab .arch-s262-pencil{fill:none;stroke:var(--arch-s262-pencil);stroke-width:2.4;opacity:.6}
.arch-lab .arch-s262-edge{fill:none;stroke:var(--spb-plank-edge);stroke-width:8}
.arch-lab .arch-s262-diagcell{fill:var(--arch-s262-diag)}
.arch-lab .arch-s262-pending{fill:none;stroke:var(--arch-s262-pending);stroke-width:9;stroke-dasharray:16 9}
.arch-lab .arch-s262-preview{fill:none;stroke:var(--arch-s262-preview);stroke-width:8;stroke-dasharray:22 10}
.arch-lab .arch-s262-preview-bad{stroke:var(--arch-bad)}
.arch-lab .arch-s262-busy{fill:var(--arch-bad);opacity:.28}
.arch-lab .arch-s262-equal-frame{fill:none;stroke:var(--spb-plank-equal-line);stroke-width:6;stroke-dasharray:14 8}
/* legend keys */
.arch-lab .arch-s262-key{flex:none}
.arch-lab .arch-s262-key-kerf{fill:none;stroke:var(--spb-plank-kerf);stroke-width:2.5}
.arch-lab .arch-s262-key-equal{fill:var(--spb-plank-equal);stroke:var(--spb-plank-equal-line);stroke-width:2.5}
.arch-lab .arch-s262-key-diag{stroke:var(--arch-grid);stroke-width:1}
.arch-lab .arch-s262-diag[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 1px var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s262-diag[aria-pressed=true]::before{content:'✓\00a0' / ''}
/* result box: the list of areas wraps on phones */
.arch-lab .arch-s262-readouts div{flex-wrap:wrap}
.arch-lab .arch-s262-readouts dt{flex:none}
.arch-lab .arch-s262-readouts dd.arch-s262-areas-dd{white-space:normal;min-width:0}
.arch-lab .arch-s262-areas{display:inline-flex;flex-wrap:wrap;gap:4px}
.arch-lab .arch-s262-chip{min-width:2em;padding:0 6px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s262-chip-equal{color:var(--arch-bad);border-color:var(--arch-bad);background:var(--arch-bad-bg)}
.arch-lab .arch-s262-diagtext{color:var(--arch-ink)}
.arch-lab .arch-s262-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-s262-stage{transition:none}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Тая идёт по кругу» (SPb 2025/26, grade 6, problem 3).
   The asphalt with the chalk circle (art/chalk.css) and the squared page (art/squared-paper.css) keep their own fixed
   colours in both themes; the marks drawn on the page here are inks on paper, so they are fixed too. The controls and the
   texts follow the site theme through the shared --arch-* variables. */
.arch-lab{--arch-s2663-a:#c2410c;--arch-s2663-b:#047857;--arch-s2663-bad:#b91c1c}
.arch-lab .arch-s2663-stage,.arch-lab .arch-s2663-bookbox{padding:4px}
/* the yard is a picture: at most 560 px wide and centred, so the circle keeps its size next to a wide page */
.arch-lab .arch-s2663-stage{box-sizing:border-box;width:100%;max-width:560px;justify-self:center}
.arch-lab .arch-s2663-scene,.arch-lab .arch-s2663-book{display:block;width:100%;height:auto;touch-action:manipulation}
/* the child stands on the asphalt in both themes: dark outlines as in the light theme */
.arch-lab .arch-s2663-scene .p25-o{stroke:#1f2937}
.arch-lab .arch-s2663-scene .p25-o-thin{stroke:#1f2937}
.arch-lab .arch-s2663-kid{transform-box:view-box}
.arch-lab .arch-s2663-where{margin:0;color:var(--arch-label);font-weight:600}
.arch-lab .arch-s2663-walk,.arch-lab .arch-s2663-drow{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.arch-lab .arch-s2663-field{display:inline-flex;align-items:center;gap:6px}
.arch-lab input.arch-s2663-num{box-sizing:border-box;width:64px;min-height:44px;padding:6px 4px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}
.arch-lab input.arch-s2663-dnum{width:88px}
.arch-lab .arch-s2663-step{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;font-size:22px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab .arch-s2663-msg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-s2663-msg:empty{display:none}
.arch-lab .arch-s2663-change{margin:0;color:var(--arch-label)}
.arch-lab .arch-s2663-book.arch-s2663-cutting{cursor:crosshair}
.arch-lab .arch-s2663-book:focus{outline:none}
.arch-lab .arch-s2663-book:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s2663-brace{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.arch-lab .arch-s2663-brace-a{stroke:var(--arch-s2663-a)}
.arch-lab .arch-s2663-brace-b{stroke:var(--arch-s2663-b)}
.arch-lab svg text.arch-s2663-plabel{font-weight:700;font-variant-numeric:tabular-nums;stroke:none}
.arch-lab svg text.arch-s2663-ptone-a{fill:var(--arch-s2663-a)}
.arch-lab svg text.arch-s2663-ptone-b{fill:var(--arch-s2663-b)}
.arch-lab svg text.arch-s2663-pbad{fill:var(--arch-s2663-bad)}
.arch-lab .arch-s2663-cursor{fill:var(--arch-focus);opacity:.85}
.arch-lab .arch-s2663-sum{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.arch-lab .arch-s2663-found{display:grid;gap:6px}
.arch-lab .arch-s2663-found:empty{display:none}
.arch-lab .arch-s2663-found p{margin:0}
.arch-lab .arch-s2663-log{margin:0;padding-left:22px;overflow-wrap:anywhere;color:var(--arch-ink)}
.arch-lab .arch-s2663-obs{color:var(--arch-label)}
.arch-lab .arch-s2663-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* SPb 2025/26, grade 6, problem 4 — «Засели дом сам» (labs/s26-6-4-flats.mjs). The house: roof and entrance are SVG
   (visuals/art/house.mjs, colours --spb-house-… in art/house.css), the floors are a grid of real buttons on a brick
   facade: the floor number (paints the whole floor) and four windows. A window shows the flat number, the resident
   (shirt colour and number = family) and a badge with the number of neighbours of the same family. Own colours: the
   flat-number ink on the glass, set for the light theme and both dark branches. */
.arch-lab .arch-flats{--arch-flats-num:#334155;--arch-flats-floor-bg:#f5ede4}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-flats{--arch-flats-num:#cbd5e1;--arch-flats-floor-bg:#3b2f28}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-flats{--arch-flats-num:#cbd5e1;--arch-flats-floor-bg:#3b2f28}
.arch-lab .arch-flats-variant{border-top:0;padding-top:0}
.arch-lab .arch-flats-pred-input{width:120px;flex:0 0 auto}
.arch-lab .arch-flats-floors .phx-param{max-width:520px}
/* the exact field keeps its padding inside its grid cell (otherwise it runs under «+» on phones) */
.arch-lab .arch-flats-floors input.phx-num{box-sizing:border-box}
.arch-lab .arch-flats-brush-title{margin:6px 0 0}
.arch-lab .arch-flats-palette{display:flex;flex-wrap:wrap;gap:6px}
.arch-lab .arch-flats-chip{display:inline-flex;align-items:center;gap:6px;min-width:64px;justify-content:center;background:var(--arch-surface);color:var(--arch-ink);border:1px solid var(--arch-field-line);font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab .arch-flats-chip[aria-pressed=true],.arch-lab .arch-flats-eraser[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);box-shadow:inset 0 0 0 2px var(--arch-pressed-line)}
.arch-lab .arch-flats-dot{width:16px;height:16px;border-radius:50%;border:1.5px solid #1f2937;flex:0 0 auto}
.arch-lab .arch-flats-brush-note{min-height:1.4em}
/* the house */
.arch-lab .arch-flats-stage{padding:10px 6px 6px;transition:border-color .3s}
.arch-lab .arch-flats-stage.arch-flats-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
.arch-lab .arch-flats-house{width:min(100%,440px);margin:0 auto}
.arch-lab .arch-stage .arch-flats-roof,.arch-lab .arch-stage .arch-flats-door{display:block;width:100%;height:auto;max-height:none;overflow:visible}
.arch-lab .arch-flats-facade{margin:0 10px;padding:8px 8px 10px;background-color:var(--spb-house-wall);
 background-image:linear-gradient(var(--spb-house-seam) 1px,transparent 1px),linear-gradient(90deg,var(--spb-house-seam) 1px,transparent 1px);
 background-size:100% 12px,24px 24px;border-left:2px solid var(--spb-house-line);border-right:2px solid var(--spb-house-line)}
.arch-lab .arch-flats-grid{display:grid;grid-template-columns:44px repeat(4,minmax(44px,1fr));gap:7px 6px;align-items:stretch}
.arch-lab .arch-flats-floor{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-width:44px;min-height:62px;padding:2px;border-radius:8px;
 background:var(--arch-flats-floor-bg);color:var(--arch-ink);border:1px solid var(--spb-house-line);font-variant-numeric:tabular-nums;line-height:1.15}
.arch-lab .arch-flats-floor-n{font-weight:700;font-size:16px}
.arch-lab .arch-flats-floor-ends{font-size:12px;font-weight:700;color:var(--arch-accent)}
.arch-lab .arch-flats-floor.arch-flats-double{box-shadow:inset 0 0 0 2px var(--arch-accent)}
.arch-lab .arch-flats-window{position:relative;display:flex;align-items:flex-end;justify-content:center;min-width:44px;min-height:62px;width:100%;padding:0;margin:0;
 border:3px solid var(--spb-house-frame);border-radius:5px;background:var(--spb-house-glass);color:var(--arch-ink);cursor:pointer;-webkit-tap-highlight-color:transparent;overflow:hidden;
 box-shadow:0 0 0 1px var(--spb-house-line)}
.arch-lab .arch-flats-window.arch-flats-on{background:var(--spb-house-glass-night)}
.arch-lab .arch-flats-window.arch-flats-sad{border-color:var(--arch-bad);box-shadow:0 0 0 1px var(--arch-bad)}
.arch-lab .arch-flats-window.arch-flats-glad{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--spb-house-line)}
.arch-lab .arch-flats-window.arch-flats-top{box-shadow:0 0 0 3px #f59e0b}
@media (hover:hover){.arch-lab .arch-flats-window:hover{filter:brightness(.95)}}
.arch-lab .arch-flats-window:focus-visible,.arch-lab .arch-flats-floor:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px;z-index:2}
.arch-lab .arch-flats-num{position:absolute;top:1px;left:3px;font-size:11px;line-height:1.1;color:var(--arch-flats-num);font-variant-numeric:tabular-nums;pointer-events:none}
.arch-lab .arch-flats-person{display:block;width:42px;height:37px;margin:0 auto -1px;pointer-events:none}
.arch-lab .arch-flats-mates{position:absolute;right:1px;top:1px;min-width:17px;height:17px;padding:0 3px;border-radius:9px;font-size:12px;line-height:17px;font-weight:700;color:#fff;text-align:center;pointer-events:none}
.arch-lab .arch-flats-mates-ok{background:#047857}
.arch-lab .arch-flats-mates-no{background:#b91c1c}
.arch-lab .arch-flats-flag{position:absolute;top:15px;left:3px;font-size:12px;line-height:1.3;color:#b45309;pointer-events:none;text-shadow:0 0 2px #fff}
.arch-lab .arch-flats-result .arch-readouts dd{white-space:normal}
.arch-lab .arch-flats-explain-btn[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-flats-explain p{margin:6px 0}
.arch-lab .arch-flats-pred-verdict{font-weight:600}
.arch-lab .arch-flats-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (max-width:380px){.arch-lab .arch-flats-facade{margin:0 4px;padding:6px 4px 8px}.arch-lab .arch-flats-grid{grid-template-columns:44px repeat(4,minmax(44px,1fr));gap:6px 4px}}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-flats-stage{transition:none}}

/* SPb 2025/26, grade 7 (= grade 8), problem 1 — «Разрежь доску сам» (labs/s26-7-1-cut.mjs). The cells are buttons;
   the SVG on top of them (pointer-events: none) draws the board as a squared sheet (the uncut rest is clean paper),
   the cut pieces with their outlines, the numbers of the picked pieces, the scissors at the first corner of a cut and,
   in the explanation, the number of cells of every other piece. Like the squared exercise-book page of this package
   (art/squared-paper.css) the sheet and the paper pieces stay paper-light in both themes, so the ink on them keeps
   fixed dark colours; in the dark branches the paper is only a little dimmer. Everything around the sheet (labels,
   frames, text) goes through --arch-* tokens. */
.arch-lab .arch-cut{--arch-cut-paper:var(--spb-sqp-paper,#fffef8);--arch-cut-grid:#b9cde4;--arch-cut-edge:#475569;--arch-cut-ink:#1f2937;--arch-cut-piece:#d6e4f5;--arch-cut-team:#fde68a;--arch-cut-team-line:#b45309;--arch-cut-badge:#b45309;--arch-cut-badge-ink:#fff;--arch-cut-preview:#047857;--arch-cut-bad:#b91c1c;--arch-cut-area:#1e3a5f}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-cut{--arch-cut-grid:#a9bcd3;--arch-cut-edge:#8f8a74;--arch-cut-piece:#cbdaee;--arch-cut-team:#f7da72}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-cut{--arch-cut-grid:#a9bcd3;--arch-cut-edge:#8f8a74;--arch-cut-piece:#cbdaee;--arch-cut-team:#f7da72}
.arch-lab .arch-cut-variant{border-top:0;padding-top:0}
.arch-lab .arch-cut-question{margin:0;font-weight:600;color:var(--arch-label)}
.arch-lab .arch-cut-modehelp{min-height:2.8em}
.arch-lab .arch-cut-stage{padding:10px;transition:border-color .3s}
.arch-lab .arch-cut-stage.arch-cut-complete{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
/* the layout: the board with its counters | the five → 3 × 6 frame and the messages (side by side on a wide lab) */
.arch-lab .arch-cut-work{container-type:inline-size;min-width:0}
.arch-lab .arch-cut-layout{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);min-width:0}
.arch-lab .arch-cut-main,.arch-lab .arch-cut-side{display:grid;gap:10px;align-content:start;min-width:0}
.arch-lab .arch-cut-side .arch-cut-result{margin:0}
@container (min-width:740px){.arch-lab .arch-cut-layout{grid-template-columns:minmax(0,1fr) 216px;align-items:start}}
.arch-lab .arch-cut-stats{margin:0 0 8px}
.arch-lab .arch-cut-stats .arch-readouts{gap:4px 16px}
.arch-lab .arch-cut-stats .arch-readouts dd{white-space:normal}
/* the board: row numbers | cells; column numbers on top. The row numbers span the whole board row so that, when the
   big cells scroll sideways, they can stay at the left edge (sticky) above the cells; they do not catch taps. */
.arch-lab .arch-cut-board{--rows:10;--cols:10;display:grid;grid-template-columns:24px minmax(0,1fr);grid-template-rows:20px auto;width:min(100%,520px);margin:auto}
.arch-lab .arch-zoomed .arch-cut-board{width:calc(var(--cols) * 48px + 24px);max-width:none}
.arch-lab .arch-cut-labelcorner{grid-column:1 / -1;grid-row:1;justify-self:start;width:21px;position:relative;z-index:3;pointer-events:none}
.arch-lab .arch-cut-collabels{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));align-items:end;padding-bottom:3px}
.arch-lab .arch-cut-rowlabels{grid-column:1 / -1;grid-row:2;justify-self:start;width:21px;box-sizing:border-box;padding-right:3px;display:grid;grid-template-rows:repeat(var(--rows),minmax(0,1fr));position:relative;z-index:3;pointer-events:none}
.arch-lab .arch-zoomed :is(.arch-cut-rowlabels,.arch-cut-labelcorner){position:sticky;left:0;background:var(--arch-surface);box-shadow:1px 0 0 var(--arch-soft-line)}
.arch-lab .arch-cut-collabels span,.arch-lab .arch-cut-rowlabels span{display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-cut-rowlabels span{justify-content:flex-end}
.arch-lab .arch-cut-field{grid-column:2;grid-row:2;position:relative;aspect-ratio:var(--cols) / var(--rows)}
.arch-lab .arch-cut-cells{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));grid-template-rows:repeat(var(--rows),minmax(0,1fr));width:100%;height:100%;box-shadow:0 0 0 2px var(--arch-cut-edge),0 3px 8px rgba(15,23,42,.18);background:var(--arch-cut-paper);border-radius:2px}
.arch-lab .arch-cut-cell{position:relative;min-width:0;min-height:0;width:100%;height:100%;padding:0;margin:0;border:0;border-radius:0;background:transparent;color:var(--arch-ink);cursor:pointer;-webkit-tap-highlight-color:transparent}
.arch-lab .arch-cut-cell:focus-visible{outline:4px solid var(--arch-focus);outline-offset:-4px;z-index:2}
.arch-lab .arch-stage .arch-cut-overlay{position:absolute;inset:0;width:100%;height:100%;max-height:none;pointer-events:none;overflow:visible}
.arch-lab svg .arch-cut-paper{fill:var(--arch-cut-paper)}
.arch-lab svg .arch-cut-piece{fill:var(--arch-cut-piece)}
.arch-lab svg .arch-cut-team{fill:var(--arch-cut-team)}
.arch-lab svg .arch-cut-gridline{fill:none;stroke:var(--arch-cut-grid);stroke-width:3}
.arch-lab svg .arch-cut-outline{stroke:var(--arch-cut-ink);stroke-width:6;stroke-linejoin:round}
.arch-lab svg .arch-cut-outline-team{stroke:var(--arch-cut-team-line);stroke-width:8}
.arch-lab svg .arch-cut-badge circle{fill:var(--arch-cut-badge)}
.arch-lab svg .arch-cut-badge text{fill:var(--arch-cut-badge-ink);font-size:44px;font-weight:800}
.arch-lab svg .arch-cut-area{fill:var(--arch-cut-area);font-size:44px;font-weight:700;font-variant-numeric:tabular-nums}
.arch-lab svg .arch-cut-corner{fill:none;stroke:#d97706;stroke-width:10}
.arch-lab svg .arch-cut-preview{fill:var(--arch-cut-preview);fill-opacity:.18;stroke:var(--arch-cut-preview);stroke-width:8;stroke-dasharray:22 12}
.arch-lab svg .arch-cut-preview-bad{fill:var(--arch-cut-bad);stroke:var(--arch-cut-bad)}
.arch-lab svg .arch-cut-busy{fill:var(--arch-cut-bad);fill-opacity:.55}
/* the goal rectangle and the picked pieces */
.arch-lab .arch-cut-goal{display:grid;gap:8px;padding:10px 12px;transition:border-color .3s}
.arch-lab .arch-cut-goal.arch-cut-goal-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
.arch-lab .arch-cut-goal-title{margin:0}
.arch-lab .arch-cut-goal-frame{display:flex;justify-content:center}
.arch-lab .arch-stage svg.arch-cut-goal-svg{width:min(100%,calc(var(--goal-w,6) * 44px));max-height:none}
.arch-lab svg .arch-cut-goal-bg{fill:var(--arch-cut-paper)}
.arch-lab svg .arch-cut-goal-line{stroke:var(--arch-cut-ink);stroke-width:6;stroke-dasharray:24 14}
.arch-lab svg .arch-cut-goal-line.arch-cut-goal-done{stroke:var(--arch-good);stroke-width:8;stroke-dasharray:none}
.arch-lab .arch-cut-tray{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;justify-content:center}
.arch-lab .arch-cut-tray-item{margin:0;display:grid;justify-items:center;gap:2px}
.arch-lab .arch-stage svg.arch-cut-tray-svg{height:auto;max-width:100%}
.arch-lab .arch-cut-tray-item figcaption{font-size:13px;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-cut-goal-msg{margin:0}
.arch-lab .arch-cut-result .arch-readouts dd{white-space:normal}
/* the explanation: a bar of all cells of the board */
.arch-lab .arch-cut-explain-btn[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-cut-bar{display:flex;height:34px;border:2px solid var(--arch-fig-line);border-radius:6px;overflow:hidden;margin:4px 0 8px}
.arch-lab .arch-cut-bar:empty{display:none}
.arch-lab .arch-cut-seg{display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;font-weight:700;font-variant-numeric:tabular-nums;color:var(--arch-cut-ink)}
.arch-lab .arch-cut-seg+.arch-cut-seg{border-left:2px solid var(--arch-fig-line)}
.arch-lab .arch-cut-seg-team{background:var(--arch-cut-team)}
.arch-lab .arch-cut-seg-rest{background:var(--arch-cut-piece)}
.arch-lab .arch-cut-seg-free{background:repeating-linear-gradient(90deg,var(--arch-cut-grid) 0 1px,var(--arch-cut-paper) 1px 8px)}
.arch-lab .arch-cut-key{display:inline-block;width:16px;height:16px;border:1.5px solid var(--arch-fig-line);border-radius:3px;flex:none}
.arch-lab .arch-cut-legend{margin-bottom:6px}
.arch-lab .arch-cut-explain-text p{margin:6px 0}
.arch-lab .arch-cut-pred-verdict{font-weight:600}
.arch-lab .arch-cut-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-cut-stage,.arch-lab .arch-cut-goal{transition:none}}

/* SPb 2025/26, grade 7, problem 2 — «Придумай историю с конфетами» (labs/s26-7-2-candies.mjs). Four exact whole-number
   fields with −/+, the scene (the crate or the tree from visuals/art/candy-crate.mjs and wonder-field.mjs, the kids and
   Дуремар from visuals/draw.mjs) with exact numbers on tags, the list of the rules of the story, the balance of the end,
   and the tape diagram of the explanation. Own colours: the tags, the arrows of a step and the tape segments, set for the
   light theme and both dark branches. */
.arch-lab .arch-candy{--arch-candy-tag:#fffdf7;--arch-candy-tag-new:#fef3c7;--arch-candy-tag-line:#94a3b8;--arch-candy-move:#c2410c;--arch-candy-big:#fed7aa;--arch-candy-pair:#bfdbfe;--arch-candy-pair-end:#93c5fd;--arch-candy-store:#fde68a;--arch-candy-warn-bg:#fee2e2}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-candy{--arch-candy-tag:#1f2937;--arch-candy-tag-new:#4a3a12;--arch-candy-tag-line:#64748b;--arch-candy-move:#fdba74;--arch-candy-big:#7c3f12;--arch-candy-pair:#1e3a8a;--arch-candy-pair-end:#1d4ed8;--arch-candy-store:#6b5410;--arch-candy-warn-bg:#4c1d1d}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-candy{--arch-candy-tag:#1f2937;--arch-candy-tag-new:#4a3a12;--arch-candy-tag-line:#64748b;--arch-candy-move:#fdba74;--arch-candy-big:#7c3f12;--arch-candy-pair:#1e3a8a;--arch-candy-pair-end:#1d4ed8;--arch-candy-store:#6b5410;--arch-candy-warn-bg:#4c1d1d}
.arch-lab .arch-candy-variant{border-top:0;padding-top:0}
.arch-lab .arch-candy-question{margin:0;font-weight:600;color:var(--arch-label)}
/* the four numbers */
.arch-lab .arch-candy-steppers{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 16px}
.arch-lab .arch-candy-field{display:grid;gap:4px;min-width:0}
.arch-lab .arch-candy-row{display:flex;gap:6px;align-items:center}
.arch-lab .arch-candy-row .arch-candy-step{flex:0 0 44px;padding:0;font-size:20px;line-height:1}
.arch-lab input.arch-candy-num{flex:1 1 auto;width:100%;min-width:0;box-sizing:border-box;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab .arch-candy-msg:empty{display:none}
/* the scene */
.arch-lab .arch-candy-stage{display:grid;gap:8px;padding:8px;transition:border-color .3s}
.arch-lab .arch-candy-stage.arch-candy-ok{border-color:var(--arch-good);box-shadow:0 0 0 1px var(--arch-good) inset}
.arch-lab .arch-stage svg.arch-candy-scene{max-height:none;width:min(100%,560px);margin:0 auto}
.arch-lab svg .arch-candy-name{fill:var(--arch-ink);font-size:15px;font-weight:600}
.arch-lab svg .arch-candy-name-store{font-size:13px}
.arch-lab svg .arch-candy-tag{fill:var(--arch-candy-tag);stroke:var(--arch-candy-tag-line);stroke-width:1.2}
.arch-lab svg .arch-candy-tag-new{fill:var(--arch-candy-tag-new);stroke:var(--arch-candy-move);stroke-width:2}
.arch-lab svg .arch-candy-count{fill:var(--arch-ink);font-size:18px;font-weight:800;font-variant-numeric:tabular-nums}
.arch-lab svg .arch-candy-arrow{fill:none;stroke:var(--arch-candy-move);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.arch-lab svg .arch-candy-move-bg{fill:var(--arch-surface);stroke:var(--arch-candy-move);stroke-width:1.6}
.arch-lab svg .arch-candy-move{fill:var(--arch-candy-move);font-size:15px;font-weight:800}
.arch-lab svg .arch-candy-warn-bg{fill:var(--arch-candy-warn-bg);stroke:var(--arch-bad);stroke-width:1.4}
.arch-lab svg .arch-candy-warn{fill:var(--arch-bad);font-size:14px;font-weight:700}
.arch-lab .arch-candy-stepnote{margin:0;min-height:2.8em}
.arch-lab .arch-candy-checks li.arch-candy-unknown::before{content:'—';color:var(--arch-muted);font-weight:700;flex-shrink:0;width:1.2em}
.arch-lab .arch-candy-checks li{color:var(--arch-ink)}
/* the balance of the end of the story */
.arch-lab .arch-candy-balance-box{display:flex;justify-content:center}
.arch-lab svg.arch-candy-balance{width:min(100%,360px);height:auto}
.arch-lab svg .arch-candy-bal-name{fill:var(--arch-muted);font-size:14px;font-weight:600}
.arch-lab svg .arch-candy-bal-n{fill:var(--arch-ink);font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}
.arch-lab svg .arch-candy-bal-sign{fill:var(--arch-ink);font-size:24px;font-weight:800}
.arch-lab .arch-candy-result .arch-readouts dd{white-space:normal}
.arch-lab .arch-candy-log-title{margin:8px 0 2px}
.arch-lab .arch-candy-log{list-style:disc}
.arch-lab .arch-candy-log li.arch-candy-best{font-weight:700}
/* the explanation: the tape diagram */
.arch-lab .arch-candy-explain-btn[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-candy-tape{display:grid;gap:8px;margin:4px 0 8px}
.arch-lab .arch-candy-tape:empty{display:none}
.arch-lab .arch-candy-tape-row{display:grid;gap:3px}
.arch-lab .arch-candy-tape-label{font-size:14px;color:var(--arch-muted);font-variant-numeric:tabular-nums}
.arch-lab .arch-candy-tape-bar{display:flex;height:30px;border:2px solid var(--arch-fig-line);border-radius:5px;overflow:hidden;min-width:0}
.arch-lab .arch-candy-seg{display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;font-size:13px;font-weight:700;color:var(--arch-ink);white-space:nowrap}
.arch-lab .arch-candy-seg+.arch-candy-seg{border-left:1.5px solid var(--arch-fig-line)}
.arch-lab .arch-candy-seg-big{background:var(--arch-candy-big)}
.arch-lab .arch-candy-seg-pair{background:var(--arch-candy-pair)}
.arch-lab .arch-candy-seg-pair-end{background:var(--arch-candy-pair-end)}
.arch-lab .arch-candy-seg-store{background:var(--arch-candy-store)}
.arch-lab .arch-candy-tape-key{margin:0}
.arch-lab .arch-candy-explain-text p{margin:6px 0}
/* the explanation: short numbered lines; a display formula wraps only between its «= …» steps */
.arch-lab .arch-candy-explain-list{margin:0;padding-left:1.6em}
.arch-lab .arch-candy-explain-list li{line-height:1.45;margin:0 0 10px;min-width:0;overflow-wrap:break-word}
.arch-lab .arch-candy-f{display:block;margin:3px 0;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums}
.arch-lab .arch-candy-fc{display:inline-block;white-space:nowrap}
.arch-lab .arch-candy-sw{display:inline-block;width:.95em;height:.95em;border:1.5px solid var(--arch-fig-line);border-radius:3px;vertical-align:-.15em}
.arch-lab .arch-candy-pred-verdict{font-weight:600}
.arch-lab .arch-candy-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion: reduce){.arch-lab .arch-candy-stage{transition:none}}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: lab s26-7-3-remainders (SPb 2025/26, 7.3 «Разложи остатки по
   делениям»). The divisions and the remainder cards are paper-light in both themes (like the exercise books of this
   package), so the ink on them keeps fixed dark colours; the frames show whose card it is (Петя — blue, Вася — orange). */
.arch-lab{--arch-rem-paper:#fffef8;--arch-rem-edge:#c9b98f;--arch-rem-ink:#1e3a8a;--arch-rem-petya:#3b82f6;--arch-rem-vasya:#ea6a2f;
 --arch-rem-petya-soft:#eaf2ff;--arch-rem-vasya-soft:#fff1e6;--arch-rem-shadow:rgba(15,23,42,.28);--arch-rem-bad:#b91c1c;--arch-rem-ok:#047857;--arch-rem-q:#94a3b8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-rem-paper:#eceae0;--arch-rem-edge:#8f8466;
 --arch-rem-petya:#60a5fa;--arch-rem-vasya:#fb923c;--arch-rem-petya-soft:#dfe8f5;--arch-rem-vasya-soft:#f1e3d6;--arch-rem-shadow:rgba(0,0,0,.55);--arch-rem-q:#7c8798}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-rem-paper:#eceae0;--arch-rem-edge:#8f8466;
 --arch-rem-petya:#60a5fa;--arch-rem-vasya:#fb923c;--arch-rem-petya-soft:#dfe8f5;--arch-rem-vasya-soft:#f1e3d6;--arch-rem-shadow:rgba(0,0,0,.55);--arch-rem-q:#7c8798}

.arch-lab .arch-rem-stage{padding:10px;container-type:inline-size}
.arch-lab .arch-rem-board{display:grid;grid-template-columns:52px repeat(4,minmax(0,1fr));
 grid-template-areas:"pw pt pt pt pt" "pw pr pr pr pr" ". gp gp gp gp" "vw vr vr vr vr" "vw vt vt vt vt";gap:6px;max-width:560px;width:100%;margin:0 auto;min-width:0}
.arch-lab .arch-rem-who-petya{grid-area:pw}
.arch-lab .arch-rem-who-vasya{grid-area:vw}
.arch-lab .arch-rem-tray-petya{grid-area:pt}
.arch-lab .arch-rem-row-petya{grid-area:pr}
.arch-lab .arch-rem-gap{grid-area:gp;position:relative;height:52px;min-width:0}
.arch-lab .arch-rem-row-vasya{grid-area:vr}
.arch-lab .arch-rem-tray-vasya{grid-area:vt}
.arch-lab .arch-rem-tray,.arch-lab .arch-rem-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;min-width:0}
.arch-lab .arch-rem-who{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0}
.arch-lab .arch-rem-stage svg.arch-rem-kid{width:46px;height:auto;max-height:none}
.arch-lab .arch-rem-name{font-weight:700;font-size:14px;color:var(--arch-label)}

/* remainder cards in the boxes */
.arch-lab button.arch-rem-card{position:relative;min-width:0;min-height:50px;padding:6px 0 4px;border-radius:10px;background:var(--arch-rem-paper);color:#1f2937;
 border:2px solid var(--arch-rem-petya);box-shadow:0 2px 0 var(--arch-rem-shadow);font-size:22px;font-weight:700;line-height:1.1;overflow:hidden;transition:transform .12s}
.arch-lab button.arch-rem-card::before{content:'';position:absolute;left:0;right:0;top:0;height:6px;background:var(--arch-rem-petya)}
.arch-lab button.arch-rem-card-vasya{border-color:var(--arch-rem-vasya)}
.arch-lab button.arch-rem-card-vasya::before{background:var(--arch-rem-vasya)}
.arch-lab button.arch-rem-card.is-used{background:transparent;color:var(--arch-muted);border-style:dashed;box-shadow:none;font-weight:600}
.arch-lab button.arch-rem-card.is-used::before{opacity:.35}
.arch-lab button.arch-rem-card.is-hand{transform:translateY(-3px);outline:3px solid var(--arch-focus);outline-offset:2px;box-shadow:0 5px 0 var(--arch-rem-shadow)}
.arch-lab button.arch-rem-card.is-used.is-hand{color:var(--arch-ink)}
@media (prefers-reduced-motion: reduce){.arch-lab button.arch-rem-card{transition:none}}

/* the divisions: «N : 33» and the remainder written in ink */
.arch-lab button.arch-rem-cell{min-width:0;min-height:76px;padding:6px 2px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
 background:var(--arch-rem-paper);color:#1f2937;border:1.5px solid var(--arch-rem-edge);line-height:1.15}
.arch-lab button.arch-rem-cell-petya{background:linear-gradient(var(--arch-rem-petya-soft),var(--arch-rem-paper) 55%);border-top:4px solid var(--arch-rem-petya)}
.arch-lab button.arch-rem-cell-vasya{background:linear-gradient(var(--arch-rem-paper) 45%,var(--arch-rem-vasya-soft));border-bottom:4px solid var(--arch-rem-vasya)}
.arch-lab .arch-rem-cell-d{font-size:14px;font-weight:600;white-space:nowrap;color:#334155}
.arch-lab .arch-rem-cell-r{font-size:26px;font-weight:700;color:var(--arch-rem-ink);font-family:"Segoe Print","Comic Sans MS","Chalkboard SE","Bradley Hand",system-ui,sans-serif}
.arch-lab .arch-rem-cell.is-empty .arch-rem-cell-r{color:var(--arch-rem-q);font-family:inherit;font-weight:600}
.arch-lab button.arch-rem-cell.is-target{outline:3px dashed var(--arch-focus);outline-offset:2px}
.arch-lab button.arch-rem-cell.is-bad{border-color:var(--arch-rem-bad);box-shadow:0 0 0 3px var(--arch-rem-bad)}
.arch-lab button.arch-rem-cell.is-ok{border-color:var(--arch-rem-ok);box-shadow:0 0 0 3px var(--arch-rem-ok)}
.arch-lab button.arch-rem-cell.is-bad .arch-rem-cell-r{color:var(--arch-rem-bad)}

/* the strip between the rows: the link of the chosen check */
.arch-lab svg.arch-rem-links{position:absolute;inset:0;width:100%;height:100%;overflow:visible;max-height:none}
.arch-lab .arch-rem-link{stroke-width:3;stroke-linecap:round}
.arch-lab .arch-rem-link-bad{stroke:var(--arch-bad)}
.arch-lab .arch-rem-link-ok{stroke:var(--arch-good)}
.arch-lab .arch-rem-link-open{stroke:var(--arch-muted);stroke-dasharray:6 4}
.arch-lab .arch-rem-sep{stroke:var(--arch-soft-line);stroke-width:1.5;stroke-dasharray:4 5}
.arch-lab svg text.arch-rem-link-t{font-size:15px;font-weight:700;paint-order:stroke;stroke:var(--arch-surface);stroke-width:4px;stroke-linejoin:round}
.arch-lab svg text.arch-rem-link-t-bad{fill:var(--arch-bad)}
.arch-lab svg text.arch-rem-link-t-ok{fill:var(--arch-good)}
.arch-lab svg text.arch-rem-link-t-open{fill:var(--arch-muted)}

.arch-lab .arch-rem-hint{min-height:1.5em}
.arch-lab .arch-rem-result .arch-label{margin-top:10px}
.arch-lab .arch-rem-divs{margin:4px 0;padding-left:1.4em;font-variant-numeric:tabular-nums;display:grid;gap:2px}
.arch-lab .arch-rem-alone{color:var(--arch-label)}
.arch-lab .arch-rem-checks{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.arch-lab .arch-rem-checks button{width:100%;display:flex;gap:8px;align-items:flex-start;text-align:left;border-radius:12px;padding:8px 12px;
 background:var(--arch-surface);color:var(--arch-ink);border:1px solid var(--arch-soft-line)}
.arch-lab .arch-rem-checks button[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line)}
.arch-lab .arch-rem-mark{flex:0 0 1.1em;font-weight:800;text-align:center}
.arch-lab .arch-rem-mark-bad{color:var(--arch-bad)}
.arch-lab .arch-rem-mark-ok{color:var(--arch-good)}
.arch-lab .arch-rem-mark-open{color:var(--arch-muted)}
.arch-lab .arch-rem-detail{margin:4px 4px 2px 1.9em;padding-left:10px;border-left:3px solid var(--arch-soft-line)}
.arch-lab .arch-rem-check-bad .arch-rem-detail{border-left-color:var(--arch-bad)}
.arch-lab .arch-rem-check-ok .arch-rem-detail{border-left-color:var(--arch-good)}
.arch-lab .arch-rem-detail p{margin:4px 0}
.arch-lab .arch-rem-log{color:var(--arch-label)}
.arch-lab .arch-rem-scan-table th[scope=row]{text-align:left;font-weight:500}
.arch-lab .arch-rem-step-nav{align-items:center}
.arch-lab .arch-rem-step-n{font-weight:600;color:var(--arch-label);padding:0 4px}
/* the table of one pair in the reasoning: fits 278 px (a 320 px screen) without scrolling */
.arch-lab .arch-rem-grid-box{margin:6px 0}
.arch-lab .arch-rem-grid-box .arch-help{margin:4px 0 6px}
.arch-lab table.arch-rem-grid{width:100%;max-width:340px;table-layout:fixed}
.arch-lab table.arch-rem-grid td,.arch-lab table.arch-rem-grid th{padding:6px 2px;min-width:0;line-height:1.2}
.arch-lab table.arch-rem-grid th.arch-rem-corner{width:27%;font-size:12px;font-weight:500;color:var(--arch-muted);padding:4px 2px}
.arch-lab table.arch-rem-grid th span{display:block;white-space:nowrap}
.arch-lab table.arch-rem-grid .arch-rem-res{font-size:13px;font-weight:500;color:var(--arch-muted)}
.arch-lab table.arch-rem-grid td.arch-rem-fit{color:var(--arch-good);font-weight:800;background:var(--arch-ok-bg)}
.arch-lab table.arch-rem-grid td.arch-rem-nofit{color:var(--arch-muted)}
.arch-lab .arch-rem-mini{display:grid;grid-template-columns:repeat(4,minmax(0,64px));gap:6px;margin:6px 0}
.arch-lab .arch-rem-mini-cell{display:flex;flex-direction:column;align-items:center;padding:4px 2px;border-radius:10px;background:var(--arch-rem-paper);color:#1f2937;border:1.5px solid var(--arch-rem-edge);border-top:4px solid var(--arch-rem-petya)}
.arch-lab .arch-rem-mini-cell .arch-rem-cell-r{font-size:22px;color:var(--arch-rem-q)}
.arch-lab .arch-rem-mini-cell.is-bad{border-color:var(--arch-rem-bad);box-shadow:0 0 0 2px var(--arch-rem-bad)}
.arch-lab .arch-rem-mini-cell.is-bad .arch-rem-cell-r{color:var(--arch-rem-bad)}
.arch-lab .arch-rem-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:380px){.arch-lab .arch-rem-board{grid-template-columns:44px repeat(4,minmax(0,1fr));gap:5px}.arch-lab .arch-rem-tray,.arch-lab .arch-rem-row{gap:5px}
 .arch-lab .arch-rem-stage svg.arch-rem-kid{width:40px}.arch-lab .arch-rem-cell-d{font-size:13px}.arch-lab .arch-rem-stage{padding:6px}}
/* a narrow board (under 260 px: the 240 px lab of a 320 px screen): beside the rows the kids would leave the cards
   42 px wide, so each kid stands in a line of his own — Петя above his box, Вася below his — the four columns take the
   whole width (cards and divisions about 54 px) and the strip between the rows is taller, so the label of a pair finds
   a free place beside its line (the lab places it, in one or two lines) */
@container (max-width:259.98px){
 .arch-lab .arch-rem-board{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;
  grid-template-areas:"pw pw pw pw" "pt pt pt pt" "pr pr pr pr" "gp gp gp gp" "vr vr vr vr" "vt vt vt vt" "vw vw vw vw"}
 .arch-lab .arch-rem-who{flex-direction:row;justify-content:flex-start;gap:8px;padding-left:2px}
 .arch-lab .arch-rem-stage svg.arch-rem-kid{width:24px}
 .arch-lab .arch-rem-gap{height:64px}
 .arch-lab svg text.arch-rem-link-t{font-size:14px}
}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1: «Столбы на кольцевом шоссе» (SPb 2025/26, grade 7, problem 4).
   The road itself (meadow, asphalt, posts, signs, car) takes its colours from visuals/art/ring-road.css; the marks drawn
   on top of it here (ways of a pair, repeats, the keyboard cursor) are bright inks that read on the asphalt in both
   themes. The controls and the texts follow the site theme through the shared --arch-* variables. */
.arch-lab{--arch-highway-short:#f97316;--arch-highway-long:#60a5fa;--arch-highway-rep0:#f97316;--arch-highway-rep1:#e879f9;--arch-highway-rep2:#facc15;
 --arch-highway-shelf:#f8fafc;--arch-highway-one:#bbf7d0;--arch-highway-many:#fecaca;--arch-highway-one-ink:#14532d;--arch-highway-many-ink:#991b1b}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-highway-shelf:#1f2937;--arch-highway-one:#14532d;--arch-highway-many:#7f1d1d;--arch-highway-one-ink:#bbf7d0;--arch-highway-many-ink:#fecaca}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-highway-shelf:#1f2937;--arch-highway-one:#14532d;--arch-highway-many:#7f1d1d;--arch-highway-one-ink:#bbf7d0;--arch-highway-many-ink:#fecaca}
.arch-lab .arch-highway-stage{box-sizing:border-box;width:100%;max-width:580px;justify-self:center;padding:4px}
.arch-lab .arch-highway-scene{display:block;width:100%;height:auto;max-height:none;touch-action:manipulation;cursor:pointer;border-radius:6px}
.arch-lab .arch-highway-scene:focus{outline:none}
.arch-lab .arch-highway-scene:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-highway-tick{fill:none;stroke:var(--arch-ink);stroke-width:1.1;opacity:.7}
.arch-lab svg text.arch-highway-ticklab{font-size:11px;font-variant-numeric:tabular-nums;fill:var(--arch-ink)}
.arch-lab svg text.arch-highway-zero{font-weight:700}
.arch-lab svg text.arch-highway-len{font-size:18px;font-weight:700;fill:var(--arch-ink)}
.arch-lab svg text.arch-highway-sub{font-size:12px;fill:var(--arch-ink)}
.arch-lab .arch-highway-stop{stroke:#fde68a;stroke-width:2.6;stroke-linecap:round}
.arch-lab .arch-highway-stop-on{stroke:var(--arch-focus);stroke-width:4}
.arch-lab .arch-highway-short{fill:none;stroke:var(--arch-highway-short);stroke-linecap:round;opacity:.95}
.arch-lab .arch-highway-long{fill:none;stroke:var(--arch-highway-long);stroke-dasharray:7 5;stroke-linecap:round}
.arch-lab .arch-highway-rep{fill:none;stroke-linecap:round;opacity:.95}
.arch-lab .arch-highway-rep-0{stroke:var(--arch-highway-rep0)}
.arch-lab .arch-highway-rep-1{stroke:var(--arch-highway-rep1)}
.arch-lab .arch-highway-rep-2{stroke:var(--arch-highway-rep2)}
.arch-lab .arch-highway-badge-short rect{fill:#fff7ed;stroke:var(--arch-highway-short);stroke-width:2}
.arch-lab .arch-highway-badge-long rect{fill:#eff6ff;stroke:var(--arch-highway-long);stroke-width:2}
.arch-lab svg .arch-highway-badge-short text,.arch-lab svg .arch-highway-badge-long text{font-size:12px;font-weight:700;fill:#1f2937;stroke:none;paint-order:normal}
.arch-lab .arch-highway-cursor{fill:none;stroke:var(--arch-focus);stroke-width:3}
.arch-lab .arch-highway-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.arch-lab .arch-highway-field{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.arch-lab .arch-highway-lenbox{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.arch-lab .arch-highway-flabel{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-highway-stepper{display:flex;flex-wrap:nowrap;gap:8px;align-items:center}
.arch-lab input.arch-highway-num{box-sizing:border-box;width:84px;min-height:44px;padding:6px 8px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}
.arch-lab .arch-highway-step{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;font-size:22px;font-weight:600;line-height:1;border-radius:12px}
.arch-lab .arch-highway-msg{margin:0;font-size:14px;color:var(--arch-bad);font-weight:600}
.arch-lab .arch-highway-msg:empty,.arch-lab .arch-highway-note:empty{display:none}
.arch-lab .arch-highway-note{margin:0;font-size:14px;color:var(--arch-label)}
.arch-lab .arch-highway-note.arch-highway-bad{color:var(--arch-bad);font-weight:600}
.arch-lab .arch-highway-question{margin:0;color:var(--arch-ink)}
.arch-lab .arch-highway-change{margin:0;color:var(--arch-label);font-weight:600}
.arch-lab .arch-highway-pole,.arch-lab .arch-highway-pair{display:grid;gap:8px;border:1px solid var(--arch-soft-line);border-radius:14px;padding:10px 12px;background:var(--arch-surface);min-width:0}
.arch-lab .arch-highway-pole[hidden],.arch-lab .arch-highway-pair[hidden]{display:none}
.arch-lab .arch-highway-pole-title,.arch-lab .arch-highway-pair p{margin:0;color:var(--arch-ink)}
.arch-lab .arch-highway-pole-title{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-highway-repeats button{text-align:left}
.arch-lab .arch-highway-rep-btn[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-highway-ways-title{margin:10px 0 4px}
.arch-lab .arch-highway-ways{display:flex;flex-wrap:wrap;gap:6px;font-variant-numeric:tabular-nums;min-width:0}
.arch-lab .arch-highway-ways-scroll{max-height:220px;overflow-y:auto;padding:4px;border:1px solid var(--arch-soft-line);border-radius:10px}
.arch-lab .arch-highway-way{display:inline-block;padding:2px 9px;border-radius:999px;border:1px solid var(--arch-soft-line);color:var(--arch-ink);font-size:14px;line-height:1.5}
.arch-lab .arch-highway-way-bad{border-color:var(--arch-bad);color:var(--arch-bad);background:var(--arch-bad-bg);font-weight:600}
.arch-lab .arch-highway-records{margin:0;padding-left:20px;display:grid;gap:4px;color:var(--arch-ink);overflow-wrap:anywhere}
.arch-lab .arch-highway-explain p{margin:6px 0}
.arch-lab .arch-highway-explain p.arch-highway-xh{margin:14px 0 2px}
.arch-lab .arch-highway-explain p.arch-highway-xh:first-child{margin-top:0}
.arch-lab .arch-highway-pred{border-left:4px solid var(--arch-focus);padding-left:10px}
.arch-lab .arch-highway-shelves{display:grid;grid-template-columns:repeat(auto-fill,minmax(30px,1fr));gap:4px;margin:6px 0;font-variant-numeric:tabular-nums}
.arch-lab .arch-highway-shelf{display:grid;justify-items:center;padding:2px 0;border:1px solid var(--arch-soft-line);border-radius:6px;background:var(--arch-highway-shelf);color:var(--arch-muted);line-height:1.2}
.arch-lab .arch-highway-shelf-d{font-size:11px}
.arch-lab .arch-highway-shelf-c{font-size:13px;font-weight:700}
.arch-lab .arch-highway-shelf-one{background:var(--arch-highway-one);color:var(--arch-highway-one-ink)}
.arch-lab .arch-highway-shelf-many{background:var(--arch-highway-many);color:var(--arch-highway-many-ink);border-color:var(--arch-bad)}
.arch-lab .arch-highway-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
@media (max-width:480px){.arch-lab .arch-highway-row .arch-secondary{padding:8px 12px}}
/* the colouring next to its text: white and black sign tokens with the clockwise way from the first post, the odd ways */
.arch-lab{--arch-highway-token-line:#1f2937;--arch-highway-token-black-line:#111827}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab{--arch-highway-token-line:#cbd5e1;--arch-highway-token-black-line:#9ca3af}}
:root[data-design="v2"][data-theme="dark"] .arch-lab{--arch-highway-token-line:#cbd5e1;--arch-highway-token-black-line:#9ca3af}
.arch-lab .arch-highway-colours{display:grid;gap:4px;margin:6px 0;padding:8px 10px;border:1px solid var(--arch-soft-line);border-radius:10px}
.arch-lab .arch-highway-explain p.arch-highway-colhead{margin:0;font-size:14px;color:var(--arch-label);font-weight:600}
.arch-lab .arch-highway-explain p.arch-highway-colrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0}
.arch-lab .arch-highway-coltitle{font-size:14px;color:var(--arch-muted);min-width:0}
.arch-lab .arch-highway-chip{display:inline-flex;align-items:center;gap:5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.arch-lab .arch-highway-none{color:var(--arch-muted)}
.arch-lab .arch-highway-token{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:1.65em;height:1.65em;padding:0 3px;border-radius:5px;font-weight:700;font-size:14px;line-height:1}
.arch-lab .arch-highway-token-white{background:#ffffff;color:#1f2937;border:1.5px solid var(--arch-highway-token-line)}
.arch-lab .arch-highway-token-black{background:#111827;color:#ffffff;border:1.5px solid var(--arch-highway-token-black-line)}
.arch-lab .arch-highway-oddways .arch-highway-way{display:inline-flex;align-items:center;gap:3px}
.arch-lab .arch-highway-solve{margin-top:6px}

/* SPb 2025/26, grade 8, problem 2 — «Три числа на доске» (labs/s26-8-2-triple.mjs). The board is a picture
   (visuals/art/school-board.mjs, chalk colours of art/chalk.css, fixed in both themes); the three number colours of the
   fields and of the number line, the editors, the pair list and the reasoning steps are defined here for the light
   theme and both dark branches; everything else goes through --arch-* tokens. */
.arch-lab .arch-s282{--arch-s282-c0:#1d4ed8;--arch-s282-c1:#c2410c;--arch-s282-c2:#047857;--arch-s282-on:#ffffff}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s282{--arch-s282-c0:#93c5fd;--arch-s282-c1:#fdba74;--arch-s282-c2:#6ee7b7;--arch-s282-on:#0f172a}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s282{--arch-s282-c0:#93c5fd;--arch-s282-c1:#fdba74;--arch-s282-c2:#6ee7b7;--arch-s282-on:#0f172a}
.arch-lab .arch-s282-variant{border-top:0;padding-top:0}
.arch-lab .arch-s282-variant-note{color:var(--arch-ink);font-size:15px}
/* the guess */
.arch-lab .arch-s282-guess-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.arch-lab input.arch-s282-guess-input{box-sizing:border-box;width:150px;flex:0 1 150px;min-height:48px;text-align:center;font-variant-numeric:tabular-nums}
.arch-lab .arch-s282-guess-msg:empty{display:none}
.arch-lab .arch-s282-guess-cmp{font-weight:600;color:var(--arch-label)}
/* the board */
.arch-lab .arch-s282-stage{padding:2px;border:0;background:none}
.arch-lab svg tspan.arch-s282-t-white{fill:var(--spb-chalk-white,#f8fafc)}
.arch-lab svg tspan.arch-s282-t-yellow{fill:var(--spb-chalk-yellow,#fde047)}
.arch-lab svg tspan.arch-s282-t-blue{fill:var(--spb-chalk-blue,#bae6fd)}
.arch-lab svg tspan.arch-s282-t-pink{fill:var(--spb-chalk-pink,#fbcfe8)}
.arch-lab svg text.arch-s282-num{font-variant-numeric:tabular-nums;letter-spacing:.5px}
.arch-lab svg text.arch-s282-val{font-variant-numeric:tabular-nums}
/* the three number fields */
.arch-lab .arch-s282-eds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0}
@media (max-width:700px){.arch-lab .arch-s282-eds{grid-template-columns:minmax(0,1fr)}}
.arch-lab .arch-s282-ed{display:grid;gap:4px;min-width:0;padding:8px 10px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s282-ed-name{display:flex;align-items:center;gap:8px}
.arch-lab .arch-s282-ed-tag{display:inline-flex;justify-content:center;min-width:2.4em;padding:1px 8px;border-radius:999px;font-size:14px;font-weight:700;color:var(--arch-s282-on);background:var(--arch-s282-c0)}
.arch-lab .arch-s282-ed[data-i="1"] .arch-s282-ed-tag{background:var(--arch-s282-c1)}
.arch-lab .arch-s282-ed[data-i="2"] .arch-s282-ed-tag{background:var(--arch-s282-c2)}
.arch-lab .arch-s282-ed-row{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;gap:6px;align-items:center;min-width:0}
.arch-lab .arch-s282-step{min-width:48px;min-height:48px;padding:0;font-size:18px;font-weight:600;border-radius:12px;font-variant-numeric:tabular-nums}
/* border-box: the field takes exactly its grid cell between «−1» and «+1» and is as tall as they are (48 px) */
.arch-lab input.arch-s282-num-input{box-sizing:border-box;width:100%;height:48px;min-height:48px;padding:4px 6px;text-align:center;font-size:20px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s282-ed-msg{margin:0;font-size:14px;color:var(--arch-bad)}
.arch-lab .arch-s282-ed-msg:empty{display:none}
.arch-lab .arch-s282-note{color:var(--arch-ink)}
/* the pairs under the board */
.arch-lab .arch-s282-pairs{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:8px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s282-pair{display:flex;gap:8px;align-items:flex-start}
.arch-lab .arch-s282-pair-name{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s282-mark{flex:0 0 auto;display:inline-flex;justify-content:center;width:1.6em;font-weight:700}
.arch-lab .arch-s282-mark-ok{color:var(--arch-good)}
.arch-lab .arch-s282-mark-bad{color:var(--arch-bad)}
.arch-lab .arch-s282-mark-ask{color:var(--arch-accent)}
.arch-lab .arch-s282-found-list{margin:4px 0;padding-left:1.2em;display:grid;gap:4px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s282-found-list strong{color:var(--arch-good)}
/* the reasoning */
.arch-lab .arch-s282-explain{display:grid;gap:8px}
.arch-lab .arch-s282-explain-body{display:grid;gap:8px;min-width:0}
/* what the shift did, right under its buttons (the board is far above) */
.arch-lab .arch-s282-shift-out{margin:0;padding:8px 10px;border-left:4px solid var(--arch-good);border-radius:4px;background:var(--arch-ok-bg);color:var(--arch-ink);font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab .arch-s282-shift-out.arch-s282-shift-no{border-left-color:var(--arch-bad);background:var(--arch-bad-bg)}
.arch-lab .arch-s282-formula{margin:2px 0;font-size:17px;font-weight:600;color:var(--arch-ink);font-variant-numeric:tabular-nums;display:flex;flex-wrap:wrap;justify-content:center;gap:0 .4em}
.arch-lab .arch-s282-line-stage{padding:4px}
.arch-lab .arch-s282-axis{stroke:var(--arch-fig-line);stroke-width:1.6}
.arch-lab .arch-s282-axis-head{fill:var(--arch-fig-line);stroke:none}
.arch-lab .arch-s282-tick{stroke:var(--arch-fig-line);stroke-width:1.2}
.arch-lab .arch-s282-stem{fill:none;stroke:var(--arch-muted);stroke-width:1;stroke-dasharray:2 3}
.arch-lab .arch-s282-pt{stroke:var(--arch-surface);stroke-width:1.5}
.arch-lab .arch-s282-pt.arch-s282-c0{fill:var(--arch-s282-c0)}
.arch-lab .arch-s282-pt.arch-s282-c1{fill:var(--arch-s282-c1)}
.arch-lab .arch-s282-pt.arch-s282-c2{fill:var(--arch-s282-c2)}
.arch-lab .phx-svg text.arch-s282-c0{fill:var(--arch-s282-c0);font-weight:600}
.arch-lab .phx-svg text.arch-s282-c1{fill:var(--arch-s282-c1);font-weight:600}
.arch-lab .phx-svg text.arch-s282-c2{fill:var(--arch-s282-c2);font-weight:600}
.arch-lab .arch-s282-m{fill:none;stroke-width:2}
.arch-lab .arch-s282-m.arch-s282-m-ok,.arch-lab .arch-s282-m-dot.arch-s282-m-ok{stroke:var(--arch-good);fill:var(--arch-good)}
.arch-lab .arch-s282-m.arch-s282-m-bad,.arch-lab .arch-s282-m-dot.arch-s282-m-bad{stroke:var(--arch-bad);fill:var(--arch-bad)}
.arch-lab .arch-s282-m.arch-s282-m-ask,.arch-lab .arch-s282-m-dot.arch-s282-m-ask{stroke:var(--arch-label);fill:var(--arch-label)}
.arch-lab .arch-s282-m{fill:none}
.arch-lab .phx-svg text.arch-s282-m-t{font-weight:600}
.arch-lab .phx-svg text.arch-s282-m-t.arch-s282-m-ok{fill:var(--arch-good)}
.arch-lab .phx-svg text.arch-s282-m-t.arch-s282-m-bad{fill:var(--arch-bad)}
.arch-lab .phx-svg text.arch-s282-m-t.arch-s282-m-ask{fill:var(--arch-label)}
.arch-lab .phx-svg text.arch-s282-case-title{font-weight:600;fill:var(--arch-label)}
/* the two cases: arcs from the second number to the first and to the third */
.arch-lab .arch-s282-arc{fill:none;stroke-width:2.2;stroke-linecap:round}
.arch-lab .arch-s282-arc.arch-s282-c0{stroke:var(--arch-s282-c0)}
.arch-lab .arch-s282-arc.arch-s282-c2{stroke:var(--arch-s282-c2)}
.arch-lab .phx-svg text.arch-s282-arc-t{font-weight:700}
.arch-lab .arch-s282-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* the pupil next to the board: the board is a fixed picture, so its outline stays dark in both themes */
.arch-lab .phx-svg .arch-s282-kid :is(.p25-o,.p25-o-thin){stroke:#1f2937}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2025/26, 8 класс, задача 3 «Равные площади и прямой угол».
   Squared paper, the two triangles of equal area (blue and orange), the compared lengths (MC and CD — green, AM —
   violet), the broken line A → P → M (orange, dashed), the circles for P, the equal right triangles of the example (green).
   Light and both dark branches. */
.arch-lab .arch-s2683{--s2683-paper:#fffdf6;--s2683-grid:#d6e2f0;--s2683-tri-a:rgba(59,130,246,.18);--s2683-tri-c:rgba(249,115,22,.18);
 --s2683-para:rgba(16,185,129,.26);--s2683-sum:#047857;--s2683-target:#7c3aed;--s2683-pline:#c2410c;--s2683-area:#334155;--s2683-sel:#d97706;--s2683-handle:#1d4ed8}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2683{--s2683-paper:#0f1a2c;--s2683-grid:#22324b;
 --s2683-tri-a:rgba(96,165,250,.24);--s2683-tri-c:rgba(251,146,60,.24);--s2683-para:rgba(52,211,153,.28);--s2683-sum:#6ee7b7;--s2683-target:#c4b5fd;--s2683-pline:#fdba74;--s2683-area:#cbd5e1;--s2683-sel:#fbbf24;--s2683-handle:#93c5fd}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2683{--s2683-paper:#0f1a2c;--s2683-grid:#22324b;
 --s2683-tri-a:rgba(96,165,250,.24);--s2683-tri-c:rgba(251,146,60,.24);--s2683-para:rgba(52,211,153,.28);--s2683-sum:#6ee7b7;--s2683-target:#c4b5fd;--s2683-pline:#fdba74;--s2683-area:#cbd5e1;--s2683-sel:#fbbf24;--s2683-handle:#93c5fd}
.arch-lab .arch-s2683-stage{padding:8px}
.arch-lab .arch-s2683-svg{display:block;width:100%;max-width:100%;height:auto;margin:0 auto;outline-offset:3px}
/* one frame: under the drawing — the comparison, the checks of P, the arrows and the actions */
.arch-lab .arch-s2683-frame{display:grid;gap:10px}
.arch-lab .arch-s2683-frame>*{margin:0}
.arch-lab .arch-s2683-quick dt{font-size:15px}
.arch-lab .arch-s2683-quick dd{font-size:17px}
.arch-lab .arch-s2683-pquick p{margin:0}
.arch-lab .arch-s2683-pquick{display:grid;gap:4px}
.arch-lab .arch-s2683-pquick[hidden]{display:none}
.arch-lab .arch-s2683-paper{fill:var(--s2683-paper);stroke:var(--arch-soft-line)}
.arch-lab .arch-s2683-grid{stroke:var(--s2683-grid);stroke-width:1}
.arch-lab .arch-s2683-tri-a{fill:var(--s2683-tri-a);stroke:none}
.arch-lab .arch-s2683-tri-c{fill:var(--s2683-tri-c);stroke:none}
.arch-lab .arch-s2683-para{fill:var(--s2683-para);stroke:none}
.arch-lab .arch-s2683-edge{stroke:var(--arch-fig-line);stroke-width:2.4;stroke-linecap:round}
.arch-lab .arch-s2683-diag{stroke:var(--arch-fig-line);stroke-width:1.4;stroke-dasharray:6 4}
.arch-lab .arch-s2683-mark{fill:none;stroke:var(--arch-fig-line);stroke-width:1.4}
.arch-lab .arch-s2683-tick{stroke:var(--arch-fig-line);stroke-width:1.8}
.arch-lab .arch-s2683-sum{stroke:var(--s2683-sum);stroke-width:5;stroke-linecap:round;opacity:.85}
.arch-lab .arch-s2683-target{stroke:var(--s2683-target);stroke-width:3;stroke-linecap:round}
.arch-lab .arch-s2683-pline{stroke:var(--s2683-pline);stroke-width:3;stroke-dasharray:8 5;stroke-linecap:round}
.arch-lab .arch-s2683-help{stroke:var(--s2683-sum);stroke-width:2;stroke-dasharray:5 4}
.arch-lab .arch-s2683-circle{fill:none;stroke:var(--s2683-sum);stroke-width:1.6;stroke-dasharray:6 5}
.arch-lab .arch-s2683-circle-m{stroke-dasharray:2 4}
.arch-lab .arch-s2683-dot{fill:var(--arch-ink);stroke:var(--s2683-paper);stroke-width:1.5}
.arch-lab .arch-s2683-dot.arch-s2683-handle{fill:var(--s2683-handle)}
.arch-lab .arch-s2683-dot-p{fill:var(--s2683-pline)}
.arch-lab .arch-s2683-dot-p.arch-s2683-handle{fill:var(--s2683-pline)}
.arch-lab .arch-s2683-sel{fill:none;stroke:var(--s2683-sel);stroke-width:2.5}
.arch-lab .arch-s2683-hit{fill:transparent;cursor:grab;touch-action:none}
.arch-lab .arch-s2683-svg text.arch-s2683-label{fill:var(--arch-ink);font-weight:700;stroke:var(--s2683-paper);stroke-width:4px;paint-order:stroke;stroke-linejoin:round}
.arch-lab .arch-s2683-svg text.arch-s2683-label-p{fill:var(--s2683-pline)}
.arch-lab .arch-s2683-svg text.arch-s2683-area{fill:var(--s2683-area);font-weight:600;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2683-coords{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2683-keyicon{flex:0 0 auto}
.arch-lab .arch-s2683-pick button{min-width:52px}
.arch-lab .arch-s2683-arrows{display:flex;flex-wrap:wrap;gap:8px}
.arch-lab .arch-s2683-arrow{min-width:52px;min-height:48px;font-size:20px;line-height:1}
.arch-lab .arch-s2683-msg:empty{display:none}
.arch-lab .arch-s2683-readouts dd{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2683-checks{margin:0;padding-left:1.2em;display:grid;gap:4px}
.arch-lab .arch-s2683-pbox p{margin:0}
.arch-lab .arch-s2683-rule-list{display:flex;flex-wrap:wrap;gap:8px}
.arch-lab .arch-s2683-rule{text-align:left}
.arch-lab .arch-s2683-rule[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line);font-weight:600}
.arch-lab .arch-s2683 input{box-sizing:border-box}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2025/26, 8 класс, задача 4 «Особые числа».
   Tiles of the set of consecutive numbers: the number m (gold), numbers sharing a prime with m (one colour per prime
   divisor of m, with a bar under the number), numbers coprime with m (plain). Light and both dark branches. */
.arch-lab .arch-s2684-svg{--s2684-free:#ffffff;--s2684-free-line:#c7d2e0;--s2684-m:#fde68a;--s2684-m-line:#b45309;
 --s2684-c0:#fecaca;--s2684-c0-line:#b91c1c;--s2684-c1:#fed7aa;--s2684-c1-line:#c2410c;--s2684-c2:#e9d5ff;--s2684-c2-line:#7c3aed;--s2684-c3:#ccfbf1;--s2684-c3-line:#0f766e}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2684-svg,:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2684-key{--s2684-free:#1e293b;--s2684-free-line:#475569;--s2684-m:#713f12;--s2684-m-line:#fbbf24;
 --s2684-c0:#7f1d1d;--s2684-c0-line:#fca5a5;--s2684-c1:#7c2d12;--s2684-c1-line:#fdba74;--s2684-c2:#4c1d95;--s2684-c2-line:#c4b5fd;--s2684-c3:#134e4a;--s2684-c3-line:#5eead4}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2684-svg,:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2684-key{--s2684-free:#1e293b;--s2684-free-line:#475569;--s2684-m:#713f12;--s2684-m-line:#fbbf24;
 --s2684-c0:#7f1d1d;--s2684-c0-line:#fca5a5;--s2684-c1:#7c2d12;--s2684-c1-line:#fdba74;--s2684-c2:#4c1d95;--s2684-c2-line:#c4b5fd;--s2684-c3:#134e4a;--s2684-c3-line:#5eead4}
.arch-lab .arch-s2684-key{--s2684-free:#ffffff;--s2684-free-line:#c7d2e0;--s2684-m:#fde68a;--s2684-m-line:#b45309;--s2684-c0:#fecaca;--s2684-c0-line:#b91c1c;--s2684-c1:#fed7aa;--s2684-c1-line:#c2410c;--s2684-c2:#e9d5ff;--s2684-c2-line:#7c3aed;--s2684-c3:#ccfbf1;--s2684-c3-line:#0f766e;flex:0 0 auto}
.arch-lab .arch-s2684-stage{padding:8px}
.arch-lab .arch-s2684-svg{display:block;width:100%;height:auto}
.arch-lab .arch-s2684-tile{fill:var(--s2684-free);stroke:var(--s2684-free-line);stroke-width:1}
.arch-lab .arch-s2684-m{fill:var(--s2684-m);stroke:var(--s2684-m-line);stroke-width:2.5}
.arch-lab .arch-s2684-c0{fill:var(--s2684-c0);stroke:var(--s2684-c0-line);stroke-width:1.5}
.arch-lab .arch-s2684-c1{fill:var(--s2684-c1);stroke:var(--s2684-c1-line);stroke-width:1.5}
.arch-lab .arch-s2684-c2{fill:var(--s2684-c2);stroke:var(--s2684-c2-line);stroke-width:1.5}
.arch-lab .arch-s2684-c3{fill:var(--s2684-c3);stroke:var(--s2684-c3-line);stroke-width:1.5}
.arch-lab .arch-s2684-b0{fill:var(--s2684-c0-line)}
.arch-lab .arch-s2684-b1{fill:var(--s2684-c1-line)}
.arch-lab .arch-s2684-b2{fill:var(--s2684-c2-line)}
.arch-lab .arch-s2684-b3{fill:var(--s2684-c3-line)}
.arch-lab .arch-s2684-svg text.arch-s2684-num{fill:var(--arch-ink);font-variant-numeric:tabular-nums;stroke:none}
.arch-lab .arch-s2684-svg text.arch-s2684-num-m{font-weight:800}
.arch-lab .arch-s2684-svg text.arch-s2684-num-c{font-weight:600}
.arch-lab .arch-s2684-move{gap:8px}
.arch-lab .arch-s2684-move .arch-row button{min-width:64px}
.arch-lab input.arch-s2684-start{width:7.5em;font-variant-numeric:tabular-nums;text-align:right}
.arch-lab .arch-s2684-window-line{margin:0;font-variant-numeric:tabular-nums;color:var(--arch-ink)}
.arch-lab .arch-s2684-legend{font-variant-numeric:tabular-nums}
.arch-lab .arch-s2684-pair{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--arch-soft-line);border-radius:14px;background:var(--arch-surface)}
.arch-lab .arch-s2684-pair p{margin:0}
.arch-lab .arch-s2684-slots{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:8px}
.arch-lab .arch-s2684-slot{position:relative;display:grid;gap:2px;padding:8px 56px 8px 12px;min-height:44px;border:2px solid var(--arch-good);border-radius:12px;font-variant-numeric:tabular-nums;color:var(--arch-ink)}
.arch-lab .arch-s2684-slot.arch-s2684-empty{border:2px dashed var(--arch-field-line);padding-right:12px}
.arch-lab .arch-s2684-slot-title{font-size:13px;color:var(--arch-muted)}
.arch-lab .arch-s2684-slot-num{font-size:18px;font-weight:700}
.arch-lab .arch-s2684-slot-proof{font-size:13px;color:var(--arch-muted)}
.arch-lab .arch-s2684-x{position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:0;width:44px;height:44px}
.arch-lab .arch-s2684-gcd{font-size:18px;font-variant-numeric:tabular-nums;color:var(--arch-ink)}
.arch-lab .arch-s2684-best{font-weight:600;color:var(--arch-label)}
.arch-lab .arch-s2684-pair-msg:empty{display:none}
.arch-lab .arch-s2684-scan[hidden],.arch-lab .arch-s2684-example[hidden]{display:none}
.arch-lab .arch-s2684-example{border:2px solid var(--arch-good)}
.arch-lab .arch-s2684 input{box-sizing:border-box}

/* Popov Academy — content-factory/spb-olympiad-2022-2026-v1 — SPb 2025/26, 8 класс, задача 5 «Прореживание строки».
   The necklace (beads from visuals/art/beads.css), the rings of the two thinned strings (blue solid and orange dashed),
   the selected bead, the digit pad and the two strings compared digit by digit. Light and both dark branches. */
.arch-lab .arch-s2685{--s2685-q:#1d4ed8;--s2685-n:#c2410c;--s2685-ok:#dcfce7;--s2685-bad:#fee2e2;--s2685-bad-line:#b91c1c}
@media (prefers-color-scheme: dark){:root[data-design="v2"]:not([data-theme="light"]) .arch-lab .arch-s2685{--s2685-q:#93c5fd;--s2685-n:#fdba74;--s2685-ok:#14341f;--s2685-bad:#431818;--s2685-bad-line:#fca5a5}}
:root[data-design="v2"][data-theme="dark"] .arch-lab .arch-s2685{--s2685-q:#93c5fd;--s2685-n:#fdba74;--s2685-ok:#14341f;--s2685-bad:#431818;--s2685-bad-line:#fca5a5}
.arch-lab .arch-s2685 input{box-sizing:border-box}
.arch-lab .arch-s2685-stage{padding:8px}
.arch-lab .arch-s2685-svg{display:block;width:100%;height:auto;touch-action:manipulation;cursor:pointer}
.arch-lab .arch-s2685-svg:focus-visible{outline:3px solid var(--arch-focus);outline-offset:2px}
.arch-lab .arch-s2685-ring-q{fill:none;stroke:var(--s2685-q);stroke-width:2.6}
.arch-lab .arch-s2685-ring-n{fill:none;stroke:var(--s2685-n);stroke-width:2.6;stroke-dasharray:4 3}
.arch-lab .arch-s2685-cursor{fill:none;stroke:var(--arch-focus);stroke-width:2.6}
.arch-lab .arch-s2685-svg text.arch-s2685-rowlabel,.arch-lab .arch-s2685-rows text.arch-s2685-colnum{fill:var(--arch-muted);font-size:11px;stroke:none;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2685-rows text.arch-s2685-rowname{fill:var(--arch-ink);font-size:16px;font-weight:700;stroke:none}
.arch-lab .arch-s2685-rows{display:block;width:100%;height:auto}
.arch-lab .arch-s2685-rows-box{padding:8px}
.arch-lab .arch-s2685-rows-box[hidden],.arch-lab .arch-s2685-check[hidden]{display:none}
.arch-lab .arch-s2685-col-ok{fill:var(--s2685-ok);stroke:none}
.arch-lab .arch-s2685-col-bad{fill:var(--s2685-bad);stroke:var(--s2685-bad-line);stroke-width:1.5}
.arch-lab .arch-s2685-keyicon{flex:0 0 auto}
.arch-lab .arch-s2685-info{margin:0;font-variant-numeric:tabular-nums;color:var(--arch-ink)}
.arch-lab .arch-s2685-pad{display:grid;grid-template-columns:repeat(10,minmax(44px,1fr));gap:6px;max-width:620px}
@media (max-width:620px){.arch-lab .arch-s2685-pad{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}}
.arch-lab .arch-s2685-key{padding:0;font-size:18px;font-weight:700;border-radius:12px;font-variant-numeric:tabular-nums}
.arch-lab .arch-s2685-key[aria-pressed=true]{background:var(--arch-pressed-bg);border-color:var(--arch-pressed-line)}
.arch-lab .arch-s2685-note:empty{display:none}
.arch-lab .arch-s2685-locked{opacity:.55}
.arch-lab .arch-s2685-beadfield{max-width:620px}
