:root {
  --font-sans: "Avenir Next", "Segoe UI", system-ui, sans-serif;
  --ink: #15191f;
  --muted: #5d6875;
  --canvas: #d9dde2;
  --surface: #fff;
  --chrome: #171b20;
  --primary: #155eef;
  --primary-hover: #0b46bd;
  --danger: #b42318;
  --focus: #ffbf47;
  --border: #aab2bc;
  --radius: 0.65rem;
  --shadow: 0 0.2rem 0.55rem rgb(20 28 38 / 18%);
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
}

* { box-sizing: border-box; }
html { background: var(--canvas); }
body { min-height: 100vh; margin: 0; color: var(--ink); background: var(--canvas); font-family: var(--font-sans); line-height: 1.5; }
img, svg, video, iframe { max-width: 100%; }
h1 { font-size: clamp(1.65rem, 1.25rem + 1.8vw, 2.6rem); line-height: 1.12; overflow-wrap: anywhere; }
h2 { font-size: clamp(1.25rem, 1.05rem + 0.8vw, 1.75rem); line-height: 1.2; overflow-wrap: anywhere; }
h3, p, li, dt, dd, label { overflow-wrap: anywhere; }
pre { max-width: 100%; padding: var(--space-3); overflow: auto; background: #111820; color: #eef6ff; border-radius: 0.3rem; }
code { overflow-wrap: anywhere; }
a { color: var(--primary-hover); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 0.2rem solid var(--focus); outline-offset: 0.15rem; }

.skip-link { position: fixed; z-index: 100; top: var(--space-2); left: var(--space-2); width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; overflow-wrap: anywhere; clip: rect(0, 0, 0, 0); clip-path: inset(50%); color: var(--ink); background: var(--focus); white-space: normal; }
.skip-link:focus, .skip-link:focus-visible { width: auto; height: auto; padding: var(--space-2) var(--space-3); margin: 0; overflow: visible; clip: auto; clip-path: none; white-space: nowrap; }
.site-header { color: #f5f7fa; background: linear-gradient(180deg, #2a3038, var(--chrome)); border-bottom: 1px solid #050607; box-shadow: var(--shadow); }
.site-header__inner { display: flex; max-width: none; min-height: 3.5rem; margin-inline: auto; align-items: center; gap: var(--space-4); padding-inline: clamp(1rem, 2vw, 2.5rem); }
.site-brand { color: #fff; font-weight: 750; letter-spacing: 0.04em; text-decoration: none; text-transform: uppercase; }
.nav-drawer { margin-left: auto; }
.nav-drawer > summary { display: none; min-height: 2.75rem; padding: 0.65rem 0.9rem; color: #fff; border: 1px solid rgb(255 255 255 / 35%); border-radius: 0.3rem; cursor: pointer; }
.top-nav { display: flex; margin-left: auto; gap: var(--space-1); }
.top-nav form { margin: 0; }
.top-nav button { background: transparent; border: 0; font: inherit; cursor: pointer; }
.top-nav__link { min-height: 2.75rem; padding: 0.7rem 0.9rem; color: #e7ebf0; border-radius: 0.3rem; text-decoration: none; }
.top-nav__link--icon { display: inline-grid; min-width: 2.75rem; padding: 0.4rem; place-items: center; }
.top-nav__link--icon img { display: block; width: 1.75rem; height: 1.75rem; object-fit: contain; }
.top-nav__icon-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.button__icon { width: 1.25rem; height: 1.25rem; margin-right: var(--space-2); object-fit: contain; }
.top-nav__link:hover, .top-nav__link[aria-current="page"] { color: #fff; background: rgb(255 255 255 / 14%); }
.nav-more { position: relative; }
.nav-more > summary { list-style: none; cursor: pointer; }
.nav-more > summary::-webkit-details-marker { display: none; }
.nav-more__menu { position: absolute; z-index: 20; top: calc(100% + 0.25rem); right: 0; display: grid; min-width: 13rem; padding: var(--space-2); background: var(--chrome); border: 1px solid #4b5561; border-radius: var(--radius); box-shadow: var(--shadow); }
.nav-more__menu a { padding: 0.6rem 0.75rem; color: #e7ebf0; border-radius: 0.25rem; text-decoration: none; }
.nav-more__menu a:hover { color: #fff; background: rgb(255 255 255 / 14%); }
.page-shell { width: calc(100% - clamp(1rem, 2vw, 3rem)); max-width: none; margin: var(--space-6) auto var(--space-8); }
.page-heading { display: flex; margin-bottom: var(--space-4); align-items: end; justify-content: space-between; gap: var(--space-4); }
.page-heading h1, .page-heading h2, .page-heading p { margin: 0; }
.page-heading p, .form-help { color: var(--muted); }
.stack { display: grid; gap: var(--space-4); }
.cluster { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-3); }
.assessment-connectivity { display: inline-flex; align-items: center; gap: 0.35rem; color: #176b3a; font-weight: 650; }
.assessment-connectivity--pending { color: #8a5a00; }
.assessment-connectivity--offline { color: var(--danger); }
.assessment-connectivity__help { font-size: 0.95rem; white-space: nowrap; }
.assessment-device-pseudonym { color: var(--muted); font-size: 0.85rem; white-space: nowrap; }
.browser-diagnostics tr[data-state="ok"] [data-field="state"] { color: #176b3a; font-weight: 700; }
.browser-diagnostics tr[data-state="warn"] [data-field="state"] { color: #8a5a00; font-weight: 700; }
.browser-diagnostics tr[data-state="fail"] [data-field="state"] { color: var(--danger); font-weight: 700; }
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: var(--space-4); }
.metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: var(--space-3); }
.metric-grid--compact { grid-template-columns: repeat(auto-fit, minmax(9rem, 12rem)); }
.metric { display: grid; min-height: 7rem; padding: var(--space-4); align-content: center; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.metric strong { font-size: clamp(1.8rem, 5vw, 2.7rem); line-height: 1; }
.metric span { color: var(--muted); }
.panel { padding: var(--space-4); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.narrow { max-width: 42rem; margin-inline: auto; }
.eyebrow { margin: 0; color: var(--muted); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.notice { padding: var(--space-3); background: #fff0c2; border-left: 0.3rem solid #b7791f; }
.grid { display: grid; gap: var(--space-4); }
.grid--two { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.card { padding: var(--space-4); overflow: hidden; background: linear-gradient(180deg, var(--surface), #f2f4f6); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.card__header { display: flex; margin: calc(var(--space-4) * -1) calc(var(--space-4) * -1) var(--space-4); padding: var(--space-3) var(--space-4); align-items: center; justify-content: space-between; gap: var(--space-3); background: #e4e8ed; border-bottom: 1px solid var(--border); }
.card__header h2 { margin: 0; font-size: 1.05rem; }
.button { display: inline-flex; min-height: 2.75rem; padding: 0.6rem 1rem; align-items: center; justify-content: center; color: #fff; background: var(--primary); border: 1px solid var(--primary-hover); border-radius: 0.3rem; font: inherit; font-weight: 700; line-height: 1.25; text-align: center; text-decoration: none; cursor: pointer; transition: background-color 120ms ease, border-color 120ms ease, transform 120ms ease; }
.button:hover { background: var(--primary-hover); }
.button:active { transform: translateY(1px); }
.button:disabled, .button[aria-disabled="true"] { cursor: wait; opacity: 0.7; }
.button--small { min-height: 2.5rem; padding: 0.45rem 0.75rem; }
.button--secondary { color: var(--ink); background: var(--surface); border-color: var(--border); }
.button--danger { background: var(--danger); border-color: #7a271a; }

.workspace-tutorial { width: min(100%, 55rem); margin-inline: auto; }.workspace-tutorial__back { display: inline-block; margin-bottom: var(--space-3); font-weight: 700; }.workspace-tutorial__hero { display: grid; justify-items: center; padding: clamp(1.5rem, 5vw, 3.5rem); text-align: center; }.workspace-tutorial__hero h1 { max-width: 18ch; margin: var(--space-3) 0; }.workspace-tutorial__hero p { max-width: 40rem; margin: 0; }.workspace-tutorial__illustration { position: relative; display: grid; width: 9.5rem; height: 7rem; margin-bottom: var(--space-2); place-items: center; color: #dbeafe; background: linear-gradient(145deg, #172554, #2563eb); border: .4rem solid #111827; border-radius: .8rem .8rem .45rem .45rem; box-shadow: inset 0 0 0 .2rem rgb(255 255 255 / 15%), 0 .5rem 0 #334155; font-size: 2.35rem; }.workspace-tutorial__illustration::after { position: absolute; bottom: -1rem; width: 5rem; height: .5rem; content: ""; background: #334155; border-radius: 99px; }.workspace-tutorial__power { position: absolute; right: -.75rem; bottom: -.75rem; display: grid; width: 2.1rem; height: 2.1rem; place-items: center; color: #fff; background: #b42318; border: .2rem solid #fff; border-radius: 50%; font-size: 1.2rem; }.workspace-tutorial__signal { position: absolute; width: 1.2rem; height: 1.2rem; border: .18rem solid #86efac; border-radius: 50%; opacity: 0; }.workspace-tutorial__signal--one { right: -2rem; top: 1.2rem; }.workspace-tutorial__signal--two { right: -3.5rem; top: .35rem; }.workspace-tutorial[data-state="starting"] .workspace-tutorial__signal { animation: workspace-signal 1.6s ease-out infinite; }.workspace-tutorial[data-state="starting"] .workspace-tutorial__signal--two { animation-delay: .45s; }.workspace-tutorial[data-state="ready"] .workspace-tutorial__power { background: #16834f; }.workspace-tutorial[data-state="ready"] .workspace-tutorial__illustration { background: linear-gradient(145deg, #0f766e, #22c55e); }.workspace-tutorial__status { min-height: 1.5rem; margin-top: var(--space-3) !important; color: #174e3b; font-weight: 750; }.workspace-tutorial[data-state="error"] .workspace-tutorial__status { color: var(--danger); }.workspace-tutorial__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3); margin-top: var(--space-4); }.workspace-tutorial__actions form { margin: 0; }.workspace-tutorial__steps { margin-top: var(--space-6); }.workspace-tutorial__steps h2 { text-align: center; }.workspace-tutorial__steps ol { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-3); padding: 0; list-style: none; }.workspace-tutorial__steps li { display: grid; min-width: 0; gap: .25rem; padding: var(--space-4); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }.workspace-tutorial__steps li span { display: grid; width: 2rem; height: 2rem; place-items: center; color: #fff; background: #64748b; border-radius: 50%; font-weight: 800; }.workspace-tutorial__steps li[data-active="true"] { border-color: #16834f; }.workspace-tutorial__steps li[data-active="true"] span { background: #16834f; }.workspace-tutorial__steps small { color: var(--muted); }.workspace-tutorial__first-use { margin-top: var(--space-4); padding: var(--space-4); background: #eaf2ff; border-left: .3rem solid var(--primary); border-radius: 0 var(--radius) var(--radius) 0; }@keyframes workspace-signal { from { transform: scale(.25); opacity: .9; } to { transform: scale(1.8); opacity: 0; } }@media (max-width: 42rem) { .workspace-tutorial__steps ol { grid-template-columns: 1fr; }.workspace-tutorial__illustration { transform: scale(.9); }.workspace-tutorial__signal { display: none; } }@media (prefers-reduced-motion: reduce) { .workspace-tutorial *, .workspace-tutorial *::before, .workspace-tutorial *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } }

.timeline-legend { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; font-weight: 700; }
.timeline-key { display: inline-block; width: 1.5rem; height: .25rem; margin-right: .35rem; vertical-align: middle; border-radius: 999px; }
.timeline-key--commits { background: #2563eb; }
.timeline-key--passes { background: #15803d; }
.timeline-chart { min-height: 15rem; width: 100%; overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: linear-gradient(to bottom, #f8fafc, #fff); }
.timeline-chart svg { display: block; width: 100%; height: 15rem; }
.timeline-grid { stroke: #cbd5e1; stroke-width: 1; vector-effect: non-scaling-stroke; }
.timeline-line { fill: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.timeline-line--commits { stroke: #2563eb; }
.timeline-line--passes { stroke: #15803d; }
.timeline-axis { display: flex; justify-content: space-between; gap: 1rem; color: var(--muted); font-size: .875rem; }
.live-kpis { display: grid; grid-template-columns: repeat(6, minmax(8rem, 1fr)); gap: var(--space-3); }
.live-kpis .panel { display: grid; min-height: 6.5rem; padding: var(--space-3); align-content: center; }
.live-kpis strong { font-size: clamp(1.55rem, 3vw, 2.35rem); line-height: 1; }
.live-kpis span { color: var(--muted); font-size: .9rem; }
.live-progress { display: inline-block; width: 6rem; height: .5rem; margin-right: .35rem; overflow: hidden; vertical-align: middle; background: #e5e7eb; border-radius: 99px; }
.live-progress i { display: block; height: 100%; background: #15803d; border-radius: inherit; }
.table-shell { max-width: 100%; overflow: auto; border: 1px solid var(--border); border-radius: var(--radius); }
.live-matrix { min-width: max-content; width: 100%; border-collapse: collapse; }
.live-matrix th, .live-matrix td { padding: .6rem .7rem; white-space: nowrap; border-bottom: 1px solid #e5e7eb; text-align: center; }
.live-matrix th:first-child, .live-matrix td:first-child { position: sticky; left: 0; z-index: 1; min-width: 13rem; text-align: left; background: var(--surface); }
.live-matrix thead th { position: sticky; top: 0; z-index: 2; background: #edf1f5; }
.live-matrix thead th:first-child { z-index: 3; }
.live-cell--passed { color: #15803d; font-weight: 800; }
.live-cell--progress { color: #b45309; font-weight: 800; }
.live-cell--failed { color: var(--danger); font-weight: 800; }
.live-cell--technical { color: #b45309; font-weight: 900; }
.live-cell--empty { color: #64748b; }
.live-vm { font-size: .8rem; font-weight: 700; }
.live-vm--running { color: #15803d; }
.live-vm--starting, .live-vm--stopping, .live-vm--resetting { color: #b45309; }
.live-vm--error { color: var(--danger); }
.live-temporal-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); }
.live-temporal-chart { min-height: 14rem; padding: var(--space-3); overflow: auto; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }
.live-chart-svg { display: block; width: 100%; min-width: 32rem; height: 15rem; }
.live-chart-grid { fill: none; stroke: #cbd5e1; stroke-width: 1; vector-effect: non-scaling-stroke; }
.live-chart-line { fill: none; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; opacity: .55; vector-effect: non-scaling-stroke; }
.live-chart-line:hover { stroke-width: 3; opacity: 1; }
.live-chart-line--mean { stroke: #111827; stroke-width: 3; stroke-dasharray: 0; opacity: .9; }
.live-chart-line--median { stroke: #111827; stroke-width: 2.5; stroke-dasharray: 7 5; opacity: .9; }
.live-student-selector > summary { cursor: pointer; font-weight: 700; }
.choice-label--compact { min-height: 0; padding: .35rem .55rem; }
.live-vm-chart { min-height: 18rem; }
.live-vm-timeline { display: grid; gap: .55rem; min-width: 42rem; }
.live-vm-row { display: grid; grid-template-columns: minmax(9rem, 14rem) minmax(22rem, 1fr) minmax(0, 12rem); gap: .75rem; align-items: center; }
.live-vm-row > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.live-vm-track { position: relative; display: block; height: 1.35rem; overflow: hidden; background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 999px; }
.live-workspace-tracks { display: grid; gap: .18rem; }
.live-workspace-track-row { display: grid; grid-template-columns: 5.5rem minmax(14rem, 1fr); gap: .4rem; align-items: center; }
.live-workspace-track-row small { color: var(--muted); font-size: .68rem; letter-spacing: .03em; }
.live-vm-segment { position: absolute; top: 0; bottom: 0; min-width: .2rem; }
.live-vm-segment--running { background: #22c55e; }
.live-vm-segment--stopped { background: #94a3b8; }
.live-vm-segment--error { background: #ef4444; }
.live-vm-segment--unknown { background: repeating-linear-gradient(45deg, #e2e8f0, #e2e8f0 .35rem, #f8fafc .35rem, #f8fafc .7rem); }
.live-vm-marker { position: absolute; top: 50%; z-index: 2; width: .55rem; height: .55rem; transform: translate(-50%, -50%); background: #1d4ed8; border: 2px solid #fff; box-shadow: 0 0 0 1px #1d4ed8; }
.live-vm-marker--commit { border-radius: 999px; }
.live-vm-marker--push { clip-path: polygon(50% 0, 100% 100%, 0 100%); background: #7c3aed; box-shadow: 0 0 0 1px #7c3aed; }
.live-workspace-marker { position: absolute; top: 50%; z-index: 3; transform: translate(-50%, -50%); font-size: .8rem; line-height: 1; color: #0f172a; text-shadow: 0 1px 0 #fff; }
.live-workspace-marker--files { color: #059669; }
.live-workspace-marker--commands { color: #334155; }
.live-workspace-marker--code { color: #d97706; }
.live-workspace-marker--commits, .live-workspace-marker--pushes { color: #2563eb; }
.live-workspace-period { position: absolute; top: .48rem; height: .28rem; border-radius: 999px; background: rgba(37, 99, 235, .18); }
.code-editor { display: grid; grid-template-columns: 3rem 1fr; overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: #0f172a; }
.code-editor pre { margin: 0; padding: .75rem .5rem; color: #94a3b8; text-align: right; background: #111827; user-select: none; }
.code-editor pre span { display: block; min-height: 1.45rem; font: 0.9rem/1.45 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
.code-editor textarea { min-height: 30rem; margin: 0; padding: .75rem; color: #e5e7eb; background: #0f172a; border: 0; border-radius: 0; font: 0.95rem/1.45 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; tab-size: 2; }
.grader-qa-result { padding: var(--space-3); border: 1px solid var(--border); border-radius: var(--radius); background: #f8fafc; }
.grader-qa-result--pass { border-color: #16a34a; }
.grader-qa-result--fail { border-color: #dc2626; }
.grader-qa-result pre { overflow: auto; max-height: 18rem; padding: .75rem; background: #111827; color: #e5e7eb; border-radius: .5rem; }
.projection-mode { min-height: calc(100vh - 7rem); padding: clamp(1rem, 2vw, 2rem); color: #e5edf7; background: radial-gradient(circle at top left, #1d2b44, #080b10 55%); border-radius: var(--radius); box-shadow: var(--shadow); }
.projection-mode .eyebrow { color: #9cc3ff; }
.projection-mode__header { display: flex; align-items: end; justify-content: space-between; gap: var(--space-4); padding-bottom: var(--space-4); border-bottom: 1px solid rgb(255 255 255 / 18%); }
.projection-mode__header h1 { margin: .15rem 0; color: #fff; }
.projection-mode__header p { margin: 0; color: #bac7d8; }
.projection-mode__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); justify-content: flex-end; }
.projection-mode [hidden] { display: none !important; }
.projection-mode__status { color: #bac7d8; }
.projection-feed { display: grid; max-width: 82rem; margin: var(--space-4) 0 0; padding: 0; gap: .65rem; list-style: none; }
.projection-feed li { display: grid; grid-template-columns: 6rem 9rem 1fr; align-items: center; gap: var(--space-4); padding: .75rem 1rem; font-size: clamp(1.15rem, 1.1rem + 1vw, 2rem); background: rgb(255 255 255 / 8%); border: 1px solid rgb(255 255 255 / 14%); border-radius: .8rem; }
.projection-feed time { color: #9cc3ff; font-variant-numeric: tabular-nums; }
.projection-feed strong { color: #fff; letter-spacing: .04em; }
.projection-feed__empty { grid-template-columns: 1fr !important; color: #bac7d8; }
@media (max-width: 70rem) { .live-kpis { grid-template-columns: repeat(3, minmax(8rem, 1fr)); } }
@media (max-width: 70rem) { .live-temporal-grid { grid-template-columns: 1fr; } }
@media (max-width: 40rem) { .live-kpis { grid-template-columns: repeat(2, minmax(8rem, 1fr)); } }
.observatory-filters { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); align-items: end; }
.observatory-legend { display: flex; flex-wrap: wrap; gap: .5rem 1rem; font-size: .875rem; }
.observatory-legend [data-kind="workspace_start"] { color: #7c3aed; }
.observatory-legend [data-kind="revision"] { color: #2563eb; }
.observatory-legend [data-kind="grader"] { color: #d97706; }
.observatory-legend [data-kind="validation"] { color: #15803d; }
.observatory-legend [data-kind="workspace_stop"] { color: #64748b; }
.observatory-lanes { display: grid; gap: .4rem; min-width: 0; }
.observatory-lane { display: grid; grid-template-columns: minmax(8rem, 13rem) minmax(0, 1fr); gap: .75rem; align-items: center; }
.observatory-lane__name { overflow-wrap: anywhere; }
.observatory-track { position: relative; min-height: 2rem; border-radius: .45rem; background: #f1f5f9; overflow: hidden; }
.course-window { display: none; position: absolute; inset-block: 0; background: #fef3c7; opacity: .8; }
.observatory[data-course-hours="true"] .course-window { display: block; }
.observatory-dot { position: absolute; z-index: 1; top: 50%; width: .75rem; height: .75rem; border: 2px solid #fff; border-radius: 50%; background: #64748b; box-shadow: 0 0 0 1px #475569; transform: translate(-50%, -50%); }
.observatory-dot--workspace_start { background: #7c3aed; }
.observatory-dot--revision { background: #2563eb; }
.observatory-dot--grader { background: #d97706; }
.observatory-dot--validation { background: #15803d; }
.observatory-dot--workspace_stop { background: #64748b; }
.observatory-dot--course { box-shadow: 0 0 0 2px #f59e0b; }
.observatory:not([data-course-hours="true"]) .course-only { display: none; }
.file-evidence-tree { display: grid; gap: .35rem; padding: .75rem; border-radius: var(--radius); background: #0f172a; color: #e2e8f0; overflow-x: auto; }
.workspace-upload { display: grid; gap: var(--space-3); padding: var(--space-3); border: 1px solid var(--border); border-radius: var(--radius); }
.workspace-upload > summary { width: fit-content; list-style: none; }
.workspace-upload > summary::-webkit-details-marker { display: none; }
.workspace-upload[open] > summary { margin-bottom: var(--space-2); }
.file-evidence-row { display: grid; grid-template-columns: minmax(14rem, 1fr) auto minmax(12rem, auto); align-items: center; gap: .75rem; min-width: 42rem; }
.file-evidence-row code { color: #bfdbfe; }
.file-evidence-row small { color: #cbd5e1; text-align: right; }
@media (max-width: 40rem) { .observatory-lane { grid-template-columns: 1fr; gap: .2rem; } .observatory-track { min-height: 2.5rem; } }
.toolbar { display: flex; min-width: 0; flex-wrap: wrap; gap: var(--space-2); }
.toolbar form { min-width: 0; margin: 0; }
.toolbar--compact { align-items: center; gap: var(--space-1); }
.toolbar--compact .button { min-height: 2.45rem; padding: 0.45rem 0.7rem; }
.status-summary { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.muted { color: var(--muted); }
.compact-facts {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  gap: var(--space-1) var(--space-3);
  margin: var(--space-3) 0;
}
.compact-facts > div { display: contents; }
.compact-facts dt { color: var(--muted); font-weight: 700; }
.compact-facts dd { margin: 0; }
.disclosure { padding: 0; overflow: hidden; }
.disclosure > summary { display: flex; padding: var(--space-4); align-items: center; justify-content: space-between; gap: var(--space-3); cursor: pointer; }
.disclosure[open] > summary { background: #eef1f4; border-bottom: 1px solid var(--border); }
.disclosure__content { padding: var(--space-4); }
.disclosure .responsive-table { border: 0; border-radius: 0; box-shadow: none; }
.copy-command { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-2); align-items: center; }
.copy-command__label { grid-column: 1 / -1; font-weight: 700; }
.copy-command code { min-width: 0; padding: var(--space-3); overflow-x: auto; background: #111820; color: #eef6ff; border-radius: 0.3rem; }
.filters { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: var(--space-3); align-items: end; }
.pagination { display: flex; align-items: center; justify-content: center; gap: var(--space-3); }
.badge { display: inline-flex; max-width: 100%; padding: 0.15rem 0.55rem; align-items: center; border: 1px solid currentcolor; border-radius: 999px; font-size: 0.8rem; font-weight: 700; line-height: 1.35; white-space: normal; }
.badge--success { color: #0b5c36; background: #d8f3e5; }
.badge--warning { color: #704004; background: #fff0c2; }
.badge--prevalidated { color: #356b49; background: #e8f3eb; border: 1px solid #9cc8aa; }
.badge--danger { color: #8d1b12; background: #fee4e2; }
.health--ok { color: #166534; background: #dcfce7; }
.health--warning { color: #92400e; background: #fef3c7; }
.health--error { color: #991b1b; background: #fee2e2; }
.health--unknown { color: #374151; background: #e5e7eb; }
.impersonation-bar { display: flex; position: sticky; z-index: 30; top: 0; align-items: center; justify-content: center; gap: var(--space-3); padding: 0.55rem var(--space-3); color: #fff; background: #704004; }
.impersonation-bar form { margin: 0; }
.impersonation-bar button { padding: 0.35rem 0.75rem; color: #2c250e; background: #fff0c2; }
.alert { padding: var(--space-3) var(--space-4); color: #17324d; background: #dceeff; border: 1px solid #65a7e8; border-left-width: 0.35rem; border-radius: 0.3rem; }
.alert--danger { color: #6b160e; background: #fee4e2; border-color: var(--danger); }

.form-stack, .form-field { display: grid; gap: var(--space-4); }
.form-field { gap: var(--space-1); }
.form-field label { font-weight: 700; }
.form-field input, .form-field select, .form-field textarea, .form-stack input, .form-stack select, .form-stack textarea, .panel input, .panel select, .panel textarea { width: 100%; min-height: 2.65rem; padding: 0.55rem 0.65rem; color: var(--ink); background: var(--surface); border: 1px solid #75808d; border-radius: 0.3rem; font: inherit; }
.form-stack input[type="checkbox"], .form-stack input[type="radio"], .panel input[type="checkbox"], .panel input[type="radio"] { width: 1.15rem; min-height: 1.15rem; padding: 0; flex: 0 0 auto; accent-color: var(--primary); }
.choice-label { display: flex; align-items: flex-start; gap: var(--space-2); }
.panel .choice-label > input[type="checkbox"] { width: 1.15rem; height: 1.15rem; min-width: 1.15rem; min-height: 1.15rem; margin-top: 0.2rem; appearance: auto; }
.errorlist { color: var(--danger); font-weight: 700; }
.form-help { font-size: 0.875rem; }
.table-shell, .table-wrap { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.responsive-table { overflow-x: auto; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
table { width: 100%; border-collapse: collapse; }
th, td { padding: var(--space-3); text-align: left; border-bottom: 1px solid #d5dae0; }
thead th { background: #e4e8ed; font-size: 0.88rem; }
tbody tr:nth-child(even) { background: #f7f8fa; }

.session-manager h1, .session-manager h2, .session-manager h3 { margin-block: 0; }
.session-manager__hero { display: grid; gap: var(--space-4); }
.session-manager__summary, .definition-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: var(--space-3); margin: 0; }
.session-manager__summary > div, .definition-grid > div { min-width: 0; padding: var(--space-3); background: #f5f7fa; border: 1px solid #d5dae0; border-radius: .45rem; }
.session-manager__summary dt, .definition-grid dt { color: var(--muted); font-size: .78rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.session-manager__summary dd, .definition-grid dd { margin: .15rem 0 0; font-weight: 700; }
.session-manager__actions { align-items: stretch; }
.session-manager__row-actions { display: flex; gap: var(--space-2); white-space: nowrap; }
.session-manager__row-actions .button { min-width: 2.75rem; padding-inline: .75rem; }
.session-manager__preview { width: 100%; min-height: 28rem; background: #f5f7fa; border: 1px solid var(--border); border-radius: var(--radius); }
.session-manager__image-preview { display: block; max-height: 28rem; margin-inline: auto; object-fit: contain; border: 1px solid var(--border); border-radius: var(--radius); }
.session-manager__timeline { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: var(--space-3); }
.session-manager__timeline > div { padding: var(--space-3); background: #f7f8fa; border-left: .25rem solid var(--primary); border-radius: .35rem; }
.session-manager__action-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: var(--space-4); }
.session-readiness__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: var(--space-2); }
.session-readiness__item { padding: .7rem .8rem; background: #f8fafc; border: 1px solid var(--border); border-left-width: .3rem; border-radius: .5rem; }
.session-readiness__item strong { font-size: .92rem; }
.session-readiness__item small { display: block; margin-top: .25rem; color: var(--muted); }
.session-readiness__value { margin-left: auto; font-weight: 800; }
.session-readiness__item--pass { border-left-color: #16a34a; background: #f0fdf4; }
.session-readiness__item--warning { border-left-color: #d97706; background: #fffbeb; }
.session-readiness__item--fail { border-left-color: #dc2626; background: #fef2f2; }
.session-readiness__item--info { border-left-color: #2563eb; background: #eff6ff; }
.compact-list { display: grid; gap: var(--space-2); padding-left: 1.1rem; }
.compact-table th, .compact-table td { padding: .55rem .7rem; vertical-align: middle; }
.danger-zone { border-color: #f0a29b; background: #fff7f6; }
.danger-zone h2, .danger-zone h3 { color: var(--danger); }

.medal-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: var(--space-3); }
.medal-card { min-height: 9rem; padding: var(--space-3); text-align: center; background: radial-gradient(circle at 50% 25%, #fff 0 15%, #d9dee5 60%, #aab3be 100%); border: 1px solid #737e8b; border-radius: var(--radius); }
.medal-card__icon { display: grid; width: 4rem; height: 4rem; margin: 0 auto var(--space-2); place-items: center; color: #2c250e; background: linear-gradient(145deg, #fff0a8, #c69622); border: 0.25rem double #755712; border-radius: 50%; font-size: 1.5rem; font-weight: 800; }
.medal-card strong, .medal-card span { display: block; }
.medal-card span { color: var(--muted); font-size: 0.82rem; }
.activity-card { display: grid; gap: var(--space-3); border-top: 0.3rem solid #27313c; }
.activity-medal-strip { display: flex; min-height: 2.25rem; align-items: center; }
.activity-medal-strip img { width: 2.35rem; height: 2.35rem; margin-right: -0.35rem; object-fit: contain; filter: drop-shadow(0 0.1rem 0.12rem rgb(0 0 0 / 25%)); }
.activity-medal-strip__symbol { display: inline-grid; width: 2.35rem; height: 2.35rem; margin-right: -0.35rem; place-items: center; border: 1px solid var(--border); border-radius: 50%; background: var(--surface); box-shadow: 0 0.1rem 0.12rem rgb(0 0 0 / 15%); font-size: 1.2rem; }

/* Pré-soutenance : une vue dense, lisible et directement actionnable. */
.presoutenance-report { gap: var(--space-3); }
.presoutenance-report h4 { margin: 0; }
.presoutenance-score { padding: .35rem .55rem; color: #123d89; background: #dceaff; border: 1px solid #7ba8e8; border-radius: .35rem; font-size: 1.1rem; }
.presoutenance-exercises { box-shadow: none; }
.presoutenance-exercises th, .presoutenance-exercises td { vertical-align: top; }
.presoutenance-exercise--pass { box-shadow: inset .28rem 0 #15803d; }
.presoutenance-exercise--fail { box-shadow: inset .28rem 0 #b42318; }
.presoutenance-exercise--error { box-shadow: inset .28rem 0 #6d28d9; background: #f3e8ff !important; }
.presoutenance-badge--technical { color: #5b21b6; background: #ede9fe; }
.proof-chip { display: inline-flex; margin: .1rem .2rem .1rem 0; padding: .12rem .35rem; align-items: center; gap: .2rem; color: #334155; background: #eef2f6; border-radius: 999px; font-size: .75rem; font-weight: 700; }
.proof-chip img { width: 1.1rem; height: 1.1rem; object-fit: contain; }
.presoutenance-medals { display: grid; grid-template-columns: repeat(auto-fill, minmax(8.25rem, 1fr)); gap: .5rem; }
.presoutenance-medal { display: grid; min-height: 7rem; padding: .5rem; place-items: center; gap: .15rem; color: var(--ink); background: #f4f6f8; border: 1px solid #aab2bc; border-radius: .45rem; font: inherit; text-align: center; cursor: pointer; }
.presoutenance-medal img, .presoutenance-medal__fallback { width: 2.5rem; height: 2.5rem; object-fit: contain; }
.presoutenance-medal__fallback { display: grid; place-items: center; font-size: 1.8rem; }
.presoutenance-medal span { font-size: .8rem; font-weight: 800; line-height: 1.15; }
.presoutenance-medal small { color: var(--muted); }
.presoutenance-medal--approved { color: #184d2e; background: #e1f4e8; border-color: #4a9d69; }
.presoutenance-medal--refused { color: #7a1c15; background: #fee9e7; border-color: #d66a60; opacity: .78; }
.presoutenance-medal--pending { border-style: dashed; }
.presoutenance-medal:hover { filter: brightness(.97); }
@media (max-width: 44rem) { .stack > :has(.presoutenance-exercises) { min-width: 0; } .presoutenance-exercises { font-size: .88rem; } .presoutenance-exercises th:nth-child(3), .presoutenance-exercises td:nth-child(3) { min-width: 13rem; } }
.activity-hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-6); padding: clamp(1.2rem, 4vw, 2.3rem); color: #fff; background: linear-gradient(135deg, #121820, #34404d); border-radius: var(--radius); box-shadow: var(--shadow); }
.activity-hero h1, .activity-hero p { margin: 0; }
.activity-hero .eyebrow { color: #c9d2dc; }
.activity-hero__badges { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.activity-hero__badges .badge { color: #fff; }
.activity-deadline { display: grid; min-width: 13rem; margin: 0; padding: var(--space-3); align-content: center; color: var(--ink); background: #fff; border-radius: 0.35rem; }
.activity-deadline dt { color: var(--muted); font-size: 0.72rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.activity-deadline dd { margin: 0 0 var(--space-2); font-weight: 750; }
.activity-deadline span { color: var(--muted); font-size: 0.75rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.activity-deadline strong { font-size: 1.15rem; }
.activity-warning { padding: var(--space-3); color: #6f4c00; background: #fff8e1; border: 1px solid #e3be55; border-radius: 0.45rem; }
.activity-medal-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: var(--space-3); }
.activity-medal { display: grid; grid-template-columns: 4rem minmax(0, 1fr); gap: var(--space-3); padding: var(--space-3); align-items: center; background: #f1f3f5; border: 1px solid var(--border); border-radius: var(--radius); }
.activity-medal--earned { background: #e4f6ec; border-color: #4f9d73; }
.activity-medal--obtained { background: #e4f6ec; border-color: #4f9d73; }
.activity-medal--in-progress { background: #fff8e7; border-color: #c69622; }
.activity-medal--prevalidated { background: #eff7f2; border-color: #82b899; }
.activity-medal--prevalidated img { opacity: .58; filter: saturate(.65); }
.activity-medal--locked { filter: grayscale(0.75); opacity: 0.78; }
.activity-medal img { width: 4rem; height: 4rem; object-fit: contain; }
.activity-medal strong, .activity-medal span { display: block; }
.activity-medal > div > span:not(.badge) { margin-bottom: var(--space-2); color: var(--muted); font-size: 0.82rem; }
.activity-medal p { margin: 0; font-size: 0.85rem; }
.documentation-terminal, .documentation-code { overflow-x: auto; white-space: pre-wrap; border-radius: var(--radius); padding: var(--space-3); background: #111820; color: #e8f0f5; font: 0.9rem/1.55 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
.documentation-terminal::before { content: "terminal"; display: block; color: #80d4a3; font-size: 0.75rem; text-transform: uppercase; letter-spacing: .08em; margin-bottom: var(--space-2); }
.documentation-diagram { border-left: .35rem solid var(--accent); padding: var(--space-3); background: #f4f7fa; font-weight: 600; line-height: 1.65; }
.documentation-html-preview { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: #fff; }
.documentation-html-preview > p { margin: 0; padding: var(--space-2) var(--space-3); background: #f4f7fa; }
.documentation-html-preview iframe { display: block; width: 100%; min-height: 10rem; border: 0; background: #fff; }
.stdio-demo, .loop-demo, .function-trace, .truth-tables { display: grid; gap: var(--space-3); padding: var(--space-4); border: 2px solid #126ea9; border-radius: var(--radius); background: #eef8ff; }
.stdio-demo { grid-template-columns: 1fr 1.35fr; align-items: stretch; }
.stdio-demo__source, .stdio-demo__process, .stdio-demo__stream { display: grid; gap: .35rem; min-height: 8rem; padding: var(--space-3); border: 2px solid #1676b2; border-radius: .5rem; background: #fff; }
.stdio-demo__source { background: #dff1ff; }
.stdio-demo__process { background: #edf7ff; }
.stdio-demo__stream--out { border-color: #23824e; background: #e8f8ed; }
.stdio-demo__stream--err { border-color: #a83f42; background: #ffedee; }
.stdio-demo__source span, .stdio-demo__stream strong { font-weight: 800; }
.stdio-demo__process span { color: var(--muted); }
.stdio-demo__actions { display: flex; grid-column: 1 / -1; flex-wrap: wrap; gap: var(--space-2); }
.loop-demo { grid-template-columns: minmax(16rem, .9fr) minmax(16rem, 1.1fr); align-items: start; }
.loop-demo__code { padding: var(--space-3); color: #e8f0f5; background: #111820; border-radius: .5rem; font: 0.95rem/1.65 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
.loop-demo__state { display: grid; gap: var(--space-3); }
.loop-demo__bars { display: flex; min-height: 8rem; align-items: end; gap: var(--space-3); }
.loop-demo__bars span { display: grid; flex: 1; min-height: 2rem; place-items: center; color: #183042; background: #b8d8ed; border: 2px solid #5b8fb0; border-radius: .35rem .35rem 0 0; transition: min-height .35s ease, background .35s ease, color .35s ease; }
.loop-demo__bars span:nth-child(1) { min-height: 33%; }.loop-demo__bars span:nth-child(2) { min-height: 55%; }.loop-demo__bars span:nth-child(3) { min-height: 77%; }
.loop-demo__bars span.is-active { color: #fff; background: #d98021; border-color: #9f5510; }
.loop-demo__state dl { display: flex; gap: var(--space-4); margin: 0; }.loop-demo__state dt { color: var(--muted); font-size: .8rem; font-weight: 800; text-transform: uppercase; }.loop-demo__state dd { margin: .15rem 0 0; font-size: 1.4rem; font-weight: 800; }
.loop-demo > .button, .loop-demo > .muted { grid-column: 1 / -1; }
.function-trace { grid-template-columns: minmax(16rem, .9fr) minmax(16rem, 1.1fr); align-items: start; }
.function-trace__code { padding: var(--space-3); color: #e8f0f5; background: #111820; border-radius: .5rem; font: 0.95rem/1.65 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
.function-trace__steps { display: grid; gap: var(--space-2); margin: 0; padding-left: 1.25rem; }
.function-trace__steps li { padding: .55rem .75rem; border: 1px solid #9cc4df; border-radius: .45rem; background: #fff; }
.function-trace__steps li.is-active { border-color: #d98021; background: #fff4e6; box-shadow: 0 0 0 3px rgba(217, 128, 33, .18); font-weight: 800; }
.function-trace > .button { grid-column: 1 / -1; justify-self: start; }
.truth-tables { grid-template-columns: minmax(12rem, .55fr) minmax(18rem, 1.45fr); overflow-x: auto; }
.truth-tables table { width: 100%; min-width: 12rem; border-collapse: collapse; background: #fff; border-radius: .5rem; overflow: hidden; }
.truth-tables caption { padding: .6rem; text-align: left; font-weight: 800; color: #123c5a; }
.truth-tables th, .truth-tables td { padding: .55rem .7rem; border: 1px solid #cde0ec; text-align: center; }
.truth-tables th { background: #dff1ff; }
@media (max-width: 44rem) { .stdio-demo, .loop-demo, .function-trace, .truth-tables { grid-template-columns: 1fr; }.stdio-demo__actions, .loop-demo > .button, .loop-demo > .muted, .function-trace > .button { grid-column: auto; } }
@media (prefers-reduced-motion: reduce) { .loop-demo__bars span { transition: none; } }
.activity-section { padding: 0; overflow: hidden; }
.activity-section > :not(.activity-section__heading) { margin-right: var(--space-4); margin-left: var(--space-4); }
.activity-section > :last-child { margin-bottom: var(--space-4); }
.activity-section__heading { display: flex; padding: var(--space-3) var(--space-4); align-items: center; gap: var(--space-3); color: #fff; background: linear-gradient(135deg, #202832, #3a4653); }
.activity-section__heading > span { display: grid; width: 2.5rem; height: 2.5rem; place-items: center; background: rgb(255 255 255 / 14%); border: 1px solid rgb(255 255 255 / 35%); border-radius: 0.35rem; font-weight: 800; }
.activity-section__heading h2, .activity-section__heading p { margin: 0; }
.activity-section__heading .eyebrow { color: #ccd5df; }
.environment-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: var(--space-3); }
.environment-card { display: grid; min-height: 6rem; padding: var(--space-3); align-content: center; color: #fff; background: linear-gradient(145deg, #181d23, #384451); border: 1px solid #4d5966; border-radius: var(--radius); text-decoration: none; }
.environment-card span { color: #d6dde5; font-size: 0.85rem; }
.progress-summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-3); align-items: center; }
.progress-summary progress { width: 100%; height: 1.1rem; accent-color: #16834f; }
.activity-action-bar { position: sticky; z-index: 10; top: 0.5rem; display: flex; padding: var(--space-2); flex-wrap: wrap; gap: var(--space-2); background: rgb(255 255 255 / 96%); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.activity-action-bar .button { flex: 1 1 8rem; }
.microbit-simulation__device { min-height: 19rem; display: grid; place-items: center; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-alt); padding: var(--space-3); overflow: hidden; }
.maqueen-track { position: relative; width: min(100%, 38rem); aspect-ratio: 16 / 10; overflow: hidden; background: linear-gradient(90deg, #e6d7a8 0 33%, #f1e7c8 33% 66%, #e6d7a8 66%); border: .6rem solid #47612c; border-radius: 1rem; box-shadow: inset 0 0 0 .25rem rgb(255 255 255 / 40%); }
.maqueen-track__line { position: absolute; top: 0; bottom: 0; left: 49%; width: 7%; background: #151515; transform: skewX(-4deg); }
.maqueen-track__trail { position: absolute; inset: 0; pointer-events: none; }
.maqueen-track__trail i { position: absolute; top: var(--trail-y); left: var(--trail-x); width: .45rem; height: .45rem; background: rgb(35 126 210 / 80%); border: .1rem solid #fff; border-radius: 50%; box-shadow: 0 0 .35rem rgb(35 126 210 / 75%); transform: translate(-50%, -50%); }
.maqueen-track[data-surface="white"] { background: linear-gradient(90deg, #1c2b32 0 33%, #263a43 33% 66%, #1c2b32 66%); }
.maqueen-track[data-surface="white"] .maqueen-track__line { background: #f7f4e8; box-shadow: 0 0 .35rem rgb(255 255 255 / 80%); }
.maqueen-track__obstacle { position: absolute; top: 9%; left: 40%; display: grid; width: 5.7rem; height: 3rem; place-items: center; color: #fff; background: #b33a2b; border-radius: .5rem; font-size: .72rem; font-weight: 800; box-shadow: 0 .2rem .3rem rgb(0 0 0 / 25%); }
.maqueen-visual { position: absolute; top: var(--robot-y); left: var(--robot-x); display: grid; grid-template-columns: 1.7rem 4.3rem 1.7rem; grid-template-rows: auto auto; gap: .22rem; align-items: center; justify-items: center; transform: translate(-50%, -50%) rotate(var(--robot-angle)); transition: transform 420ms ease, top 420ms ease, left 420ms ease; }
.maqueen-visual::after { position: absolute; z-index: 2; top: calc(100% + .4rem); left: 50%; padding: .16rem .35rem; color: #fff; background: #172027; border-radius: .25rem; font-size: .65rem; font-weight: 800; white-space: nowrap; content: attr(data-motors); transform: translateX(-50%) rotate(calc(-1 * var(--robot-angle))); }
.maqueen-visual__body { display: grid; width: 4.3rem; height: 3.1rem; place-items: center; color: #fff; background: linear-gradient(140deg, #303a44, #101820); border: .22rem solid #0d141a; border-radius: .55rem; box-shadow: .2rem .25rem .3rem rgb(0 0 0 / 30%); font-size: 1.6rem; }
.maqueen-visual__wheel { width: 1.55rem; height: 2.15rem; border: .3rem solid #202020; border-radius: .5rem; background: repeating-linear-gradient(0deg, #8b949c 0 .15rem, #364049 .15rem .3rem); }
.maqueen-visual__sensor { display: grid; width: 1.2rem; height: 1.2rem; place-items: center; color: #fff; background: #13578a; border: .12rem solid #e6eef4; border-radius: 50%; font-size: .65rem; font-weight: 800; }
.maqueen-visual[data-left-sensor="0"] .maqueen-visual__sensor--left, .maqueen-visual[data-right-sensor="0"] .maqueen-visual__sensor--right { background: #2f9e44; box-shadow: 0 0 .5rem rgb(47 158 68 / 70%); }
.simulation-observations { margin: 0; text-align: center; font-weight: 700; }
.simulation-actions { text-align: center; word-break: break-word; }
.halo-board { position: relative; display: grid; width: min(74vw, 25rem); aspect-ratio: 1; place-items: center; background: radial-gradient(circle at 50% 48%, #1d242d 0 31%, #10161c 31% 44%, #e8e4c8 44% 45%, #17230f 45% 100%); border: .65rem solid #cdb754; border-radius: 50%; box-shadow: inset 0 0 0 .3rem #20320f, 0 .25rem .7rem rgb(0 0 0 / 20%); }
.halo-board__clock { position: absolute; inset: 0; pointer-events: none; }
.halo-board__clock b { position: absolute; top: 50%; left: 50%; color: #f6e89d; font-size: clamp(.62rem, 2vw, .86rem); line-height: 1; text-shadow: 0 1px #000; transform: translate(-50%, -50%) rotate(var(--hour-angle)) translateY(calc(-1 * min(31vw, 10.6rem))) rotate(calc(-1 * var(--hour-angle))); }
.simulator-legend { color: var(--text-muted); font-size: .9rem; text-align: center; }
.halo-ring { position: absolute; inset: .1rem; border-radius: 50%; }
.halo-ring i { position: absolute; top: 50%; left: 50%; width: .8rem; height: .8rem; border: 1px solid rgb(0 0 0 / 25%); border-radius: 50%; box-shadow: 0 0 .55rem currentColor, inset 0 0 .2rem rgb(255 255 255 / 80%); transform: rotate(var(--led-angle)) translateY(calc(min(37vw, 12.4rem) * -1)) translate(-50%, -50%); }
.halo-board__core { z-index: 1; color: #f6e89d; font-size: clamp(.78rem, 2.5vw, 1.2rem); font-weight: 900; letter-spacing: .1em; line-height: 1.4; text-align: center; text-shadow: 0 1px #000; }
.learning-tools .grid p, .git-cycle p { margin: 0; padding: var(--space-3); background: #f5f6f8; border: 1px solid var(--border); border-radius: 0.35rem; }
.git-cycle { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: var(--space-3); }
.checklist { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.checklist li { padding: var(--space-2) var(--space-3); background: #f5f6f8; border-radius: 0.35rem; }
.activity-dashboard { display: grid; grid-template-columns: minmax(0, 2fr) minmax(14rem, 1fr); gap: var(--space-3); }
.activity-dashboard progress { width: 100%; height: 1.2rem; accent-color: #16834f; }
.activity-grade { margin: 0; font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 850; }
.pdf-viewer { overflow: hidden; background: #525659; border: 1px solid var(--border); border-radius: var(--radius); }
.pdf-viewer iframe { display: block; width: 100%; height: clamp(30rem, 75vh, 58rem); border: 0; }
.pdf-actions { margin-top: var(--space-2); }
.pdf-mobile-hint { display: none; }
.interactive-pdf { gap: var(--space-3); }
.interactive-pdf__header, .interactive-pdf__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-2); }
.interactive-pdf__actions [hidden] { display: none; }
.interactive-pdf__header h3, .interactive-pdf__header p { margin: 0; }
.interactive-pdf__state { margin: 0; color: var(--muted); font-size: .9rem; font-weight: 700; }
.interactive-pdf__pages { display: grid; gap: var(--space-4); }
.interactive-pdf__page { position: relative; width: min(100%, 62rem); margin-inline: auto; overflow: hidden; background: #fff; border: 1px solid var(--border); box-shadow: var(--shadow); }
.interactive-pdf__page > img { display: block; width: 100%; height: auto; }
.interactive-pdf__field { position: absolute; min-width: 1.75rem; min-height: 1.4rem; }
.interactive-pdf__field :is(input, textarea) { box-sizing: border-box; width: 100%; height: 100%; min-height: 100%; padding: .15rem .3rem; color: #111827; font: inherit; line-height: 1.2; background: rgb(255 255 255 / 82%); border: 2px solid #155eef; border-radius: .2rem; resize: none; }
.interactive-pdf__field textarea { overflow: auto; }
.interactive-pdf__field :is(input, textarea):focus-visible { outline: 3px solid #f4b41a; outline-offset: 1px; background: #fff; }
.interactive-pdf__field :is(input, textarea)[readonly] { color: #374151; border-color: #6b7280; background: rgb(243 244 246 / 88%); }
.exercise-list { display: grid; gap: var(--space-2); }
.learning-stage { --stage-accent: #155eef; display: grid; gap: var(--space-4); margin-block: clamp(1.5rem, 4vw, 3rem); padding-inline-start: clamp(0.5rem, 2vw, 1.5rem); border-inline-start: 0.35rem solid var(--stage-accent); }
.learning-stage__header { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.35rem 1rem; align-items: start; padding: clamp(1rem, 3vw, 1.6rem); border-radius: var(--radius); background: color-mix(in srgb, var(--stage-accent) 9%, white); }
.learning-stage__header .eyebrow, .learning-stage__header h3, .learning-stage__header p { grid-column: 1; margin: 0; }
.learning-stage__header .badge { grid-column: 2; grid-row: 1 / span 3; }
.learning-stage--functions { --stage-accent: #7a3db8; }
.learning-stage--conditions { --stage-accent: #b54708; }
.learning-stage--loops { --stage-accent: #087e8b; }
.learning-stage--combine { --stage-accent: #c11574; }
.learning-stage--collections { --stage-accent: #2f7d32; }
.learning-stage--project { --stage-accent: #6b4f1d; }
.exercise-card { overflow: hidden; background: var(--surface); border: 1px solid var(--border); border-left: 0.3rem solid #34404d; border-radius: var(--radius); }
.exercise-card__header { display: flex; padding: var(--space-3) var(--space-4); align-items: center; justify-content: space-between; gap: var(--space-3); background: #eef1f4; }
.exercise-card__header h3, .exercise-card__header p { margin: 0; }
.exercise-card > summary { display: flex; padding: var(--space-3); align-items: center; justify-content: space-between; gap: var(--space-3); background: #eef1f4; cursor: pointer; }
.exercise-card > summary span:first-child { display: grid; }
.exercise-card > summary small { color: var(--muted); }
.exercise-card__body { padding: var(--space-4); border-top: 1px solid var(--border); }
.exercise-relation { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border: 1px solid var(--border); border-radius: 0.35rem; }
.exercise-relation span { min-width: 0; padding: var(--space-2); overflow-wrap: anywhere; }
.exercise-relation span + span { border-left: 1px solid var(--border); }
.exercise-relation strong { display: block; color: var(--muted); font-size: 0.72rem; letter-spacing: 0.04em; text-transform: uppercase; }
.technical-details { padding: var(--space-2) var(--space-3); background: #f5f6f8; border-radius: 0.35rem; }
.grader-exercise-card { display: grid; gap: var(--space-3); border-left: 0.35rem solid #34404d; }
.grader-exercise-card[data-result-state="pass"] { border-left-color: #16834f; }
.grader-exercise-card[data-result-state="fail"] { border-left-color: #c69622; }
.grader-exercise-card[data-result-state="error"] { border-left-color: #b42318; }
.grader-exercise-card[data-result-state="technical"] { border-left-color: #d97706; }
.grader-exercise-card__main { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); }
.grader-exercise-card__main h3, .grader-exercise-card__main p { margin: 0; }
.grader-exercise-card dl { display: grid; grid-template-columns: minmax(8rem, auto) minmax(0, 1fr); gap: var(--space-2); }
.grader-exercise-card dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.grader-exercise-card code, .technical-details code { word-break: break-all; }
.grader-runtime-summary { display: flex !important; margin: 0; flex-wrap: wrap; gap: var(--space-2) var(--space-4); }
.grader-runtime-summary div { display: flex; align-items: baseline; gap: var(--space-1); }
.grader-runtime-summary dt { color: var(--muted); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.03em; text-transform: uppercase; }
.grader-runtime-summary dd { margin: 0; font-variant-numeric: tabular-nums; }
.grader-stream { max-width: 100%; max-height: 22rem; margin: var(--space-2) 0 0; padding: var(--space-3); overflow: auto; color: #eff5fb; background: #12171d; border-radius: 0.35rem; white-space: pre; }
.grader-stream code { word-break: normal; }
.grader-diagnostic { display: grid; gap: .75rem; margin-block: .65rem; padding: clamp(.8rem, 2vw, 1.15rem); border: 1px solid var(--border); border-inline-start: .35rem solid #b7791f; border-radius: var(--radius); background: var(--surface); }
.grader-diagnostic--success { border-inline-start-color: #16803c; }
.grader-diagnostic__header { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 1rem; }
.grader-diagnostic__header > div { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.grader-diagnostic__checks { display: grid; gap: .25rem; margin: 0; padding: 0; list-style: none; }
.grader-diagnostic__checks .check-pass { color: #166534; }
.grader-diagnostic__checks .check-fail { color: #991b1b; }
.grader-diagnostic__explanation { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: .75rem; }
.grader-diagnostic__explanation p { margin: 0; }
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); gap: var(--space-3); }
.stat-card { display: grid; min-width: 0; min-height: 6.5rem; padding: var(--space-4); align-content: center; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.stat-card strong { font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.2rem); line-height: 1.1; }
.stat-card span { color: var(--muted); }
.empty-state { padding: clamp(1rem, 3vw, 2rem); color: var(--muted); text-align: center; background: var(--surface); border: 1px dashed var(--border); border-radius: var(--radius); }
.async-spinner { width: 1rem; height: 1rem; margin-right: var(--space-2); border: 0.15rem solid rgb(255 255 255 / 45%); border-top-color: currentcolor; border-radius: 50%; animation: spin 700ms linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* Tiroir de navigation : la barre professeur complète demande ~62rem. */
@media (max-width: 64rem) {
  .site-header__inner { min-height: 3.5rem; padding-block: var(--space-2); }
  .nav-drawer > summary { display: flex; align-items: center; }
  .nav-drawer:not([open]) > .top-nav { display: none; }
  .nav-drawer > .top-nav { position: absolute; z-index: 30; top: 3.5rem; right: var(--space-2); left: var(--space-2); display: grid; max-height: calc(100vh - 4.5rem); margin: 0; padding: var(--space-2); overflow-y: auto; background: var(--chrome); border: 1px solid #4b5561; border-radius: var(--radius); box-shadow: var(--shadow); }
  .top-nav__link { justify-content: flex-start; }
  .top-nav__link--icon { display: flex; align-items: center; gap: var(--space-2); }
  .top-nav__icon-label { position: static; width: auto; height: auto; overflow: visible; clip-path: none; }
  .nav-more__menu { position: static; margin: var(--space-1) 0 var(--space-2) var(--space-3); box-shadow: none; }
}

@media (max-width: 48rem) {
  .page-heading { align-items: stretch; flex-direction: column; }
  .grid--two { grid-template-columns: 1fr; }
  .activity-hero { grid-template-columns: 1fr; }
  .activity-deadline { min-width: 0; }
  .activity-dashboard { grid-template-columns: 1fr; }
  .activity-action-bar { position: static; }
  .pdf-viewer iframe { height: clamp(28rem, 68vh, 44rem); }
  .interactive-pdf__page { width: 100%; }
  .exercise-relation { grid-template-columns: 1fr 1fr; }
  .grader-exercise-card__main { flex-direction: column; }
  .grader-exercise-card dl { grid-template-columns: 1fr; }
  .exercise-relation span + span { border-left: 0; border-top: 1px solid var(--border); }
  .page-shell { width: calc(100% - 1rem); max-width: none; margin-top: var(--space-3); }
  .responsive-table { overflow: visible; border: 0; box-shadow: none; }
  .responsive-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .responsive-table table, .responsive-table tbody, .responsive-table tr, .responsive-table td { display: block; width: 100%; }
  .responsive-table tr { margin-bottom: var(--space-3); padding: var(--space-3); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
  .responsive-table td { display: grid; grid-template-columns: minmax(7rem, 40%) 1fr; gap: var(--space-2); padding: var(--space-2) 0; border-bottom: 1px solid #e2e5e9; }
  .responsive-table td:last-child { border: 0; }
  .responsive-table td::before { color: var(--muted); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; content: attr(data-label); }
}

@media (max-width: 30rem) {
  .learning-stage__header { grid-template-columns: minmax(0, 1fr); }
  .learning-stage__header .badge { grid-column: 1; grid-row: auto; justify-self: start; }
  .pdf-viewer { display: none; }
  .pdf-mobile-hint { display: block; }
  .activity-action-bar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .activity-action-bar .button, .pdf-actions .button { width: 100%; min-width: 0; text-align: center; }
  .pdf-actions { display: grid; grid-template-columns: 1fr; }
  .exercise-card__header { align-items: flex-start; flex-direction: column; }
  .exercise-relation { grid-template-columns: 1fr; }
  .activity-medal { grid-template-columns: 3rem minmax(0, 1fr); }
  .activity-medal img { width: 3rem; height: 3rem; }
  .responsive-table td { grid-template-columns: 1fr; }
  .copy-command { grid-template-columns: 1fr; }
  .copy-command button { width: 100%; }
  .pagination { flex-wrap: wrap; }
  .impersonation-bar { align-items: stretch; flex-direction: column; }
  .impersonation-bar button { width: 100%; min-height: 2.75rem; }
}

@media (max-width: 22.5rem) {
  .site-header__inner { gap: var(--space-2); padding-inline: var(--space-2); }
  .site-brand { font-size: 0.88rem; }
  .panel, .card, .exercise-card__body { padding: var(--space-3); }
  .activity-section > :not(.activity-section__heading) { margin-right: var(--space-3); margin-left: var(--space-3); }
  .activity-action-bar { grid-template-columns: 1fr; }
  .toolbar > .button, .toolbar > form, .toolbar > form > .button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
}
dialog.panel {
  width: min(92vw, 42rem);
  max-height: min(88vh, 46rem);
  overflow: auto;
  border: 1px solid var(--border);
}

dialog.panel:not([open]) {
  display: none;
}

dialog.panel::backdrop {
  background: rgb(9 15 28 / 72%);
  backdrop-filter: blur(2px);
}

.grade-matrix { min-width: max-content; }
.grade-matrix th, .grade-matrix td { white-space: nowrap; }
.grade-matrix th:nth-child(-n + 3), .grade-matrix td:nth-child(-n + 3) { position: sticky; background: var(--surface); }
.grade-matrix th:first-child, .grade-matrix td:first-child { left: 0; }
.grade-matrix th:nth-child(2), .grade-matrix td:nth-child(2) { left: 9rem; }
.grade-matrix th:nth-child(3), .grade-matrix td:nth-child(3) { left: 17rem; border-right: 2px solid var(--border); }
.grade-matrix__publication th { border-top: 0; }
.grade-state { display: inline-grid; width: 1.55rem; height: 1.55rem; place-items: center; color: #fff; font-size: .78rem; font-weight: 900; border-radius: 999px; }
.grade-state--p { background: #138a4b; }
.grade-state--b { color: #5d3900; background: #f2bd3d; }
.grade-state--s { background: #b32a2a; }
.badge--group { min-width: 2.5rem; justify-content: center; }
.badge--group-sin { color: #4630a3; background: #e5ddff; }
.badge--group-ga { color: #075a78; background: #d9f1fb; }
.badge--group-gb { color: #7a3a00; background: #ffead4; }
.assessment-board { width: 100%; }
.assessment-board--full-bleed { width: 100vw; max-width: none; margin-inline: calc(50% - 50vw); padding-inline: clamp(1rem, 3.25vw, 4.5rem); box-sizing: border-box; }
.assessment-board__table { width: 100%; overflow-x: auto; border: 1px solid var(--border); border-radius: .7rem; background: var(--surface); }
.assessment-board__table table { width: 100%; min-width: 70rem; table-layout: fixed; border-collapse: separate; border-spacing: 0; }
.assessment-board__table th { width: 22%; vertical-align: top; text-align: left; background: #f2f5fa; }
.assessment-board__table td { width: 19.5%; min-width: 11.25rem; vertical-align: top; background: #fafcff; transition: background-color .16s ease, box-shadow .16s ease; }
.assessment-board__table th, .assessment-board__table td { padding: .8rem; }
.assessment-board__dropzone--active { background: #e9f0ff !important; box-shadow: inset 0 0 0 .2rem #155eef; }
.assessment-answer-card { display: grid; gap: .5rem; margin: .35rem 0; padding: .7rem; background: var(--surface); border: 1px solid var(--border); border-left: .3rem solid #4d72de; border-radius: .45rem; box-shadow: 0 1px 2px rgb(11 27 51 / 8%); cursor: grab; touch-action: none; }
.assessment-answer-card--dragging { cursor: grabbing; opacity: .4; }
.assessment-answer-card p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.assessment-answer-card select { min-width: 0; }
.assessment-answer-card__count { color: #31496f; font-size: .8rem; font-weight: 700; }
.assessment-answer-card__expected { color: #31496f; font-size: .85rem; font-weight: 700; }
.assessment-answer-card__score { color: #213d74; font-size: .82rem; font-weight: 800; }
.assessment-answer-card--arriving { opacity: 0; }
.assessment-answer-card--flying { position: fixed; z-index: 100; margin: 0; pointer-events: none; transition: transform .5s cubic-bezier(.2, .8, .2, 1); }
@media (prefers-reduced-motion: reduce) { .assessment-answer-card--flying { transition-duration: .01ms; } }
@media (max-width: 48rem) { .assessment-board--full-bleed { padding-inline: .75rem; }.assessment-board__table table { min-width: 64rem; }.assessment-board__table th, .assessment-board__table td { padding: .55rem; } }
.feedback-review { width: min(100% - 2rem, 70rem); margin-inline: auto; padding-block: 1.5rem 3rem; }
.feedback-review__header { border-bottom: 1px solid var(--border); padding-bottom: 1rem; }.feedback-review__header h1 { margin-bottom: .35rem; }
.feedback-review__metrics { display: flex; flex-wrap: wrap; gap: .65rem; margin: 1rem 0 0; }.feedback-review__metrics div { min-width: 8rem; padding: .65rem .8rem; border: 1px solid var(--border); border-radius: .5rem; background: var(--surface); }.feedback-review__metrics dt { color: var(--muted); font-size: .8rem; }.feedback-review__metrics dd { margin: .2rem 0 0; font-weight: 800; font-size: 1.2rem; }
.feedback-review__navigation { position: sticky; top: .5rem; z-index: 2; display: flex; align-items: end; flex-wrap: wrap; gap: .6rem; padding: .75rem; border: 1px solid var(--border); border-radius: .7rem; background: color-mix(in srgb, var(--surface) 94%, white); box-shadow: 0 .25rem 1rem rgba(15, 23, 42, .08); }.feedback-review__student { display: grid; gap: .2rem; font-weight: 700; }.feedback-review__student select { min-width: 13rem; }.feedback-review__status { min-height: 1.25rem; margin: 0; font-weight: 700; }.feedback-review__status--error, .feedback-card__state--error { color: #b42318; }
.feedback-review__document { display: grid; gap: 1rem; }.feedback-card { padding: 1.1rem; border: 1px solid var(--border); border-radius: .7rem; background: var(--surface); }.feedback-card h2 { margin: 0; font-size: 1.1rem; }.feedback-card h2 span { color: var(--muted); font-size: .9rem; font-weight: 500; }.feedback-card h3 { margin: .9rem 0 .25rem; font-size: .9rem; }.feedback-card p { margin: 0; }.feedback-card__answer { padding: .75rem; border-left: .22rem solid #9ca3af; background: #f7f8fa; white-space: pre-wrap; }.feedback-card__editor { display: grid; gap: .35rem; margin-top: 1rem; font-weight: 700; }.feedback-card__editor textarea { width: 100%; box-sizing: border-box; resize: vertical; font: inherit; font-weight: 400; }.feedback-card__actions { display: flex; align-items: center; gap: .65rem; margin-top: .55rem; }.feedback-card__state--modified { color: #a15c00; }.feedback-card__state--saved { color: #176b3a; }
@media (max-width: 48rem) { .feedback-review { width: min(100% - 1rem, 70rem); }.feedback-review__navigation { position: static; }.feedback-review__navigation .button { font-size: .85rem; } }

.presoutenance-review-form.is-saving { opacity: .62; pointer-events: none; transition: opacity .18s ease; }
.presoutenance-review-form.is-saved { outline: 3px solid #16a34a; outline-offset: 4px; transition: outline-color .2s ease; }
.presoutenance-feedback { min-height: 1.25rem; margin: 0; font-size: .9rem; font-weight: 700; }
.presoutenance-feedback--success { color: #176b3a; }
.presoutenance-feedback--error { color: #b42318; }

.assessment-wait { min-height: 18rem; display: grid; place-content: center; text-align: center; overflow: hidden; }
.assessment-wait__tracks { position: relative; width: min(34rem, 78vw); height: 4.5rem; margin: 0 auto 1rem; overflow: hidden; border-bottom: .35rem solid #1b293e; background: repeating-linear-gradient(90deg, transparent 0 2.2rem, #8da0b6 2.2rem 2.4rem); }
.assessment-wait__train { position: absolute; bottom: .42rem; display: grid; place-items: center; width: 5.5rem; height: 2.5rem; border: .2rem solid #17223a; border-radius: .65rem .65rem .25rem .25rem; background: linear-gradient(135deg, #f6f8fb 0 40%, #1d4774 40% 65%, #f6f8fb 65%); color: #17223a; font-weight: 950; letter-spacing: .06em; box-shadow: inset 0 -.4rem #17223a; }
.assessment-wait__train::before, .assessment-wait__train::after { content: ''; position: absolute; bottom: -.72rem; width: .62rem; height: .62rem; border-radius: 50%; background: #17223a; }.assessment-wait__train::before { left: .7rem; }.assessment-wait__train::after { right: .7rem; }
.assessment-wait__train--one { animation: assessment-train-sl 10s linear infinite; }.assessment-wait__train--two { animation: assessment-train-sl 10s linear 5s infinite; }
.assessment-shell-header { position: sticky; top: 0; z-index: 40; display: flex; min-height: 3.5rem; align-items: center; justify-content: space-between; gap: 1rem; padding: .35rem clamp(1rem, 3vw, 2.5rem); background: #101928; color: #fff; box-shadow: 0 1px 0 rgb(255 255 255 / 12%); font-weight: 800; }
.assessment-shell-header__identity { overflow: hidden; max-width: 65%; text-overflow: ellipsis; white-space: nowrap; }
.assessment-shell-header__meta { display: flex; min-width: 0; align-items: center; justify-content: flex-end; }
.assessment-shell-header__timer { display: grid; width: 3rem; height: 3rem; place-items: center; border: .12rem solid #cfd8e4; border-radius: 50%; background: conic-gradient(#cfd8e4 calc(var(--assessment-progress, 0) * 1%), #171717 0); box-shadow: inset 0 0 0 .3rem #171717; color: #fff; font-size: .75rem; font-variant-numeric: tabular-nums; line-height: 1.1; text-align: center; white-space: nowrap; }
.assessment-shell-header__timer strong { max-width: 2.45rem; overflow: hidden; font: inherit; text-overflow: clip; }
.assessment-shell-header__timer--part-two { display: block; width: auto; height: auto; padding: .42rem .75rem; border: 1px solid #506078; border-radius: .2rem; background: #171717; box-shadow: none; font-size: .95rem; }
.page-shell--assessment, .page-shell:has(.assessment--trottinette) { width: 100%; max-width: none; margin: 0; }
.assessment-entry { max-width: 60rem; margin: 4vh auto; }
.assessment-entry__ready { text-align: center; }
.assessment-entry__ready[hidden], .assessment-wait[hidden] { display: none; }
.assessment-entry__error { min-height: 1.5rem; margin: .9rem 0 0; color: #9c1c1c; font-weight: 700; }
.assessment-fullscreen-gate { position: fixed; z-index: 90; inset: 0; display: grid; place-items: center; padding: 1.5rem; color: #fff; background: rgb(10 13 18 / 98%); }
.assessment-fullscreen-gate[hidden] { display: none; }
.assessment-fullscreen-gate > div { width: min(100%, 34rem); padding: 2rem; text-align: center; border: 1px solid #718096; background: #151b24; box-shadow: 0 1rem 3rem rgb(0 0 0 / 45%); }
.assessment-fullscreen-gate h2 { margin-top: 0; }
.assessment-fullscreen-gate p:last-child { min-height: 1.4rem; color: #ffcbcb; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; overflow-wrap: anywhere; clip: rect(0, 0, 0, 0); white-space: normal; border: 0; }
.assessment--trottinette { min-height: calc(100vh - 7rem); padding: clamp(.75rem, 2vw, 1.5rem); color: #e7e7e7; background: #252525; border: 1px solid #111; box-shadow: 0 1rem 3rem rgb(0 0 0 / 22%); }
.assessment-written-identity { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; padding: .8rem 1rem; color: #111; background: #fff; border: 1px solid #777; font-family: Georgia, "Times New Roman", serif; }.assessment-written-identity label { display: flex; align-items: baseline; gap: .45rem; }.assessment-written-identity input { min-width: min(17rem, 60vw); padding: .25rem; color: #111; background: #fff; border: 0; border-bottom: 1px solid #111; border-radius: 0; font: inherit; }
.assessment--trottinette .panel, .assessment--trottinette .assessment-document { color: #161616; }
.assessment-focus-heading { padding: .15rem 0 .4rem; border-bottom: 1px solid #727272; }.assessment-focus-heading h1 { margin: 0; color: #eee; font-size: .9rem; font-weight: 700; letter-spacing: .18em; text-align: center; text-transform: uppercase; }
.assessment-chain { margin: 0; padding: clamp(.4rem, 1.4vw, 1rem); background: #2a2a2a; border: 1px solid #575757; }
.functional-diagram { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(7.5rem, .095fr); grid-template-rows: auto clamp(3.75rem, 5vw, 5.5rem) auto; gap: 0; padding: clamp(1rem, 2.4vw, 2rem); background: #fff; overflow: hidden; }
.functional-diagram::before { position: absolute; top: .5rem; right: 10%; left: 5%; z-index: 0; height: 44%; border: .28rem solid #050505; border-bottom: 0; content: ''; pointer-events: none; }.functional-diagram::after { position: absolute; right: 10%; bottom: .5rem; left: 0; z-index: 0; height: 43%; border: .28rem solid #050505; border-top: 0; content: ''; pointer-events: none; }
.functional-diagram__information, .functional-diagram__energy { position: relative; z-index: 1; min-width: 0; padding: clamp(2rem, 4vw, 3.25rem) clamp(1.25rem, 3vw, 3rem); border: 1px solid #111; background: #a7a7a7; }.functional-diagram__information { grid-column: 1; grid-row: 1; margin: 4.9rem 0 0 9%; }.functional-diagram__energy { grid-column: 1 / span 2; grid-row: 3; margin-right: 7%; }
.functional-diagram__information::before, .functional-diagram__energy::before { position: absolute; top: 50%; left: -4.6rem; width: 4.6rem; height: .48rem; content: ''; transform: translateY(-50%); }.functional-diagram__information::before { background: #050505; }.functional-diagram__energy::before { background: #98cf4b; }.functional-diagram__information::after, .functional-diagram__energy::after { position: absolute; top: 50%; left: -1rem; width: 1.15rem; height: 1.15rem; content: ''; transform: translateY(-50%) rotate(45deg); }.functional-diagram__information::after { background: #050505; }.functional-diagram__energy::after { background: #98cf4b; }
.functional-diagram__blocks { display: grid; gap: clamp(1.25rem, 4vw, 4rem); }.functional-diagram__blocks--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }.functional-diagram__blocks--four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.functional-block { position: relative; display: grid; min-width: 0; }.functional-block__verb { z-index: 2; width: 100%; min-height: clamp(7rem, 13vw, 10.5rem); padding: .75rem; resize: none; overflow: hidden; color: #111; background: #fff; border: .18rem solid #a9c7ea; border-radius: 2rem; font: 700 clamp(.9rem, 1.7vw, 1.25rem) var(--font-sans); text-align: center; }.functional-block:nth-child(3n+2) .functional-block__verb { border-color: #e7a2a2; }.functional-block:nth-child(3n) .functional-block__verb { border-color: #bfd687; }.functional-block--energy:nth-child(4) .functional-block__verb { border-color: #efb26d; }
.functional-block__callout { position: relative; z-index: 3; min-height: 5.75rem; padding: .25rem; background: #fff; border: 1px solid #111; }.functional-block__callout::after { position: absolute; z-index: -1; left: 50%; width: 1.05rem; height: 1.05rem; background: #fff; border-right: 1px solid #111; border-bottom: 1px solid #111; content: ''; transform: translateX(-50%) rotate(45deg); }.functional-block__callout textarea { width: 100%; min-height: 5.1rem; padding: .45rem; resize: none; overflow: hidden; color: #111; background: transparent; border: 0; font: .9rem/1.4 var(--font-sans); }.functional-block--info .functional-block__callout { order: -1; margin-bottom: 2.25rem; }.functional-block--info .functional-block__callout::after { bottom: -.57rem; }.functional-block--energy .functional-block__callout { margin-top: 2.25rem; }.functional-block--energy .functional-block__callout::after { top: -.57rem; border-top: 1px solid #111; border-left: 1px solid #111; border-right: 0; border-bottom: 0; }
.functional-block__arrow { position: absolute; z-index: 4; top: 50%; right: calc(clamp(1.25rem, 4vw, 4rem) * -1); width: clamp(1.25rem, 4vw, 4rem); height: .45rem; background: #f5b77e; transform: translateY(-50%); }.functional-block__arrow::after { position: absolute; top: 50%; right: -.1rem; width: .8rem; height: .8rem; border-top: .25rem solid #f5b77e; border-right: .25rem solid #f5b77e; content: ''; transform: translateY(-50%) rotate(45deg); }.functional-block--energy .functional-block__arrow { background: #97cf49; }.functional-block--energy .functional-block__arrow::after { border-color: #97cf49; }.functional-block:last-child .functional-block__arrow { display: none; }
.functional-diagram__command { grid-column: 1; grid-row: 2; z-index: 4; width: .36rem; height: 100%; margin-left: 42%; background: #050505; }.functional-diagram__command::after { position: absolute; bottom: -.1rem; left: 50%; width: 1.2rem; height: 1.2rem; background: #050505; clip-path: polygon(50% 100%, 0 0, 100% 0); content: ''; transform: translateX(-50%); }.functional-diagram__act { position: relative; grid-column: 2; grid-row: 1 / span 3; z-index: 3; display: grid; min-height: 17rem; place-items: center; margin: 10rem 0 2rem; color: #111; background: linear-gradient(135deg, #ececec, #898989); border: .2rem solid #1b1b1b; border-radius: 1.55rem; font-size: clamp(1rem, 2.4vw, 1.45rem); font-weight: 800; }.functional-diagram__act::before { position: absolute; top: -.95rem; left: 50%; width: 2.4rem; height: 2.7rem; background: #d89191; clip-path: polygon(25% 0, 75% 0, 75% 55%, 100% 55%, 50% 100%, 0 55%, 25% 55%); content: ''; transform: translateX(-50%); }.functional-diagram__act::after { position: absolute; right: 50%; bottom: -1.35rem; width: 2.1rem; height: 2.4rem; background: #2c79c3; clip-path: polygon(25% 0, 75% 0, 75% 55%, 100% 55%, 50% 100%, 0 55%, 25% 55%); content: ''; transform: translateX(50%); }
.assessment__actions { position: static; display: flex; justify-content: center; margin: clamp(2rem, 4vw, 4rem) 0 clamp(3rem, 6vw, 5rem); padding: 1rem; background: #202020; border: 1px solid #575757; }.assessment--trottinette .assessment__actions .button { min-width: min(100%, 22rem); color: #fff; background: #202020; border-color: #aaa; }.assessment--trottinette .assessment__actions .button:hover { background: #111; }.assessment__actions .button[hidden] { display: none; }
.assessment-submit-dialog { width: min(29rem, calc(100% - 2rem)); padding: 1.5rem; color: #eee; background: #252525; border: 1px solid #898989; box-shadow: 0 1rem 4rem rgb(0 0 0 / 65%); }.assessment-submit-dialog::backdrop { background: rgb(0 0 0 / 70%); }.assessment-submit-dialog h2 { margin-top: 0; }.assessment-submit-dialog .button { color: #fff; background: #171717; border-color: #aaa; }.assessment-submit-dialog .button--secondary { color: #222; background: #eee; }.assessment-submit-dialog p:last-child { min-height: 1.5rem; color: #ffc6c6; font-weight: 700; }
.assessment-sanction { display: grid; min-height: 70vh; place-content: center; gap: 1rem; padding: 2rem; background: #050505; color: #fff; text-align: center; }.assessment-sanction[hidden] { display: none; }.assessment-sanction h2 { color: #f5b1ae; }
.assessment-preview-tools { position: sticky; top: .5rem; z-index: 10; display: flex; flex-wrap: wrap; gap: .5rem; padding: .7rem; border: .15rem dashed #5846a2; border-radius: .6rem; background: #f5f1ff; }.assessment-preview-tools strong { color: #4630a3; }
.assessment-preview-mask { position: fixed; inset: 0; z-index: 40; display: grid; place-content: center; gap: 1rem; padding: 2rem; background: rgb(3 7 13 / 96%); color: #fff; text-align: center; }.assessment-preview-mask[hidden] { display: none; }
.assessment-document__figure { display: block; width: min(100%, 48rem); margin: 1rem auto; border: 1px solid #b5bbc3; background: #f6f7f8; }
.assessment-document__source { margin: 1rem 0; }
.assessment-document__source figcaption { margin-top: .45rem; color: #53606f; font-size: .78rem; font-style: italic; }
.assessment-documents { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 1.5rem; margin: 0 0 clamp(2rem, 4vw, 4rem); }
.assessment-documents__heading { padding: .3rem .2rem .55rem; color: #f4f5f7; }.assessment-documents__heading .eyebrow { margin: 0; color: #c7d4e6; }.assessment-documents__heading p:last-child { margin: .3rem 0 0; color: #e2e5e9; font-size: .9rem; }
.assessment-questions { display: grid; gap: clamp(1.15rem, 2vw, 2rem); }
.assessment-section { display: grid; gap: 1rem; margin: clamp(1.75rem, 4vw, 3.5rem) 0; }.assessment-section:first-of-type { margin-top: 0; }.assessment-section__heading { display: flex; justify-content: space-between; gap: 1rem; align-items: baseline; padding: .7rem 1rem; color: #111; background: #e5e7eb; border: 1px solid #6b7280; }.assessment-section__heading h2 { margin: 0; font-size: clamp(1.05rem, 2vw, 1.35rem); }.assessment-section__heading strong { white-space: nowrap; }
.assessment-presentation { min-width: 0; margin: 1.2rem 0 0; padding: 1rem; color: #111; background: #f7f8fa; border: 1px solid #87909c; }.assessment-presentation p { font-family: Arial, sans-serif; font-size: .96rem; line-height: 1.45; }.assessment-presentation ul { display: flex; flex-wrap: wrap; gap: .45rem; padding: 0; margin: 1rem 0; list-style: none; }.assessment-presentation code { display: inline-block; max-width: 100%; padding: .25rem .45rem; overflow-wrap: anywhere; color: #111; background: #fff; border: 1px solid #8c939b; font: .95rem/1.3 ui-monospace, SFMono-Regular, Menlo, monospace; }.assessment-presentation__columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }.assessment-presentation__columns section { min-width: 0; min-height: 6rem; padding: .75rem; background: #fff; border: 1px solid #7a8490; }.assessment-presentation__columns h3 { margin: 0 0 .5rem; font-size: 1rem; }.assessment-presentation__instruction { margin-top: 0; }.assessment-classification__headings, .assessment-classification__row { display: grid; grid-template-columns: minmax(9rem, 1fr); grid-auto-flow: column; grid-auto-columns: minmax(10rem, 1fr); gap: .5rem; align-items: center; }.assessment-classification__headings { padding: .5rem; font-weight: 750; background: #e5e7eb; }.assessment-classification__row { padding: .55rem; background: #fff; border: 1px solid #7a8490; border-top: 0; }.assessment-classification__row > * { min-width: 0; }.assessment-classification__row label { display: flex; min-height: 2rem; align-items: center; gap: .35rem; overflow-wrap: anywhere; }.assessment-presentation--table { overflow-x: auto; }.assessment-presentation table { width: 100%; min-width: 42rem; border-collapse: collapse; }.assessment-presentation th, .assessment-presentation td { min-width: 0; padding: .55rem; overflow-wrap: anywhere; border: 1px solid #7a8490; text-align: left; vertical-align: top; }.assessment-presentation thead { background: #e5e7eb; }.assessment-presentation td { color: #59636f; }.assessment-presentation td input, .assessment-presentation td textarea { box-sizing: border-box; width: 100%; min-width: 0; }.assessment-presentation--network { margin-inline: 0; }.assessment-presentation figcaption { margin-bottom: .8rem; font-weight: 700; }.network-path { display: flex; align-items: stretch; justify-content: center; gap: .35rem; min-width: 0; }.network-path__node { display: grid; flex: 1 1 9rem; min-width: 0; place-content: center; gap: .3rem; padding: .8rem; text-align: center; background: #fff; border: 2px solid #111; border-radius: .45rem; }.network-path__node span { font-size: .9rem; }.network-path__arrow { display: grid; place-content: center; font-size: 1.8rem; font-weight: 800; }

@media (max-width: 44rem) { .assessment-classification__headings { display: none; }.assessment-classification__row { grid-template-columns: 1fr; grid-auto-flow: row; gap: .35rem; }.assessment-classification__row label { padding: .3rem .4rem; border: 1px solid #c5cad1; }.assessment-presentation--table { overflow: visible; }.assessment-presentation--table table, .assessment-presentation--table thead, .assessment-presentation--table tbody, .assessment-presentation--table tr, .assessment-presentation--table th, .assessment-presentation--table td { display: block; min-width: 0; }.assessment-presentation--table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }.assessment-presentation--table tr { margin-block: .8rem; border: 1px solid #7a8490; }.assessment-presentation--table th[scope="row"] { background: #e5e7eb; }.assessment-presentation--table td { display: grid; grid-template-columns: minmax(8rem, .85fr) minmax(0, 1fr); gap: .5rem; border-width: 1px 0 0; }.assessment-presentation--table td::before { content: attr(data-column-label); font-weight: 700; color: #111; } }
@media (max-width: 42rem) { .assessment-presentation__columns { grid-template-columns: 1fr; }.network-path { flex-direction: column; align-items: stretch; }.network-path__arrow { transform: rotate(90deg); }.assessment-section__heading { align-items: flex-start; flex-direction: column; gap: .25rem; } }
.assessment-document { min-width: 0; padding: clamp(1rem, 1.8vw, 1.5rem); color: #151515; background: #fff; border: 1px solid #c2c7ce; box-shadow: 0 .25rem .8rem rgb(0 0 0 / 18%); }
.assessment-document--source { grid-column: 1 / -1; }
.assessment-document h2 { margin: 0 0 .55rem; color: #172333; font-size: 1.05rem; }
.assessment-document p { margin: 0; color: #242424; line-height: 1.55; }
.assessment--trottinette .panel { margin-block: clamp(1.5rem, 2.5vw, 2.5rem); padding: clamp(1.35rem, 2.2vw, 2.15rem); }
.assessment--trottinette .panel p { margin: .85rem 0 1.2rem; line-height: 1.6; }
.assessment--trottinette .panel textarea { min-height: clamp(8.5rem, 13vw, 11rem); }
@media (max-width: 76rem) { .assessment-documents { grid-template-columns: 1fr; } }

/* FERULE: a single, printable-looking subject rather than two scrolling panes. */
.assessment--trottinette:has(.assessment-paper) { background: #dfe3e7; border: 0; box-shadow: none; color: #111; }
.assessment-paper { width: min(100%, 96rem); margin: 0 auto; padding: clamp(1.25rem, 3vw, 3.5rem); color: #111; background: #fff; border: 1px solid #8c939b; box-shadow: 0 .5rem 1.8rem rgb(0 0 0 / 16%); }
.assessment-paper__masthead { margin-bottom: clamp(2rem, 4vw, 3.5rem); padding-bottom: 1.25rem; border-bottom: 2px solid #161616; }
.assessment-paper__brand { display: flex; justify-content: space-between; gap: 1rem; align-items: center; }
.assessment-paper__brand img { display: block; width: min(100%, 15rem); height: auto; mix-blend-mode: multiply; }
.assessment-paper__brand span { padding: .2rem .45rem; color: #fff; background: #111; font-family: Arial, sans-serif; font-size: .82rem; font-weight: 800; }
.assessment-paper__identity { display: flex; flex-wrap: wrap; gap: .6rem 1.2rem; align-items: baseline; margin-top: 1.25rem; padding: .7rem 0; border-top: 1px solid #555; border-bottom: 1px solid #555; font-family: Georgia, "Times New Roman", serif; font-size: .95rem; }.assessment-paper__identity label { display: inline-flex; align-items: baseline; gap: .35rem; }.assessment-paper__identity input { width: min(15rem, 34vw); padding: .15rem .25rem; color: #111; background: #fff; border: 0; border-bottom: 1px solid #111; border-radius: 0; font: inherit; }
.assessment-paper__masthead h2 { margin: 1.8rem 0 .4rem; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.45rem, 2.5vw, 2.2rem); }
.assessment-paper__masthead p { margin: 0; font-size: .96rem; }
.assessment-paper__section { margin: clamp(2.25rem, 5vw, 4.5rem) 0; }
.assessment-paper__section:first-of-type { margin-top: 0; }
.assessment-paper__questions { display: grid; gap: clamp(1.25rem, 2.5vw, 2.4rem); margin-top: clamp(1.25rem, 2.5vw, 2.2rem); }
.assessment-paper .assessment-document { padding: 0 0 1.2rem; color: #111; background: transparent; border: 0; border-bottom: 1px solid #777; box-shadow: none; }
.assessment-paper .assessment-document h2 { color: #111; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.1rem, 1.8vw, 1.4rem); }
.assessment-paper .assessment-document p { color: #151515; font-family: Georgia, "Times New Roman", serif; font-size: 1.03rem; line-height: 1.7; }
.assessment-paper .assessment-document__source { margin: 1.2rem 0; }
.assessment-paper .assessment-document__figure { width: min(100%, 56rem); margin: 0; border: 1px solid #555; background: #fff; cursor: zoom-in; }
.assessment-question { padding: clamp(1.1rem, 2vw, 1.75rem); color: #111; background: #fff; border: 1px solid #171717; box-shadow: none; }
.assessment-question__heading { display: grid; gap: .65rem; }
.assessment-question label { display: inline-block; width: max-content; padding: .15rem .45rem; color: #fff; background: #111; font-size: .92rem; font-weight: 800; }
.assessment-question label.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: 0; overflow: hidden; overflow-wrap: anywhere; clip: rect(0, 0, 0, 0); color: inherit; background: transparent; font-size: inherit; font-weight: inherit; white-space: normal; }
.assessment-question p { margin: 0; font-family: Georgia, "Times New Roman", serif; font-size: 1.04rem; line-height: 1.65; }
.assessment-question input, .assessment-question textarea { width: 100%; margin-top: 1.25rem; padding: .75rem; color: #111; background: #fff; border: 1px solid #222; border-radius: 0; box-shadow: inset 0 0 0 1px #eee; font: 1rem/1.45 Arial, sans-serif; }
.assessment-question textarea { min-height: clamp(8rem, 14vw, 12rem); max-width: 100%; resize: none; overflow: hidden; overflow-wrap: anywhere; word-break: break-word; }
.assessment-question textarea.assessment-answer--short { min-height: 3rem; }
.assessment-presentation td textarea { width: 100%; min-width: 0; min-height: 2.65rem; margin: 0; padding: .45rem; resize: none; overflow: hidden; overflow-wrap: anywhere; word-break: break-word; }
.assessment-question input { min-height: 3rem; }
.assessment--trottinette:has(.assessment-paper) .assessment__actions { width: min(100%, 96rem); margin: 0 auto; background: #111; border-color: #111; }
.assessment-lightbox { position: fixed; z-index: 120; inset: 0; display: grid; place-items: center; padding: 5vh 5vw; background: rgb(0 0 0 / 70%); opacity: 0; animation: assessment-lightbox-fade 180ms ease-out forwards; }.assessment-lightbox > img { display: block; max-width: 90vw; max-height: 90vh; cursor: zoom-out; box-shadow: 0 1rem 4rem rgb(0 0 0 / 55%); opacity: 0; transform: scale(.96); animation: assessment-lightbox-zoom 200ms ease-out forwards; }.assessment-lightbox__close { position: fixed; top: 1rem; right: 1rem; width: 2.25rem; height: 2.25rem; padding: 0; color: #fff; background: rgb(0 0 0 / 55%); border: 1px solid rgb(255 255 255 / 75%); border-radius: 50%; font-size: 1.7rem; line-height: 1; }.assessment-lightbox--closing { animation: assessment-lightbox-fade-out 180ms ease-in forwards; }.assessment-lightbox--closing > img { animation: assessment-lightbox-zoom-out 180ms ease-in forwards; }@keyframes assessment-lightbox-fade { to { opacity: 1; } }@keyframes assessment-lightbox-zoom { to { opacity: 1; transform: scale(1); } }@keyframes assessment-lightbox-fade-out { to { opacity: 0; } }@keyframes assessment-lightbox-zoom-out { to { opacity: 0; transform: scale(.96); } }@media (prefers-reduced-motion: reduce) { .assessment-lightbox, .assessment-lightbox > img, .assessment-lightbox--closing, .assessment-lightbox--closing > img { animation-duration: 1ms; } }
@media (max-width: 48rem) { .assessment-paper { padding: 1rem; }.assessment-paper__brand { align-items: flex-start; flex-direction: column; }.assessment-paper__identity { line-height: 1.8; }.assessment-paper__section { margin-block: 2.2rem; }.assessment-question { padding: 1rem; } }
@media (max-width: 30rem) { .assessment-shell-header { min-height: 3.15rem; padding-inline: .75rem; }.assessment-shell-header__identity { max-width: calc(100% - 3.5rem); font-size: .88rem; }.assessment-shell-header__timer { width: 2.6rem; height: 2.6rem; font-size: .68rem; }.assessment-shell-header__timer--part-two { width: auto; height: auto; padding: .36rem .55rem; font-size: .8rem; } }

/* The seven P1 boxes are a diagram, not a long mobile form.  On ordinary
   lycée desktop screens the complete scheme remains in the viewport. */
@media (min-width: 55rem) and (min-height: 42rem) {
  .assessment--trottinette:has(.assessment-chain) { min-height: calc(100vh - 3.5rem); padding: .55rem clamp(.7rem, 1.5vw, 1.5rem); }
  .assessment--trottinette:has(.assessment-chain) .assessment-focus-heading { padding-bottom: .25rem; }
  .assessment--trottinette:has(.assessment-chain) #assessment-form { gap: .55rem; }
  .assessment-chain { padding: .45rem; }
  .functional-diagram { padding: clamp(.6rem, 1.25vw, 1.15rem); }
  .functional-diagram__information, .functional-diagram__energy { padding: clamp(1rem, 1.8vw, 1.75rem) clamp(.8rem, 1.8vw, 1.65rem); }
  .functional-diagram__information { margin-top: 3.35rem; }
  .functional-diagram__blocks { gap: clamp(.7rem, 2vw, 2rem); }
  .functional-block__verb { min-height: clamp(4.65rem, 9vh, 6.4rem); padding: .5rem; }
  .functional-block__callout { min-height: clamp(3.65rem, 7vh, 4.75rem); }
  .functional-block__callout textarea { min-height: clamp(3.1rem, 6vh, 4.05rem); padding: .35rem; }
  .functional-block--info .functional-block__callout { margin-bottom: 1.5rem; }
  .functional-block--energy .functional-block__callout { margin-top: 1.5rem; }
  .functional-diagram__act { min-height: 11rem; margin: 6.25rem 0 1.1rem; }
  .assessment__actions { margin: .25rem 0 .5rem; padding: .55rem; }
}
@keyframes assessment-train-sl { from { transform: translateX(-7rem); } to { transform: translateX(calc(100% + 7rem)); } }
@media (max-width: 54rem) { .functional-diagram { grid-template-columns: 1fr; }.functional-diagram__act { min-height: 4rem; }.functional-diagram__blocks--four { grid-template-columns: repeat(2, minmax(0, 1fr)); }.functional-block__arrow { display: none; } }

.assessment-complete-dialog { width: min(34rem, calc(100vw - 2rem)); padding: 0; color: #151515; border: 1px solid #161616; box-shadow: 0 1rem 3rem rgb(0 0 0 / 35%); }
.assessment-complete-dialog::backdrop { background: rgb(0 0 0 / 58%); }
.assessment-complete-dialog > .stack { padding: clamp(1.5rem, 4vw, 2.5rem); }
.assessment-complete-dialog h2 { margin: 0; }
.assessment-complete-dialog form { margin: 1rem 0 0; }

/* Teacher-only student portraits */
.student-identity {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  min-width: 0;
}

.student-identity__text {
  display: inline-flex;
  flex-direction: column;
  min-width: 0;
}

.student-identity--large {
  gap: 1rem;
}

.student-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  flex: 0 0 auto;
  object-fit: cover;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: #eef2f7;
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1;
  text-transform: uppercase;
}

.student-avatar--small {
  width: 1.75rem;
  height: 1.75rem;
  font-size: 0.72rem;
}

.student-avatar--fallback {
  overflow: hidden;
}

.student-avatar--soutenance {
  width: 3.5rem;
  height: 3.5rem;
}

.student-avatar--large {
  width: 5.5rem;
  height: 5.5rem;
}

/* Interactive PDF zone editor (teacher) */
.zone-editor { display: grid; gap: var(--space-3); }
.zone-editor__toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); }
.zone-editor__state { margin: 0 auto 0 0; color: var(--muted); font-weight: 700; }
.zone-editor__check { display: inline-flex; align-items: center; gap: var(--space-1); }
.zone-editor__layout { display: grid; grid-template-columns: minmax(0, 1fr) 20rem; align-items: start; gap: var(--space-4); }
.zone-editor__page { position: relative; overflow: hidden; background: #fff; border: 1px solid var(--border); box-shadow: var(--shadow); }
.zone-editor__page > img { display: block; width: 100%; height: auto; user-select: none; pointer-events: none; }
.zone-editor__surface { position: absolute; inset: 0; cursor: crosshair; touch-action: none; }
[data-editable="false"] .zone-editor__surface { cursor: default; }
.zone-editor__zone { position: absolute; box-sizing: border-box; overflow: hidden; padding: 0 .25rem; color: #0b3d91; font-size: .75rem; line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; background: rgb(21 94 239 / 12%); border: 2px dashed #155eef; cursor: move; }
.zone-editor__zone.is-selected { background: rgb(244 180 26 / 20%); border: 2px solid #b7791f; }
.zone-editor__zone.is-drawing { pointer-events: none; }
.zone-editor__handle { position: absolute; right: 0; bottom: 0; width: .8rem; height: .8rem; background: #155eef; cursor: nwse-resize; }
.zone-editor__panel h2 { margin: 0; font-size: 1.05rem; }
.zone-editor__list { display: grid; margin: 0; padding: 0; gap: var(--space-1); list-style: none; }
.zone-editor__item { width: 100%; padding: .35rem .5rem; text-align: left; background: transparent; border: 1px solid var(--border); border-radius: .3rem; cursor: pointer; }
.zone-editor__item.is-selected { border-color: #b7791f; font-weight: 700; }
.zone-editor__form label:not(.zone-editor__check) { display: grid; gap: .2rem; }
.zone-editor__advanced { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
.zone-editor [hidden] { display: none; }
@media (max-width: 60rem) { .zone-editor__layout { grid-template-columns: 1fr; } }

/* csp-low-and-ops : compteurs cliquables de la page Opérations. */
a.ops-metric { color: inherit; text-decoration: none; }
a.ops-metric:hover, a.ops-metric:focus-visible { border-color: var(--primary); }
.ops-metric--danger { border-left: 0.3rem solid var(--danger); }
.ops-metric--danger strong { color: var(--danger); }
.ops-metric--warning { border-left: 0.3rem solid #b7791f; }
ul.status-summary { margin: 0; padding: 0; list-style: none; column-gap: var(--space-6); }

/* CSP critical confirmations (style-src 'self' ignores style attributes). */
.assisted-terminal__frame { display: block; width: 100%; height: 72vh; min-height: 22rem; border: 0; border-radius: .5rem; background: #111; }
.confirm-action__consequence { padding: var(--space-3); background: #fff0c2; border-left: 0.3rem solid #b7791f; }
.confirm-action__acknowledge { display: flex; align-items: flex-start; gap: .5rem; font-weight: 600; }
.confirm-action__acknowledge input { margin-top: .25rem; }
.confirm-action__buttons { display: flex; flex-wrap: wrap; gap: .75rem; }
/* The generic .assessment-question label/input rules (Q badge, full-width text input) come later with equal specificity: restore readable radio choices in the classification grid. */
.assessment-question .assessment-classification__row label { display: flex; width: auto; min-height: 2rem; align-items: center; gap: .35rem; padding: .3rem .4rem; color: #111; background: transparent; font-size: .95rem; font-weight: 400; }
.assessment-question .assessment-classification__row input[type="radio"] { flex: none; width: 1.1rem; height: 1.1rem; min-height: 0; margin: 0; padding: 0; box-shadow: none; }

/* --- goal-feedback CONF-2 : barre d'actions d'évaluation (retour à la ligne mobile) --- */
.assessment__actions { flex-wrap: wrap; align-items: center; gap: .5rem 1rem; max-width: 100%; }
.assessment__actions > * { min-width: 0; }
.assessment-device-pseudonym { white-space: normal; overflow-wrap: anywhere; }

/* Moulinettes : panneau « ce qui exécute cette moulinette » (grader-teacher-ui). */
.grader-runtime { display: grid; gap: var(--space-2); margin: 0; }
.grader-runtime div { display: grid; grid-template-columns: minmax(9rem, 14rem) 1fr; gap: var(--space-2); }
.grader-runtime dt { color: var(--muted); font-weight: 650; }
.grader-runtime dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.grader-runtime__readme { max-height: 24rem; white-space: pre-wrap; }
@media (max-width: 40rem) { .grader-runtime div { grid-template-columns: 1fr; gap: 0; } }

/* UXA-6 / UXA-7 : accueils professeur et élève, menu Infrastructure. */
.home-block h2 { margin: 0; }
.home-block h3 { margin: 0; font-size: 1.05rem; }
.home-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-3); padding-block: var(--space-2); border-top: 1px solid var(--border); }
.home-row:first-of-type { border-top: 0; }
.home-row.notice { padding: var(--space-3); border-top: 0; }
.home-row p { margin: 0; }
.home-row form { margin: 0; }
.home-list { display: grid; margin: 0; padding-left: 1.2rem; gap: var(--space-1); }
.home-machine { font-weight: 700; }
.home-machine--ready { color: #0b5c36; }
.home-machine--error { color: var(--danger); }
.nav-more__group { padding: 0.6rem 0.75rem 0.2rem; color: #aab2bc; font-size: 0.78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }
.nav-more__menu a.nav-more__sub { padding-left: 1.4rem; }
.home-sub { display: grid; gap: var(--space-2); }
.home-sub p { margin: 0; }
.nav-more__menu a[aria-current="page"] { color: #fff; background: rgb(255 255 255 / 14%); }

/* --- goal-assess-bugs : contraste AA des textes de la barre d'actions sombre (#202020 / #111) --- */
.assessment__actions #assessment-save-status { color: #f2f2f2; font-weight: 600; }
.assessment__actions .assessment-connectivity { color: #7ee2a0; }
.assessment__actions .assessment-connectivity--pending { color: #ffd27a; }
.assessment__actions .assessment-connectivity--offline { color: #ff9b93; }
.assessment__actions .assessment-device-pseudonym { color: #c9c9c9; }
.assessment__actions .assessment-connectivity__help { color: #9cc7ff; }

/* Exam room locks: focus loss and general pause hide the whole copy. */
.exam-room-lock { z-index: 95; background: #0a0d12; }
.exam-room-lock--pause { z-index: 97; }
.exam-control__out { color: #b42318; font-weight: 700; }
