/* Class21 visual system, adapted directly from ../study_tools/theme.css.
   Existing course routes, study content and storage contracts are preserved. */
@font-face{font-family:StudySans;src:url('./assets/fonts/PretendardVariable.woff2') format('woff2');font-weight:100 900;font-display:swap}
@media screen{
 :root{--canvas:#fff;--paper:#fff;--surface:#fff;--neutral:#f8f9fa;--subtle:#f1f3f5;--ink:#212529;--muted:#495057;--line:#dee2e6;--primary:#00c471;--primary-hover:#00a760;--blue:#228be6;--blue-soft:#e7f5ff;--green:#00834c;--red:#9a4e33;font-family:StudySans,-apple-system,BlinkMacSystemFont,sans-serif}
 :root[data-theme=dark]{--canvas:#171a1c;--paper:#111415;--surface:#171a1c;--neutral:#111415;--subtle:#252a2d;--ink:#e9ecef;--muted:#c4ccd2;--line:#465058;--primary:#00c471;--primary-hover:#00a760;--blue:#91c7ff;--blue-soft:#1d3348;--green:#a5dac3;--red:#ffb5ac}
 body{font-family:StudySans,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--canvas);-webkit-font-smoothing:antialiased}
 button,input,select,textarea{font-family:inherit}
 button,.button{border-radius:8px;font-size:13px;min-height:40px;font-weight:600;background:var(--canvas)}
 button:hover,.button:hover{background:var(--neutral)}
 .primary{background:var(--primary);border-color:var(--primary);color:#10221a}
 .primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#10221a;filter:none}
 [data-theme=dark] .primary{color:#10221a}
 :focus-visible{outline-color:var(--blue)}
 .app-header{height:72px;padding:15px max(24px,calc((100vw - 1120px)/2));gap:20px;background:var(--canvas);justify-content:space-between}
 .brand{font-family:StudySans,sans-serif;font-size:18px;font-weight:750;letter-spacing:-.02em;gap:9px}
 .brand svg{width:23px;height:23px;color:var(--primary-hover)}
 .app-header nav{height:auto;gap:7px;margin-left:auto}
 .app-header nav a{height:40px;padding:10px 18px;min-height:40px;border:0;border-radius:32px;font-size:13px;color:var(--muted);white-space:nowrap}
 .app-header nav a[aria-current]{background:#25262b;color:#fff;font-weight:600;border:0}
 .app-header nav a:not([aria-current]):hover{background:var(--neutral);color:var(--ink)}
 .theme-button{margin-left:0;width:40px;background:transparent}
 .page{max-width:1176px;padding:36px 28px 55px}
 .page.home{padding-top:36px}
 .home .course-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:23px;margin-top:27px}
 .home .course-card{border:1px solid var(--line);border-radius:8px;overflow:hidden;min-width:0;background:var(--canvas);padding:0;display:flex;flex-direction:column;transition:none}
 .home .course-card:hover{border-color:var(--line)}
 .course-preview{display:block;height:173px;background:var(--neutral);padding:13px 18px;border-bottom:1px solid var(--line);overflow:hidden}
 .course-preview img{display:block;width:100%;height:100%;object-fit:contain;box-shadow:none}
 .course-card-body{padding:20px 19px 17px;display:flex;flex-direction:column;flex:1}
 .home .course-card h2{font-size:22px;margin:0 0 24px;font-weight:700;letter-spacing:-.025em;min-height:0}
 .course-card h2 a{color:var(--ink);text-decoration:none}
 .course-card-progress{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;margin-bottom:9px;color:var(--muted);margin-top:auto}
 .course-card progress{height:4px;margin-bottom:10px}
 .course-card-actions{display:flex;align-items:center;gap:10px;margin-top:17px}
 .course-card-actions>a:first-child{flex:1;display:inline-flex;justify-content:center;align-items:center;background:var(--primary);color:#10221a;font-size:13px;font-weight:650;border-radius:8px;padding:10px 14px;min-height:42px;text-decoration:none}
 .course-card-actions>a:first-child:hover{background:var(--primary-hover)}
 .card-resume{font-size:12px;color:var(--muted);padding:9px 5px;min-height:40px;text-decoration:none;display:inline-flex;align-items:center;white-space:nowrap}
 progress{height:5px;border-radius:8px;overflow:hidden;background:var(--subtle)}
 progress::-webkit-progress-bar{background:var(--subtle)}progress::-webkit-progress-value{background:var(--primary)}progress::-moz-progress-bar{background:var(--primary)}
 .breadcrumbs{font-size:12px;margin-bottom:27px}
 .course-heading{margin-bottom:27px;max-width:none}
 .course-heading h1,.page-heading h1,.practice-intro h1,.reference-intro h1{font-size:34px;font-weight:750;letter-spacing:-.025em;line-height:1.4;margin:20px 0 27px}
 .course-options{gap:16px}
 .course-option{padding:25px 22px;border-radius:8px;border-color:var(--line);background:var(--canvas)}
 .course-option:hover{border-color:var(--muted);background:var(--neutral)}
 .course-option h2{font-size:22px;font-weight:700;margin:0 0 21px}
 .option-bottom{padding-top:13px;font-size:12px;color:var(--muted)}
 .option-bottom svg{display:none}
 .continue-reading{background:var(--neutral);border:0;padding:22px 24px;border-radius:8px;margin:30px 0}
 .continue-reading h2{font-size:24px;margin:0}
 .continue-reading h2 small{font-size:14px}
 .continue-reading p{margin-top:10px}
 .page-heading{margin-bottom:20px;align-items:center}
 .page-heading h1{margin:0}
 .document-list{background:var(--canvas);border-top:1px solid var(--line)}
 .document-row{padding:20px 10px;gap:19px;border-color:var(--line)}
 .document-index{font-size:12px;color:var(--muted)}
 .document-info .eyebrow{letter-spacing:0;font-size:11px;font-weight:500}
 .document-info h2{font-size:17px;font-weight:650;line-height:1.6;margin:5px 0 0}
 .row-arrow{color:var(--muted)}
 .reader-page .reader-bar{height:54px;background:var(--canvas);padding:0 20px;border-color:var(--line)}
 body.is-reader .app-header{height:62px;padding:0 22px}
 body.is-reader .brand{font-size:15px}
 body.is-reader .app-header nav a{font-size:12px;padding:8px 14px;min-height:36px;height:36px}
 .reader-bar select{border:1px solid var(--line);border-radius:8px;background:var(--neutral);padding:8px 10px;font-size:13px;font-weight:550}
 .reader-grid{height:calc(100dvh - 116px);grid-template-columns:minmax(0,53fr) minmax(0,47fr)}
 .source-panel{background:var(--neutral)}
 .panel-toolbar{background:var(--neutral);height:42px;padding:0 20px}
 .source-viewport{background:var(--subtle);padding:12px 20px 20px}
 .source-viewport img{box-shadow:0 8px 22px #2125290d}
 .source-caption{background:var(--neutral)}
 .lesson-panel,.lesson-tabs{background:var(--canvas);border-color:var(--line)}
 .lesson-tabs{height:51px;padding:0 28px;gap:20px}
 .lesson-tabs button{font-size:13px;font-weight:500;min-height:50px}
 .lesson-tabs button[aria-selected=true]{border-color:var(--primary-hover);color:var(--ink);font-weight:700}
 .lesson-tabs>span{display:none}
 .lesson-scroll{padding:25px 32px 35px}
 .lesson-scroll h1{font-size:27px;line-height:1.55;font-weight:750;margin:10px 0 24px}
 .lesson-scroll h2{font-size:16px;font-weight:700;letter-spacing:-.015em}
 .teaching-section p{font-size:18px;line-height:1.9}
 .recap{background:var(--neutral);border:0;border-radius:8px;padding:16px;margin:25px 0}
 .recap h2{color:var(--ink);font-size:14px}
 .recap p{font-size:17px;font-weight:600}
 .term-section dl{background:var(--neutral);border:0;border-radius:8px;padding:13px 16px}
 .term-section dl>div{font-size:15px;grid-template-columns:100px minmax(0,1fr);gap:12px}
 .term-section dl>div:last-child{border:0}
 .term-section dd{color:var(--ink)}
 .done-button.is-done{color:var(--ink);background:var(--neutral);border-color:var(--muted)}
 .review-page{max-width:1176px}
 .review-layout{gap:34px;grid-template-columns:175px minmax(0,1fr)}
 .reference-intro>.eyebrow,.reference-nav>.eyebrow{display:none}
 .reference-intro h1{font-size:31px;margin:0 0 25px}
 .reference-actions{margin:0 0 25px}
 .reference-section h2{font-size:21px;font-weight:700}
 .section-heading{border-color:var(--line)}
 .section-heading>span{color:var(--muted)}
 .worked{background:var(--neutral);border-left:0;border-radius:8px;padding:16px}
 .table-wrap thead th{background:var(--neutral);color:var(--muted)}
 .table-wrap th,.table-wrap td{border-color:var(--line)}
 .figure-top .eyebrow{letter-spacing:0;color:var(--muted)}
 .document-tabs{border-color:var(--line);border-radius:0}
 .document-tabs a[aria-current]{background:var(--neutral);color:var(--ink);border-color:var(--primary-hover)}
 .flow-number{background:var(--neutral);color:var(--ink)}
 .flow-step:after{color:var(--muted)!important}
 .glossary-head{background:var(--neutral)}
 .practice-page,.quiz-page{max-width:1000px}
 .practice-intro h1{font-size:31px;margin:0 0 25px}
 .practice-setup{padding:0;border:0;background:var(--canvas);margin:0;max-width:720px}
 .course-switch a[aria-current]{color:var(--ink)}
 .type-options input:checked+span,.ox-options input:checked+span{background:var(--neutral);color:var(--ink);border-color:var(--muted)}
 .quiz-start>span{color:var(--muted)}
 .question h1{font-size:24px;line-height:1.7;font-weight:700}
 .question-meta>span:first-child{color:var(--muted)}
 .ox-options span,.question input[type=text],.question textarea{background:var(--canvas);border-radius:8px}
 .answer-feedback{border:0;border-top:1px solid var(--line);background:transparent;padding:21px 0}
 .answer-feedback.incorrect{border-color:var(--line)}
 .self-grade button[aria-pressed=true]{background:var(--neutral);color:var(--ink);border-color:var(--muted)}
 .question-navigation .primary{background:var(--canvas);border-color:var(--line);color:var(--muted)}
 .question-navigation .primary:hover{background:var(--neutral)}
 .quiz-progress{height:4px}
 @media(max-width:1100px){.home .course-list{gap:17px}.course-card-body{padding:18px 15px}.home .course-card h2{font-size:20px}.lesson-scroll{padding:23px 25px 32px}.app-header{padding-inline:24px}}
 @media(max-width:850px){.home .course-list{grid-template-columns:repeat(2,minmax(0,1fr))}.review-layout{gap:25px;grid-template-columns:145px minmax(0,1fr)}}
 @media(max-width:740px){
  .app-header{height:64px;padding:10px 17px;gap:10px}.brand{font-size:15px;gap:7px}.brand svg{width:21px;height:21px}.app-header nav{gap:3px}.app-header nav a{font-size:11px;padding:9px 12px}.theme-button{width:30px;min-height:36px;padding:5px}
  .page{padding:24px 18px 40px}.page.home{padding-top:24px}.home .course-list{margin-top:0;gap:17px}.course-preview{height:160px}
  .course-heading h1,.page-heading h1{font-size:27px;margin-top:0}.course-heading{margin-bottom:23px}.course-option{padding:22px}.course-option h2{font-size:21px}.continue-reading{padding:18px 16px}
  body.is-reader .app-header{height:56px;padding:0 10px}.is-reader .brand{font-size:13px}.is-reader .app-header nav a{font-size:11px;padding:8px 10px}
  .reader-page .reader-bar{min-height:85px;height:auto;padding:8px 13px}.reader-bar select{padding:6px 8px;font-size:11px}.reader-grid{height:calc(100dvh - 141px);grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(180px,43%) minmax(240px,57%)}
  .panel-toolbar{height:33px;padding:0 14px}.source-viewport{padding:4px 9px 7px}.lesson-tabs{height:45px;padding:0 17px;gap:18px}.lesson-tabs button{min-height:44px;font-size:12px}.lesson-scroll{padding:20px 20px 32px}.lesson-scroll h1{font-size:23px}.lesson-scroll h2{font-size:15px}.teaching-section p{font-size:17px}.term-section dl>div{grid-template-columns:80px minmax(0,1fr);font-size:14px}
  .review-layout{display:block}.reference-intro h1{font-size:27px}.practice-intro h1{font-size:28px}.question h1{font-size:23px}.reference-actions{gap:10px}.reference-section h2{font-size:19px}
 }
 @media(max-width:650px){.home .course-list{grid-template-columns:minmax(0,1fr)}.home .course-card h2{font-size:22px}.course-preview{height:173px}.page-heading{align-items:start}.course-options{grid-template-columns:minmax(0,1fr)}}
 @media(max-width:360px){.app-header{padding-inline:12px;gap:7px}.brand{font-size:14px;gap:5px}.app-header nav a{padding:9px 10px;font-size:10px}.theme-button{width:27px}.page{padding-inline:17px}}
}

@media screen {
 .type-options{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.type-options span{padding:13px 6px;text-align:center;min-height:48px}.type-options input:checked+span{border-color:var(--primary-hover);background:var(--neutral);box-shadow:inset 0 0 0 1px var(--primary-hover)}
 .practice-header{margin:0 0 28px}.practice-question{max-width:760px}.question-jump{margin-top:15px;font-size:13px}.question-jump summary{cursor:pointer;padding:9px 0}.question-nav{display:flex;gap:8px;flex-wrap:wrap;padding:12px 0}.question-nav button{min-width:44px;min-height:44px;padding:6px}.question-nav button[aria-current=true]{outline:2px solid var(--ink);outline-offset:2px}.question-nav .done{color:#087f5b;background:#ebfbee}.question-nav .wrong{color:#c92a2a;background:#fff5f5}
 .practice-choices{display:grid;gap:10px;padding:0;border:0;margin:24px 0}.practice-choice{display:flex;align-items:center;gap:14px;padding:16px 18px;min-height:62px;border:1px solid var(--line);border-radius:8px;cursor:pointer;font-size:16px;background:var(--canvas)}.practice-choice input{position:absolute;opacity:0;width:1px;height:1px}.practice-choice:has(input:focus-visible){outline:3px solid var(--info);outline-offset:3px}.choice-number{display:grid;place-items:center;flex:none;width:30px;height:30px;border:1px solid var(--line);border-radius:50%;font-size:13px}.practice-choice.correct{border-color:#087f5b;background:#ebfbee;color:#075f45}.practice-choice.incorrect{border-color:#c92a2a;background:#fff5f5;color:#a51111}.practice-choice:has(input:checked) .choice-number{background:currentColor}.practice-choice:has(input:checked) .choice-number{background:var(--ink);color:var(--canvas)}
 .practice-short{width:100%;resize:vertical;min-height:110px;padding:16px;line-height:1.75;margin:20px 0 14px;border:1px solid var(--line);font-size:16px}.practice-feedback{margin:28px 0 0;border-top:1px solid var(--line);padding:24px 0}.answer-verdict{display:inline-flex;align-items:center;padding:7px 13px;border-radius:6px;font-size:17px;font-weight:750;margin-bottom:22px}.answer-verdict.correct{color:#087f5b;background:#ebfbee}.answer-verdict.wrong{color:#c92a2a;background:#fff5f5}.answer-verdict.pending{color:var(--muted);background:var(--neutral)}.student-answer{font-size:16px;white-space:pre-wrap}.student-answer>span{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}.feedback-answer{font-size:13px;color:var(--muted);margin-top:25px}.feedback-model{font-size:21px;font-weight:700;line-height:1.7;white-space:pre-wrap;margin:8px 0 22px}.feedback-reason h4{font-size:14px;margin-bottom:7px}.feedback-reason p{font-size:16px;line-height:1.85;white-space:pre-wrap}.source-ref{display:inline-block;margin:6px 0 20px;font-size:13px}.grade-retry{margin-top:15px}.self-grade{display:flex;flex-wrap:wrap;gap:9px;margin:15px 0}.self-grade [data-grade=true][aria-pressed=true]{color:#087f5b;background:#ebfbee;border-color:#087f5b}.self-grade [data-grade=false][aria-pressed=true]{color:#c92a2a;background:#fff5f5;border-color:#c92a2a}.question-navigation{gap:12px}.question-navigation button{min-height:46px}.result-counts{display:flex;flex-wrap:wrap;gap:24px;margin:25px 0}.result-counts .correct{color:#087f5b}.result-counts .wrong{color:#c92a2a}
 .practice-chat{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}.practice-chat h3{font-size:17px}.practice-chat-form{display:flex;gap:10px;align-items:stretch}.practice-chat-form textarea{min-width:0;flex:1;width:100%;border:1px solid var(--line);border-radius:8px;resize:vertical;padding:12px;font-size:16px;line-height:1.65;background:var(--canvas)}.practice-chat-form button{align-self:flex-end;min-height:48px}.chat-status{font-size:13px;color:var(--muted);margin:9px 0}.chat-history{display:grid;gap:20px;margin-top:20px}.practice-chat-entry{padding:15px 16px;background:var(--neutral);border-radius:8px;overflow-wrap:anywhere}.practice-chat-entry strong{font-size:12px;display:block;margin-bottom:7px}.chat-text{white-space:pre-wrap;font-size:16px;line-height:1.85}.lesson-scroll .practice-chat{border:0;padding:0;margin:0}.hub-return{display:block;text-align:right;font-size:13px;color:var(--muted);margin:18px auto;max-width:1080px;padding:0 20px}
 [data-theme=dark] .practice-choice.correct,[data-theme=dark] .answer-verdict.correct,[data-theme=dark] .question-nav .done,[data-theme=dark] .self-grade [data-grade=true][aria-pressed=true]{color:#8ce9b2;background:#123c2a}[data-theme=dark] .practice-choice.incorrect,[data-theme=dark] .answer-verdict.wrong,[data-theme=dark] .question-nav .wrong,[data-theme=dark] .self-grade [data-grade=false][aria-pressed=true]{color:#ffa8a8;background:#442222}
 @media(max-width:600px){.type-options{grid-template-columns:repeat(2,minmax(0,1fr))}.type-options label:last-child{grid-column:1/-1}.practice-choice{padding:14px 13px;gap:10px;font-size:16px}.question h1{font-size:22px}.practice-chat-form{gap:7px}.practice-chat-form button{padding:10px 13px}.feedback-model{font-size:19px}.question-navigation button{flex:1}.question-meta{gap:12px}.quiz-result>div:last-child{display:flex;flex-wrap:wrap;gap:10px}}
}
@media screen{.practice-feedback>.source-ref{display:block;width:fit-content}.practice-feedback>.grade-retry{display:flex;margin:4px 0 0}}
@media screen {
 .brand-logo{display:block;width:28px;height:28px;flex:none}.continue-reading h2{font-size:19px;margin:0 0 8px}.continue-reading p{margin:0}
 .source-viewport{position:relative;display:block;overflow:hidden;padding:0!important;touch-action:none;overscroll-behavior:contain;user-select:none;-webkit-user-select:none}.pdf-zoom-stage{position:absolute;inset:10px;overflow:visible}.source-viewport .pdf-zoom-stage img{position:absolute;top:0;left:0;display:block;max-width:none;max-height:none;object-fit:fill;transform-origin:0 0;-webkit-user-drag:none}.source-viewport.is-zoomed{cursor:grab}.source-viewport.is-zoomed:active{cursor:grabbing}
 .panel-toolbar{height:46px;flex-shrink:0;padding-inline:14px}.panel-toolbar>div{display:flex;align-items:center;gap:12px}.pdf-zoom-controls{display:flex;align-items:center;gap:0}.pdf-zoom-controls button{min-height:36px;min-width:34px;padding:4px 7px;background:transparent;font-size:15px;border:0}.pdf-zoom-controls #zoom{font-size:12px;min-width:53px;font-variant-numeric:tabular-nums}.panel-toolbar .small{white-space:nowrap;font-size:11px}.source-viewport:focus-visible{outline:2px solid var(--info);outline-offset:-3px}
 @media(max-width:740px){.reader-bar select,.reader-bar input{font-size:16px}.reader-bar select{max-width:calc(100vw - 140px)}.reader-bar input{width:44px}.brand-logo{width:25px;height:25px}.panel-toolbar{height:45px;padding-inline:10px;font-size:11px}.panel-toolbar>div{gap:6px}.pdf-zoom-stage{inset:6px}.pdf-zoom-controls button{min-height:40px;min-width:32px}.pdf-zoom-controls #zoom{min-width:48px}.reader-grid{grid-template-rows:minmax(180px,43%) minmax(240px,57%)}.lesson-panel input,.lesson-panel select,.lesson-panel textarea{font-size:16px}.source-caption{display:none}.reader-page{overflow:hidden}.is-reader .hub-return{display:none}}
}
@media screen {
 .type-options{display:grid}.quiz-page{padding-bottom:160px}.quiz-page .practice-header{margin-bottom:18px}.question-jump{margin-top:7px}.quiz-page .breadcrumbs{margin-bottom:20px}.practice-question{padding-top:0}.answer-keyboard-hint{color:var(--muted);font-size:12px;margin:0 0 12px}.quiz-ai-details{border-top:1px solid var(--line);margin-top:25px;padding-top:15px}.quiz-ai-details>summary{cursor:pointer;padding:10px 0;font-weight:650;font-size:14px}.quiz-ai-details .practice-chat{border:0;margin-top:10px;padding-top:0}.quiz-ai-details .practice-chat h3{display:none}
 .quiz-dock{position:fixed;z-index:35;bottom:0;left:50%;transform:translateX(-50%);width:min(904px,calc(100% - 48px));padding:12px 18px calc(15px + env(safe-area-inset-bottom,0px));background:var(--canvas);border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0;box-shadow:0 -5px 20px #21252908}.quiz-dock-status{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:9px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.dock-verdict.correct{color:#087f5b;font-weight:750}.dock-verdict.wrong{color:#c92a2a;font-weight:750}.quiz-dock .question-navigation{display:flex;gap:10px;margin:0;padding:0;border:0}.quiz-dock .question-navigation button{min-height:48px;flex:1;margin:0}.quiz-dock .question-navigation #quiz-prev{flex:0 0 80px}.quiz-dock .question-navigation .primary{background:var(--primary-hover);color:white;border-color:var(--primary-hover)}.quiz-dock .question-navigation .primary:hover{background:#008f54}.quiz-dock .question-navigation #quiz-next,.quiz-dock .question-navigation #quiz-results{font-weight:750}.practice-question h1:focus{outline:none}
 [data-theme=dark] .dock-verdict.correct{color:#8ce9b2}[data-theme=dark] .dock-verdict.wrong{color:#ffa8a8}
 @media(max-width:740px){.quiz-dock{width:100%;padding:10px 18px calc(12px + env(safe-area-inset-bottom,0px));border-radius:0;border-left:0;border-right:0}.quiz-dock .question-navigation #quiz-prev{flex:0 0 56px;padding-inline:8px}.quiz-dock .question-navigation button{font-size:14px;padding-inline:12px}.quiz-dock-status{font-size:12px}.quiz-page .practice-header{margin-bottom:13px}.quiz-page .question-meta{margin-bottom:10px}.quiz-page .question h1{font-size:22px;line-height:1.6;margin-bottom:15px}.quiz-page .practice-choices{margin-top:18px}.quiz-page .practice-short{margin-top:8px}.quiz-page .practice-feedback{margin-top:18px;padding-top:18px}.quiz-page{padding-bottom:155px}.answer-keyboard-hint{font-size:11px}}
}

/* Mobile quiz: one viewport-sized frame, one scrolling surface, one footer. */
@media screen and (max-width:740px), screen and (pointer:coarse) {
 body.is-quiz{position:fixed;top:var(--quiz-view-top,0px);left:0;right:0;height:var(--quiz-view-height,100dvh);min-height:0;overflow:hidden;display:flex;flex-direction:column;overscroll-behavior:none}
 body.is-quiz>.app-header{flex:0 0 56px;height:56px;min-height:56px;padding-block:0}
 body.is-quiz>.quiz-page{display:flex;flex-direction:column;flex:1 1 0;min-height:0;max-width:none;width:100%;padding:0;margin:0;overflow:hidden}
 body.is-quiz .quiz-scroll{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scroll-behavior:auto;scroll-padding-block:16px;padding:18px 18px 28px;-webkit-overflow-scrolling:touch}
 body.is-quiz .practice-question{max-width:none}
 body.is-quiz .quiz-dock{position:static;inset:auto;transform:none;flex:0 0 auto;width:100%;padding:8px 16px calc(8px + env(safe-area-inset-bottom,0px));margin:0;border-radius:0;border-left:0;border-right:0;box-shadow:none}
 body.is-quiz[data-quiz-keyboard] .quiz-dock{padding-bottom:8px}
 body.is-quiz .quiz-dock-status{line-height:16px;font-size:11px;margin-bottom:6px}
 body.is-quiz .quiz-dock .question-navigation{gap:8px}
 body.is-quiz .quiz-dock .question-navigation button{min-height:44px;padding:8px 12px;font-size:14px}
 body.is-quiz .quiz-dock .question-navigation #quiz-prev{flex:0 0 54px;padding-inline:8px}
 body.is-quiz .quiz-scroll .breadcrumbs{margin-bottom:16px}
 body.is-quiz .quiz-scroll .practice-header{margin-bottom:13px}
 body.is-quiz .quiz-scroll .question h1{font-size:22px;line-height:1.55;margin-bottom:15px}
 body.is-quiz>.hub-return{display:none}
}

@media screen{.plany-home-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:7px 10px;border:1px solid var(--line);border-radius:7px;color:var(--ink);background:var(--neutral);font-size:12px;font-weight:600;white-space:nowrap;text-decoration:none;flex:none}.plany-home-button svg{width:16px;height:16px}.plany-home-button:hover{background:var(--subtle)}@media(max-width:740px){.app-header .plany-home-button{min-height:40px;padding:6px 8px;font-size:11px}.app-header .plany-home-button svg{display:none}.app-header nav [data-nav=home]{display:none}.app-header{gap:8px}.is-reader .app-header{gap:7px}}}

@media screen {
 .reader-bar .page-navigation button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:40px;padding:4px 10px;border:1px solid #008f54;border-radius:7px;background:#008f54;color:white;font-size:22px;font-weight:750;line-height:1}
 .reader-bar .page-navigation button:hover:not(:disabled){background:#007b48;border-color:#007b48}
 .reader-bar .page-navigation button:disabled{background:var(--neutral);color:var(--muted);border-color:var(--line);opacity:.5}
 .practice-chat .practice-chat-form{align-items:flex-end;flex:0 0 auto;gap:8px}
 .practice-chat .practice-chat-form textarea{display:block;min-height:44px;height:44px;max-height:96px;margin:0;padding:9px 11px;resize:none;overflow-y:auto;font-size:16px;line-height:24px;border-radius:7px}
 .practice-chat .practice-chat-form button{min-height:44px;margin:0;padding:9px 12px;white-space:nowrap}
 .practice-chat .chat-history{position:relative;max-height:360px;overflow-y:auto;overscroll-behavior:contain;margin:0 0 12px;gap:12px}
 .practice-chat .chat-history:empty{display:none}.chat-status:empty{display:none}
 #ask-panel{display:flex;flex-direction:column;min-height:0;padding:14px 20px;overflow:hidden}
 #ask-panel .practice-chat{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;margin:0;padding:0;border:0}
 #ask-panel .practice-chat>h3{display:none}
 #ask-panel .chat-history{display:flex;flex-direction:column;flex:1 1 0;max-height:none;min-height:0;margin:0 0 10px;padding-right:3px}
 #ask-panel .chat-history:empty{display:block}
 #ask-panel .chat-status{flex:none;margin:5px 0 0;font-size:12px}
 #ask-panel .practice-chat-entry{flex:none;padding:12px 13px}
 #ask-panel .chat-text{font-size:15px;line-height:1.75}
 @media(max-width:740px){#ask-panel{padding:10px 14px}.reader-bar .page-navigation{gap:8px}.reader-bar .page-navigation button{min-height:40px;min-width:44px}}
}

@media screen and (max-width:740px), screen and (pointer:coarse){
 body.is-reader{position:fixed;top:var(--reader-view-top,0px);left:0;right:0;display:flex;flex-direction:column;height:var(--reader-view-height,100dvh);min-height:0;overflow:hidden;overscroll-behavior:none}
 body.is-reader>.app-header{flex:0 0 56px;min-height:56px;height:56px}
 body.is-reader>.reader-page{display:flex;flex:1 1 0;flex-direction:column;width:100%;min-height:0;padding:0;overflow:hidden}
 body.is-reader .reader-bar{flex:0 0 auto}
 body.is-reader .reader-grid{flex:1 1 0;min-height:0;height:auto;grid-template-rows:minmax(0,43fr) minmax(0,57fr);overflow:hidden}
 body.is-reader .source-panel,body.is-reader .lesson-panel{min-height:0;overflow:hidden}
 body.is-reader .lesson-tabs{flex-shrink:0}
 body.is-reader #ask-panel{padding-bottom:max(10px,env(safe-area-inset-bottom,0px))}
}

/* Preserve Python indentation and output line breaks in the saved bank. */
.question-code{margin:0 0 24px;padding:16px 18px;max-width:100%;overflow:auto;border:1px solid var(--line);border-radius:8px;background:var(--subtle);font:14px/1.75 ui-monospace,SFMono-Regular,Menlo,monospace;tab-size:4;white-space:pre}.feedback-model,.practice-choices span{white-space:pre-wrap;overflow-wrap:anywhere}
