/* DebateCraft theme: lapis, gold and warm paper.

   One stylesheet for every page, linked after each template's own <style> so
   it wins. It only restyles: no script depends on any selector in this file,
   and every page still works without it. The chamber stage (the 3D canvas and
   the controls drawn on it) is deliberately left alone.

   Rules that have to beat the stylesheets the scripts add later (preflight.css,
   judges.css, manage.css, chamber.css) are prefixed with "body".

   Contents
     1  Tokens              8  Recorder               14  Report: feedback
     2  Base                9  Readiness lights       15  Report: POI and recordings
     3  Top bar            10  Chamber surroundings   16  Live structure
     4  Cards              11  Workspace, judges      17  Login
     5  Buttons, fields    12  Report: overview       18  Explainer (/try)
     6  Home               13  Report: clashes        19  Small screens, motion, print
     7  Round page head */

/* ---- 1. Tokens ----------------------------------------------------------- */
:root {
	color-scheme: light;
	--lapis: #1c3d78;
	--lapis-strong: #16326a;
	--lapis-deep: #0a1736;
	--lapis-tint: #eef2fa;
	--lapis-line: #c8d3ea;
	--gold: #f2c254;
	--gold-deep: #b9852a;
	--gold-tint: #fdf5df;
	--paper: #faf7f0;
	--paper-deep: #f3eee2;
	--surface: #ffffff;
	--ink: #1c2433;
	--ink-soft: #364154;
	--muted: #667085;
	--hairline: #e7e1d5;
	--field-line: #c9c1b0;
	--success: #1d8a4e;
	--success-ink: #17693d;
	--success-tint: #e7f4ec;
	--warning: #b7791f;
	--warning-ink: #7a5310;
	--warning-tint: #fcf2dc;
	--danger: #c0392b;
	--danger-ink: #a02d21;
	--danger-tint: #fcebe8;

	/* Team colours: the same four as the chamber benches. */
	--og: #3B82F6; --og-tint: #e9f1fe; --og-ink: #1d4fb5;
	--oo: #EF4444; --oo-tint: #fdecec; --oo-ink: #b3261e;
	--cg: #10B981; --cg-tint: #e2f6ef; --cg-ink: #0a7552;
	--co: #F59E0B; --co-tint: #fef3dc; --co-ink: #8a5606;

	--radius: 14px;
	--radius-sm: 10px;
	--radius-xs: 7px;
	--shadow-card: 0 1px 2px rgba(10, 23, 54, .04), 0 10px 28px -18px rgba(10, 23, 54, .22);
	--bar-h: 3.5rem;
	--page-max: 80rem;
	--gutter: 1.5rem;
	--measure: 33rem;
	/* Chrome does not know -apple-system; BlinkMacSystemFont is its name for the same
	   system face, so Latin text is set in San Francisco and Chinese in PingFang SC. */
	--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
	--ease: 170ms cubic-bezier(.3, .7, .3, 1);
	--chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1.4 1.4 6 6l4.6-4.6' fill='none' stroke='%231c3d78' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	--chevron-quiet: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1.4 1.4 6 6l4.6-4.6' fill='none' stroke='%23667085' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	--chevron-quiet-up: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1.4 6.6 6 2l4.6 4.6' fill='none' stroke='%23667085' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");

	/* The names the templates' own styles already use. */
	--accent: var(--lapis);
	--tint: var(--lapis-tint);
	--line: var(--hairline);
	--blue: var(--lapis);
	--mint: var(--gold-tint);
}

/* Which bench a seat or team belongs to. Codes first, then the spelled-out names a report may use. */
[data-team^="OG" i], [data-team*="Opening Gov" i], [data-role="PM" i], [data-role="DPM" i],
[data-seat^="PM" i], [data-seat^="DPM" i], [data-seat*="Prime Minister" i] { --team: var(--og); --team-tint: var(--og-tint); --team-ink: var(--og-ink); }
[data-team^="OO" i], [data-team*="Opening Opp" i], [data-role="LO" i], [data-role="DLO" i],
[data-seat^="LO" i], [data-seat^="DLO" i], [data-seat*="Leader of" i] { --team: var(--oo); --team-tint: var(--oo-tint); --team-ink: var(--oo-ink); }
[data-team^="CG" i], [data-team*="Closing Gov" i], [data-role="MG" i], [data-role="GW" i],
[data-seat^="MG" i], [data-seat^="GW" i], [data-seat*="Member of Gov" i], [data-seat*="Member for the Gov" i], [data-seat*="Government Whip" i] { --team: var(--cg); --team-tint: var(--cg-tint); --team-ink: var(--cg-ink); }
[data-team^="CO" i], [data-team*="Closing Opp" i], [data-role="MO" i], [data-role="OW" i],
[data-seat^="MO" i], [data-seat^="OW" i], [data-seat*="Member of Opp" i], [data-seat*="Member of the Opp" i], [data-seat*="Member for the Opp" i], [data-seat*="Opposition Whip" i] { --team: var(--co); --team-tint: var(--co-tint); --team-ink: var(--co-ink); }

