/*! Language Lab lesson view 2.4.0 (curriculum release 2026-10-03; deployed baseline 2.1.1 + Applejax 3.0 split + 2.4 corrections)
 * Instructions in the site's sans; readings in a serif so "the text" never looks like "the task".
 * Follows the site tokens (--ux-*), html[data-ll-appearance=dark], high contrast (data-diagram-contrast), reduced motion.
 */
.lv-root{
  --lv-ink:var(--ux-ink,#15332c);--lv-muted:var(--ux-muted,#4f625c);--lv-page:var(--ux-page,#f4f7f5);--lv-card:var(--ux-surface,#fff);
  --lv-line:var(--ux-line,#d3ded9);--lv-accent:var(--ux-accent,#1f5a4b);--lv-on-accent:var(--ux-on-accent,#fff);--lv-accent-soft:#e3eee9;
  --lv-paper:#fbfaf6;--lv-paper-line:#e6e1d4;--lv-sun:#b8790f;--lv-sun-soft:#fbf1dc;--lv-good:#2c7a4b;--lv-good-soft:#e5f3ea;--lv-bad:#a3422a;--lv-bad-soft:#fbebe6;
  --lv-serif:Charter,'Bitstream Charter','Sitka Text',Cambria,'Iowan Old Style',Georgia,serif;
  --lv-r:14px;--lv-gap:clamp(14px,2vw,22px);
  color:var(--lv-ink);font-size:1.0625rem;line-height:1.55;display:block;
}
html[data-ll-appearance=dark] .lv-root{
  --lv-ink:var(--ux-ink,#e9f1ee);--lv-muted:var(--ux-muted,#a9bbb5);--lv-page:var(--ux-page,#101614);--lv-card:var(--ux-surface,#18211e);
  --lv-line:var(--ux-line,#33433e);--lv-accent:var(--ux-accent,#7cc7ae);--lv-on-accent:#06231a;--lv-accent-soft:#1f2f2a;
  --lv-paper:#1d2421;--lv-paper-line:#38423e;--lv-sun:#f0b84c;--lv-sun-soft:#352a14;--lv-good:#86d6a5;--lv-good-soft:#173123;--lv-bad:#ff9d85;--lv-bad-soft:#3a1d16;
}
html[data-diagram-contrast=true] .lv-root{--lv-ink:#000;--lv-muted:#000;--lv-line:#000;--lv-card:#fff;--lv-paper:#fff;--lv-paper-line:#000;--lv-accent:#003d2e;--lv-accent-soft:#fff;--lv-sun-soft:#fff;--lv-good-soft:#fff;--lv-bad-soft:#fff}
.lv-root *,.lv-root *::before,.lv-root *::after{box-sizing:border-box}
/* the site prints lesson text in bold; everything here sets its own weight */
.lv-root :is(p,li,dd,dt,td,th,label,blockquote,figcaption,small,span){font-weight:400}
.lv-root strong,.lv-root b{font-weight:700}
.lv-root [hidden],.lv-hidden{display:none!important}
.lv-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.lv-root p{margin:0}
.lv-root :is(button,a,input,select,summary,textarea,[tabindex]):focus-visible{outline:3px solid var(--lv-sun);outline-offset:2px;border-radius:6px}
.lv-shell{max-width:1240px;margin:0 auto}
.lv-body>*,.lv-card,.lv-card>*,.lv-parts>*,.lv-practice>*{min-width:0}
@media (max-width:640px){.lv-pickers .lv-select{width:100%;min-width:0}}

/* ------------------------------------------------------------ header */
.lv-head{display:grid;gap:14px;margin-bottom:14px}
.lv-pickers{display:flex;flex-wrap:wrap;gap:8px}
.lv-select{appearance:auto;min-height:36px;max-width:100%;padding:8px 12px;border:1px solid var(--lv-line);border-radius:10px;background:var(--lv-card);color:var(--lv-ink);font:inherit;font-size:.95rem;font-weight:600}
.lv-titlebox{display:flex;gap:14px;align-items:flex-start}
.lv-code{flex:none;display:grid;place-items:center;min-width:52px;height:52px;padding:0 8px;border-radius:12px;background:var(--lv-accent);color:var(--lv-on-accent);font-size:1.25rem;font-weight:800!important;letter-spacing:-.01em}
.lv-title{margin:0;font-size:clamp(1.45rem,3vw,2rem);line-height:1.15;letter-spacing:-.015em;font-weight:800}
.lv-goal{margin-top:6px!important;color:var(--lv-muted);max-width:70ch}

/* ------------------------------------------------------------ the step strip: one connected procedure line */
.lv-strip{margin:0 0 var(--lv-gap);overflow-x:auto;scrollbar-width:thin}
.lv-steps{list-style:none;margin:0;padding:4px 2px 6px;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(92px,1fr);position:relative}
.lv-steps::before{content:"";position:absolute;left:46px;right:46px;top:25px;height:3px;border-radius:3px;background:var(--lv-line)}
.lv-stepitem{position:relative;display:flex;justify-content:center}
.lv-stepbtn{position:relative;display:grid;justify-items:center;gap:6px;padding:0 4px;min-height:64px;border:0;background:none;color:var(--lv-muted);font:inherit;cursor:pointer}
.lv-stepnum{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--lv-card);border:3px solid var(--lv-line);font-weight:800;font-size:.95rem;color:var(--lv-muted);transition:transform .15s}
.lv-steplabel{font-size:.86rem;font-weight:700!important;white-space:nowrap}
.lv-stepbtn.is-done .lv-stepnum{background:var(--lv-good-soft);border-color:var(--lv-good);color:var(--lv-good)}
.lv-stepbtn.is-here .lv-stepnum{background:var(--lv-accent);border-color:var(--lv-accent);color:var(--lv-on-accent);transform:scale(1.08);box-shadow:0 0 0 5px var(--lv-accent-soft)}
.lv-stepbtn.is-here .lv-steplabel{color:var(--lv-ink)}
.lv-stepbtn:hover .lv-stepnum{border-color:var(--lv-accent)}

/* ------------------------------------------------------------ body: step card + reading pane */
.lv-body{display:grid;gap:var(--lv-gap);align-items:start}
@media (min-width:1080px){.lv-body.has-pane{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr)}.lv-pane{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto;scrollbar-width:thin}.lv-readinline{display:none}}
@media (max-width:1079.98px){.lv-pane{display:none!important}}
.lv-card{background:var(--lv-card);border:1px solid var(--lv-line);border-radius:18px;padding:clamp(16px,3vw,28px);display:grid;gap:18px}
.lv-cardhead{display:grid;gap:4px}
.lv-stage{display:flex;align-items:center;gap:8px;color:var(--lv-muted);font-size:.9rem;font-weight:700!important}
.lv-stage-n{display:inline-grid;place-items:center;min-width:28px;height:28px;padding:0 6px;border-radius:8px;background:var(--lv-accent-soft);color:var(--lv-accent);font-weight:800!important}
.lv-steptitle{margin:0;font-size:clamp(1.3rem,2.6vw,1.65rem);line-height:1.2;font-weight:800;letter-spacing:-.01em;outline:none}
.lv-doing{display:grid;gap:10px;padding:16px 18px;border-radius:var(--lv-r);background:var(--lv-accent-soft);border-left:5px solid var(--lv-accent)}
.lv-doing-text{font-size:1.15rem;line-height:1.45;max-width:65ch}
.lv-where{display:inline-flex;align-items:center;gap:8px;width:max-content;max-width:100%;padding:4px 12px;border-radius:999px;background:var(--lv-card);border:1px solid var(--lv-line);font-size:.9rem;font-weight:700!important}
.lv-where span{font-weight:400!important}

/* ------------------------------------------------------------ routes */
.lv-routes{display:grid;gap:10px}
.lv-routelabel{font-weight:800!important;font-size:.95rem}
.lv-routerow{display:flex;flex-wrap:wrap;gap:8px}
.lv-route{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:8px 16px;border-radius:12px;border:2px solid var(--lv-line);background:var(--lv-card);color:var(--lv-ink);font:inherit;font-weight:700;cursor:pointer}
.lv-route .lv-sym,.lv-routetask-head .lv-sym{font-size:1.25rem;line-height:1;width:1.1em;text-align:center}
.lv-route[aria-checked=true]{border-color:var(--lv-accent);background:var(--lv-accent);color:var(--lv-on-accent)}
.lv-route:hover:not([aria-checked=true]){border-color:var(--lv-accent)}
.lv-routetask{padding:14px 16px;border-radius:var(--lv-r);border:2px solid var(--lv-accent);display:grid;gap:6px}
.lv-routetask-head{display:flex;align-items:center;gap:8px;font-weight:800!important;font-size:1.02rem}
.lv-bloom{margin-left:auto;padding:2px 10px;border-radius:999px;background:var(--lv-sun-soft);color:var(--lv-sun);font-size:.78rem;font-weight:800!important}
.lv-qmeta .lv-bloom,.lv-writehead .lv-bloom{margin-left:10px}
.lv-routetask-body{max-width:68ch}
.lv-frame{padding:10px 12px;border-radius:10px;background:var(--lv-paper);border:1px dashed var(--lv-paper-line);font-family:var(--lv-serif)}
.lv-frame span{display:block;font-family:initial;font-size:.8rem;font-weight:800!important;color:var(--lv-muted);margin-bottom:2px}
.lv-routenote{color:var(--lv-muted);font-size:.88rem}

/* ------------------------------------------------------------ materials */
.lv-parts{display:grid;gap:16px}
.lv-say{max-width:70ch}
.lv-question{font-size:1.18rem;font-weight:700!important;line-height:1.4;max-width:62ch}
.lv-h3{margin:0 0 8px;font-size:1.02rem;font-weight:800}
.lv-tip{padding:10px 14px;border-radius:10px;background:var(--lv-sun-soft)}
.lv-tip-k{font-weight:800!important;color:var(--lv-sun);margin-right:6px}
.lv-root a{color:var(--lv-accent);text-underline-offset:3px;text-decoration-thickness:1.5px}
.lv-pref{display:inline;padding:0 5px;margin:0 1px;border-radius:6px;border:1px solid var(--lv-line);background:var(--lv-card);color:var(--lv-accent);font:inherit;font-size:.92em;font-weight:700;cursor:pointer;line-height:1.3}
.lv-pref:hover{background:var(--lv-accent-soft)}
/* video */
.lv-video{display:grid;gap:8px}
.lv-watch{padding:10px 14px;border-radius:10px;background:var(--lv-sun-soft)}
.lv-watch span{font-weight:800!important;color:var(--lv-sun);margin-right:6px}
.lv-videobox{position:relative;aspect-ratio:16/9;border-radius:var(--lv-r);overflow:hidden;background:linear-gradient(135deg,#123a30,#1f5a4b 60%,#2f7a63)}
.lv-videobox iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.lv-play{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:10px;border:0;background:transparent;color:#fff;font:inherit;font-weight:800;font-size:1.05rem;cursor:pointer}
.lv-play-ico{width:68px;height:68px;border-radius:50%;background:#fff;position:relative;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.lv-play-ico::after{content:"";position:absolute;left:27px;top:20px;border-left:20px solid #1f5a4b;border-top:14px solid transparent;border-bottom:14px solid transparent}
.lv-play:hover .lv-play-ico{transform:scale(1.06)}
a.lv-play{text-decoration:none!important;color:#fff!important}
.lv-videometa{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.lv-videometa span{color:var(--lv-muted);font-size:.92rem}
.lv-videolinks{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:.92rem}.lv-videoback{color:var(--lv-muted)}
/* links */
.lv-link{display:flex;gap:12px;align-items:center;padding:12px 16px;border-radius:var(--lv-r);border:1px solid var(--lv-line);background:var(--lv-card);text-decoration:none!important;color:var(--lv-ink)!important}
.lv-link:hover{border-color:var(--lv-accent);background:var(--lv-accent-soft)}
.lv-link-ico{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:10px;background:var(--lv-accent-soft);color:var(--lv-accent);font-size:1.2rem}
.lv-link-text{display:grid}.lv-link-text strong{color:var(--lv-accent)}.lv-link-text small{color:var(--lv-muted);font-size:.86rem}
/* reading reference + text card */
.lv-readref{display:grid;gap:8px}
.lv-readref-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.lv-readref-k{font-weight:800!important}
.lv-readref-title{color:var(--lv-muted);font-family:var(--lv-serif)}
.lv-read-help>summary{display:inline-flex;align-items:center;min-height:36px;cursor:pointer;color:var(--lv-accent);font-weight:700;font-size:.875rem}
.lv-read-help>p{margin-top:4px!important;max-width:66ch}
.lv-readinline summary{cursor:pointer;color:var(--lv-accent);font-weight:700;min-height:40px;display:flex;align-items:center}
.lv-text{background:var(--lv-paper);border:1px solid var(--lv-paper-line);border-radius:14px;padding:clamp(16px,2vw,24px);margin-bottom:12px}
.lv-text-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px 16px}
.lv-text-id{flex:1 1 16rem;min-width:0}
.lv-text-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;flex:0 1 auto;max-width:100%}
.lv-text-jump{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:.9375rem}
.lv-text-jump-k{font-weight:800!important;color:var(--lv-muted)}
.lv-reading-tools{display:inline-flex;align-items:center;min-height:36px;padding:6px 12px;border-radius:8px;border:1px solid var(--lv-line);background:var(--lv-card);color:var(--lv-ink);font:inherit;font-size:.875rem;font-weight:700;cursor:pointer;white-space:nowrap}
.lv-reading-tools:hover{border-color:var(--lv-accent)}
.lv-text-title{margin:0;font-family:var(--lv-serif);font-size:1.3rem;line-height:1.25;font-weight:700}
.lv-text-by{color:var(--lv-muted);font-size:.9rem;margin-top:4px!important}
.lv-text-body{margin-top:12px;display:grid;gap:12px;font-family:var(--lv-serif);font-size:1.08rem;line-height:1.7;max-width:66ch}
.lv-para{position:relative;padding-left:2.4em;border-radius:8px;transition:background .3s}
.lv-pn{position:absolute;left:0;top:.2em;min-width:1.8em;text-align:right;font-family:system-ui,sans-serif;font-size:.78rem;font-weight:800!important;color:var(--lv-muted)}
.lv-para.is-lit{background:var(--lv-sun-soft);box-shadow:-6px 0 0 var(--lv-sun-soft),6px 0 0 var(--lv-sun-soft)}
.lv-para.is-lit .lv-pn{color:var(--lv-sun)}
.lv-textmore{margin-top:12px;min-height:40px;padding:6px 12px;border-radius:10px;border:1px solid var(--lv-paper-line);background:var(--lv-card);color:var(--lv-accent);font:inherit;font-weight:700;cursor:pointer}
.lv-text-src{margin-top:14px;padding-top:10px;border-top:1px solid var(--lv-paper-line);color:var(--lv-muted);font-size:.82rem}
.lv-quote{margin:0;padding:16px 18px;border-radius:var(--lv-r);background:var(--lv-paper);border:1px solid var(--lv-paper-line)}
.lv-quote blockquote{margin:0;font-family:var(--lv-serif);font-size:1.12rem;line-height:1.6}
.lv-quote figcaption{margin-top:8px;color:var(--lv-muted);font-size:.88rem}.lv-quote-note{margin-top:6px!important;font-size:.9rem}
/* notebook steps (2.4): semantic <ol>, two-column rows. Badge = one text line tall (24px at 16px text), text beside it,
   first line aligned with the badge, wrapped lines stay under the text. See the scoped repeat at the end of this file. */
.lv-todo{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.lv-todo-item{position:relative;margin:0;padding:0}
.lv-todo-row{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;align-items:start;margin:0;padding:10px 12px;border-radius:12px;border:1px solid var(--lv-line);background:var(--lv-card);cursor:pointer;line-height:1.5}
.lv-todo-box{position:absolute;left:12px;top:10px;width:1.5em;height:1.5em;margin:0;opacity:0;cursor:pointer}
.lv-todo-n{grid-column:1;grid-row:1;display:grid;place-items:center;box-sizing:border-box;width:calc(1.5em / .875);height:calc(1.5em / .875);font-size:.875em;line-height:1;border-radius:50%;border:2px solid var(--lv-accent);color:var(--lv-accent);font-weight:800!important}
.lv-todo-t{grid-column:2;grid-row:1;display:block;min-width:0;line-height:1.5}
.lv-todo-item.is-checked .lv-todo-row{background:var(--lv-good-soft);border-color:color-mix(in srgb,var(--lv-good) 40%,var(--lv-line))}
.lv-todo-item.is-checked .lv-todo-n{background:var(--lv-good);border-color:var(--lv-good);color:#fff;font-size:0}
.lv-todo-item.is-checked .lv-todo-n::after{content:"✓";font-size:.875rem}
.lv-todo-box:focus-visible~.lv-todo-n{outline:3px solid var(--lv-sun);outline-offset:2px}
/* notebook choices */
.lv-choices{padding:14px 16px;border-radius:var(--lv-r);border:1px solid var(--lv-line)}
.lv-choices-stem{font-weight:700!important;margin-bottom:8px!important}
.lv-choicelist{margin:0;padding-left:1.6em;display:grid;gap:6px}
.lv-choicelist li::marker{font-weight:800;color:var(--lv-accent)}
.lv-choices-note{margin-top:10px!important;color:var(--lv-muted);font-size:.9rem}
/* weak / strong */
.lv-example-pair{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.lv-ex{padding:12px 14px;border-radius:12px;display:grid;gap:6px;align-content:start}
.lv-ex-weak{background:var(--lv-bad-soft);border:1px solid color-mix(in srgb,var(--lv-bad) 30%,transparent)}
.lv-ex-strong{background:var(--lv-good-soft);border:1px solid color-mix(in srgb,var(--lv-good) 35%,transparent)}
.lv-ex-k{font-weight:800!important;font-size:.85rem}.lv-ex-weak .lv-ex-k{color:var(--lv-bad)}.lv-ex-strong .lv-ex-k{color:var(--lv-good)}
.lv-ex-t{font-family:var(--lv-serif);font-size:1.04rem}.lv-ex-why{color:var(--lv-muted);font-size:.9rem}
.lv-partner{display:grid;gap:4px;padding:12px 16px;border-radius:var(--lv-r);border:2px dashed var(--lv-accent)}
.lv-partner-k{font-weight:800!important;color:var(--lv-accent)}
/* glossary, rules, labelled lines, worked example */
.lv-terms dl,.lv-rules dl,.lv-labels dl{margin:0;display:grid;gap:8px}
.lv-term,.lv-lab{display:grid;grid-template-columns:minmax(120px,190px) 1fr;gap:4px 14px;padding:8px 0;border-bottom:1px solid var(--lv-line)}
.lv-term dt,.lv-lab dt{font-weight:800!important}
.lv-term dd,.lv-lab dd{margin:0}
@media (max-width:560px){.lv-term,.lv-lab{grid-template-columns:1fr}}
.lv-labels .lv-lab dt{color:var(--lv-accent)}
.lv-walklist{list-style:none;margin:0;padding:0;counter-reset:w;display:grid;gap:0}
.lv-walklist li{position:relative;padding:0 0 14px 44px;counter-increment:w}
.lv-walklist li::before{content:counter(w);position:absolute;left:0;top:0;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--lv-accent);color:var(--lv-on-accent);font-weight:800;font-size:.88rem}
.lv-walklist li:not(:last-child)::after{content:"";position:absolute;left:14px;top:32px;bottom:2px;width:2px;background:var(--lv-line)}
.lv-walk-k{font-weight:800!important}.lv-walk-t{max-width:66ch}
.lv-facts{padding:16px 18px;border-radius:var(--lv-r);background:var(--lv-paper);border:1px solid var(--lv-paper-line)}
.lv-facts header{margin-bottom:8px}.lv-facts-note{color:var(--lv-muted);font-size:.88rem}
.lv-factlist{margin:0;padding-left:1.6em;display:grid;gap:6px;font-family:var(--lv-serif)}
.lv-tablescroll{overflow-x:auto}
.lv-table{width:100%;border-collapse:collapse;font-size:.95rem}
.lv-table th,.lv-table td{padding:8px 10px;border:1px solid var(--lv-line);text-align:left;vertical-align:top}
.lv-table th{background:var(--lv-accent-soft);font-weight:800!important}
.lv-choosegrid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.lv-chooseitem{padding:12px 14px;border-radius:12px;border:1px solid var(--lv-line)}
.lv-choose-k{font-weight:800!important;color:var(--lv-accent);margin-bottom:4px!important}
/* figures */
.lv-figure{margin:0;display:grid;gap:8px;justify-items:center}
.lv-figure img{max-width:100%;max-height:360px;border-radius:12px;border:1px solid var(--lv-line)}
.lv-figure-art svg{width:100%;max-width:640px;height:auto}
.lv-figure figcaption{color:var(--lv-muted);font-size:.9rem;text-align:center;max-width:60ch}
.lv-credit{display:block;font-size:.8rem;margin-top:2px}
/* diagram */
.lv-diagram{display:grid;gap:8px;padding:14px 16px;border-radius:var(--lv-r);border:1px solid var(--lv-line);background:var(--lv-card)}
.lv-diagram-k{font-weight:800!important;font-size:.88rem;color:var(--lv-accent)}
.lv-diagram-s{font-family:var(--lv-serif);font-size:1.12rem}
.lv-diagram-c{color:var(--lv-muted);font-size:.88rem}
.lv-diagram-look span{font-weight:800!important;margin-right:6px}
.lv-diagram-host:empty{display:none}
.lv-diagram-host{margin-top:4px;overflow-x:auto}

/* ------------------------------------------------------------ practice */
.lv-practice{display:grid;gap:18px;padding-top:6px;border-top:1px solid var(--lv-line)}
.lv-qhead{display:grid;gap:8px}
.lv-qdots{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.lv-qdot{width:38px;height:38px;border-radius:50%;border:2px solid var(--lv-line);background:var(--lv-card);color:var(--lv-muted);font:inherit;font-weight:800;font-size:.88rem;cursor:pointer}
.lv-qdot.is-right{background:var(--lv-good);border-color:var(--lv-good);color:#fff}
.lv-qdot.is-wrong{background:var(--lv-bad);border-color:var(--lv-bad);color:#fff}
.lv-qdot.is-here{box-shadow:0 0 0 3px var(--lv-card),0 0 0 6px var(--lv-accent)}
.lv-q{display:grid;gap:12px}
.lv-qmeta{color:var(--lv-muted);font-size:.9rem;font-weight:700!important;display:flex;align-items:center}
.lv-qexcerpt{margin:0;padding:12px 16px;border-left:4px solid var(--lv-paper-line);background:var(--lv-paper);font-family:var(--lv-serif);border-radius:0 10px 10px 0}
.lv-qref{color:var(--lv-muted);font-size:.92rem}
.lv-qstem{font-size:1.12rem;font-weight:700!important;line-height:1.45;max-width:66ch}
.lv-qopts{display:grid;gap:8px}
.lv-qopt{display:flex;gap:12px;align-items:flex-start;text-align:left;padding:12px 14px;border-radius:12px;border:2px solid var(--lv-line);background:var(--lv-card);color:var(--lv-ink);font:inherit;cursor:pointer;min-height:48px}
.lv-qopt:hover:not(:disabled){border-color:var(--lv-accent)}
.lv-qopt[aria-checked=true]{border-color:var(--lv-accent);background:var(--lv-accent-soft)}
.lv-qletter{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--lv-accent-soft);color:var(--lv-accent);font-weight:800!important}
.lv-qopt[aria-checked=true] .lv-qletter{background:var(--lv-accent);color:var(--lv-on-accent)}
.lv-qopt.is-right{border-color:var(--lv-good);background:var(--lv-good-soft)}.lv-qopt.is-right .lv-qletter{background:var(--lv-good);color:#fff}
.lv-qopt.is-wrong{border-color:var(--lv-bad);background:var(--lv-bad-soft)}.lv-qopt.is-wrong .lv-qletter{background:var(--lv-bad);color:#fff}
.lv-qopt:disabled{cursor:default}
.lv-qfb:empty{display:none}
.lv-qfb{padding:12px 16px;border-radius:12px;display:grid;gap:4px;outline:none}
.lv-qfb.is-right{background:var(--lv-good-soft)}.lv-qfb.is-wrong{background:var(--lv-bad-soft)}
.lv-qfb-k{font-weight:800!important}.lv-qfb.is-right .lv-qfb-k{color:var(--lv-good)}.lv-qfb.is-wrong .lv-qfb-k{color:var(--lv-bad)}
.lv-qrow{display:flex;gap:8px}
.lv-qsum-k{font-size:1.6rem;font-weight:800!important;outline:none}.lv-qsum{color:var(--lv-muted)}
.lv-write{display:grid;gap:10px;padding:16px 18px;border-radius:var(--lv-r);border:2px solid var(--lv-accent)}
.lv-writehead{display:grid;gap:4px}.lv-writehead .lv-h3{margin:0}
.lv-writeprompt{font-size:1.08rem;max-width:66ch}
/* answer box */
.lv-answer{display:grid;gap:6px}
.lv-answer-k{font-weight:800!important}
.lv-textarea{width:100%;min-height:120px;padding:12px;border-radius:12px;border:2px solid var(--lv-line);background:var(--lv-card);color:var(--lv-ink);font:inherit;resize:vertical}
.lv-textarea:focus{border-color:var(--lv-accent);outline:none}
.lv-answer-note{color:var(--lv-muted);font-size:.82rem}

/* ------------------------------------------------------------ done + pager */
.lv-done{padding:14px 16px;border-radius:var(--lv-r);background:var(--lv-paper);border:1px solid var(--lv-paper-line)}
.lv-donelist{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.lv-donelist li,.lv-done-one{display:flex;gap:10px;align-items:flex-start}
.lv-done input{flex:none;width:22px;height:22px;margin-top:2px;accent-color:var(--lv-good);cursor:pointer}
.lv-done label{cursor:pointer}
.lv-pager{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.lv-btn{display:inline-grid;gap:0;align-content:center;min-height:48px;padding:8px 18px;border-radius:12px;border:2px solid var(--lv-line);background:var(--lv-card);color:var(--lv-ink);font:inherit;font-weight:800;cursor:pointer;text-align:left;text-decoration:none!important}
.lv-btn small{font-size:.74rem;font-weight:700!important;color:var(--lv-muted)}
.lv-btn:disabled{opacity:.5;cursor:default}
.lv-btn-primary{background:var(--lv-accent);border-color:var(--lv-accent);color:var(--lv-on-accent)}
.lv-btn-quiet{width:max-content;max-width:100%;color:var(--lv-accent)!important}
.lv-btn-next{margin-left:auto;text-align:right;border-color:var(--lv-accent);color:var(--lv-accent)}
.lv-btn-next.is-ready{background:var(--lv-accent);color:var(--lv-on-accent)}
.lv-btn-next.is-ready small{color:inherit;opacity:.85}
.lv-pager-end{margin-left:auto;color:var(--lv-muted);align-self:center}

/* ------------------------------------------------------------ back to your lesson (any Lab page) */
.lv-return-wrap{position:fixed;left:16px;bottom:16px;z-index:9999;display:flex;align-items:stretch;border-radius:14px;overflow:hidden;box-shadow:0 8px 24px rgba(9,40,31,.28);font:600 15px/1.2 system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}
.lv-return{display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center;padding:10px 14px;background:#1f5a4b;color:#fff!important;text-decoration:none!important;min-height:48px}
.lv-return small{grid-column:2;font-weight:400;opacity:.85;font-size:12px}
.lv-return span{grid-row:span 2;font-size:20px}
.lv-return-x{border:0;background:#174a3d;color:#fff;width:40px;font-size:20px;cursor:pointer}
.lv-return:focus-visible,.lv-return-x:focus-visible{outline:3px solid #f0b84c;outline-offset:-3px}

@media (prefers-reduced-motion:reduce){.lv-root *,.lv-return-wrap{transition:none!important;animation:none!important}}
html[data-ll-motion=reduce] .lv-root *{transition:none!important;animation:none!important}
@media print{.lv-strip,.lv-pickers,.lv-pager,.lv-routerow,.lv-play,.lv-return-wrap{display:none!important}.lv-body{display:block}.lv-pane{display:block!important;position:static;max-height:none}.lv-card{border:0;padding:0}}
@media (max-width:640px){
  .lv-steps{grid-auto-columns:minmax(52px,1fr)}
  .lv-steps::before{left:26px;right:26px;top:19px}
  .lv-stepnum{width:36px;height:36px;font-size:.82rem;border-width:2px}
  .lv-steplabel{font-size:.8rem}
  .lv-stepbtn.is-here .lv-stepnum{box-shadow:0 0 0 3px var(--lv-accent-soft)}
  .lv-figure-art{overflow-x:auto;justify-items:start}
  .lv-figure-art svg{min-width:560px}
  .lv-figure-art figcaption{position:sticky;left:0}
  .lv-card{padding:14px}
}

/* Keep the integrated workspace compact without changing catalog or download styles. */
.weekly-workspace .lv-root{--lv-gap:14px;font-size:1rem}
.weekly-workspace .lv-card{padding:clamp(14px,2vw,22px)}
.weekly-workspace .lv-head{gap:8px;margin-bottom:10px}
.weekly-workspace .weekly-heading{margin:8px 0;padding:0}
.weekly-workspace .lv-answer label{display:block;font-size:.95rem;margin:8px 0}
.weekly-workspace .lv-answer textarea{display:block;width:100%;max-width:100%;padding:10px;border:1px solid var(--lv-line);border-radius:8px;font:inherit;background:var(--lv-card);color:var(--lv-ink)}
.weekly-workspace .lv-route .lv-sym{white-space:nowrap;font-size:1rem;font-weight:700}

/* Lesson compactness correction: scoped to the lesson workspace. */
#ll2-app .weekly-workspace .lv-title{font-size:clamp(1.35rem,2.2vw,1.8rem);margin:0;line-height:1.2}
#ll2-app .weekly-workspace .lv-code{min-width:36px;height:36px;font-size:1rem;border-radius:8px}
#ll2-app .weekly-workspace .lv-titlebox{gap:10px}
#ll2-app .weekly-workspace .lv-goal{font-size:.95rem;margin:5px 0 0;line-height:1.4}
#ll2-app .weekly-workspace .lv-head{margin:8px 0}
#ll2-app .weekly-workspace .lv-strip{margin:10px 0}
#ll2-app .weekly-workspace .lv-stepbtn{min-height:44px;padding:5px 8px;display:flex;gap:6px;align-items:center;justify-content:center}
#ll2-app .weekly-workspace .lv-stepnum{width:24px;height:24px;font-size:.8rem;box-shadow:none;transform:none}
#ll2-app .weekly-workspace .lv-card{padding:16px;gap:14px}
#ll2-app .weekly-workspace .lv-steptitle{font-size:1.2rem;margin:4px 0;line-height:1.3}
#ll2-app .weekly-workspace .lv-doing{padding:10px 12px;gap:6px;border-left-width:3px}
#ll2-app .weekly-workspace .lv-doing-text{font-size:1rem;line-height:1.45}
#ll2-app .weekly-workspace .lv-where{font-size:.85rem;padding:3px 8px;margin:0}
#ll2-app .weekly-workspace .lv-route{min-height:44px;padding:7px 12px;gap:0}
#ll2-app .weekly-workspace .lv-route .lv-sym{width:auto;flex:none;white-space:nowrap;font-size:1rem}
#ll2-app .weekly-workspace .lv-routeverb{display:none}
#ll2-app .weekly-workspace .lv-routetask{padding:10px 12px;gap:5px;border-width:1px}
#ll2-app .weekly-workspace .lv-routenote{margin:0;font-size:.8rem}
#ll2-app .weekly-workspace .lv-readref{padding:10px 12px}
#ll2-app .weekly-workspace .lv-readref p{margin:4px 0}
#ll2-app .weekly-workspace .lv-root p{margin-top:0}
#ll2-app .weekly-workspace .lv-done{padding:12px}
#ll2-app .weekly-workspace .lv-textclose{margin:0 0 10px;min-height:44px}
@media(max-width:640px){#ll2-app .weekly-workspace .lv-stepbtn{flex-direction:column;gap:3px;padding:5px 2px}#ll2-app .weekly-workspace .lv-steplabel{font-size:.8rem}}



/* Responsive lesson layout and one contextual companion. */
html body #ll2-app .weekly-workspace .lv-titlebox{display:flex!important;align-items:center!important;gap:10px!important;margin:0!important}
html body #ll2-app .weekly-workspace .lv-titlebox>div{display:flex!important;align-items:center!important;flex:1;flex-wrap:wrap;gap:8px 20px;min-width:0}
html body #ll2-app .weekly-workspace h1.lv-title{font-size:clamp(1.25rem,2vw,1.65rem)!important;line-height:1.2!important;letter-spacing:-.02em!important;margin:0!important;flex:0 1 auto}
html body #ll2-app .weekly-workspace .lv-goal{font-size:1rem!important;line-height:1.4!important;flex:1 1 360px;margin:0!important;max-width:none!important}
html body #ll2-app .weekly-workspace .lv-code{font-size:.95rem!important;width:36px;height:36px;min-width:36px;margin:0!important;align-self:center}
html body #ll2-app .weekly-workspace .weekly-heading{margin:4px 0!important;padding:0!important}
html body #ll2-app .weekly-workspace .weekly-heading>div{display:flex;gap:8px}
html body #ll2-app .weekly-workspace .lv-card{gap:10px!important;padding:14px!important}
html body #ll2-app .weekly-workspace .lv-cardhead{margin:0!important}
html body #ll2-app .weekly-workspace h2.lv-steptitle{font-size:1.125rem!important;line-height:1.3!important;margin:0!important}
html body #ll2-app .weekly-workspace .lv-route-inline{display:flex;align-items:center;gap:10px}
html body #ll2-app .weekly-workspace .lv-route-select{width:64px!important;min-width:64px!important;min-height:44px!important;font-size:1.1rem!important;padding:4px 8px!important;margin:0!important;background:var(--lv-card);color:var(--lv-ink);border:1px solid var(--lv-line);border-radius:8px}
html body #ll2-app .weekly-workspace .lv-routetask{display:flex!important;flex-wrap:wrap;align-items:flex-start;gap:8px 12px!important;padding:10px!important}
html body #ll2-app .weekly-workspace .lv-route-copy{flex:1 1 280px;min-width:0}
html body #ll2-app .weekly-workspace .lv-routetask-body{font-size:1rem!important;line-height:1.45!important;margin:0!important}
html body #ll2-app .weekly-workspace .lv-frame-help{margin:5px 0 0;font-size:.9rem}
html body #ll2-app .weekly-workspace .lv-readref{padding:0!important;border:0!important;background:none!important}
html body #ll2-app .weekly-workspace .lv-read-help summary{display:inline-flex;align-items:center;cursor:pointer;font-weight:700;min-height:36px;padding:0}
html body #ll2-app .weekly-workspace .lv-read-help p{font-size:1rem!important;line-height:1.4;margin:4px 0!important}
html body #ll2-app .weekly-workspace .lv-readref:after{display:none!important}
html body #ll2-app .weekly-workspace .lv-write{padding:12px!important;gap:8px!important}
html body #ll2-app .weekly-workspace .lv-writehead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
html body #ll2-app .weekly-workspace .lv-writehead h3{font-size:1rem!important;margin:0!important}
html body #ll2-app .weekly-workspace .lv-writeprompt{margin:0!important;font-size:1rem!important;line-height:1.45!important}
html body #ll2-app .weekly-workspace .lv-frame{padding:8px 12px!important;margin:8px 0!important;font-size:1rem!important;line-height:1.45!important}
html body #ll2-app .weekly-workspace .lv-answer{padding:0!important;margin:0!important;gap:6px!important}
html body #ll2-app .weekly-workspace .lv-answer label{margin:4px 0!important;font-size:1rem!important}
html body #ll2-app .weekly-workspace .lv-answer textarea{min-height:72px!important;max-height:260px;resize:vertical;padding:8px!important;margin:4px 0!important}
html body #ll2-app .weekly-workspace .lv-answer input{width:100%;font:inherit;min-height:36px;border:1px solid var(--lv-line);border-radius:6px;background:var(--lv-card);color:var(--lv-ink)}
html body #ll2-app .weekly-workspace .lv-evidence-fields{font-size:.9rem;margin:4px 0}
html body #ll2-app .weekly-workspace .lv-root .ll-field-tools{display:none!important}
html body #ll2-app .weekly-workspace .lv-table{table-layout:fixed;width:100%;min-width:0!important}
html body #ll2-app .weekly-workspace .lv-table :is(td,th){padding:8px!important;overflow-wrap:anywhere;font-size:1rem!important;line-height:1.45}
html body #ll2-app .weekly-workspace .lv-table-note{font-size:.85rem!important;margin:3px 0 6px!important}
html body #ll2-app .weekly-workspace .lv-table-note span{color:var(--lv-muted)}
html body #ll2-app .weekly-workspace .lv-cell-edit{display:block;width:100%;min-height:44px;padding:4px;white-space:normal;overflow-wrap:anywhere;text-align:left;color:var(--lv-muted);background:transparent;border:1px dashed var(--lv-line);border-radius:5px;font:inherit}
html body #ll2-app .weekly-workspace .lv-table textarea{width:100%;min-width:0;min-height:60px;max-height:200px;resize:vertical;font:inherit;padding:4px}
html body #ll2-app .weekly-workspace .lv-reading-tools{font-size:.875rem;min-height:36px;padding:6px 12px;margin:0;border:1px solid var(--lv-line);border-radius:8px;background:var(--lv-card);color:var(--lv-ink)}
/* Applejax drawer rules moved to ll-applejax.css (3.0.0). Lesson-only part of the old narrow-screen rule: */
@media(max-width:700px){html body #ll2-app .weekly-workspace .lv-goal{flex-basis:100%;min-width:0}html body #ll2-app .weekly-workspace .lv-code{align-self:flex-start}}


/* Compact route, writing and completion alignment */
html body #ll2-app .weekly-workspace .lv-route-select{width:auto!important;min-width:145px!important;max-width:100%!important;font-size:1rem!important;padding:6px 28px 6px 10px!important}
html body #ll2-app .weekly-workspace .lv-writehead{align-items:center!important;gap:10px!important;margin:0 0 8px!important}
html body #ll2-app .weekly-workspace .lv-writehead .lv-routetask-head{display:flex!important;align-items:center!important;gap:8px!important;margin:0!important;line-height:1.3!important}
html body #ll2-app .weekly-workspace .lv-writehead .lv-bloom{margin:0!important}
html body #ll2-app .weekly-workspace .lv-done{padding:12px!important}
html body #ll2-app .weekly-workspace .lv-done h3{font-size:1rem!important;margin:0 0 8px!important}
html body #ll2-app .weekly-workspace .lv-donelist li{display:grid!important;grid-template-columns:20px minmax(0,1fr)!important;gap:8px!important;align-items:start!important;margin:0!important;padding:0!important}
html body #ll2-app .weekly-workspace .lv-donelist input{width:18px!important;height:18px!important;min-height:0!important;margin:3px 0 0!important}
html body #ll2-app .weekly-workspace .lv-donelist label{margin:0!important;padding:0!important;line-height:1.45!important}
.lv-explanations section{border-top:1px solid var(--lv-line);padding:10px 0}.lv-explanations p{margin:6px 0}.lv-qrow{flex-wrap:wrap;gap:8px}


/* ============================================================ 2.4.0 curriculum release corrections
   Scoped with the same weight as the deployed compactness block so site-wide label/button/h3 rules cannot undo them.
   Spacing uses 8/12/16/24 px; controls 36 px (44 px on touch); content text never below 1rem. */
html body #ll2-app .weekly-workspace .lv-stepsbox>.lv-h3,.lv-root .lv-stepsbox>.lv-h3{margin:0 0 8px!important;font-size:1.0625rem!important;line-height:1.3!important}
html body #ll2-app .weekly-workspace .lv-todo,.lv-root .lv-todo{list-style:none!important;margin:0!important;padding:0!important;display:grid!important;gap:8px!important}
html body #ll2-app .weekly-workspace .lv-todo-item,.lv-root .lv-todo-item{margin:0!important;padding:0!important}
html body #ll2-app .weekly-workspace label.lv-todo-row,.lv-root label.lv-todo-row{display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;column-gap:10px!important;row-gap:0!important;align-items:start!important;margin:0!important;padding:10px 12px!important;font-size:1rem!important;line-height:1.5!important;font-weight:400!important}
html body #ll2-app .weekly-workspace .lv-todo-row>.lv-todo-n,.lv-root .lv-todo-row>.lv-todo-n{grid-column:1!important;grid-row:1!important;margin:0!important;width:calc(1.5em / .875)!important;height:calc(1.5em / .875)!important;font-size:.875em!important}
html body #ll2-app .weekly-workspace .lv-todo-row>.lv-todo-t,.lv-root .lv-todo-row>.lv-todo-t{grid-column:2!important;grid-row:1!important;display:block!important;margin:0!important;padding:0!important;line-height:1.5!important}
/* ¶ jump chips are inline text controls: never let a global 44px button rule inflate the line box */
html body #ll2-app .lv-root button.lv-pref,.lv-root button.lv-pref{display:inline!important;min-height:0!important;height:auto!important;width:auto!important;margin:0 1px!important;padding:0 5px!important;line-height:1.3!important;vertical-align:baseline!important;font-size:.92em!important;border-radius:6px!important}

/* route row: the select and its verb sit together; the task text follows */
html body #ll2-app .weekly-workspace .lv-route-inline,.lv-root .lv-route-inline{display:flex!important;flex-wrap:wrap;align-items:center;gap:8px 12px!important}
.lv-route-action{font-weight:800!important;font-size:1rem}
html body #ll2-app .weekly-workspace .lv-route-select{min-height:36px!important}
@media (pointer:coarse){html body #ll2-app .weekly-workspace :is(.lv-route-select,.lv-reading-tools,.lv-select),.lv-root :is(.lv-reading-tools,.lv-select){min-height:44px!important}}

/* reading: header group (title/citation left, Read ¶ + Reading tools right); no outer bar, no card-in-card */
html body #ll2-app .weekly-workspace .lv-readref,.lv-root .lv-readref{display:grid!important;gap:8px!important;padding:0!important;border:0!important;background:none!important}
html body #ll2-app .weekly-workspace .lv-readref .lv-text,.lv-root .lv-readref .lv-text{margin:0}
html body #ll2-app .weekly-workspace .lv-text-head,.lv-root .lv-text-head{display:flex!important;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px 16px}
html body #ll2-app .weekly-workspace .lv-text-tools,.lv-root .lv-text-tools{display:flex!important;flex-wrap:wrap;align-items:center;gap:8px;margin:0}
@media (min-width:1080px){.lv-body.has-pane .lv-readref .lv-readinline{display:none}.lv-body.has-pane .lv-readref-line::after{content:"Open beside these steps";color:var(--lv-muted);font-size:.875rem}}
@media (max-width:1079.98px){.lv-readref .lv-readinline{display:block}}
@media (max-width:480px){.lv-text-tools{justify-content:flex-start}}

/* compact diagram bar: Fit, zoom and Layout stay in the bar; secondary controls in one labelled More menu. The menu panel
   is anchored to the whole bar (left/right 0), so it can never overflow the pane at 390 px or in the drawer. */
.lld-bar[data-ll-compact]{display:flex!important;flex-wrap:wrap!important;align-items:center;gap:8px!important}
.lld-bar[data-ll-compact]:not([style*=sticky]){position:relative}
.lld-more-group{position:static;margin:0}
.lld-more-sum{list-style:none;display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:6px 12px;border:1px solid var(--lv-line,#c9d6d0);border-radius:8px;background:var(--lv-card,#fff);color:var(--lv-ink,#15332c);font:inherit;font-size:.875rem;font-weight:700;cursor:pointer}
.lld-more-sum::-webkit-details-marker{display:none}
.lld-more-group[open]>.lld-more-sum{border-color:var(--lv-accent,#1f5a4b);background:var(--lv-accent-soft,#e3eee9)}
.lld-more-pop{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 4px);display:flex;flex-wrap:wrap;gap:8px;padding:8px;border:1px solid var(--lv-line,#d3ded9);border-radius:10px;background:var(--lv-card,#fff);box-shadow:0 8px 24px rgb(16 40 33 / .18)}
.lld-more-sum:focus-visible{outline:3px solid var(--lv-sun,#b8790f);outline-offset:2px}

/* the course-navigation slot in the lesson header (filled by ll-course-nav.js) */
.lv-head>.ll-lesson-nav{margin:0}
/* the site styles every <details> in #ll2-app as a bordered card; these disclosures are inline controls, not cards */
html body #ll2-app .weekly-workspace :is(details.lv-read-help,details.lv-frame-help,details.lld-more-group,details.aj-privacy){border:0!important;padding:0!important;margin:0!important;background:none!important;border-radius:0!important}
html body #ll2-app .weekly-workspace details.lv-frame-help{margin-top:4px!important}
/* small inline helpers in the route row (◇ help from ll-tutorial.js) follow the 36px control size, not the 44px global */
html body #ll2-app .weekly-workspace .lv-route-inline button{min-height:36px!important;min-width:36px;padding:4px 10px!important;border-radius:8px!important}
/* narrow screens: the reading card right below already carries the title and Read ¶, so the step line keeps only its help */
@media (max-width:1079.98px){.lv-readref-t{display:none}.lv-readref-line:not(:has(details)){display:none}}
/* the site's global #ll2-app h3 margins (24px/16px) and size would reopen the gaps the brief removes */
html body #ll2-app .weekly-workspace .lv-h3{margin:0 0 8px!important;font-size:1.0625rem!important;line-height:1.3!important}
html body #ll2-app .weekly-workspace .lv-text-title{margin:0!important;font-size:1.25rem!important;line-height:1.25!important}
/* step strip: the site's global button border/padding must not box the step buttons; on phones the strip scrolls
   sideways (it already has overflow-x) instead of squeezing labels into each other */
html body #ll2-app .weekly-workspace .lv-stepbtn{border:0!important;background:none!important;box-shadow:none!important}
@media (max-width:640px){html body #ll2-app .weekly-workspace .lv-steps{grid-auto-columns:minmax(64px,1fr)!important}}
/* phones: a figure keeps a readable minimum width (80% of its drawing, at most 560px; set by ll-lesson-art.js 2.2.0) and
   scrolls inside its frame only when it is wider than the screen */
@media (max-width:640px){.lv-figure-art svg{min-width:var(--la-minw,560px)!important}}
