/* Colors and typography follow the shared Kodislovo theme in assets/css/theme.css. */
:root{--bg:var(--ks-bg);--card:var(--ks-surface);--soft:var(--ks-surface-2);--text:var(--ks-text);--muted:var(--ks-text-soft);--line:var(--ks-border);--primary:var(--ks-primary);--on-primary:#fff;--accent:var(--ks-accent);--accent-soft:var(--ks-accent-soft);--gold:var(--ks-gold);--good:color-mix(in srgb,var(--ks-success) 70%,var(--ks-text));--bad:color-mix(in srgb,var(--ks-danger) 80%,var(--ks-text));--shadow:var(--ks-shadow);color-scheme:light}
[data-theme=dark]{--on-primary:var(--ks-bg);--good:color-mix(in srgb,var(--ks-success) 65%,var(--ks-text));--bad:color-mix(in srgb,var(--ks-danger) 65%,var(--ks-text));color-scheme:dark}
*{box-sizing:border-box}body{margin:0;color:var(--text);font:16px/1.6 var(--ks-font-sans)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);padding:11px 18px;border-radius:12px;min-height:44px;font-weight:650;background:var(--card);color:var(--text)}button:disabled{opacity:.5;cursor:default}.primary{background:linear-gradient(135deg,var(--ks-primary),var(--ks-accent));color:var(--on-primary);border-color:transparent;box-shadow:var(--shadow-button)}.quiet{background:transparent}button:hover:not(:disabled){filter:brightness(.95)}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}a{color:var(--primary)}[hidden]{display:none!important}.skip{position:fixed;top:-80px;left:12px;z-index:100;padding:12px;background:var(--card)}.skip:focus{top:12px}.topbar{padding:16px max(20px,calc((100% - 1160px)/2));display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);background:var(--card)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;border-radius:12px;width:44px;height:44px;background:var(--primary);color:var(--on-primary);font-size:24px;font-weight:800}.brand small{display:block;color:var(--muted);font-size:12px}main{max-width:var(--maxw);margin:auto;padding:0 20px 35px}.hero{display:flex;justify-content:space-between;gap:30px;padding:45px 0 32px}.eyebrow{font-size:11px;letter-spacing:1.8px;font-weight:800;color:var(--primary);margin:0 0 10px}h1{font-family:var(--ks-font-serif);font-size:clamp(30px,4vw,42px);line-height:1.12;letter-spacing:-2px;margin:0 0 16px}h1 span{color:var(--primary)}h2{font-size:24px;line-height:1.25;margin:0 0 10px}h3{font-size:21px;margin:14px 0}p{margin:0 0 16px}.lead{font-size:18px;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips span,.chip{background:var(--card);border:1px solid var(--line);padding:5px 12px;border-radius:30px;font-size:13px;white-space:nowrap}.hero-note{text-align:right;max-width:235px;align-self:center;color:var(--muted);font-size:13px}.large-ne{font:bold 78px/1 Georgia,serif;color:var(--gold);display:block;margin-bottom:10px}.panel{border:1px solid var(--line);border-radius:22px;background:var(--card);box-shadow:var(--shadow)}.welcome{padding:30px}.welcome p{max-width:850px;color:var(--muted)}.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:20px}.muted{color:var(--muted);font-size:14px}.sessionbar{padding:16px 22px;display:flex;gap:26px;align-items:center;margin-bottom:24px;flex-wrap:wrap}.timegroup{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.timegroup b{font-size:24px;font-variant-numeric:tabular-nums}.progressgroup{flex:1;min-width:160px;font-size:13px;color:var(--muted)}progress{display:block;width:100%;height:8px;margin-top:8px;accent-color:var(--accent)}.layout{display:grid;grid-template-columns:245px minmax(0,1fr);gap:24px}.sidebar nav{display:grid;gap:7px}.stage-button{text-align:left;padding:14px 16px;border-color:transparent;background:transparent;display:grid;grid-template-columns:25px 1fr;gap:10px;align-items:start}.stage-button small{display:block;color:var(--muted);font-weight:400;font-size:12px}.stage-button[aria-current=step]{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.stage-num{font-size:13px;font-weight:800;width:24px;height:24px;border:1px solid var(--line);border-radius:50%;text-align:center}.sidebar-note{padding:22px 15px;color:var(--muted);font-size:13px}.sidebar-note b{color:var(--text)}.sidebar-note p{margin:10px 0}.workspace{padding:28px}.stagehead{display:flex;gap:15px;align-items:start;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:10px}.stagehead h2{font-size:26px}.stagehead .chip{background:var(--soft)}.route{display:flex;align-items:center;gap:10px;margin:18px 0;flex-wrap:wrap}.route select{max-width:100%;background:var(--soft);border:1px solid var(--line);border-radius:9px;padding:7px;color:var(--text)}.theory{background:var(--soft);border-radius:12px;padding:12px 16px;margin-bottom:24px;font-size:14px}.theory summary,.sources summary{cursor:pointer;font-weight:650}.theory p{margin:12px 0 0}.question-tag{color:var(--primary);font-size:12px;font-weight:750}.sentence{font:23px/1.65 Georgia,serif;border-left:3px solid var(--gold);background:var(--soft);padding:20px 24px;border-radius:0 14px 14px 0;margin:16px 0 24px}.blank{background:var(--accent-soft);color:var(--text);border-radius:5px;padding:1px 4px}.answer-group{border:0;padding:0;margin:20px 0}.answer-group legend{font-weight:750;margin-bottom:10px}.options{display:grid;gap:9px}.option{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:12px;padding:13px 16px;cursor:pointer;font-size:15px;overflow-wrap:anywhere}.option:has(input:checked){background:var(--accent-soft);border-color:var(--accent)}.option input{margin:6px 0 0;accent-color:var(--accent);flex-shrink:0}.spelling{display:flex;gap:10px}.spelling .option{flex:1}.feedback{padding:20px;border:1px solid var(--line);border-radius:14px;background:var(--soft);margin-top:22px}.feedback p:last-child{margin-bottom:0}.good{color:var(--good)}.bad{color:var(--bad)}.first-note{font-size:13px;color:var(--muted);margin-top:12px}.navigation{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;margin-top:26px}.editor-text{font:19px/1.8 Georgia,serif;background:var(--soft);padding:20px;border-radius:14px}.editor-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}.editor-fields label,.reflection label{font-size:14px;display:block}.editor-fields input,textarea{width:100%;border:1px solid var(--line);background:var(--soft);color:var(--text);border-radius:10px;padding:10px;margin:7px 0 0}.reflection{padding:28px;margin:24px 0 0 269px}.reflection label{margin-top:15px}.reflection p{margin:10px 0 0}.finishbar{text-align:right;margin:24px 0}.report{padding:30px;margin:24px 0}.report-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:24px 0}.stat{padding:18px;background:var(--soft);border-radius:14px}.stat b{display:block;font-size:27px;color:var(--primary)}.stat small{color:var(--muted)}.report table{width:100%;border-collapse:collapse;font-size:14px}.report td,.report th{padding:12px 8px;border-bottom:1px solid var(--line);text-align:left}.report details{border-bottom:1px solid var(--line);padding:12px 0}.report summary{cursor:pointer;font-weight:650}.report details p{margin:10px 0}.sources{margin-top:25px;padding:18px 0;font-size:13px;color:var(--muted)}.sources ul{padding-left:20px}.sources p{max-width:850px}footer{font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:16px}.time-notice{padding:14px;background:var(--accent-soft);border-radius:12px;margin-bottom:20px}dialog{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:20px;max-width:470px;padding:28px}dialog::backdrop{background:#0b1120bb}.tablewrap{overflow-x:auto}.storage-warning{color:var(--bad);font-size:13px;margin:12px 0}.download-status{font-size:13px;color:var(--muted)}
.top-tools{display:flex;gap:8px}.top-tools button{padding:8px 12px}.reference-dialog,.extra-dialog{width:min(860px,calc(100% - 24px));max-width:none;max-height:90dvh;overflow:auto;padding:24px}.dialog-head{position:sticky;top:0;z-index:2;background:var(--card);padding-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.dialog-head h2{margin:0}.reference-topic{padding:16px 0;border-bottom:1px solid var(--line)}.reference-topic summary{cursor:pointer;font-weight:700}.reference-topic p{margin:14px 0}.reference-topic table{width:100%;border-collapse:collapse;font-size:14px}.reference-topic th,.reference-topic td{padding:10px;text-align:left;vertical-align:top;border:1px solid var(--line)}.reference-topic th{width:105px;background:var(--soft)}.extra-dialog .sentence{font-size:22px}.extra-progress{margin:16px 0 0}.workspace,.sidebar,.stage-button,.stage-button>span{min-width:0}.route select{min-width:0;flex:1}.stage-button{overflow-wrap:anywhere}
@media(max-width:480px){.brand small{display:none}.brand{gap:8px}.top-tools{gap:5px}.top-tools button{padding:8px 10px}.reference-dialog,.extra-dialog{padding:18px}.dialog-head h2{font-size:21px}.reference-topic th{width:85px}.reference-topic th,.reference-topic td{padding:8px}.extra-dialog .sentence{font-size:20px}}
@media(max-width:800px){.layout{grid-template-columns:minmax(0,1fr)}.sidebar nav{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.stage-button{padding:10px;font-size:12px;grid-template-columns:18px minmax(0,1fr);gap:6px}.stage-num{width:18px;height:18px;font-size:10px}.sidebar-note{display:none}.reflection{margin-left:0}.workspace{padding:22px}.hero{padding-top:30px}.hero-note{display:none}.stage-button small{font-size:10px}.sessionbar{gap:15px}.timegroup .muted{display:none}}
@media(max-width:480px){main{padding:0 12px 24px}.topbar{padding:12px}.hero{padding:25px 0}h1{letter-spacing:-1px}.lead{font-size:16px}.welcome,.workspace,.report,.reflection{padding:18px}.sidebar nav{grid-template-columns:repeat(2,1fr)}.sessionbar{padding:12px}.sessionbar>#results{padding:8px}.progressgroup{min-width:95px}.stagehead{display:block}.stagehead .chip{display:inline-block;margin-bottom:12px}.sentence{font-size:21px;padding:15px}.spelling{flex-direction:column}.editor-fields{grid-template-columns:1fr}.stats{grid-template-columns:1fr}.report-header{flex-wrap:wrap}.actions button{width:100%}.report table{font-size:12px}.finishbar .primary{width:100%}.brand small{font-size:11px}}
@media print{.topbar,.hero,.welcome,.sessionbar,.layout,.finishbar,.sources,footer,.reflection,.report .actions,.skip,.time-notice{display:none!important}body{background:white;color:black}.report{display:block!important;border:none;box-shadow:none;padding:0}.report details{break-inside:avoid}.report details>p{display:block}.report .stats{grid-template-columns:repeat(3,1fr)}.stat{border:1px solid #aaa;background:white}.report th,.report td{color:black;border-color:#aaa}.good,.bad{color:black}main{max-width:none;padding:0}}

/* Shared site header, keyboard-accessible theme switch and mobile layout. */
.top-tools{align-items:center;gap:18px}
.theme-toggle{position:relative;cursor:pointer;min-height:44px}
.theme-toggle input{display:block;position:absolute;opacity:0;width:1px;height:1px;right:22px;top:20px}
.theme-toggle:has(input:focus-visible) .theme-switch{outline:3px solid var(--accent);outline-offset:3px}
.site-brand:focus-visible{outline-offset:6px}
.sources a,.reference-dialog a{text-decoration:underline;text-underline-offset:3px}
#workspace,#report{scroll-margin-top:90px}
@media(max-width:480px){.site-topbar-inner{gap:8px;padding:12px}.site-brand{gap:8px}.site-brand>span>span{display:none}.top-tools{gap:10px}.top-tools button{padding:8px 10px}.theme-toggle{gap:6px}.site-logo{width:36px;height:36px}.site-brand b{font-size:17px}}
@media print{.site-topbar,dialog{display:none!important}}

/* Compact exercise workspace: keep the question and its controls in view. */
.site-topbar-inner{padding-top:7px;padding-bottom:7px}
#session{padding-top:12px}
.sessionbar{padding:9px 14px;gap:14px;margin-bottom:12px}
.timegroup{gap:9px}.timegroup>.muted{display:none}.timegroup b{font-size:21px}
.sessionbar button{padding:6px 12px;min-height:38px;font-size:14px}
.progressgroup{font-size:12px;min-width:100px}progress{height:6px;margin-top:4px}
.layout{grid-template-columns:190px minmax(0,1fr);gap:14px}
#stage-picker>summary{display:none}
.stage-button{padding:9px 10px;font-size:13px;line-height:1.4;gap:7px;grid-template-columns:22px 1fr}
.stage-button small{font-size:11px;margin-top:3px}.stage-num{width:21px;height:21px;font-size:11px}
.workspace{padding:16px 18px}.stagehead{padding-bottom:7px;align-items:center}
.stagehead h2{font-size:20px;margin:0}.stagehead .eyebrow,.stagehead .muted{display:none}
.stagehead .chip{font-size:12px;padding:3px 9px}
.route{margin:9px 0;gap:8px;font-size:13px}.route select{padding:5px 8px;font-size:13px}
.theory{padding:8px 12px;margin-bottom:10px;font-size:13px}
.word-task{display:grid;grid-template-columns:170px minmax(0,1fr);gap:10px 16px;align-items:start}
.word-task .sentence{grid-column:1/-1}
.sentence{font-size:21px;line-height:1.45;padding:10px 14px;margin:0 0 4px}
.answer-group{margin:8px 0}.answer-group legend{font-size:14px;margin-bottom:6px}
.word-task .answer-group{margin:0}.word-task .spelling{flex-direction:column;gap:6px}
.options{gap:6px}.option{font-size:14px;line-height:1.4;padding:8px 11px;min-height:42px;gap:8px}
.option input{margin-top:4px}.choice-task h3,.editor-task h3{font-size:19px;margin:5px 0 9px}
.choice-task>p,.editor-task>p{margin-bottom:10px;font-size:14px}
.feedback{padding:12px;margin-top:12px;font-size:14px;line-height:1.5}
.feedback h3{font-size:18px;margin:0 0 8px}.feedback p{margin-bottom:9px}
.task-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);margin-top:12px;padding-top:10px}
.task-controls .actions,.task-controls .navigation{margin:0;padding:0;border:0;gap:8px}
.task-controls .actions{flex:1}.task-controls button{padding:8px 12px;min-height:40px;font-size:14px}
#notice{font-size:13px}.finishbar{margin:12px 0}.finishbar button{padding:8px 14px;min-height:40px;font-size:14px}
.sources{margin-top:12px;padding:10px 0}footer{padding-top:10px}
.editor-text{font-size:16px;line-height:1.6;padding:12px}.editor-fields{gap:8px 12px;margin-top:12px}
.editor-fields input{padding:7px 9px;margin-top:3px}.editor-fields label{font-size:13px}
@media(min-width:1100px){
 .exercise-body:has(#feedback:not([hidden])){display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px;align-items:start}
 .exercise-body:has(#feedback:not([hidden])) .feedback{margin-top:0}
 .exercise-body:has(#feedback:not([hidden])) .word-task{display:block}
 .exercise-body:has(#feedback:not([hidden])) .word-task .answer-group{margin-top:10px}
 .exercise-body:has(#feedback:not([hidden])) .word-task .spelling{flex-direction:row}
 .exercise-body:has(#feedback:not([hidden])) .option{font-size:13px}
}
@media(max-width:800px){
 .layout{grid-template-columns:minmax(0,1fr);gap:8px}
 #stage-picker>summary{display:list-item;cursor:pointer;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-weight:650;font-size:14px}
 #stage-picker[open]>summary{margin-bottom:6px}
 .sidebar nav{grid-template-columns:repeat(3,minmax(0,1fr))}
 .workspace{padding:14px}.stagehead{display:none}
 .word-task{grid-template-columns:140px minmax(0,1fr);gap:10px}
 .sessionbar{gap:9px}
}
@media(max-width:480px){
 .site-topbar-inner{padding-top:6px;padding-bottom:6px}.site-logo{width:32px;height:32px}
 .site-brand b{font-size:16px}.top-tools{gap:8px}.top-tools button{min-height:36px;padding:5px 9px;font-size:13px}
 .theme-toggle{font-size:12px;gap:5px;min-height:36px}.theme-switch{width:42px}
 .sessionbar{display:grid;grid-template-columns:1fr 1fr;padding:8px 10px;gap:7px 10px}
 .sessionbar>button{width:100%;min-height:34px;padding:5px 8px;font-size:13px}
 .timegroup{flex-wrap:nowrap;gap:7px}.timegroup b{font-size:19px}.timegroup button{padding:5px 8px;min-height:34px;font-size:12px}
 .progressgroup{min-width:0}.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr))}
 .word-task{display:block}.word-task .answer-group{margin-top:10px}.word-task .spelling{flex-direction:row}
 .sentence{font-size:20px;padding:9px 11px;margin-bottom:8px}
 .option{font-size:14px;padding:8px 10px}.route{margin-top:0}.route>label{display:none}
 .workspace{padding:12px}.task-controls{flex-wrap:wrap;gap:8px}
 .task-controls .actions{flex-basis:100%}.task-controls .navigation{width:100%}
 .task-controls .actions button{width:auto;flex:1}.task-controls .navigation button{min-width:100px}
 .reference-dialog,.extra-dialog{padding:14px}.extra-dialog .sentence{font-size:20px}
}

/* The active stage is already shown in navigation; avoid a second heading. */
.stagehead{display:none}
@media(max-width:480px){
 main{padding-bottom:98px}
 .task-controls{position:fixed;left:12px;right:12px;bottom:8px;z-index:15;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:8px;margin:0;flex-wrap:nowrap;gap:7px}
 .task-controls .actions{flex:1;flex-basis:auto;min-width:0}
 .task-controls .actions button{width:100%;min-width:0}
 .task-controls .navigation{width:auto;gap:6px}
 .task-controls .navigation button{min-width:0}
 .task-controls button{padding:7px 8px;font-size:12px;min-height:38px}
 #notice:not(:empty){position:absolute;bottom:calc(100% + 5px);left:0;right:0;padding:9px;background:var(--card);border:1px solid var(--line);border-radius:10px}
}
@media print{.task-controls{display:none!important}}

#session-menu>summary{display:none}.session-menu-options{display:flex;gap:8px}
@media(max-width:800px){
 #session-menu{position:relative}
 #session-menu>summary{display:grid;place-items:center;list-style:none;cursor:pointer;border:1px solid var(--line);border-radius:10px;min-width:40px;height:40px;font-weight:800;font-size:23px}
 #session-menu>summary::-webkit-details-marker{display:none}
 #session-menu[open] .session-menu-options{position:absolute;right:0;top:calc(100% + 7px);width:180px;display:grid;padding:8px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);z-index:20}
 .session-menu-options button{width:100%}
}
@media(max-width:480px){.sessionbar{grid-template-columns:auto minmax(0,1fr) auto;gap:8px}.sessionbar #session-menu{grid-column:3}.sessionbar .progressgroup{font-size:11px}}

@media(max-width:480px){
 #stage-picker>summary{padding:6px 10px}
 .route{margin:0 0 6px}.theory{padding:5px 10px;margin-bottom:8px}
 .sentence{margin-bottom:4px}.word-task .answer-group{margin-top:6px}
}