/* ---- 2. Base ------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { background: var(--paper); scroll-padding-top: calc(var(--bar-h) + 4.5rem); -webkit-text-size-adjust: 100%; }
body {
	margin: 0; padding: 0; max-width: none;
	background: var(--paper); color: var(--ink);
	font-family: var(--font); font-size: 16px; line-height: 1.7;
	-webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
	overflow-wrap: break-word;
}
main { display: block; max-width: var(--page-max); margin: 0 auto; padding: 1.75rem var(--gutter) 4rem; }
h1, h2, h3, h4 { color: var(--ink); line-height: 1.3; letter-spacing: -.005em; }
h1 { margin: 0 0 .5rem; font-size: 1.75rem; font-weight: 700; }
h2 { margin: 0 0 .5rem; font-size: 1.0625rem; font-weight: 650; }
h3 { margin: 1.5rem 0 .5rem; font-size: 1rem; font-weight: 650; color: var(--ink); }
h4 { margin: 0 0 .4rem; font-size: .95rem; font-weight: 650; }
p { margin: .5rem 0; }
a { color: var(--lapis); text-decoration-thickness: 1px; text-underline-offset: 3px; transition: color var(--ease); }
a:hover { color: var(--lapis-deep); }
strong { font-weight: 650; }
.muted { color: var(--muted); }
section { border-top: 0; margin-top: 0; padding-top: 0; }
summary { cursor: pointer; }
output, .countdown, time { font-variant-numeric: tabular-nums; }
::selection { background: #dbe5f8; }

button:focus-visible, a:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible {
	outline: 2px solid var(--gold-deep); outline-offset: 2px; box-shadow: 0 0 0 5px rgba(242, 194, 84, .55);
}
[role="tabpanel"]:focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 6px; box-shadow: none; border-radius: var(--radius-sm); }

/* ---- 3. Top bar ---------------------------------------------------------- */
.site-bar {
	position: sticky; top: 0; z-index: 40; display: block; padding: 0;
	background: linear-gradient(100deg, #20478a 0%, var(--lapis) 34%, #11295b 72%, var(--lapis-deep) 100%);
	color: #fff; border-bottom: 1px solid rgba(242, 194, 84, .6);
	box-shadow: 0 8px 20px -14px rgba(10, 23, 54, .7);
}
.site-bar-inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; height: var(--bar-h); max-width: var(--page-max); margin: 0 auto; padding: 0 var(--gutter); }
.site-brand { display: inline-flex; align-items: center; gap: .7rem; min-width: 0; margin-left: -.35rem; padding: .3rem .6rem .3rem .35rem; color: #fff; text-decoration: none; border-radius: var(--radius-sm); }
.site-brand:hover { color: #fff; }
.site-mark { flex: none; width: 2rem; height: 2rem; border-radius: 8px; box-shadow: 0 0 0 1px rgba(242, 194, 84, .55), 0 2px 6px rgba(0, 0, 0, .3); transition: transform var(--ease); }
.site-brand:hover .site-mark { transform: scale(1.05); }
.site-word { font-size: 1.12rem; font-weight: 700; letter-spacing: .01em; white-space: nowrap; }
.site-sub { padding-left: .75rem; border-left: 1px solid rgba(255, 255, 255, .28); font-size: .8rem; line-height: 1.2; color: rgba(255, 255, 255, .82); white-space: nowrap; }
.site-bar a:focus-visible, .site-bar button:focus-visible { outline-color: var(--gold); box-shadow: 0 0 0 5px rgba(242, 194, 84, .3); }
.site-bar .topbar { display: flex; align-items: center; justify-content: flex-end; gap: .9rem; font-size: .84rem; white-space: nowrap; }
.site-bar .topbar { min-width: 0; }
.site-bar .topbar .muted { min-width: 0; max-width: 42vw; overflow: hidden; text-overflow: ellipsis; color: rgba(255, 255, 255, .8); }
.site-bar .topbar strong { color: #fff; }
.site-bar .topbar button { min-height: 2rem; padding: 0 .8rem; border: 1px solid rgba(255, 255, 255, .38); background: rgba(255, 255, 255, .06); color: #fff; font-size: .84rem; font-weight: 500; box-shadow: none; }
.site-bar .topbar button:hover { background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .6); color: #fff; }
.site-bar .edition { color: rgba(255, 255, 255, .78); font: 600 .66rem/1.5 var(--font); letter-spacing: .14em; text-align: right; }

/* ---- 4. Cards ------------------------------------------------------------ */
.card, #recorder, .judge-panel,
.analysis-panel > section:not([data-accordion]):not([data-collapse-body]):not(#argument-structure), .analysis-panel > .rp-status, .analysis-panel > .analysis-empty {
	background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--radius); box-shadow: var(--shadow-card);
}
.card { padding: 1.5rem 1.6rem; }
.card > :first-child { margin-top: 0; }
.card > :last-child { margin-bottom: 0; }

/* ---- 5. Buttons and fields ----------------------------------------------- */
/* Default: a quiet secondary button. The chamber stage, its seat strip, the
   readiness lights and the tabs keep their own shapes. */
button:where(:not(.chamber-stage button):not(.chamber-seat):not(.pf-light):not([role="tab"])) {
	display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
	min-height: 2.5rem; margin: 0; padding: 0 1rem;
	border: 1px solid var(--field-line); border-radius: var(--radius-sm);
	background: var(--surface); color: var(--lapis);
	font: inherit; font-size: .94rem; font-weight: 600; line-height: 1.2; text-align: center;
	box-shadow: 0 1px 0 rgba(10, 23, 54, .04);
	cursor: pointer; -webkit-tap-highlight-color: transparent;
	transition: background-color var(--ease), border-color var(--ease), color var(--ease), box-shadow var(--ease), transform var(--ease);
}
button:where(:not(.chamber-stage button):not(.chamber-seat):not(.pf-light):not([role="tab"])):hover { background: var(--lapis-tint); border-color: var(--lapis-line); color: var(--lapis-deep); }
button:where(:not(.chamber-stage button):not(.chamber-seat):not(.pf-light):not([role="tab"])):active { transform: translateY(1px); box-shadow: none; }
button:disabled, button:disabled:hover { opacity: .5; cursor: not-allowed; transform: none; }

/* Primary: one per area. */
button.primary, #recBtn, #poiAdd, #uploadSubmit, .poi-editor button[type="submit"], .page-login form button,
.manage-attach button[type="submit"], .manage-notice button, .rp-status:has(.status.bad) button, .page-try .button:not(.secondary) {
	border-color: var(--lapis-strong); color: #fff;
	background: linear-gradient(180deg, #2a4f93 0%, var(--lapis) 55%, #193669 100%);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(10, 23, 54, .25), 0 6px 14px -8px rgba(28, 61, 120, .7);
}
button.primary:hover, #recBtn:hover, #poiAdd:hover, #uploadSubmit:hover, .poi-editor button[type="submit"]:hover, .page-login form button:hover,
.manage-attach button[type="submit"]:hover, .manage-notice button:hover, .rp-status:has(.status.bad) button:hover, .page-try .button:not(.secondary):hover {
	border-color: var(--lapis-deep); color: #fff;
	background: linear-gradient(180deg, #23457f 0%, var(--lapis-strong) 55%, #132b56 100%);
}
button.primary:active, #recBtn:active, #poiAdd:active, .poi-editor button[type="submit"]:active, .page-login form button:active { box-shadow: inset 0 2px 4px rgba(10, 23, 54, .4); }
button.primary:disabled, #recBtn:disabled, #poiAdd:disabled { box-shadow: none; }

/* Destructive. */
button.manage-danger, .recovery-row button.quiet { border-color: #e6b8b2; background: var(--surface); color: var(--danger-ink); }
button.manage-danger:hover, .recovery-row button.quiet:hover { border-color: var(--danger); background: var(--danger-tint); color: var(--danger-ink); }

/* Fields. */
input:where(:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"])), select, textarea {
	box-sizing: border-box; min-height: 2.5rem; margin: 0; padding: .45rem .75rem;
	border: 1px solid var(--field-line); border-radius: var(--radius-sm);
	background-color: var(--surface); color: var(--ink);
	font: inherit; font-size: .95rem; line-height: 1.4;
	transition: border-color var(--ease), box-shadow var(--ease);
}
/* 4.8:1 on white: several placeholders carry real instructions. */
input::placeholder, textarea::placeholder { color: #6b7385; opacity: 1; }
input:where(:not([type="checkbox"]):not([type="radio"]):not([type="file"])):hover, select:hover, textarea:hover { border-color: #a9a08c; }
input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 0; border-color: var(--gold-deep); box-shadow: 0 0 0 4px rgba(242, 194, 84, .5); }
select {
	appearance: none; -webkit-appearance: none; padding-right: 2.1rem; text-overflow: ellipsis;
	background-image: var(--chevron); background-repeat: no-repeat; background-position: right .75rem center; background-size: .7rem auto;
}
select:disabled, input:disabled, textarea:disabled { background-color: var(--paper); color: var(--muted); cursor: not-allowed; opacity: .8; }
textarea { min-height: 4.5rem; line-height: 1.55; resize: vertical; }
input[type="file"] { max-width: 100%; padding: 0; border: 0; background: none; color: var(--muted); font: inherit; font-size: .88rem; min-height: 0; }
input[type="file"]::file-selector-button {
	min-height: 2.25rem; margin: 0 .7rem 0 0; padding: 0 .9rem;
	border: 1px solid var(--field-line); border-radius: var(--radius-sm); background: var(--surface); color: var(--lapis);
	font: inherit; font-size: .9rem; font-weight: 600; cursor: pointer;
	transition: background-color var(--ease), border-color var(--ease);
}
input[type="file"]::file-selector-button:hover { background: var(--lapis-tint); border-color: var(--lapis-line); }
input[type="checkbox"] { width: 1.05rem; height: 1.05rem; accent-color: var(--lapis); }
label { color: var(--ink); }
meter { height: .7rem; border-radius: 1rem; }
meter::-webkit-meter-bar { height: .7rem; border: 0; border-radius: 1rem; background: var(--paper-deep); box-shadow: inset 0 0 0 1px var(--hairline); }
meter::-webkit-meter-optimum-value { border-radius: 1rem; background: linear-gradient(90deg, var(--success), #34b06c); }

/* Disclosure rows: one chevron for every <details>. */
summary { list-style: none; }
summary::-webkit-details-marker { display: none; }
summary::after {
	content: ""; flex: none; display: inline-block; width: .5rem; height: .5rem; margin-left: .6rem;
	border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
	transform: translateY(-.18rem) rotate(45deg); opacity: .6; transition: transform var(--ease), opacity var(--ease);
}
details[open] > summary::after { transform: translateY(.05rem) rotate(-135deg); }
summary:hover::after { opacity: 1; }

/* Status pills. */
.pill, .round-chip {
	display: inline-flex; align-items: center; gap: .35rem; padding: .08rem .6rem; border-radius: 1rem;
	background: var(--paper-deep); color: var(--ink-soft); font-size: .78rem; font-weight: 600; line-height: 1.55; white-space: nowrap; text-transform: none;
}
.pill.done, .round-chip[data-status="done"] { background: var(--success-tint); color: var(--success-ink); }
.pill.failed, .round-chip[data-status="failed"] { background: var(--danger-tint); color: var(--danger-ink); }
.pill.running, .pill.queued, .pill.pending, .round-chip[data-status="generating"], .round-chip[data-status="queued"] { background: var(--warning-tint); color: var(--warning-ink); }
.round-chip[data-status="pending"] { background: var(--lapis-tint); color: var(--lapis); }
.pill.recording { background: var(--danger-tint); color: var(--danger-ink); }
/* An open round is not a problem: lapis with the red record light. Red chips are for rounds that need attention. */
.round-chip[data-status="recording"] { background: var(--lapis-tint); color: var(--lapis); }
.pill.recording::before, .round-chip[data-status="recording"]::before { content: ""; width: .45rem; height: .45rem; border-radius: 50%; background: var(--danger); }
.pill.weight-H { background: var(--danger-tint); color: var(--danger-ink); }
.pill.weight-M { background: var(--warning-tint); color: var(--warning-ink); }
.pill.weight-L { background: var(--paper-deep); color: var(--ink-soft); }

/* Banners. */
.status { display: block; padding: .8rem 1rem; border-radius: var(--radius-sm); background: var(--lapis-tint); color: var(--ink); }
.status.bad { background: var(--danger-tint); color: var(--danger-ink); overflow-wrap: anywhere; }
.analysis-empty { margin: 0; padding: 1.1rem 1.4rem; color: var(--muted); }

/* Tables. */
table { width: 100%; margin: .75rem 0; border-collapse: collapse; font-size: .93rem; }
th { padding: .45rem .7rem; border-bottom: 1px solid var(--hairline); color: var(--muted); font-size: .74rem; font-weight: 600; letter-spacing: .05em; text-align: left; text-transform: uppercase; }
td { padding: .7rem; border-bottom: 1px solid #f0ebe0; vertical-align: top; }
tr:last-child td { border-bottom: 0; }

/* ---- 6. Home ------------------------------------------------------------- */
.page-home { --page-max: 72rem; }
.page-home main { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); grid-template-rows: auto 1fr; gap: 1.5rem; align-items: start; padding-top: 2.25rem; }
.page-home .brand { display: none; }
.page-home .hero-card { grid-column: 1; grid-row: 1; padding: 2rem 2.1rem 1.8rem; background: linear-gradient(180deg, #fff 0%, #fff 62%, #fdfbf6 100%); border-top: 3px solid var(--gold); }
.page-home .upload-card { grid-column: 1; grid-row: 2; }
.page-home .recent-card { grid-column: 2; grid-row: 1 / span 2; }
.page-home h1 { margin: 0 0 .35rem; font-size: 2rem; letter-spacing: -.01em; }
.page-home .hero-card > .muted { margin: 0 0 1.2rem; font-size: 1.02rem; }
.page-home label { display: block; margin: 1.1rem 0 .35rem; font-size: .92rem; font-weight: 600; }
.page-home label .muted { font-weight: 400; }
.page-home main input:not([type="file"]):not([type="hidden"]) { width: 100%; padding: .55rem .8rem; }
.page-home #liveMotion { min-height: 2.9rem; font-size: 1rem; }
.page-home details { margin-top: .9rem; }
.page-home summary { display: inline-flex; align-items: center; border-radius: var(--radius-xs); color: var(--ink-soft); font-size: .92rem; }
.page-home summary:hover { color: var(--lapis); }
.page-home .advanced[open] { margin-bottom: .4rem; padding: .1rem 0 .2rem; }
.page-home button.primary { width: 100%; max-width: none; min-height: 3.25rem; margin-top: 1.4rem; padding: 0 1.4rem; border-radius: 12px; font-size: 1.12rem; font-weight: 650; letter-spacing: .01em; }
.page-home .help { margin: .7rem 0 0; font-size: .85rem; text-align: center; }
.page-home h2 { margin: 0 0 .6rem; font-size: 1.0625rem; }
.page-home .recent { margin: 0; padding: 0; list-style: none; }
.page-home .recent li { position: relative; display: flex; align-items: center; justify-content: space-between; gap: .9rem; margin: 0 -.7rem; padding: .7rem .7rem; border-bottom: 0; border-radius: var(--radius-sm); transition: background-color var(--ease); }
.page-home .recent li + li::before { content: ""; position: absolute; left: .7rem; right: .7rem; top: 0; height: 1px; background: #f0ebe0; }
.page-home .recent li:hover { background: var(--lapis-tint); }
.page-home .recent li:hover::before, .page-home .recent li:hover + li::before { background: transparent; }
.page-home .recent a { min-width: 0; color: var(--ink); font-weight: 600; line-height: 1.45; text-decoration: none; overflow-wrap: anywhere; }
.page-home .recent a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.page-home .recent li:hover a { color: var(--lapis); }
.page-home .round-chip { flex: none; }
.page-home .upload-card { padding: 1.1rem 1.6rem; }
.page-home .upload-card > details { margin: 0; }
.page-home .upload-card > details > summary { display: flex; align-items: center; justify-content: space-between; color: var(--ink); font-size: 1rem; font-weight: 650; }
.page-home .upload-card > details[open] > summary { margin-bottom: .6rem; padding-bottom: .8rem; border-bottom: 1px solid var(--hairline); border-radius: 0; }
.page-home .upload-card .help { text-align: left; }
.page-home .upload-seats { margin-top: .8rem; border: 1px solid var(--hairline); border-radius: var(--radius-sm); }
.page-home .upload-seat { gap: .8rem; padding: .5rem .7rem; border-bottom: 1px solid #f0ebe0; }
.page-home .upload-seat:last-child { border-bottom: 0; }
.page-home .upload-seat select { min-height: 2.2rem; padding: .3rem 2rem .3rem .65rem; border-color: var(--field-line); border-radius: var(--radius-xs); background: var(--surface) var(--chevron) right .65rem center / .65rem auto no-repeat; }
.page-home .upload-note.bad { color: var(--danger-ink); }
.page-home #uploadSubmit { margin-top: 1rem; }
.page-home #preflightPanel { margin: 0 0 .4rem; }
.page-home #preflightPanel .pf-row { gap: .3rem; }
.page-home #preflightPanel .pf-light { padding: .1rem .55rem .1rem .26rem; font-size: .78rem; }

/* ---- 7. Round page head -------------------------------------------------- */
.page-round { --page-max: 86rem; }
/* The top bar already links home, so the back link steps aside to the right of the title. */
.page-round main > p:first-child { float: right; margin: .7rem 0 0 1rem; font-size: .88rem; }
.page-round main > p:first-child a { color: var(--muted); text-decoration: none; }
.page-round main > p:first-child a:hover { color: var(--lapis); text-decoration: underline; }
.page-round h1 { margin: 0 0 .45rem; font-size: 1.75rem; }
.page-round .lede { max-width: 62rem; margin: .15rem 0 0; font-size: 1rem; line-height: 1.6; }
.page-round .lede strong { color: var(--muted); font-weight: 600; }
.page-round .lede.muted { font-size: .9rem; }
/* While a round is being recorded the head is compact, so the chamber starts high on a 13-inch screen. */
.page-round:has(#recorder) main { padding-top: 1rem; }
.page-round:has(#recorder) main > p:first-child { margin-top: .5rem; }
.page-round:has(#recorder) h1 { margin-bottom: .2rem; font-size: 1.4rem; }

/* ---- 8. Recorder --------------------------------------------------------- */
#recorder { margin-top: .8rem; padding: 1rem 1.5rem 1.5rem; scroll-margin-top: calc(var(--bar-h) + .75rem); }
#recorder > h2 { margin: 0; font-size: 1.15rem; }
#recorder > h2 + p { margin: .15rem 0 0; font-size: .92rem; }
.rec-setup { display: grid; grid-template-columns: minmax(0, 1.6fr) 8.5rem minmax(0, 1.6fr); gap: .8rem 1rem; margin: 1.1rem 0 .5rem; }
.rec-setup label { gap: .3rem; color: var(--ink-soft); font-size: .84rem; font-weight: 600; }
.rec-setup input, .rec-setup select, .rec-setup #role, .rec-setup #speechMinutes { width: 100%; padding: .45rem .75rem; border-color: var(--field-line); border-radius: var(--radius-sm); font-weight: 400; color: var(--ink); }
.rec-setup select, .rec-setup #role { padding-right: 2.1rem; }
.rec-timer-note { margin: .35rem 0; font-size: .84rem; line-height: 1.55; }
.rec-mic-check { gap: .5rem .75rem; margin: .7rem 0 .2rem; font-size: .85rem; }
.rec-mic-check button { min-height: 2.25rem; padding: 0 .85rem; font-size: .88rem; }
.rec-mic-check label { color: var(--ink-soft); font-weight: 600; }
.rec-mic-check meter { width: 7.5rem; height: .7rem; }
.rec-mic-check #micStatus { flex: 1 1 14rem; line-height: 1.5; }
.rec-hint { margin: .35rem 0; font-size: .84rem; }
.rec-warn { margin: .5rem 0; padding: .55rem .8rem; border-radius: var(--radius-xs); background: var(--warning-tint); color: var(--warning-ink); font-size: .88rem; }
.rec-bad { color: var(--danger-ink); }
/* Alarms float under the top bar, so no scroll position can hide "the connection dropped" or
   "the microphone is silent". Centred on the page; over the chamber when the console is beside it. */
.rec-alarm { position: fixed; z-index: 45; top: calc(var(--bar-h) + .6rem); left: 50%; transform: translateX(-50%); width: min(30rem, calc(100vw - 2rem)); margin: 0; padding: .85rem 1.1rem; border: 1px solid #a02d21; text-wrap: balance; border-radius: var(--radius-sm); background: var(--danger); color: #fff; font-size: 1.08rem; font-weight: 700; line-height: 1.45; box-shadow: 0 2px 4px rgba(10, 23, 54, .18), 0 14px 30px -10px rgba(120, 30, 20, .75); }
/* Both at once: the microphone alarm sits under the connection alarm (two lines at this width). */
#netAlarm:not([hidden]) + #micAlarm { top: calc(var(--bar-h) + 6.1rem); }
@supports (anchor-name: --a) {
	#netAlarm { anchor-name: --net-alarm; }
	#netAlarm:not([hidden]) + #micAlarm { top: calc(anchor(--net-alarm bottom, calc(var(--bar-h) + 5.6rem)) + .5rem); }
}

/* The clock: big, tabular, red while recording. */
.rec-clock { position: relative; gap: .25rem 1.1rem; margin: 1rem 0 .45rem; padding: .85rem 1.15rem .9rem; border: 1px solid var(--lapis-line); border-radius: var(--radius); background: linear-gradient(180deg, #f6f8fd, var(--lapis-tint)); transition: background-color var(--ease), border-color var(--ease); }
.rec-clock .countdown { color: var(--lapis-deep); font-size: 3.3rem; font-weight: 700; line-height: 1.05; letter-spacing: -.01em; font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1; }
.rec-clock #currentSpeaker { color: var(--ink-soft); font-size: .95rem; font-weight: 600; }
.rec-state { display: inline-flex; align-items: center; gap: .4rem; color: var(--ink); font-size: 1rem; font-weight: 650; }
.rec-state.active { color: var(--danger); }
/* Three states, each a step louder, written so that exactly one applies:
   recording (pale, red digits), time up (pink with a red ring), microphone alarm (solid red). */
.rec-clock:not(.overtime):not(.alarm):has(.rec-state.active) { border-color: #e9b4ad; background: linear-gradient(180deg, #fff7f5, #fdeeeb); }
.rec-clock:not(.overtime):not(.alarm):has(.rec-state.active) .countdown { color: var(--danger); }
.rec-clock.overtime:not(.alarm) { border-color: var(--danger); background: #fad9d3; color: var(--danger-ink); box-shadow: inset 0 0 0 2px var(--danger); }
.rec-clock.overtime:not(.alarm) .countdown, .rec-clock.overtime:not(.alarm) .rec-state.active { color: var(--danger-ink); }
.rec-clock.alarm { border-color: var(--danger); background: var(--danger); color: #fff; box-shadow: none; }
.rec-clock.alarm .countdown, .rec-clock.alarm #currentSpeaker, .rec-clock.alarm .rec-state, .rec-clock.alarm .rec-state.active { color: #fff; }

.rec-controls { gap: .6rem; margin: .8rem 0 .4rem; }
.rec-controls button { min-height: 2.9rem; padding: 0 1.15rem; font-size: 1rem; }
#recBtn { flex: 1 1 9rem; }
#stopBtn { flex: 1 1 11rem; }
#stopBtn:not(:disabled) { border-color: var(--lapis-deep); background: var(--lapis-deep); color: #fff; box-shadow: 0 6px 14px -8px rgba(10, 23, 54, .8); }
#stopBtn:not(:disabled):hover { background: #14254d; }
button.rec-on, button.rec-on:hover, #recBtn.rec-on, #recBtn.rec-on:hover, #recBtn.rec-on:disabled {
	opacity: 1; border-color: #a02d21; color: #fff;
	background: linear-gradient(180deg, #d24a3b, var(--danger)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 6px 14px -8px rgba(192, 57, 43, .9);
}
#recStatus { flex: 1 1 100%; font-size: .86rem; line-height: 1.5; }
#recStatus:empty { display: none; }

.poi-live { gap: .5rem .6rem; margin-top: .5rem; padding: .8rem 0 .2rem; border-top: 1px solid var(--hairline); }
.poi-live button { min-height: 2.5rem; border-color: #44582f; background: #546b42; color: #fff; }
.poi-live button:hover { border-color: #3b4d29; background: #475b37; color: #fff; }
.poi-live button.active, .poi-live button.active:hover { border-color: #8a4a12; background: #a75b18; color: #fff; }
.poi-live input { flex: 1 1 9rem; width: auto; min-width: 0; padding: .45rem .7rem; border-color: var(--field-line); border-radius: var(--radius-sm); }
.poi-live span { flex: 1 1 100%; font-size: .84rem; line-height: 1.5; }

.caption { min-height: 4.6rem; max-height: 11rem; margin-top: .8rem; padding: .8rem 1rem; border: 1px solid var(--hairline); border-radius: var(--radius-sm); background: var(--paper); font-size: .98rem; line-height: 1.65; }
.caption:empty::before { color: var(--muted); font-size: .92rem; }
.caption .interim { color: var(--muted); }
.rec-backup { margin: .8rem 0; padding: .8rem 1rem; border: 1px solid #ecd9ae; border-radius: var(--radius-sm); background: var(--warning-tint); color: var(--ink); }
.rec-backup p { margin: 0 0 .5rem; font-size: .9rem; }
.rec-backup .muted { color: #5b6474; }
.rec-backup button, .rec-finish button { min-height: 2.2rem; margin: 0 .5rem .2rem 0; padding: 0 .8rem; font-size: .88rem; }
.rec-finish { gap: .7rem; margin: .8rem 0; padding: .75rem 1rem; border: 1px solid var(--lapis-line); border-radius: var(--radius-sm); background: var(--lapis-tint); font-weight: 600; }
.rec-recovery { margin: 1.2rem 0 0; }
.recovery-row { gap: .6rem; padding: .55rem 0; border-top: 1px solid #ecd9ae; font-size: .9rem; }
.recovery-row select { min-height: 2.1rem; padding: .2rem 2rem .2rem .6rem; border-color: var(--field-line); border-radius: var(--radius-xs); }
.recovery-row button { min-height: 2.1rem; padding: 0 .75rem; font-size: .86rem; }
#finishRoundForm { margin: .5rem 0 0; padding-top: .75rem; border-top: 1px solid var(--hairline); }
#finishRoundBtn { width: 100%; min-height: 2.75rem; border-color: var(--lapis); color: var(--lapis); font-size: .96rem; }
#finishRoundBtn:hover { background: var(--lapis); color: #fff; }

/* From tablet width up the console below the chamber is two columns: who and
   which microphone on the left, the clock and the record controls on the right.
   The backup notice comes first, right under the stage, because the chamber's
   own messages point "below". Every child has its row, so hidden notices and
   hints leave no gaps. (The two alarms are fixed to the viewport, see above.) */
@media (min-width: 760px) {
	/* Row 13 is the flexible one, so the POI block (rows 11-13) never opens a gap above the hints. */
	#recorder { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(12, auto) minmax(0, 1fr); column-gap: 1.75rem; align-items: start; }
	#recorder > * { grid-column: 1 / -1; min-width: 0; }
	#recorder > h2 { grid-row: 1; }
	#recorder > h2 + p { grid-row: 2; }
	#recorder > #preflightPanel { grid-row: 3; }
	#recorder > #chamberPanel { grid-row: 4; }
	#recorder > #localBackup { grid-row: 7; }
	#recorder > .rec-setup { grid-column: 1; grid-row: 8; grid-template-columns: 7rem minmax(0, 1fr); margin: 1.1rem 0 .5rem; }
	#recorder > .rec-setup > label[for="role"] { grid-column: 1 / -1; }
	#recorder > #recClock { grid-column: 2; grid-row: 8; align-self: stretch; margin: 1.1rem 0 .5rem; }
	#recorder > #seatOrder { grid-column: 1; grid-row: 9; }
	#recorder > #timerNotice { grid-column: 2; grid-row: 9; }
	#recorder > .rec-mic-check { grid-column: 1; grid-row: 10; margin-top: .55rem; }
	#recorder > .rec-controls { grid-column: 2; grid-row: 10; margin-top: .55rem; }
	#recorder > #micInput { grid-column: 1; grid-row: 11; }
	#recorder > #micWarn { grid-column: 1; grid-row: 12; }
	#recorder > .rec-hint:not([id]) { grid-column: 1; grid-row: 13; }
	#recorder > .poi-live { grid-column: 2; grid-row: 11 / span 3; }
	#recorder > #caption { grid-row: 14; }
	#recorder > #finishCountdown { grid-row: 15; }
	#recorder > #finishRoundForm { grid-row: 16; }
}

/* Wide screens with the chamber showing: the stage on the left (title,
   readiness, chamber, then the backup notice and "finish the round" under it)
   and the per-speech console beside it. The seat and microphone fields sit
   beside the heading rows; under them come the live controls in the order they
   are used during a speech (clock, record and stop, low-volume warning, POI),
   then the set-once microphone check and notes. `order` only changes where the
   auto-placed items land: keyboard order still follows the document. Spare
   height goes to the 1fr row, which the live captions fill. */
@media (min-width: 1160px) {
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) {
		grid-template-columns: minmax(0, 1fr) 22.5rem;
		grid-template-rows: auto auto auto repeat(24, auto) 1fr repeat(3, auto);
	}
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > * { grid-column: 2; grid-row: auto; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > h2 { grid-column: 1; grid-row: 1; justify-self: start; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > h2 + p { grid-column: 1; grid-row: 2; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #preflightPanel { grid-column: 1; grid-row: 3; margin-top: .7rem; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #chamberPanel { grid-column: 1; grid-row: 4 / -4; margin: .8rem 0 0; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #localBackup { grid-column: 1; grid-row: -4 / -3; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #finishCountdown { grid-column: 1; grid-row: -3 / -2; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #finishRoundForm { grid-column: 1; grid-row: -2 / -1; margin-top: .25rem; padding-top: .7rem; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > .rec-setup { grid-column: 2; grid-row: 1 / span 3; align-self: start; grid-template-columns: 6.5rem minmax(0, 1fr); gap: .65rem .8rem; margin: 0; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #recClock { order: -6; align-self: start; margin: 1rem 0 .45rem; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #timerNotice { order: -5; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > .rec-controls { order: -4; margin-top: .6rem; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #micWarn { order: -3; margin: .3rem 0 .5rem; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > .poi-live { order: -2; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > .rec-mic-check { margin-top: .9rem; padding-top: .9rem; border-top: 1px solid var(--hairline); }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #seatOrder { order: 1; margin: .1rem 0 0; }
	/* Size containment: the caption box takes the height that is left and scrolls inside it. */
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > #caption { grid-row: -5 / -1; align-self: stretch; contain: size; min-height: 7rem; max-height: none; }
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) .rec-clock .countdown { font-size: 3.5rem; }
	/* Over the chamber column, in the gap between the stage's clock (top left) and its status pill (top right). */
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > .rec-alarm { left: calc(50% - 14.3rem); width: 28rem; }
}
@media (min-width: 1280px) {
	/* Room for the one-line instruction to share the heading's row (the padding keeps it clear of the heading). */
	#recorder:has(> #chamberPanel:not([hidden]):not([data-mode="off"])) > h2 + p { grid-row: 1; justify-self: end; align-self: center; margin: 0; padding-left: 18rem; font-size: .88rem; text-align: right; }
}

/* ---- 9. Readiness lights ------------------------------------------------- */
body #preflightPanel { margin: 1rem 0 0; padding: .6rem .85rem .7rem; border: 1px solid var(--hairline); border-radius: var(--radius-sm); background: var(--paper); color: var(--ink); font-size: .84rem; line-height: 1.45; }
body #preflightPanel .pf-head { gap: .4rem .6rem; }
body #preflightPanel .pf-summary { font-size: .92rem; font-weight: 650; }
body #preflightPanel .pf-time { color: var(--muted); font-size: .78rem; font-variant-numeric: tabular-nums; }
body #preflightPanel .pf-group { min-width: 2.4em; color: var(--muted); font-size: .76rem; font-weight: 600; }
body #preflightPanel .pf-row { gap: .35rem .4rem; margin-top: .5rem; }
body #preflightPanel .pf-light { min-height: 1.75rem; padding: .1rem .65rem .1rem .3rem; border: 1px solid var(--hairline); border-radius: 1rem; background: var(--surface); color: var(--ink); font-size: .8rem; box-shadow: none; transition: border-color var(--ease), box-shadow var(--ease); }
body #preflightPanel .pf-light:hover, body #preflightPanel .pf-light:focus-visible { background: var(--surface); border-color: var(--lapis); }
body #preflightPanel .pf-light[aria-pressed="true"] { border-color: var(--lapis); box-shadow: 0 0 0 1px var(--lapis); }
body #preflightPanel .pf-light.pf-off { color: var(--muted); }
body #preflightPanel .pf-recheck { min-height: 1.85rem; padding: 0 .7rem; border: 1px solid var(--field-line); border-radius: var(--radius-xs); background: var(--surface); color: var(--lapis); font-size: .8rem; font-weight: 600; box-shadow: none; }
body #preflightPanel .pf-recheck:hover { background: var(--lapis-tint); border-color: var(--lapis-line); }
body #preflightPanel .pf-dot { width: 1.05rem; height: 1.05rem; background: #98a1b0; }
body #preflightPanel .pf-ok .pf-dot { background: #1a7d46; }
body #preflightPanel .pf-warn .pf-dot { background: #a36812; }
body #preflightPanel .pf-bad .pf-dot { background: var(--danger); }
body #preflightPanel .pf-head.pf-ok .pf-summary { color: var(--success-ink); }
body #preflightPanel .pf-head.pf-warn .pf-summary { color: var(--warning-ink); }
body #preflightPanel .pf-head.pf-bad .pf-summary { color: var(--danger-ink); }
body #preflightPanel .pf-detail { margin-top: .55rem; padding-top: .5rem; border-top: 1px solid var(--hairline); color: var(--ink-soft); }
@media (min-width: 1160px) {
	/* On the round page both groups fit on one line. */
	.page-round #preflightPanel { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem 1.4rem; }
	.page-round #preflightPanel .pf-head { flex: 1 1 100%; }
	.page-round #preflightPanel .pf-row { margin-top: 0; }
	.page-round #preflightPanel .pf-detail { flex: 1 1 100%; margin-top: .1rem; }
}

/* ---- 10. Chamber surroundings (the stage itself is left alone) ----------- */
/* line-height: the stage's own controls were sized against the page's original 1.6. */
body .chamber { margin: 1.1rem 0 .35rem; line-height: 1.6; }
body .chamber .chamber-bar { gap: .45rem .6rem; font-size: .85rem; }
body .chamber .chamber-title { font-size: 1rem; font-weight: 650; }
body .chamber .chamber-hint { color: var(--muted); }
body .chamber .chamber-bar button { min-height: 1.9rem; padding: 0 .8rem; border: 1px solid var(--field-line); border-radius: 1rem; background: var(--surface); color: var(--lapis); font-size: .8rem; font-weight: 600; box-shadow: none; }
body .chamber .chamber-bar button:hover { background: var(--lapis-tint); border-color: var(--lapis-line); }
/* Set-once switches: "on" is a quiet tint, so the record button stays the one strong control. */
body .chamber .chamber-bar button[aria-pressed="true"] { border-color: var(--lapis-line); background: var(--lapis-tint); color: var(--lapis); }
body .chamber .chamber-bar button[aria-pressed="true"]:hover { border-color: #aebde0; background: #e2e9f7; }
body .chamber .chamber-bar button[aria-pressed="false"] { color: var(--muted); }
body .chamber .chamber-stage { margin-top: .6rem; border-radius: var(--radius); box-shadow: 0 0 0 1px var(--hairline); }
.chamber .chamber-seats { gap: .35rem; margin-top: .5rem; }
.chamber .chamber-seat { border-radius: var(--radius-xs); background: var(--paper); cursor: pointer; transition: background-color var(--ease), box-shadow var(--ease); }
/* The next speaker is the seat the eye should land on. Lapis, so it cannot be mistaken for the
   amber POI glow or the gold focus ring; it never applies while a seat is offering a POI. */
.chamber .chamber-seat[data-state="next"][data-pick="no"] { background: var(--lapis-tint); box-shadow: inset 0 0 0 1.5px var(--lapis); }
.chamber .chamber-seat[data-state="next"][data-pick="no"][aria-pressed="true"] { box-shadow: inset 0 0 0 2px var(--lapis); }
.chamber .chamber-seat[data-state="next"][data-pick="no"] .chamber-seat-state::before { content: "▸ "; }
.chamber .chamber-seat:focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 2px; box-shadow: 0 0 0 5px rgba(242, 194, 84, .55); }
body .chamber .chamber-foot { margin-top: .5rem; }
body .chamber .chamber-caption { border-radius: var(--radius-xs); background: var(--paper); color: var(--ink-soft); }

/* ---- 11. Workspace, judges, tabs ----------------------------------------- */
/* The tabs come straight after the title row, so the report starts above the fold and a tab
   click visibly changes the page. The judges comparison belongs to the overview and shows only
   there; "which saved analysis is this" is a quiet row at the foot of every tab.
   (Reordered with `order`; the document order, and so the keyboard order, is unchanged.) */
.analysis-workspace { display: flex; flex-direction: column; margin-top: 1.5rem; padding-top: 0; border-top: 0; }
.analysis-workspace > .analysis-toolbar, .analysis-workspace > .structure-note { order: -3; }
.analysis-workspace > .analysis-tabs { order: -2; margin-bottom: 1.1rem; }
.analysis-workspace > .analysis-panel { padding-top: 0; }
.analysis-workspace:has(#tab-overview[aria-selected="false"]) > #judgePanel { display: none; }
.analysis-workspace > details.analysis-accordion { order: 5; }
.analysis-toolbar { align-items: center; gap: .6rem 1rem; margin-bottom: .9rem; }
.analysis-toolbar h2 { margin: 0; font-size: 1.25rem; font-weight: 700; }
.handout-links { gap: .5rem; font-size: .88rem; }
.handout-links a { display: inline-flex; align-items: center; min-height: 2.25rem; padding: 0 .9rem; border: 1px solid var(--field-line); border-radius: var(--radius-sm); background: var(--surface); color: var(--lapis); font-weight: 600; text-decoration: none; transition: background-color var(--ease), border-color var(--ease); }
.handout-links a:hover { background: var(--lapis-tint); border-color: var(--lapis-line); }
.handout-links a::before { content: ""; width: .8rem; height: .85rem; margin-right: .45rem; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 17'%3E%3Cpath d='M8 1v9.5M4 7l4 4 4-4M2 15.5h12' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 17'%3E%3Cpath d='M8 1v9.5M4 7l4 4 4-4M2 15.5h12' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; }
.analysis-workspace > .structure-note { margin: 0 0 .9rem; }
.structure-note, .structure-meta { color: var(--muted); font-size: .86rem; }

/* Judges: a comparison, one judge per line with the rankings aligned. */
body .judge-panel { margin: 0 0 1rem; padding: 1.2rem 1.5rem 1.25rem; background: var(--surface); font-size: .93rem; }
body .judge-panel .judge-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: .75rem 1.5rem; }
body .judge-panel .judge-body > * { margin: 0; min-width: 0; }
body .judge-panel .judge-title { margin: 0; color: var(--ink); font-size: 1.0625rem; font-weight: 650; }
body .judge-panel p { margin: .25rem 0; }
body .judge-panel .judge-caveat { margin: -.45rem 0 0; padding: 0; border-radius: 0; background: none; color: var(--muted); font-size: .84rem; line-height: 1.55; }
body .judge-panel .judge-list { margin: 0; padding: 0; border: 1px solid var(--hairline); border-radius: var(--radius-sm); overflow: hidden; }
body .judge-panel .judge-row { display: grid; grid-template-columns: minmax(0, 1fr); justify-items: start; gap: .3rem; padding: .75rem 1rem .8rem; border-top: 1px solid var(--hairline); background: var(--surface); }
body .judge-panel .judge-row:first-child { border-top: 0; }
body .judge-panel .judge-row > .judge-ranking { margin: 0; }
body .judge-panel .judge-row:has(.judge-current) { background: linear-gradient(90deg, #f7f9fd, var(--surface) 70%); box-shadow: inset 3px 0 0 var(--lapis); }
body .judge-panel .judge-head { gap: .3rem .7rem; align-items: center; }
body .judge-panel .judge-kind { padding: .06rem .55rem; border-radius: 1rem; background: var(--lapis-tint); color: var(--lapis); font-size: .76rem; font-weight: 650; line-height: 1.6; }
body .judge-panel .judge-kind-second { background: var(--success-tint); color: var(--success-ink); }
body .judge-panel .judge-kind-external { background: var(--gold-tint); color: var(--warning-ink); }
body .judge-panel .judge-model { color: var(--ink); font-weight: 650; }
body .judge-panel .judge-time, body .judge-panel .judge-muted, body .judge-panel .judge-detail { color: var(--muted); font-size: .84rem; }
body .judge-panel .judge-time { font-variant-numeric: tabular-nums; }
body .judge-panel .judge-current { color: var(--lapis); font-size: .82rem; font-weight: 650; }
body .judge-panel .judge-view { display: inline-flex; align-items: center; min-height: 1.75rem; padding: 0 .65rem; border: 1px solid var(--field-line); border-radius: var(--radius-xs); background: var(--surface); font-size: .82rem; font-weight: 600; text-decoration: none; }
body .judge-panel .judge-view:hover { background: var(--lapis-tint); border-color: var(--lapis-line); }
body .judge-panel .judge-ranking { color: var(--ink); font-size: 1rem; font-weight: 650; font-variant-numeric: tabular-nums; letter-spacing: .01em; }
body .judge-panel .judge-unranked { padding: .1rem .7rem; border: 1px dashed #d9c28e; border-radius: 1rem; background: var(--gold-tint); color: var(--warning-ink); font-size: .84rem; font-weight: 600; }
body .judge-panel .judge-flag, body .judge-panel .judge-warn { color: var(--danger-ink); font-size: .88rem; }
body .judge-panel .judge-agreement { margin: 0; padding: .8rem 1rem; border: 1px solid var(--lapis-line); border-radius: var(--radius-sm); background: var(--lapis-tint); line-height: 1.6; }
body .judge-panel .judge-agreement p { margin: .12rem 0; word-break: keep-all; overflow-wrap: anywhere; }
body .judge-panel .judge-strong { color: var(--lapis-deep); font-weight: 650; }
body .judge-panel .judge-agreement .judge-muted { color: #56607a; }
body .judge-panel .judge-second { margin: 0; }
body .judge-panel .judge-provider { margin: 0; gap: .4rem .7rem; }
body .judge-panel .judge-provider + .judge-provider { margin-top: .4rem; }
body .judge-panel .judge-pending { color: var(--warning-ink); }
body .judge-panel .judge-button { min-height: 2.25rem; margin: 0; padding: 0 .9rem; font-size: .88rem; }
body .judge-panel .judge-external { margin: 0; padding-top: .7rem; border-top: 1px solid var(--hairline); }
body .judge-panel .judge-external > summary { display: inline-flex; align-items: center; border-radius: var(--radius-xs); color: var(--ink-soft); font-size: .9rem; font-weight: 600; }
body .judge-panel .judge-external > summary:hover { color: var(--lapis); }
body .judge-panel .judge-external[open] > summary { margin-bottom: .4rem; }
body .judge-panel .judge-external > p { max-width: 46rem; }
body .judge-panel .judge-download { margin: .3rem 0 .4rem; font-weight: 600; }
body .judge-panel .judge-field { max-width: 46rem; margin: .6rem 0; color: var(--ink-soft); font-size: .86rem; font-weight: 600; }
body .judge-panel .judge-field input[type="text"], body .judge-panel .judge-field textarea { padding: .45rem .7rem; border-color: var(--field-line); border-radius: var(--radius-sm); font-weight: 400; }
body .judge-panel .judge-field input[type="file"] { font-weight: 400; }
@media (min-width: 1000px) {
	body .judge-panel .judge-body:has(> .judge-agreement) { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); align-items: start; }
	body .judge-panel .judge-body:has(> .judge-agreement) > * { grid-column: 1 / -1; }
	body .judge-panel .judge-body:has(> .judge-agreement) > .judge-list { grid-column: 1; }
	body .judge-panel .judge-body:has(> .judge-agreement) > .judge-agreement { grid-column: 2; }
	/* While closed, the external-judge disclosure shares a line with the second-opinion request. */
	body .judge-panel .judge-body:has(> .judge-agreement):has(> .judge-second) > .judge-second { grid-column: 1; }
	body .judge-panel .judge-body:has(> .judge-agreement):has(> .judge-second) > .judge-external:not([open]) { grid-column: 2; align-self: center; padding-top: 0; border-top: 0; }
}

/* Disclosure cards. */
.analysis-accordion { margin: .6rem 0; padding: 0; border: 1px solid var(--hairline); border-radius: var(--radius-sm); background: var(--surface); box-shadow: 0 1px 2px rgba(10, 23, 54, .03); transition: border-color var(--ease), box-shadow var(--ease); }
.analysis-accordion:hover { border-color: #d9d1c0; }
.analysis-accordion[open] { box-shadow: var(--shadow-card); }
.analysis-accordion > summary { display: flex; align-items: center; justify-content: space-between; gap: .8rem; min-height: 3rem; padding: .7rem 1.1rem; border-radius: var(--radius-sm); color: var(--ink); font-size: .98rem; font-weight: 650; line-height: 1.45; }
.analysis-accordion > summary:hover { color: var(--lapis); }
.analysis-accordion[open] > summary { margin-bottom: 0; border-bottom: 1px solid var(--hairline); border-radius: var(--radius-sm) var(--radius-sm) 0 0; }
.analysis-accordion > :not(summary) { margin-left: 1.1rem; margin-right: 1.1rem; }
.analysis-accordion > summary + * { margin-top: .9rem; }
.analysis-accordion > :last-child:not(summary) { margin-bottom: 1.1rem; }
.analysis-accordion .accordion-body { max-height: none; overflow: visible; padding-right: 0; }
.analysis-accordion > .analysis-accordion, .analysis-accordion .analysis-accordion { box-shadow: none; }
.analysis-workspace > .analysis-accordion { margin: .5rem 0 0; }
.analysis-workspace > .analysis-accordion > summary { min-height: 2.75rem; color: var(--ink-soft); font-size: .92rem; font-weight: 600; }
.analysis-workspace > .analysis-accordion ul { padding-left: 2.3rem; font-size: .9rem; }

/* Tabs. */
.analysis-tabs { position: sticky; top: var(--bar-h); z-index: 20; display: flex; gap: .25rem; margin: 0 calc(var(--gutter) * -1); padding: .5rem var(--gutter) 0; border-radius: 0; border-bottom: 1px solid var(--hairline); background: var(--paper); box-shadow: 0 8px 10px -10px rgba(10, 23, 54, .22); }
.analysis-tabs button { position: relative; min-width: 7.5rem; margin: 0; padding: .6rem 1.1rem .75rem; border: 0; border-radius: var(--radius-sm) var(--radius-sm) 0 0; background: transparent; color: var(--muted); font: inherit; font-size: .98rem; font-weight: 600; cursor: pointer; transition: color var(--ease), background-color var(--ease); }
.analysis-tabs button::after { content: ""; position: absolute; left: .9rem; right: .9rem; bottom: -1px; height: 3px; border-radius: 3px 3px 0 0; background: transparent; transition: background-color var(--ease); }
.analysis-tabs button:hover { background: rgba(28, 61, 120, .06); color: var(--lapis); }
.analysis-tabs button[aria-selected="true"] { background: transparent; color: var(--lapis-deep); font-weight: 700; box-shadow: none; }
.analysis-tabs button[aria-selected="true"]::after { background: var(--gold); box-shadow: 0 0 0 1px rgba(185, 133, 42, .35); }
.analysis-tabs button:focus-visible { outline-offset: -3px; box-shadow: none; }
.analysis-panel { min-height: 10rem; padding: 1.25rem 0 0; }
.analysis-panel > * { margin-top: 0; margin-bottom: 1rem; }
.analysis-panel > section { margin: 0 0 1rem; padding: 0; border: 0; }
/* Plain report sections are cards; sections the page turns into disclosures are not. */
.analysis-panel > section:not([data-accordion]):not([data-collapse-body]):not(#argument-structure) { padding: 1.3rem 1.5rem 1.4rem; }
.analysis-panel h2 { margin: 0 0 .7rem; font-size: 1.0625rem; font-weight: 650; }
.analysis-panel > section[data-accordion] { margin: 1.5rem 0 1.25rem; }
.analysis-panel > section[data-accordion]:first-child, .analysis-panel > [hidden] + section[data-accordion] { margin-top: .25rem; }
.analysis-panel > section[data-accordion] > h2 { display: flex; align-items: center; gap: .6rem; margin: 0 0 .7rem .1rem; }
.analysis-panel > section[data-accordion] > h2::before { content: ""; width: .28rem; height: 1.05rem; border-radius: 2px; background: var(--gold); }
.analysis-panel > section[data-accordion] > .muted { margin: -.3rem 0 .8rem .1rem; font-size: .9rem; }
.analysis-panel > section[data-collapse-body] > .analysis-accordion, .analysis-panel > section#argument-structure > .analysis-accordion { margin: 0; }

/* ---- 12. Report: overview ------------------------------------------------ */
.analysis-panel p, .analysis-panel li { text-wrap: pretty; }
.rp-status { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; padding: .7rem .8rem .7rem 1.1rem; }
.rp-status:empty { display: none; }
.rp-status:not(:has(.status)) { display: none; }
.rp-status p { flex: 1 1 18rem; margin: 0; }
.rp-status p:empty { display: none; }
.rp-status .status { display: flex; align-items: baseline; gap: .55rem; padding: 0; background: none; color: var(--ink-soft); font-weight: 600; }
.rp-status .status::before { content: ""; flex: none; align-self: flex-start; width: .6rem; height: .6rem; margin-top: .55em; border-radius: 50%; background: var(--success); box-shadow: 0 0 0 4px var(--success-tint); }
/* A failed analysis is a notice with a way forward, not a crash report: the red dot, the pink
   frame and the primary button say it; the validator's message stays in calm ink. */
.rp-status .status.bad { color: var(--ink-soft); font-size: .92rem; font-weight: 500; line-height: 1.6; }
.rp-status .status.bad::before { background: var(--danger); box-shadow: 0 0 0 4px var(--danger-tint); }
.rp-status:has(.status.bad) { border-color: #edc4be; background: #fff8f6; }
.rp-status form:not([hidden]) { display: block !important; margin: 0; }
.rp-status button { min-height: 2.25rem; font-size: .9rem; }
.analysis-workspace[data-pending="true"] .rp-status .status::before { background: var(--warning); box-shadow: 0 0 0 4px var(--warning-tint); animation: theme-pulse 1.6s ease-in-out infinite; }

.rp-summary > p:not(.muted):not(.structure-note) { max-width: var(--measure); margin: 0 0 .8rem; color: var(--ink); font-size: 1.04rem; line-height: 1.75; }
.rp-summary > .muted { margin: 0; font-size: .86rem; }
.rp-summary > .structure-note { margin: 0 0 .7rem; }
/* "Not enough material to rank": a deliberate notice, not an error. */
.rp-summary > .status { position: relative; margin: 0 0 1rem; padding: 1rem 1.2rem 1rem 3.6rem; border: 1px solid #ead9ae; border-radius: var(--radius-sm); background: linear-gradient(180deg, #fffaf0, var(--gold-tint)); color: var(--ink); }
.rp-summary > .status::before { content: "—"; position: absolute; left: 1.1rem; top: 1rem; display: grid; place-items: center; width: 1.75rem; height: 1.75rem; border: 1.5px dashed var(--gold-deep); border-radius: 50%; color: var(--gold-deep); font-weight: 700; line-height: 1; }
.rp-summary > .status strong { display: block; color: var(--ink); font-size: 1.05rem; }
.rp-summary > .status p { max-width: 46rem; margin: .3rem 0 0; color: var(--ink-soft); font-size: .95rem; line-height: 1.65; }

.rp-ranking .ranking { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem; margin: .9rem 0 0; padding: 0; list-style: none; }
.rp-ranking .ranking li { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; align-content: start; gap: .55rem .8rem; padding: 1rem 1.25rem 1.1rem 1.15rem; border: 1px solid var(--hairline); border-left: 5px solid var(--team, #98a1b0); border-radius: var(--radius-sm); background: linear-gradient(180deg, var(--team-tint, var(--paper)) 0, var(--surface) 4.2rem); }
.rp-ranking .ranking li:last-child { border-bottom: 1px solid var(--hairline); }
.rp-ranking .rank-badge { width: 2.35rem; height: 2.35rem; min-width: 2.35rem; border-radius: 50%; background: var(--surface); color: var(--ink-soft); font-size: 1.05rem; font-weight: 750; font-variant-numeric: tabular-nums; box-shadow: inset 0 0 0 2px #cfd5df, 0 1px 2px rgba(10, 23, 54, .12); }
.rp-ranking .ranking li:nth-child(1) .rank-badge { background: radial-gradient(circle at 34% 28%, #ffe9a8, var(--gold) 58%, #dba63a); color: #4d3608; box-shadow: inset 0 0 0 2px var(--gold-deep), 0 2px 5px rgba(185, 133, 42, .45); }
.rp-ranking .ranking li:nth-child(2) .rank-badge { background: radial-gradient(circle at 34% 28%, #fbfcfe, #dfe4ec 58%, #bfc7d3); color: #364154; box-shadow: inset 0 0 0 2px #98a1b0, 0 2px 4px rgba(10, 23, 54, .18); }
.rp-ranking .ranking li:nth-child(3) .rank-badge { background: radial-gradient(circle at 34% 28%, #f6dcc3, #dca876 58%, #c48a55); color: #371e07; box-shadow: inset 0 0 0 2px #a8703f, 0 2px 4px rgba(120, 72, 30, .3); }
.rp-ranking .team { display: inline-flex; align-items: baseline; flex-wrap: wrap; gap: 0 .6rem; min-width: 0; color: var(--ink); font-size: 1.3rem; font-weight: 750; line-height: 1.3; letter-spacing: .01em; }
.rp-ranking .team::after { color: var(--team-ink, var(--muted)); font-size: .82rem; font-weight: 600; letter-spacing: 0; }
.rp-ranking [data-team="OG" i] .team::after { content: "正方上院 · Opening Government"; }
.rp-ranking [data-team="OO" i] .team::after { content: "反方上院 · Opening Opposition"; }
.rp-ranking [data-team="CG" i] .team::after { content: "正方下院 · Closing Government"; }
.rp-ranking [data-team="CO" i] .team::after { content: "反方下院 · Closing Opposition"; }
.rp-ranking .ranking li > div { display: contents; }
.rp-ranking .ranking li p, .rp-ranking .ranking li p.muted { grid-column: 1 / -1; max-width: var(--measure); margin: 0; color: var(--ink); font-size: .98rem; line-height: 1.72; }

.rp-tiebreak > p { max-width: var(--measure); margin: 0; font-size: 1rem; line-height: 1.75; }
.rp-notes > ul { margin: 0; padding: 0; list-style: none; }
.rp-notes > ul li { position: relative; max-width: 33rem; margin: 0 0 .6rem; padding-left: 1.15rem; color: var(--ink-soft); font-size: .93rem; line-height: 1.65; }
.rp-notes > ul li:last-child { margin-bottom: 0; }
.rp-notes > ul li::before { content: ""; position: absolute; left: .1rem; top: .62em; width: .4rem; height: .4rem; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 1px var(--gold-deep); }

/* Overview prose: the heading stands in the margin and the text runs beside it. */
@media (min-width: 1000px) {
	.rp-summary, .rp-tiebreak, .rp-notes { display: grid; grid-template-columns: 10.5rem minmax(0, 1fr); column-gap: 2rem; align-items: start; }
	.rp-summary > h2, .rp-tiebreak > h2, .rp-notes > h2 { grid-column: 1; grid-row: 1 / span 6; margin: .2rem 0 0; }
	.rp-summary > :not(h2), .rp-tiebreak > :not(h2), .rp-notes > :not(h2) { grid-column: 2; }
}
@media (min-width: 1240px) {
	/* Running prose keeps one comfortable column; only the list of discrete notes is set in two. */
	.rp-summary > p:not(.muted):not(.structure-note), .rp-tiebreak > p { max-width: 38rem; }
	.rp-notes > ul { columns: 2; column-gap: 2.5rem; }
	.rp-notes > ul li { max-width: none; break-inside: avoid; }
}

/* ---- 13. Report: clashes ------------------------------------------------- */
.accordion-body > p { max-width: var(--measure); margin: 0 0 .7rem; font-size: .98rem; line-height: 1.72; }
.accordion-body > p.muted { color: var(--ink-soft); }
.accordion-body > :last-child { margin-bottom: 0; }
.flow { margin: 0; }
.flow div { margin: 0 0 .85rem; }
.flow div:last-child { margin-bottom: 0; }
.flow .lbl, .drill .lbl { display: block; min-width: 0; margin: 0 0 .15rem; color: var(--muted); font-size: .72rem; font-weight: 650; letter-spacing: .07em; text-transform: uppercase; }
.flow .val { display: block; max-width: var(--measure); font-size: .97rem; line-height: 1.7; }
.flow .val[data-team] { display: inline-flex; align-items: center; width: auto; padding: .05rem .65rem; border-radius: var(--radius-xs); background: var(--team-tint, var(--paper-deep)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--team, #98a1b0) 38%, transparent); color: var(--ink); font-weight: 750; }
@media (min-width: 900px) {
	/* Government and opposition face each other, as on the benches. */
	.rp-flow .flow { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem 2rem; }
	.rp-flow .flow div { margin: 0; grid-column: 1 / -1; }
	/* Each side of the house is two teams, so its rule runs from the opening bench's colour to the closing bench's. */
	.rp-flow .flow div:nth-child(1) { grid-column: 1; padding-left: .9rem; border-left: 3px solid var(--og); border-image: linear-gradient(var(--og), var(--cg)) 1; }
	.rp-flow .flow div:nth-child(2) { grid-column: 2; padding-left: .9rem; border-left: 3px solid var(--oo); border-image: linear-gradient(var(--oo), var(--co)) 1; }
	.rp-flow .flow div:nth-last-child(2):not(:nth-child(-n+2)) { grid-column: 1; }
	.rp-flow .flow div:nth-last-child(1):not(:nth-child(-n+2)) { grid-column: 2; }
	.rp-flow .flow div:has(> .val[data-team]) { order: 9; grid-column: 1 / -1; display: flex; align-items: center; gap: .7rem; padding-top: .8rem; border-top: 1px solid var(--hairline); }
	.rp-flow .flow div:has(> .val[data-team]) .lbl { margin: 0; }
	.rp-issues .accordion-body { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem 2rem; }
	.rp-issues .accordion-body > p { margin: 0; }
	.rp-issues .accordion-body > p + p { padding-left: 1.2rem; border-left: 1px solid var(--hairline); }
	.rp-dropped .accordion-body { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem 2rem; }
	.rp-dropped .accordion-body > p { margin: 0; }
}

/* ---- 14. Report: feedback ------------------------------------------------ */
/* One card per speaker. The seat code in the summary gets a chip in its bench
   colour (a pseudo-element behind the text, sized per code), then the seat's name. */
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat^="PM" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat^="DPM" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Prime Minister" i]) { --team: var(--og); --team-tint: var(--og-tint); --team-ink: var(--og-ink); }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat^="LO" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat^="DLO" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Leader of" i]) { --team: var(--oo); --team-tint: var(--oo-tint); --team-ink: var(--oo-ink); }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat^="MG" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat^="GW" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Member of Gov" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Member for the Gov" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Government Whip" i]) { --team: var(--cg); --team-tint: var(--cg-tint); --team-ink: var(--cg-ink); }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat^="MO" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat^="OW" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Member of Opp" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Member of the Opp" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Member for the Opp" i]), .rp-coaching .analysis-accordion:has(.seat-mark[data-seat*="Opposition Whip" i]) { --team: var(--co); --team-tint: var(--co-tint); --team-ink: var(--co-ink); }
.rp-coaching .analysis-accordion { border-left: 4px solid var(--team, #98a1b0); }
.rp-coaching .analysis-accordion > summary { position: relative; isolation: isolate; justify-content: flex-start; gap: 1.2rem; padding-right: 2.6rem; font-size: 1.04rem; font-weight: 750; letter-spacing: .01em; background: var(--chevron-quiet) right 1.1rem center / .72rem auto no-repeat; }
.rp-coaching .analysis-accordion[open] > summary { background-image: var(--chevron-quiet-up); }
.rp-coaching .analysis-accordion > summary::before { content: ""; position: absolute; z-index: -1; left: .5rem; top: 50%; width: var(--chip-w, 0); height: 1.9rem; transform: translateY(-50%); border-radius: var(--radius-xs); background: var(--team-tint, var(--paper-deep)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--team, #98a1b0) 38%, transparent); }
.rp-coaching .analysis-accordion > summary::after { content: ""; flex: 1 1 auto; width: auto; height: auto; margin: 0; border: 0; transform: none; opacity: 1; color: var(--team-ink, var(--muted)); font-size: .84rem; font-weight: 600; letter-spacing: 0; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="PM" i]) > summary { --chip-w: 2.83rem; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="LO" i]) > summary { --chip-w: 2.6rem; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="DPM" i]) > summary { --chip-w: 3.6rem; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="DLO" i]) > summary { --chip-w: 3.37rem; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="MG" i]) > summary { --chip-w: 2.91rem; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="MO" i]) > summary { --chip-w: 2.94rem; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="GW" i]) > summary { --chip-w: 3.02rem; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="OW" i]) > summary { --chip-w: 3.03rem; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="PM" i]) > summary::after { content: "正方上院一辩 · Prime Minister"; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="LO" i]) > summary::after { content: "反方上院一辩 · Leader of the Opposition"; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="DPM" i]) > summary::after { content: "正方上院二辩 · Deputy Prime Minister"; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="DLO" i]) > summary::after { content: "反方上院二辩 · Deputy Leader of the Opposition"; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="MG" i]) > summary::after { content: "正方下院一辩 · Member for the Government"; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="MO" i]) > summary::after { content: "反方下院一辩 · Member for the Opposition"; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="GW" i]) > summary::after { content: "正方下院二辩 · Government Whip"; }
.rp-coaching .analysis-accordion:has(.seat-mark[data-seat="OW" i]) > summary::after { content: "反方下院二辩 · Opposition Whip"; }
.strengths { margin: 0 0 1rem; padding: 0; list-style: none; }
.strengths li { position: relative; max-width: var(--measure); margin: 0 0 .4rem; padding-left: 1.6rem; font-size: .96rem; line-height: 1.65; }
.strengths li::before { content: ""; position: absolute; left: .15rem; top: .42em; width: .85rem; height: .5rem; border-left: 2.5px solid var(--success); border-bottom: 2.5px solid var(--success); border-radius: 1px; transform: rotate(-45deg) scale(.8); }
.advice { margin: 0 0 .9rem; }
.advice + .advice { padding-top: .9rem; border-top: 1px solid var(--hairline); }
.advice:last-child { margin-bottom: 0; }
.advice p { max-width: var(--measure); margin: 0 0 .55rem; font-size: .97rem; line-height: 1.72; }
.advice p.muted { color: var(--ink-soft); }
.advice-title, .advice p.advice-title { margin: 0 0 .35rem; color: var(--lapis-deep); font-size: 1rem; font-weight: 700; }
.drill, .advice p.drill, .accordion-body > p.drill { max-width: var(--measure); margin: .7rem 0 0; padding: .7rem .9rem; border-radius: var(--radius-xs); background: var(--gold-tint); box-shadow: inset 3px 0 0 var(--gold); color: var(--ink); font-size: .94rem; line-height: 1.65; }
.drill .lbl { color: var(--warning-ink); }
.rp-roles table { width: min(100%, 53rem); margin: 0; }
.rp-roles td:first-child { font-weight: 700; white-space: nowrap; box-shadow: inset 4px 0 0 var(--team, transparent); padding-left: 1rem; }
.rp-roles td:nth-child(2) { color: var(--ink-soft); min-width: 9rem; }
.rp-roles td:nth-child(3) { font-weight: 650; color: var(--team-ink, var(--ink)); white-space: nowrap; }
.rp-roles td:last-child { line-height: 1.65; }
.rp-roles td .muted { display: inline-block; margin-top: .25rem; font-size: .88rem; }
/* Nothing said yet: the disclosure stays a single quiet row. */
#flow-feedback:empty { display: none; }
.analysis-accordion[open]:has(> #flow-feedback:empty) > summary { border-bottom: 0; border-radius: var(--radius-sm); }
.analysis-accordion:has(> #flow-feedback:empty) > summary { color: var(--muted); }
#flow-feedback > .analysis-accordion { margin: .6rem 0; }
#flow-feedback > .analysis-accordion > p { max-width: var(--measure); line-height: 1.7; }
@media (min-width: 900px) {
	/* Whole-round advice: what went wrong on the left, the fix and its drill on the right. */
	.rp-advice .accordion-body { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .2rem 2rem; align-items: start; }
	.rp-advice .accordion-body > p { margin: 0; grid-column: 2; }
	.rp-advice .accordion-body > p:first-child { grid-column: 1; grid-row: 1 / span 3; }
	.rp-advice .accordion-body > p.drill { margin-top: .6rem; }
	/* One speaker per row, in speaking order. Only one card is open at a time, so the open card
	   uses the full width: what went well on the left, the advice and its drill on the right. */
	.rp-coaching { display: grid; grid-template-columns: minmax(0, 1fr); gap: .55rem; align-items: start; }
	.rp-coaching > .analysis-accordion { margin: 0; }
	.rp-coaching .analysis-accordion[open] > .accordion-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 0 2.75rem; align-items: start; }
	.rp-coaching .accordion-body > * { grid-column: 1 / -1; }
	.rp-coaching .accordion-body > .strengths { grid-column: 1; grid-row: 1 / span 12; margin: 0; }
	.rp-coaching .accordion-body:has(> .strengths) > .advice { grid-column: 2; }
}

/* ---- 15. Report: POI and recordings -------------------------------------- */
#poi-workspace > h2, .saved-speeches > summary { font-size: 1.0625rem; }
.poi-toolbar { gap: .6rem; margin: .8rem 0; }
.poi-toolbar button { min-height: 2.25rem; margin: 0; padding: 0 .9rem; font-size: .9rem; }
.poi-row { gap: .9rem; align-items: center; padding: .85rem 0; border-bottom: 1px solid var(--hairline); }
.poi-row p { margin: .15rem 0; color: var(--ink-soft); font-size: .9rem; }
.poi-row button { min-height: 2.1rem; margin: 0; padding: 0 .75rem; font-size: .84rem; }
.poi-row .poi-actions { gap: .7rem; }
.poi-state { color: var(--warning-ink); font-size: .82rem; }
.poi-state.saved { color: var(--success-ink); }
.poi-state.error { color: var(--danger-ink); }
.poi-editor { max-width: 48rem; margin: 1rem 0; padding: 1.1rem 1.2rem; border: 1px solid var(--lapis-line); border-radius: var(--radius-sm); background: var(--lapis-tint); }
.poi-fields { gap: .8rem 1rem; }
.poi-fields label { gap: .3rem; color: var(--ink-soft); font-size: .85rem; font-weight: 600; }
.poi-fields input, .poi-fields select, .poi-fields textarea { padding: .45rem .7rem; border-color: var(--field-line); border-radius: var(--radius-sm); font-weight: 400; }
.poi-fields select { padding-right: 2.1rem; }
.poi-confirm { align-items: center; gap: .55rem; margin-top: .9rem; font-size: .9rem; }
.poi-confirm input { margin: 0; }
.poi-editor .structure-note { color: #56607a; }
#poiEditError { color: var(--danger-ink); font-size: .88rem; font-weight: 600; }
.poi-pagination { margin-top: .8rem; color: var(--muted); font-size: .85rem; }
.poi-pagination button { min-height: 2.1rem; padding: 0 .8rem; font-size: .85rem; }
#poiList > .analysis-empty { padding: .9rem 1.1rem; border: 1px dashed var(--field-line); border-radius: var(--radius-sm); background: var(--paper); box-shadow: none; }

.saved-speeches > summary { display: flex; align-items: center; justify-content: space-between; color: var(--ink); font-weight: 650; border-radius: var(--radius-xs); }
.saved-speeches[open] > summary { margin-bottom: .6rem; padding-bottom: .9rem; border-bottom: 1px solid var(--hairline); border-radius: 0; }
.saved-speeches td:first-child strong { display: inline-block; padding: .05rem .6rem; border-radius: var(--radius-xs); background: var(--team-tint, var(--paper-deep)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--team, #98a1b0) 38%, transparent); font-weight: 750; }
.saved-speeches th:first-child, .saved-speeches td:first-child { width: 5rem; min-width: 5rem; }
.saved-speeches th:last-child, .saved-speeches td:last-child { width: 6.5rem; min-width: 6.5rem; }
.saved-speeches td.muted { color: var(--ink-soft); }
.saved-speeches td .muted { font-size: .86rem; }
.saved-speeches form { margin-top: .8rem; }
.transcript-preview { margin-top: .35rem; }
.transcript-preview:not([open]) { display: inline-block; margin: 0 0 0 1.1rem; vertical-align: baseline; }
.poi-pagination:has(#poiPage:empty) { display: none; }
@media (min-width: 900px) {
	/* Seat actions sit at the right of each recording row instead of under it. */
	.saved-speeches .speech-row > td { position: relative; }
	.saved-speeches .speech-row > td > .manage-row { position: absolute; top: .65rem; right: .7rem; max-width: 19.6rem; flex-wrap: nowrap; margin: 0; }
	/* A recording filed under a free-text label gets a longer first option: the select shrinks, the row does not grow. */
	.saved-speeches .speech-row > td > .manage-row select { flex: 0 1 auto; min-width: 0; max-width: 10rem; }
	.saved-speeches .speech-row > td > .manage-row button { flex: none; white-space: nowrap; }
	.saved-speeches .speech-row > td:has(> .manage-row) { padding-right: 21rem; }
}
.transcript-preview > summary { display: inline-flex; align-items: center; border-radius: var(--radius-xs); color: var(--lapis); font-size: .88rem; font-weight: 600; }
.transcript-preview > p { max-width: 46rem; margin: .5rem 0; padding: .8rem 1rem; border: 1px solid var(--hairline); border-radius: var(--radius-xs); background: var(--paper); color: var(--ink); font-size: .95rem; line-height: 1.75; }

body .speech-manage { margin: .9rem 0 1.1rem; padding: 1.05rem 1.2rem 1.1rem; border: 1px solid var(--hairline); border-radius: var(--radius-sm); background: var(--paper); font-size: .92rem; }
body .speech-manage h4 { margin: 0 0 .7rem; font-size: .98rem; }
body .manage-board { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: .4rem; }
body .manage-seat { --team: #98a1b0; display: flex; flex-direction: column; align-items: flex-start; gap: 0; padding: .35rem .6rem .4rem; border: 1px solid var(--hairline); border-top: 3px solid var(--team); border-radius: var(--radius-xs); background: var(--surface); color: var(--muted); font-size: .76rem; line-height: 1.35; }
body .manage-seat strong { color: var(--ink); font-size: .96rem; font-weight: 750; }
body .manage-seat:nth-child(1), body .manage-seat:nth-child(3) { --team: var(--og); }
body .manage-seat:nth-child(2), body .manage-seat:nth-child(4) { --team: var(--oo); }
body .manage-seat:nth-child(5), body .manage-seat:nth-child(7) { --team: var(--cg); }
body .manage-seat:nth-child(6), body .manage-seat:nth-child(8) { --team: var(--co); }
body .manage-seat[data-state="done"] { background: var(--surface); color: var(--success-ink); }
body .manage-seat[data-state="done"] span::before { content: "✓ "; }
body .manage-seat[data-state="working"] { background: var(--warning-tint); color: var(--warning-ink); }
body .manage-seat[data-state="recording"], body .manage-seat[data-state="attention"], body .manage-seat[data-state="duplicate"] { background: var(--danger-tint); color: var(--danger-ink); }
body .manage-seat[data-state="missing"] { background: transparent; border-style: dashed; border-top-style: solid; color: var(--muted); box-shadow: none; }
body .manage-warnings { margin: .8rem 0 0; padding: .7rem 1rem .7rem 2.1rem; border: 1px solid #edc4be; border-radius: var(--radius-xs); background: var(--danger-tint); color: var(--danger-ink); }
body .manage-notice { margin: .8rem 0 0; padding: .7rem 1rem; border: 1px solid #ecd9ae; border-radius: var(--radius-xs); background: var(--warning-tint); color: var(--warning-ink); }
body .manage-info { color: var(--muted); }
body .manage-attach { gap: .5rem .7rem; margin: .95rem 0 0; }
body .manage-attach label { color: var(--ink); font-weight: 650; }
body .manage-row { gap: .45rem; margin-top: .6rem; }
body .manage-attach select, body .manage-row select { min-height: 2.1rem; padding: .2rem 2rem .2rem .65rem; border: 1px solid var(--field-line); border-radius: var(--radius-xs); background: var(--surface) var(--chevron) right .65rem center / .65rem auto no-repeat; font-size: .86rem; }
body .manage-attach input[type="file"] { padding: 0; border: 0; background: none; font-size: .86rem; }
body .speech-manage button, body .manage-row button { min-height: 2.1rem; margin-top: 0; padding: 0 .8rem; font-size: .86rem; }
body .speech-manage button.manage-quiet, body .manage-row button:not(.manage-danger) { background: var(--surface); color: var(--lapis); }
body .speech-manage button.manage-quiet:hover, body .manage-row button:not(.manage-danger):hover { background: var(--lapis-tint); }
body .speech-manage > button.manage-quiet { margin-top: .9rem; }
body .manage-row button.manage-danger { background: var(--surface); color: var(--danger-ink); }
body .manage-row button.manage-danger:hover { background: var(--danger-tint); }
body .manage-status { color: var(--ink-soft); }
body .manage-status:empty { display: none; }
body .manage-status.bad { color: var(--danger-ink); }

/* ---- 16. Live structure -------------------------------------------------- */
.structure-head { gap: .6rem 1rem; align-items: center; }
.structure-head h2 { margin: 0; }
.structure-head a { font-weight: 600; }
.structure-speech { margin-top: .7rem; }
.structure-component { padding: .8rem 1rem; margin: .55rem 0; border: 1px solid var(--hairline); border-radius: var(--radius-xs); background: var(--paper); }
.structure-component:target { outline: 2px solid var(--gold-deep); outline-offset: 2px; }
.structure-component p { max-width: 44rem; line-height: 1.7; }
.structure-evidence summary { display: inline-flex; align-items: center; color: var(--lapis); border-radius: var(--radius-xs); }
.structure-evidence blockquote { margin: .5rem 0; padding: .1rem 0 .1rem .8rem; border-left: 3px solid var(--gold); color: var(--ink-soft); }
.structure-relations, .structure-comments { margin: 0; padding: 0; list-style: none; font-size: .92rem; }
.structure-relations li, .structure-comments li { margin: 0; padding: .65rem 0; border-top: 1px solid #f0ebe0; line-height: 1.65; }
.structure-relations li:first-child, .structure-comments li:first-child { border-top: 0; padding-top: 0; }
.structure-relations li:last-child, .structure-comments li:last-child { padding-bottom: 0; }
.structure-relations .pill { margin: 0 .4rem; background: var(--lapis-tint); color: var(--lapis); }
.structure-labels { gap: .35rem; }
.structure-labels strong { color: var(--lapis-deep); }
.structure-speech > h4 { margin: 1rem 1.1rem .4rem; }
.poi-row details { margin-top: .2rem; }
.poi-row details summary { display: inline-flex; align-items: center; color: var(--ink-soft); font-size: .86rem; font-weight: 600; border-radius: var(--radius-xs); }
.structure-refresh { min-height: 2.1rem; margin-top: .4rem; padding: 0 .8rem; font-size: .86rem; }
#structure-content > .muted { margin: .6rem 0 0; }

/* ---- 17. Login ----------------------------------------------------------- */
.page-login {
	min-height: 100vh; min-height: 100dvh; display: grid; justify-items: center; align-content: start; padding: clamp(2.5rem, 9vh, 5.5rem) 1rem 2rem;
	background:
		linear-gradient(100deg, #20478a 0%, var(--lapis) 34%, #11295b 72%, var(--lapis-deep) 100%) top / 100% 15rem no-repeat,
		linear-gradient(var(--gold), var(--gold)) 0 15rem / 100% 2px no-repeat,
		var(--paper);
}
.page-login main { width: 100%; max-width: 24.5rem; margin: 0; padding: 2.3rem 2.2rem 2.1rem; border: 1px solid var(--hairline); border-radius: var(--radius); background: var(--surface); box-shadow: 0 2px 4px rgba(10, 23, 54, .08), 0 24px 48px -20px rgba(10, 23, 54, .45); }
.page-login .login-mark { display: block; width: 4rem; height: 4rem; margin: 0 auto 1rem; border-radius: 15px; box-shadow: 0 8px 18px -8px rgba(10, 23, 54, .55); }
.page-login h1 { margin: 0; font-size: 1.6rem; text-align: center; letter-spacing: .005em; }
.page-login .login-sub { margin: .15rem 0 1.4rem; color: var(--muted); font-size: .9rem; text-align: center; letter-spacing: .08em; }
.page-login p.muted { margin: 0 0 .5rem; font-size: .92rem; line-height: 1.6; text-align: center; }
.page-login p.muted a { display: inline-block; font-weight: 600; }
.page-login label { display: block; margin: 1.1rem 0 .35rem; font-size: .9rem; font-weight: 600; }
.page-login input { width: 100%; min-height: 2.75rem; padding: .5rem .8rem; }
.page-login form button { width: 100%; min-height: 2.9rem; margin-top: 1.5rem; font-size: 1.02rem; font-weight: 650; }
.page-login .error { margin: 1rem 0 0; padding: .65rem .9rem; border: 1px solid #edc4be; border-radius: var(--radius-sm); background: var(--danger-tint); color: var(--danger-ink); font-size: .92rem; }

/* ---- 18. Explainer (/try) ------------------------------------------------ */
.page-try { --page-max: calc(1120px + 3rem); font: 16px/1.7 var(--font); }
.page-try .shell { width: min(1120px, 100% - 3rem); }
.page-try main { max-width: none; padding: 0; }
.page-try :focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 2px; }
.page-try .hero { gap: 3.5rem; padding: 3rem 0 2.25rem; }
.page-try .eyebrow { color: var(--muted); letter-spacing: .14em; }
.page-try h1 { margin: 0 0 1.1rem; font-size: clamp(2rem, 4vw, 2.9rem); font-weight: 700; line-height: 1.25; letter-spacing: -.02em; }
.page-try h1 em { color: var(--gold-deep); }
.page-try .lead { color: var(--ink-soft); font-size: 1.04rem; }
.page-try .invite { padding: 1.4rem 1.5rem 1.35rem; border: 1px solid var(--hairline); border-left: 1px solid var(--hairline); border-top: 3px solid var(--gold); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-card); }
.page-try .invite strong { font-size: 1.15rem; font-weight: 650; }
.page-try .invite p { margin: .45rem 0 1.1rem; color: var(--ink-soft); }
.page-try .invite .small { margin: .9rem 0 0; color: var(--muted); }
.page-try .button { min-height: 2.6rem; padding: 0 1.1rem; border-radius: var(--radius-sm); font-size: .95rem; font-weight: 600; transition: background-color var(--ease), border-color var(--ease); }
.page-try .button.secondary { border-color: var(--field-line); background: var(--surface); color: var(--lapis); box-shadow: none; }
.page-try .button.secondary:hover { background: var(--lapis-tint); border-color: var(--lapis-line); }
.page-try .small { color: var(--muted); }
.page-try .workspace { border-color: var(--hairline); border-radius: var(--radius); box-shadow: var(--shadow-card); }
.page-try [role="tablist"] { gap: .25rem; padding: .35rem 1.2rem 0; background: var(--paper); border-bottom: 1px solid var(--hairline); }
.page-try [role="tab"] { position: relative; padding: .8rem 1rem .85rem; border: 0; border-radius: var(--radius-sm) var(--radius-sm) 0 0; background: transparent; color: var(--muted); font-size: .95rem; font-weight: 600; cursor: pointer; transition: color var(--ease), background-color var(--ease); }
.page-try [role="tab"]:hover { background: rgba(28, 61, 120, .06); color: var(--lapis); }
.page-try [role="tab"][aria-selected="true"] { color: var(--lapis-deep); font-weight: 700; }
.page-try [role="tab"]::after { content: ""; position: absolute; left: .8rem; right: .8rem; bottom: -1px; height: 3px; border-radius: 3px 3px 0 0; background: transparent; }
.page-try [role="tab"][aria-selected="true"]::after { background: var(--gold); box-shadow: 0 0 0 1px rgba(185, 133, 42, .35); }
.page-try [role="tabpanel"] { padding: 1.8rem 1.9rem 1.9rem; }
.page-try h2 { font-size: 1.3rem; font-weight: 650; }
.page-try h3 { margin: .5rem 0 .4rem; font-size: 1.02rem; }
.page-try .tag { padding: .2rem .75rem; background: var(--gold-tint); color: var(--warning-ink); font-weight: 600; }
.page-try .steps p, .page-try .sample-copy p, .page-try .sample-copy ul { color: var(--ink-soft); font-size: .93rem; }
.page-try .step-number { display: inline-grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 50%; background: var(--lapis-tint); color: var(--lapis); font: 700 .92rem/1 var(--font); font-variant-numeric: tabular-nums; box-shadow: inset 0 0 0 1px var(--lapis-line); }
.page-try .observation { border: 1px solid var(--lapis-line); border-radius: var(--radius-sm); background: var(--lapis-tint); font-size: .9rem; }
.page-try .observation strong { color: var(--lapis-deep); }
.page-try .observation p { color: var(--ink-soft); }
.page-try details { color: var(--ink-soft); font-size: .9rem; }
.page-try summary { display: inline-flex; align-items: center; border-radius: var(--radius-xs); }
.page-try .paper { border-color: var(--hairline); box-shadow: 7px 7px 0 var(--paper-deep); color: var(--lapis); }
.page-try .paper-top { border-bottom-color: var(--lapis); }
.page-try label { color: var(--ink); font-size: .88rem; }
.page-try textarea, .page-try select { border-color: var(--field-line); border-radius: var(--radius-sm); background-color: var(--surface); font-size: .92rem; }
.page-try textarea { min-height: 7rem; }
.page-try .status { padding: 0; background: none; color: var(--success-ink); }
.page-try footer { padding: 1.3rem 0 2rem; color: var(--muted); }
.page-try .text-button { min-height: 0; padding: .4rem 0; border: 0; background: none; box-shadow: none; color: var(--lapis); font-size: .8rem; font-weight: 600; }
.page-try .text-button:hover { background: none; color: var(--lapis-deep); }

/* ---- 19. Small screens, motion, print ------------------------------------ */
@keyframes theme-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

@media (max-width: 999px) {
	.page-home main { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
	.page-home .hero-card, .page-home .upload-card, .page-home .recent-card { grid-column: 1; grid-row: auto; }
	.rp-ranking .ranking { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
	:root { --gutter: 1rem; --bar-h: 3.25rem; }
	main { padding-top: 1.25rem; }
	.site-sub { display: none; }
	.card { padding: 1.2rem 1.15rem; }
	.page-home .hero-card { padding: 1.4rem 1.2rem 1.3rem; }
	.page-home h1 { font-size: 1.7rem; }
	.page-round h1 { font-size: 1.45rem; }
	.page-round main > p:first-child, .page-round:has(#recorder) main > p:first-child { float: none; margin: 0 0 .3rem; }
	#recorder { padding: 1.1rem 1rem 1.2rem; }
	.rec-setup { grid-template-columns: minmax(0, 1fr); }
	.rec-clock .countdown { font-size: 2.8rem; }
	/* Title and both switches share the first line; the hint takes the second. */
	body .chamber .chamber-hint { order: 3; flex: 1 1 100%; }
	body .chamber .chamber-bell { margin-left: auto; }
	body .chamber .chamber-bell[hidden] + .chamber-view { margin-left: auto; }
	.analysis-toolbar h2 { font-size: 1.12rem; }
	.analysis-tabs { overflow-x: auto; scrollbar-width: none; }
	.analysis-tabs::-webkit-scrollbar { display: none; }
	.analysis-tabs button { flex: 1 0 auto; min-width: 0; padding: .55rem .7rem .7rem; font-size: .9rem; white-space: nowrap; }
	.analysis-panel > section:not([data-accordion]):not([data-collapse-body]):not(#argument-structure) { padding: 1.1rem 1.05rem 1.15rem; }
	body .judge-panel { padding: 1rem 1.05rem 1.1rem; }
	body .manage-board { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.rp-ranking .team { flex-wrap: wrap; gap: 0 .55rem; }
	.rp-coaching .analysis-accordion > summary::before { font-size: .78rem; }
	.saved-speeches { overflow-x: auto; }
	.rp-roles thead { display: none; }
	.rp-roles tr { display: grid; grid-template-columns: auto auto minmax(0, 1fr); align-items: baseline; gap: .15rem .7rem; padding: .75rem 0; border-bottom: 1px solid var(--hairline); }
	.rp-roles tr:last-child { border-bottom: 0; }
	.rp-roles td, .rp-roles td:first-child { display: block; padding: 0; border: 0; box-shadow: none; }
	.rp-roles td:first-child { padding-left: .6rem; box-shadow: inset 4px 0 0 var(--team, transparent); }
	.rp-roles td:nth-child(2) { min-width: 0; }
	.rp-roles td:last-child { grid-column: 1 / -1; }
	.page-login main { padding: 2rem 1.4rem 1.7rem; }
	.page-try .shell { width: calc(100% - 2rem); }
	.page-try .hero { gap: 1.5rem; padding: 2rem 0 1.6rem; }
	.page-try [role="tablist"] { padding: .3rem .5rem 0; }
	.page-try [role="tab"] { padding: .7rem .7rem .75rem; font-size: .9rem; }
	.page-try [role="tabpanel"] { padding: 1.3rem 1.1rem 1.4rem; }
	.site-bar .edition { font-size: .58rem; letter-spacing: .08em; }
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}
@media print {
	.site-bar, .analysis-tabs, .rec-alarm { position: static; transform: none; }
	body, html { background: #fff; }
}
