
:root{--bg:#fbfaf7;--card:#fff;--fg:#1f1e1c;--muted:#6b6a65;--line:#e4e2dc;--acc:#2b6cb0;--accbg:#e8f0fa;
--ok:#2f6f1f;--okbg:#e9f3de;--warn:#8a5a00;--warnbg:#fbf0d9;--bad:#a32d2d;--badbg:#fbeaea;--code:#f3f1ec}
@media (prefers-color-scheme:dark){:root{--bg:#1b1b1a;--card:#242423;--fg:#ecebe6;--muted:#a3a19a;--line:#3a3936;
--acc:#8db8ea;--accbg:#1e3350;--ok:#a8d68a;--okbg:#26361c;--warn:#f0c46a;--warnbg:#3d2f10;--bad:#f09a9a;--badbg:#401e1e;--code:#2e2e2c}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.55 system-ui,-apple-system,Segoe UI,sans-serif}
main{max-width:900px;margin:0 auto;padding:16px}a{color:var(--acc)}code,pre{background:var(--code);border-radius:4px}
code{padding:0 4px}pre{padding:10px;overflow:auto;white-space:pre-wrap}
header.top{border-bottom:1px solid var(--line);padding:12px 16px;background:var(--card)}
header.top h1{font-size:19px;margin:0 0 4px;font-weight:600}.meta{color:var(--muted);font-size:13px}
.banner{margin:12px 0;padding:10px 12px;border-radius:8px;font-size:14px}.banner.ok{background:var(--okbg);color:var(--ok)}
.banner.err{background:var(--badbg);color:var(--bad)}.banner.warn{background:var(--warnbg);color:var(--warn)}
.banner ul{margin:6px 0 0;padding-left:18px}
details.instr{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:12px 0}
.task{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:16px 0}
.task>.tnum{font-size:12px;color:var(--muted)}.block{margin:10px 0}.blabel{font-size:12px;color:var(--muted);margin-bottom:2px}
.caption{font-size:12px;color:var(--muted)}h3{margin:2px 0 6px;font-size:17px}
.md.quote,.txt.quote{background:var(--code);border-radius:8px;padding:8px 12px}.md p{margin:6px 0}.txt{white-space:pre-wrap}
.el{border-top:1px solid var(--line);padding:6px 0;font-size:14px}.tier{font-size:11px;color:var(--muted)}
.alt,.src{font-size:12px;color:var(--muted)}.ev{border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin:6px 0}
ol.lines{font-family:ui-monospace,Consolas,monospace;font-size:13px;white-space:pre-wrap}.diff .add{color:var(--ok)}.diff .del{color:var(--bad)}
table.kv{border-collapse:collapse;font-size:14px}.kv th{text-align:left;color:var(--muted);padding:2px 12px 2px 0;vertical-align:top}
img{max-width:100%}form{border-top:1px solid var(--line);margin-top:12px;padding-top:8px}
.field{margin:10px 0}.flabel{font-weight:600;font-size:14px}.help{font-size:12px;color:var(--muted)}.req{color:var(--bad)}
.opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;align-items:center}
.opt{border:1px solid var(--line);border-radius:8px;padding:4px 10px;cursor:pointer;font-size:14px;user-select:none}
.opt input{position:absolute;opacity:0;pointer-events:none}.opt:has(input:checked){background:var(--accbg);border-color:var(--acc)}
.tone-success:has(input:checked){background:var(--okbg);border-color:var(--ok);color:var(--ok)}
.tone-warning:has(input:checked){background:var(--warnbg);border-color:var(--warn);color:var(--warn)}
.tone-danger:has(input:checked){background:var(--badbg);border-color:var(--bad);color:var(--bad)}
kbd{font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 3px;margin-left:4px}
table.matrix{border-collapse:collapse;width:100%}.matrix th{text-align:left;font-weight:400;font-size:14px;padding:6px 8px 6px 0;vertical-align:top;width:60%}
.matrix tr{border-top:1px solid var(--line)}.rowlabel{color:var(--muted)}.end{font-size:12px;color:var(--muted)}
input[type=text],input[type=number],textarea,select{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--fg);font:inherit;margin-top:4px}
.actions{display:flex;gap:8px;align-items:center;margin-top:8px}.actions button{font:inherit;padding:5px 12px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--fg);cursor:pointer}
table.mdt{border-collapse:collapse;margin:6px 0;font-size:14px}.mdt th,.mdt td{border:1px solid var(--line);padding:4px 8px;text-align:left}
.status{font-size:13px}.status.ok{color:var(--ok)}.status.err{color:var(--bad)}

body{font-size:17px}main{max-width:850px}.opt{display:block;width:100%;padding:10px}
.opt input{position:static;opacity:1;pointer-events:auto;margin-right:8px}
fieldset{border:1px solid var(--line);border-radius:10px;margin:18px 0;padding:16px;min-width:0}
legend{font-weight:700}button{font:inherit;padding:10px 16px;margin:8px 8px 8px 0;cursor:pointer}
:focus-visible{outline:3px solid var(--acc);outline-offset:3px}.sentence{white-space:pre-wrap;font-size:1.2em}
.instructions{white-space:pre-wrap;overflow-wrap:anywhere}label{display:block;margin:6px 0}
.status{font-size:1em}textarea{min-height:70px}.actions{flex-wrap:wrap}input,select,textarea{max-width:100%}
.progress-table{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.progress-table table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.progress-table th,.progress-table td{padding:10px 12px;text-align:right}
.progress-table tr>:first-child{text-align:left;overflow-wrap:anywhere}
.progress-table tbody tr{border-top:1px solid var(--line)}
.progress-table progress{display:block;width:100%;min-width:5rem;accent-color:var(--acc)}
.progress-help{color:var(--muted);font-size:.9em}
.portal-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;padding:10px 16px;
border-bottom:1px solid var(--line);background:var(--card)}
.portal-header .brand{font-weight:700;font-size:1.2em;text-decoration:none;color:inherit}
.portal-header nav{display:flex;gap:16px;flex-wrap:wrap}
.user-control{margin-left:auto}.user-control form{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.user-control label{display:inline;margin:0}.user-control input{width:12em}
.user-control form{border:0;padding:0;margin:0;background:none;box-shadow:none}
.user-control button{margin:0;padding:6px 12px}.user-id{font-weight:600;overflow-wrap:anywhere}
.tagline{font-size:1.2em;color:var(--muted)}.portal-links{padding-left:1.2em}
.session-list{list-style:none;padding:0}.session-list li{display:flex;flex-wrap:wrap;gap:8px 12px;
align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.85em;font-weight:600;
border:1px solid currentColor}
.badge-open{color:#1a7f37}.badge-pending{color:#9a6700}.badge-finished{color:var(--muted)}
.summary{white-space:pre-wrap;overflow-wrap:anywhere}.error{color:#cf222e;font-weight:600}
.session-entry input{display:block;width:100%;max-width:24em}
