:root{font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",sans-serif;color:#252a30;background:#fff;font-size:15px;line-height:1.65;--blue:#245f94;--line:#d9dde1;--muted:#626b73}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit;border:1px solid #bfc5cb;border-radius:0;background:#fff}button{min-height:44px;padding:7px 14px;cursor:pointer}button:hover{background:#f1f4f6}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--blue);color:#fff;border-color:var(--blue)}button.active,button[aria-pressed=true]{color:var(--blue);background:#edf3f8;border-color:var(--blue)}a{color:var(--blue);text-underline-offset:3px}input,select{min-height:42px;padding:6px;max-width:100%}input[type=checkbox]{min-height:22px;width:22px;vertical-align:middle}textarea{width:100%;min-height:130px;padding:10px;margin:10px 0}h1{font-size:23px;font-weight:600;margin:4px 0 16px}h2{font-size:17px;margin:0 0 12px}small,.muted{font-size:13px;color:var(--muted)}header{display:flex;align-items:center;gap:18px;padding:0 22px;border-bottom:1px solid var(--line);background:#fff;min-height:65px;flex-wrap:wrap}header .brand{font-size:17px;font-weight:600;text-decoration:none;color:#30373e}header nav{display:flex;gap:0}header nav button{border:0;border-bottom:3px solid transparent;min-height:65px;padding:10px 16px}header nav button.active{background:#fff;border-bottom-color:var(--blue)}header>a,header>button{font-size:13px}.spacer{flex:1}main{max-width:1440px;margin:0 auto;padding:28px 28px 40px}.heading{display:flex;align-items:center;justify-content:space-between}.heading small{letter-spacing:.09em}.tabs{display:flex;border-bottom:1px solid var(--line);margin:6px 0 0;overflow:auto}.tabs button{min-width:104px;border:0;border-bottom:3px solid transparent;padding:10px 18px;white-space:nowrap}.tabs button.active{border-bottom-color:var(--blue);background:#fff}.selection{display:grid;grid-template-columns:220px minmax(0,1fr);border-bottom:1px solid var(--line)}#category-list{background:#f7f8f9;border-right:1px solid var(--line);max-height:740px;overflow:auto;padding:12px 0}#category-list button{display:flex;width:100%;justify-content:space-between;text-align:left;border:0;padding:9px 16px;font-size:14px;gap:8px}#category-list button.active{box-shadow:inset 3px 0 var(--blue)}.selection-detail{padding:22px;min-width:0}.filters{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.filters label,.startbar label{font-size:13px;display:flex;flex-direction:column;gap:4px}.filters .search{flex:1;min-width:150px}.summary{padding:14px 0;border-top:1px solid var(--line);display:flex;gap:24px;flex-wrap:wrap}.summary strong{font-size:21px;font-weight:500;padding-left:8px;color:#252a30}.progress{height:5px;background:#e8ebee;min-width:70px;margin-top:6px}.progress i{display:block;background:var(--blue);height:100%}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#f6f7f8;color:#555e66;font-weight:500;white-space:nowrap}td:first-child{min-width:130px}td button{padding:0;border:0;min-height:32px;color:var(--blue);text-align:left;background:none}td .muted{display:block;font-size:12px}.table-wrap{overflow:auto}.badge{border:1px solid var(--line);padding:1px 5px;font-size:11px;white-space:nowrap}.pager{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin:14px 0;font-size:13px}.startbar{position:sticky;bottom:0;display:flex;align-items:end;gap:14px;flex-wrap:wrap;padding:16px 0;background:#fff;border-bottom:1px solid var(--line);z-index:5}.startbar>span{align-self:center}.startbar #start{margin-left:auto}#message{background:#f1f5f8;color:#264c70;padding:0 24px;white-space:pre-line}#message:not(:empty){padding:10px 24px;border-bottom:1px solid var(--line)}.hide{display:none!important}#gate{position:fixed;inset:0;z-index:50;background:#f7f8f9;display:grid;place-items:center}#login{max-width:450px;padding:32px;background:#fff;border:1px solid var(--line);margin:20px}#login label{display:block;margin:16px 0}#login input{width:100%}#gnote{color:#8f3333}.solve-top{display:flex;gap:14px;align-items:center;margin-bottom:18px;font-size:13px}.solve-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);border:1px solid var(--line)}.question-pane{min-width:0;border-right:1px solid var(--line)}.ink-toolbar{display:flex;align-items:center;gap:5px;padding:9px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap;font-size:12px}.ink-toolbar button{font-size:12px;padding:5px 10px}.ink-toolbar b{margin-right:4px}.paper-scroll{overflow-x:auto;overscroll-behavior-x:contain}#paper{position:relative;width:680px;padding:26px 28px 32px;background:#fff;min-height:530px}#paper .stem{font-size:18px;line-height:1.9;white-space:pre-wrap;margin-bottom:26px;overflow-wrap:anywhere}#paper canvas{position:absolute;inset:0;z-index:2;touch-action:pan-x pan-y;pointer-events:auto}#paper canvas.hidden-ink{visibility:hidden}.choice{position:relative;display:flex;width:100%;gap:14px;text-align:left;align-items:flex-start;font-size:17px;border:0;border-top:1px solid var(--line);padding:16px 12px;min-height:60px;background:#fff}.choice:last-child{border-bottom:1px solid var(--line)}.choice.selected{background:#edf3f8;color:var(--blue)}.choice.correct{box-shadow:inset 3px 0 var(--blue)}.choice b{min-width:24px}.choice .mark{margin-left:auto;font-size:12px;white-space:nowrap}.images img{display:block;max-width:100%;height:auto;border:1px solid var(--line);margin:12px 0}.answer-actions{display:flex;align-items:center;justify-content:space-between;padding:18px;border-top:1px solid var(--line)}#version-note{padding:0 18px}.explanation-pane{padding:24px;min-width:0;background:#fcfcfc}.explanation{white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px}.original-toggle{display:flex;align-items:center;gap:7px;font-size:13px;margin:14px 0}.rating{display:flex;align-items:center;gap:8px;margin:24px 0;flex-wrap:wrap}.rating button{min-width:44px;padding:6px}.solve-footer{display:flex;gap:12px;margin-top:16px}.result{padding:12px;border:1px solid var(--line);font-weight:600;margin-bottom:16px}.result.wrong{border-color:#9a6262}details{border-top:1px solid var(--line);margin-top:24px;padding-top:14px}summary{cursor:pointer;min-height:44px;font-size:14px;font-weight:600}#objection-point{border-top:1px solid var(--line);margin-top:20px;padding-top:14px}#authors{max-height:360px;overflow:auto;margin-bottom:20px}#authors select{min-width:116px}#authors td{white-space:nowrap}.absent{background:#f7f3eb}.placeholder{border:1px solid var(--line);padding:22px;margin-top:30px}.chart-placeholder{height:90px;border-left:1px solid var(--line);border-bottom:1px solid var(--line)}#stats h2{margin:25px 0 12px}dialog{border:1px solid #aaa;max-width:500px;padding:28px}dialog::backdrop{background:#0005}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--blue);outline-offset:2px}#subitems{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:15px}#subitems button{font-size:12px;min-height:36px}#solve-empty{padding:35px 0}
@media(min-width:1400px){#paper{width:680px}}@media(max-width:1000px){header{gap:10px;padding:0 14px}header nav button{padding:10px}main{padding:20px 16px}.selection{grid-template-columns:175px minmax(0,1fr)}.selection-detail{padding:16px}.explanation-pane{padding:18px}.startbar{gap:10px}.solve-top{flex-wrap:wrap}.solve-grid{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}}@media(max-width:650px){header{gap:7px;padding:8px 12px}header .brand{width:100%}header nav{flex:1}header nav button{min-height:44px;padding:5px 9px;font-size:13px}header>.spacer{display:none}header>a{font-size:12px}main{padding:18px 12px}.heading{align-items:flex-start}.heading h1{font-size:21px}.tabs button{min-width:85px;padding:9px;font-size:14px}.selection{display:block}#category-list{max-height:145px;border-right:0;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;padding:6px}#category-list button{width:auto;font-size:12px;padding:7px 10px}.selection-detail{padding:16px 0}.summary{gap:16px}.summary strong{font-size:18px}.startbar #start{margin-left:0;flex:1}.startbar #download{width:100%}.startbar{position:static}.solve-grid{display:block}.question-pane{border-right:0;border-bottom:1px solid var(--line)}.explanation-pane{padding:18px}.solve-top{font-size:12px}.pager{justify-content:space-between;gap:4px}.pager button{font-size:12px;padding:6px 9px}.solve-footer button{font-size:13px;padding:8px 10px}#bank-count{font-size:11px;max-width:110px}#version-label{max-width:210px}}
.choice>span:not(.mark){flex:1;min-width:0}.choice .mark{width:48px;flex-shrink:0;text-align:right}
#paper canvas.loading-ink{visibility:hidden}
.explanation{white-space:normal}.relative-answer-note{margin:0 0 18px;font-weight:400}.explanation-section{margin:0 0 22px;padding:0;border:0}.explanation-section h3{font-size:14px;margin:0 0 9px;padding-bottom:6px;border-bottom:1px solid var(--line)}.explanation-text{white-space:pre-wrap;overflow-wrap:anywhere}.explanation-diagram{display:block;width:100%;height:auto;max-height:600px}.diagram-source{font:13px/1.7 ui-monospace,monospace;white-space:pre-wrap;overflow-wrap:anywhere;margin:0}
.login-panel{width:450px;max-width:calc(100% - 32px);padding:28px;background:#fff;border:1px solid var(--line);margin:16px}#login{max-width:none;padding:0;border:0;margin:0}#gate{overflow-y:auto}#google-note{font-size:13px}
/* Short-question flow follows the same ruled-table layout as the bank. */
#tanmon-chapters{background:#f7f8f9;border-right:1px solid var(--line);max-height:560px;overflow:auto;padding:10px 0}#tanmon-chapters button{display:block;width:100%;text-align:left;border:0;font-size:13px;padding:10px 14px}#tanmon-chapters button.active{box-shadow:inset 3px 0 var(--blue)}#tanmon-list{max-height:560px;overflow:auto}#tanmon-list td:first-child{min-width:190px}#tanmon-list th{position:sticky;top:0}.point-reading{padding:24px 0;scroll-margin-top:16px}.point-reading h2{font-size:19px}.point-actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.point-lesson{border-top:1px solid var(--line);padding:18px 0;max-width:820px}.point-lesson h3{font-size:14px;margin:0 0 10px}.point-lesson .explanation-text{font-size:15px}.point-lesson .explanation-diagram{width:auto;max-width:100%}.related-national{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;border-bottom:1px solid var(--line);padding-bottom:10px}.original-toggle{min-height:44px;width:100%;text-align:left;justify-content:flex-start;margin:18px 0 12px;font-size:13px;background:#f6f7f8}.original-toggle[aria-expanded=true]{color:var(--blue)}
@media(max-width:650px){header nav{flex-wrap:wrap}header nav button{padding:5px 8px}#tanmon-chapters{display:flex;max-height:160px;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--line);padding:6px}#tanmon-chapters button{width:auto;padding:7px 10px;font-size:12px}.point-reading{padding:20px 0}#tanmon-list td:first-child{min-width:150px}.tanmon-selection .selection-detail{padding:12px 0}}

/* 問題集の共通書式：白い紙、細い罫線、青一色の操作表示。 */
:root{font-size:16px;line-height:1.7;color:#222;--blue:#245f94;--line:#d2d2d2;--muted:#555}
body{background:#fff}
button,input,select,textarea{border-color:#aaa;border-radius:3px}
button:hover{background:#f2f2f2}
button.active,button[aria-pressed=true]{color:var(--blue);background:#f5f5f5;border-color:var(--blue)}
button.primary:hover{background:#1d4d77}
small,.muted{font-size:14px;color:var(--muted)}
header{border-bottom:1px solid #aaa;gap:16px}
header .brand{color:#222}
header nav button, .tabs button{border-radius:0;font-size:15px}
header nav button.active,.tabs button.active{color:var(--blue);background:#fff}
header>a,header>button{font-size:14px}
main{padding-top:24px}
.heading small{color:#666;font-size:12px;letter-spacing:.06em}
h1{font-size:24px}h2{font-size:18px}
#category-list,#tanmon-chapters{background:#f5f5f5}
#category-list button,#tanmon-chapters button{background:transparent;border-left:3px solid transparent;border-radius:0;font-size:15px;line-height:1.5}
#category-list button:hover,#tanmon-chapters button:hover{background:#eaeaea}
#category-list button.active,#tanmon-chapters button.active{box-shadow:none;border-left-color:var(--blue);background:#fff;color:var(--blue);font-weight:600}
.filters label,.startbar label{font-size:14px}
.summary strong{color:#222}
.progress{background:#e5e5e5}
table{font-size:15px;line-height:1.6}
th{background:#f2f2f2;color:#333;font-weight:600}
td .muted{font-size:13px}
td button{font-size:inherit;text-decoration:underline;text-underline-offset:3px}
.badge{font-size:12px}
.pager{font-size:14px}
.startbar{border-top:1px solid var(--line);border-bottom:0;padding:12px 0}
#message{background:#f2f2f2;color:#222}
#gate{background:#f5f5f5}
#gnote{color:#222}
.solve-top{font-size:14px}
.ink-toolbar,.ink-toolbar button{font-size:14px}
#paper .stem{font-size:18px;line-height:1.9}
.choice{font-size:17px;border-radius:0;line-height:1.75}
.choice.selected{background:#f2f2f2;color:#222;border-left:3px solid var(--blue);padding-left:9px}
.choice.correct{box-shadow:none;border-left:3px solid var(--blue);padding-left:9px}
.choice .mark{font-size:13px}
.explanation-pane{background:#fafafa}
.explanation,.point-lesson .explanation-text{font-size:16px;line-height:1.8}
.explanation-section h3,.point-lesson h3{font-size:15px}
.original-toggle{background:#f2f2f2;font-size:14px}
.result.wrong{border-color:#888}
.absent{background:#f2f2f2}
#subitems button{font-size:14px;min-height:44px}
#tanmon-list td:first-child{min-width:190px}
.point-reading h2{font-size:20px}
summary{font-size:15px}
textarea:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(max-width:1000px){header nav button{padding:10px 9px} .selection{grid-template-columns:180px minmax(0,1fr)} .selection-detail{padding:16px} .explanation-pane{padding:18px}}
@media(max-width:650px){
  header{gap:6px} header nav{width:100%;flex:none;flex-wrap:nowrap;overflow-x:auto} header nav button{flex:none;white-space:nowrap;font-size:14px} header .brand{width:auto;flex:1} header>.spacer{display:none}
  main{padding:18px 12px} .selection{display:block}
  #category-list,#tanmon-chapters{display:flex;flex-wrap:nowrap;overflow-x:auto;max-height:none;padding:0;border-right:0;border-bottom:1px solid var(--line)}
  #category-list button,#tanmon-chapters button{width:auto;flex:none;white-space:nowrap;border-left:0;border-bottom:3px solid transparent;padding:9px 12px;font-size:14px}
  #category-list button.active,#tanmon-chapters button.active{border-left:0;border-bottom-color:var(--blue)}
  .selection-detail,.tanmon-selection .selection-detail{padding:16px 0} #tanmon-list{overflow:auto} #tanmon-list table{min-width:560px}
  .solve-grid{display:block} .question-pane{border-right:0;border-bottom:1px solid var(--line)} .startbar{position:static} .startbar #start{margin-left:0;flex:1} .startbar #download{width:100%}
  .solve-top,.pager,.solve-footer button{font-size:14px} #bank-count{font-size:13px;max-width:140px}
}
/* National practice, chapter reading and shared figure annotations. */
[hidden]{display:none!important}
#national-filters{margin-bottom:14px}
#national-filters .muted{font-size:12px}
.selection:has(>aside.hide){grid-template-columns:minmax(0,1fr)}
.text-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:22px;align-items:start}
#text-toc{max-height:76vh;overflow:auto;position:sticky;top:72px;border-right:1px solid #ddd;padding-right:12px}
#text-toc details{border-bottom:1px solid #ddd;padding:8px 0}
#text-toc button{display:block;width:100%;text-align:left;margin:3px 0;white-space:normal}
#text-toc summary{cursor:pointer}
.text-content{max-width:960px;line-height:1.85;overflow-wrap:anywhere;min-width:0}
.text-content h1{font-size:24px}.text-content h2{font-size:20px}.text-content h3{font-size:17px}
.text-content .pt,.text-content .rest{margin-top:16px;padding-top:12px;border-top:1px solid #ccc}
.text-content .goal,.text-content .card,.text-content .memo,.text-content .goro{border-left:2px solid #bbb;padding:8px 12px;margin:14px 0;background:#fafafa}
.text-content .smq,.text-content .meta,.text-content .note{font-size:13px;color:#666}
.text-content .tid,.text-content .qid{margin-right:8px}
.text-content details.q{border-bottom:1px solid #ddd;font-size:14px;padding:6px 0}
.text-content details.q summary{cursor:pointer}
.text-content .qb{padding:10px;background:#fafafa}
.text-content .figtag{display:inline-block;font-size:12px;margin-right:6px}
.text-content .tb{display:block;max-width:100%;overflow:auto}
.shared-figure{border-top:1px solid #ccc;border-bottom:1px solid #ddd;padding:12px 0;margin:16px 0;min-width:0}
.shared-figure h3{font-size:15px;line-height:1.6;margin:0 0 8px}
.shared-figure .ink-toolbar{flex-wrap:wrap;font-size:12px}
.shared-figure .ink-toolbar button{font-size:12px;padding:6px 8px;min-height:44px}
.figure-paper{position:relative;width:100%;max-width:760px;margin:auto;line-height:0;background:white}
.figure-paper img{display:block;width:100%;height:auto}
.figure-paper canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:pan-x pan-y}
.figure-paper canvas.hidden-ink{visibility:hidden}
.figure-reading{font-size:14px;line-height:1.8;white-space:pre-wrap}
@media(max-width:760px){.text-layout{grid-template-columns:minmax(0,1fr);gap:12px}#text-toc{position:static;max-height:260px;border-right:0;border-bottom:1px solid #ccc}#national-filters label{flex:1 1 110px}.text-content h1{font-size:21px}}
.answer-actions:has(#written-label:not([hidden])){flex-wrap:wrap;gap:12px}
#written-label{display:flex;flex-direction:column;font-size:14px;gap:4px}
#written-answer{width:160px}

/* Practice controls follow the existing table-and-rule layout. */
.practice-options,.question-notes {margin:16px 0;padding:12px 0;border-top:1px solid var(--line,#d9dce0);border-bottom:1px solid var(--line,#d9dce0)}
.practice-options summary,.question-notes summary {cursor:pointer;margin-bottom:10px}
.practice-options input[type=number] {width:80px}
.practice-options label {white-space:normal}
.question-notes textarea {display:block;width:100%;min-height:100px;margin:8px 0;box-sizing:border-box}
#session-results {border-bottom:1px solid #d9dce0;padding:0 0 16px;margin-bottom:16px}
#session-clock {font-variant-numeric:tabular-nums;color:#555;white-space:nowrap}
.field-progress {display:grid;grid-template-columns:minmax(100px,180px) minmax(80px,1fr) minmax(180px,240px);gap:12px;align-items:center;border-bottom:1px solid #ddd;padding:12px 0}
.field-progress .progress {margin:0;height:8px;background:#eee}
.field-progress .progress i {display:block;height:100%;background:#2463a0}
.note-row {padding:12px 0;border-bottom:1px solid #ddd;overflow-wrap:anywhere}
#personal-sets .point-actions {border-bottom:1px solid #ddd;padding:10px 0}
#oral-rating[hidden],#finish-test[hidden],#retry[hidden] {display:none}
@media(max-width:650px){.field-progress{grid-template-columns:1fr 1fr}.field-progress>span:last-child{grid-column:1/-1}.solve-top{flex-wrap:wrap}.practice-options .filters{gap:12px}.question-notes input{max-width:100%;box-sizing:border-box}}

/* Supplement thumbnails stay inside the existing question paper; the viewer is a modal. */
.supplement-group{margin:16px 0;border-top:1px solid var(--line);padding-top:12px}
.supplement-group h3{font-size:15px;margin:0 0 8px}
.supplement-thumbnails{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
.supplement-open{padding:8px;text-align:left;min-width:0}
.images .supplement-open img{width:100%;aspect-ratio:4/3;object-fit:contain;margin:0;border:0;background:#fff}
.supplement-open span{display:block;font-size:12px;color:var(--blue);padding-top:6px}
dialog.image-viewer{position:fixed;inset:0;width:100%;height:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#fff;overflow:hidden}
dialog.image-viewer[open]{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto}
.image-viewer-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid var(--line);padding-top:max(8px,env(safe-area-inset-top))}
.image-viewer-heading strong{font-size:15px}
.image-viewport{position:relative;overflow:hidden;touch-action:none;background:#e9ecef;min-height:0;user-select:none}
.image-paper{position:absolute;left:0;top:0;transform-origin:0 0;background:#fff;line-height:0}
.image-paper img{display:block;width:100%;height:100%;pointer-events:none}
.image-paper canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}
.image-paper canvas.hidden-ink{visibility:hidden}
.image-viewer-footer{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;padding:8px 12px;padding-bottom:max(8px,env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.image-viewer-footer button{font-size:13px;padding:6px 10px}
.image-viewer-footer small{flex-basis:100%;text-align:center}
@media(max-width:480px){.image-viewer .ink-toolbar{padding:6px;gap:4px}.image-viewer .ink-toolbar b{flex-basis:100%}.image-viewer-footer{gap:4px;padding-left:4px;padding-right:4px}.image-viewer-footer button{padding:6px 8px}.image-viewer-heading strong{font-size:13px}}

/* Task 38: a compact disclosure, outside annotated question paragraphs. */
#question-change{position:relative;z-index:3;margin:6px 0 14px}
.question-change{margin:0;padding:0;border:0;color:var(--muted);font-size:13px}
.question-change>summary{display:flex;align-items:center;gap:12px;min-height:44px;font-size:13px;color:var(--blue);list-style:none;flex-wrap:wrap}
.question-change>summary::-webkit-details-marker{display:none}
.question-change>summary span{font-weight:400;color:var(--muted)}
.question-change-body{border:1px solid var(--line);border-radius:12px;padding:14px 16px;overflow-wrap:anywhere}
.question-change-body h3{font-size:14px;margin:14px 0 8px}.question-change-body p{margin:8px 0}
.question-change-direction{font-size:13px;color:var(--muted);margin:0 0 4px}

.annotation-block{position:relative;isolation:isolate;min-height:36px;overflow:visible}.annotation-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:3;touch-action:pan-x pan-y pinch-zoom}.annotation-canvas.hidden-ink{visibility:hidden}.annotation-block .reading-note{pointer-events:none}
#paper>canvas{pointer-events:none!important}#paper>canvas.loading-ink{visibility:hidden}.annotation-block>img{max-width:100%;height:auto}.annotation-paragraph{white-space:pre-wrap;margin:0 0 14px;min-height:36px}.choice .annotation-block{flex:1;min-width:0}
.notebook-tools{margin:0;padding:0;border:0;position:relative}.notebook-tools summary{font-size:13px;padding:8px;border:1px solid var(--line);border-radius:3px;min-height:44px}.notebook-settings{position:absolute;top:48px;left:0;z-index:18;background:var(--paper);color:var(--ink);border:1px solid var(--line);padding:16px;width:340px;max-width:calc(100vw - 40px);max-height:65vh;overflow:auto;line-height:1.7}.notebook-settings label{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}.notebook-settings input[type=range]{width:160px}.notebook-settings p{font-size:13px}.ink-swatches{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}.ink-swatches button{width:44px;height:44px;padding:10px;position:relative}.ink-swatches button:after{content:'';display:block;width:22px;height:22px;background:var(--swatch);border-radius:50%;border:1px solid #777}.lasso-commands{display:flex;flex-wrap:wrap;gap:4px}.notebook-settings input[type=file]{width:100%;font-size:13px}
.notebook-dialog{width:min(960px,96vw);max-width:96vw;max-height:94vh;padding:18px;background:var(--paper);color:var(--ink)}.notebook-dialog .ink-toolbar{position:sticky;top:0;z-index:4}.notebook-heading{display:flex;gap:12px;align-items:center;justify-content:space-between}.notebook-pages{display:flex;gap:8px;overflow-x:auto;padding:10px 0}.notebook-thumbnail{min-width:100px;position:relative;border:1px solid var(--line);padding:8px;background:var(--paper)}.notebook-thumbnail.active{border:2px solid var(--blue)}.notebook-thumbnail canvas{width:80px;height:100px;background:#fff;border:1px solid #ddd;display:block}.notebook-paper{position:relative;width:100%;aspect-ratio:210/297;min-height:500px;background-color:#fff;overflow:hidden;color:#202b35}.notebook-paper.grid{background-image:linear-gradient(#d7dfe5 1px,transparent 1px),linear-gradient(90deg,#d7dfe5 1px,transparent 1px);background-size:24px 24px}.notebook-paper.ruled{background-image:repeating-linear-gradient(transparent 0,transparent 31px,#cbd6df 31px,#cbd6df 32px)}.notebook-page-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:12px}.notebook-print-page{break-after:page;position:relative}
.ink-zoom-dialog{width:94vw;max-width:1200px;background:var(--paper);color:var(--ink)}.zoom-scroll{overflow:auto;max-height:64vh}.zoom-paper{position:relative;transform:scale(2);transform-origin:top left;margin-bottom:100%;background:var(--paper);font-size:18px;line-height:1.75;min-height:200px}.zoom-paper canvas{width:100%;height:100%}
@media(max-width:650px){.ink-toolbar{gap:4px;padding:8px}.ink-toolbar select{max-width:106px;font-size:13px}.ink-toolbar b{display:none}.notebook-tools{position:static}.notebook-settings{left:16px;top:auto;margin-top:4px}.notebook-dialog{padding:10px}.notebook-heading h2{font-size:17px}.notebook-paper{min-height:420px}}
@media print{.annotation-canvas{display:block!important}.notebook-paper{width:100%;min-height:0;break-inside:avoid;print-color-adjust:exact;-webkit-print-color-adjust:exact}.notebook-dialog .notebook-heading,.notebook-dialog .notebook-page-actions,.notebook-pages{display:none}.notebook-dialog{max-height:none;overflow:visible}.notebook-tools{display:none}}
.notebook-print-staging{display:none}
@media print{body.printing-pages main,body.printing-pages header,body.printing-pages #message{display:none!important}body.printing-pages .notebook-dialog>.notebook-page-host{display:none!important}.notebook-print-staging{display:block}.notebook-print-page{width:180mm;height:255mm;aspect-ratio:auto;margin:0;break-after:page}.notebook-print-page:last-child{break-after:auto}.notebook-dialog{position:static!important;inset:auto!important;border:0!important;padding:0!important}.notebook-dialog::backdrop{background:transparent}}
/* Legacy whole-paper ink must shrink immediately during rotation. */
#paper>canvas{width:100%!important;height:100%!important}
.annotation-block>img{display:block;margin:0}
.legacy-ink-tools{margin:0;padding:0;border:0}.legacy-ink-tools summary{font-size:13px;padding:8px;min-height:44px}.legacy-ink-tools .ink-toolbar{border:1px solid var(--line)}#paper.legacy-ink-edit>canvas{pointer-events:auto!important;z-index:6}#paper.legacy-ink-edit .annotation-canvas{pointer-events:none}

/* Transient tail/prediction is separate from confirmed ink. Fingers still scroll outside pen contact. */
.ink-preview{pointer-events:none!important;z-index:4}
.annotation-canvas{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.annotation-canvas.ink-writing{touch-action:none}
#paper.legacy-ink-edit>.ink-preview{z-index:7}

/* Medisap: system typography, grouped surfaces, one blue accent. */
:root{font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans",sans-serif;font-size:18px;line-height:1.7;--body-size:18px}
body{background:var(--surface);color:var(--ink);-webkit-font-smoothing:antialiased}
button,input,select,textarea,dialog{font-family:inherit;border-color:var(--line);border-radius:12px;min-height:44px}button{padding:10px 16px;font-weight:500;transition:background-color .2s,color .2s,box-shadow .2s}button:active:not(:disabled){filter:brightness(.96)}button:disabled{opacity:1}input,select{padding:9px 12px}input[type=checkbox]{accent-color:var(--blue);min-height:22px;flex-shrink:0}textarea{padding:16px;border-radius:14px}a{color:var(--blue)}
h1{font-size:30px;line-height:1.35;font-weight:700;letter-spacing:-.035em;margin:0 0 12px}h2{font-size:23px;line-height:1.45;font-weight:700}h3{font-weight:700}small,.muted{font-size:15px;line-height:1.6}summary{font-size:18px;font-weight:600;min-height:44px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
header{display:grid;grid-template-columns:auto 1fr auto auto auto;gap:8px 12px;padding:18px 28px 0;min-height:0;border-bottom:1px solid var(--line)}header .brand{display:flex;align-items:center;gap:10px;font-size:23px;line-height:1.2;letter-spacing:-.03em;font-weight:700;white-space:nowrap}.brand-logo{width:34px;height:34px;color:var(--blue);flex:none}.brand-caption{display:block;font-size:12px;color:var(--muted);font-weight:400;letter-spacing:.02em;margin-top:5px}header>.spacer{display:block}header .review-link,header>button{font-size:15px;min-height:44px;text-decoration:none;display:flex;align-items:center;gap:7px}header>button{border:0}header nav{grid-row:2;grid-column:1/-1;display:flex;gap:5px;overflow-x:auto;flex-wrap:nowrap;padding:14px 0 12px;max-width:100%;scrollbar-width:thin}header nav button{display:flex;align-items:center;gap:7px;min-height:44px;font-size:15px;white-space:nowrap;padding:8px 12px;border:0;border-radius:10px;flex:none}header nav button.active{font-weight:600;border:0}
main{padding:32px 28px 120px;max-width:1480px}.heading{margin-bottom:24px}.heading small{font-size:13px;letter-spacing:.08em;display:block;margin-bottom:8px}.heading h1{margin:0}#bank-count{font-size:15px;max-width:none}
.tabs{display:flex;gap:4px;padding:4px;margin-bottom:24px;border:0;border-radius:12px;background:var(--line);width:fit-content;max-width:100%;overflow-x:auto}.tabs button{min-width:92px;border:0;border-radius:9px;font-size:16px;background:transparent;padding:7px 16px}.tabs button.active{background:var(--paper);color:var(--blue);border:0;box-shadow:var(--shadow);font-weight:600}
.selection{display:grid;grid-template-columns:232px minmax(0,1fr);gap:24px;border:0;align-items:start}.selection-detail{padding:28px;border-radius:16px;box-shadow:var(--shadow)}#category-list,#tanmon-chapters{border:0;padding:0;max-height:850px;scrollbar-width:thin}#category-list button,#tanmon-chapters button{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;border-radius:12px;min-height:64px;padding:12px;margin:2px 0;gap:8px;font-size:16px;line-height:1.5;white-space:normal;text-align:left}#category-list button.active,#tanmon-chapters button.active{border:0;box-shadow:none;font-weight:600}.category-copy{display:flex;flex-direction:column;min-width:0}.category-copy small{font-size:13px;font-weight:400;margin-top:3px}.remaining{color:var(--blue);font-size:12px;white-space:nowrap;background:transparent;padding:0}.filters{gap:16px;margin:24px 0}.filters label,.startbar label{font-size:15px;gap:6px}.filters input,.filters select{font-size:16px}.summary{padding:22px 0;gap:28px;margin:8px 0 20px}.summary strong{font-size:26px;font-weight:600;letter-spacing:-.025em}.progress{height:4px;border-radius:8px;overflow:hidden}.badge{border:0;border-radius:5px;background:var(--grouped);padding:3px 6px;font-size:12px}
#subitems button{font-size:15px;min-height:44px;border-radius:10px;background:var(--grouped);border:0;padding:9px 12px}table{font-size:16px;line-height:1.7}th,td{border-color:var(--line);padding:16px 12px}th{font-size:14px;font-weight:600}td button{min-height:44px;text-decoration:none;line-height:1.5}td .muted{font-size:14px}#question-list tr:hover{background:var(--grouped)}.table-wrap{border-radius:12px}.pager{font-size:15px;gap:12px;margin-top:22px}.pager button{font-size:15px}.startbar{padding:20px;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);margin:24px 0 20px;gap:16px}.startbar #start{min-height:50px}.practice-options,.question-notes{background:var(--paper);border:0;border-radius:16px;padding:22px 24px;margin:24px 0;box-shadow:var(--shadow)}.practice-options>summary,.question-notes>summary{margin:0}.practice-options[open]>summary,.question-notes[open]>summary{margin-bottom:16px}.practice-options .point-actions{margin-bottom:0}.point-actions{gap:10px}.point-actions button,.point-actions select{font-size:16px}
#message:not(:empty){margin:16px 28px 0;padding:14px 20px;border:0;border-radius:12px;font-size:16px}#message:empty{display:none}
/* Separate question and explanation cards, like paired iPad notes. */
.solve-top{position:sticky;top:0;z-index:12;display:grid;grid-template-columns:1fr minmax(160px,2fr) auto auto;align-items:center;gap:12px;min-height:64px;border:0;border-radius:14px;background:var(--surface);padding:8px 0;margin:0 0 20px;font-size:15px}#back{justify-self:start;color:var(--blue);border:0;background:transparent;padding:8px}#qpos{display:block;font-size:16px;font-weight:600}.session-progress{text-align:center;min-width:0}#exercise-progress{width:100%;max-width:220px;height:3px;display:block;margin:8px auto 0;accent-color:var(--blue);border:0}#exercise-progress::-webkit-progress-bar{background:var(--line);border-radius:3px}#exercise-progress::-webkit-progress-value{background:var(--blue);border-radius:3px}#session-clock{font-size:14px;color:var(--muted)}#tanmon-context:empty{display:none}#tanmon-context{grid-column:1/-1}.solve-top #finish-test{grid-column:1/-1}#reference{font-size:15px;background:var(--paper);border:0}
.solve-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;align-items:stretch;border:0;background:transparent}.question-pane,.explanation-pane{border:0;border-radius:16px;box-shadow:var(--shadow);background:var(--paper);min-width:0}.question-pane{padding-top:1px}.explanation-pane{padding:28px;line-height:1.8;font-size:var(--body-size)}.paper-scroll{overflow:visible}#paper{width:100%;max-width:none;min-height:320px;padding:24px 28px 16px;border-radius:16px}#qmeta{display:block;margin:0 0 22px;color:var(--muted);font-size:14px;font-weight:400;line-height:1.7;overflow-wrap:anywhere}#paper .stem{font-size:var(--body-size);line-height:1.85;white-space:pre-wrap;margin:0 0 26px}#paper .stem strong{font-weight:600}.annotation-paragraph{line-height:inherit}
#qchoices{padding-top:12px;border-top:1px solid var(--line)}.choice,.choice:last-child{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line);border-radius:14px;background:var(--paper);margin:10px 0;padding:14px;min-height:64px;font-size:var(--body-size);line-height:1.65;color:var(--ink);font-weight:400;box-shadow:0 1px 4px #00000003}.choice>b{display:inline-flex;align-items:center;justify-content:center;flex:0 0 34px;min-width:34px;height:34px;border:1px solid var(--line);background:var(--grouped);border-radius:50%;color:var(--ink);font-size:20px;font-weight:400;line-height:1;text-transform:uppercase}.choice>.annotation-block{font-weight:400;min-height:34px;padding-top:2px}.choice.selected,.choice.correct{border:1px solid color-mix(in srgb,var(--blue) 22%,var(--paper));padding:14px;background:var(--soft-blue);color:var(--blue);box-shadow:none}.choice.selected>b,.choice.correct>b{border-color:var(--primary);background:var(--primary);color:#fff}.choice:disabled{color:var(--ink);cursor:default;background:var(--paper)}.choice.selected:disabled,.choice.correct:disabled{background:var(--soft-blue);color:var(--blue)}.choice.incorrect,.choice.incorrect:disabled{border-color:color-mix(in srgb,var(--red) 30%,var(--paper));background:var(--pink);color:var(--red)}.choice.incorrect>b{background:var(--pink);color:var(--red);border-color:var(--red)}.choice .mark{color:var(--blue);font-size:23px;font-weight:500;width:24px;min-width:24px;line-height:34px}.choice .mark:empty{display:none}.choice.incorrect .mark{color:var(--red)}.choice.selected:not(:disabled)::after{content:"";width:22px;height:30px;flex:none;background:var(--blue);mask:var(--icon-check) center/22px no-repeat}.choice:hover:not(:disabled){background:var(--soft-blue)}
.answer-actions{border-top:1px solid var(--line);padding:16px 28px;gap:12px;font-size:15px}.answer-actions #submit{display:none}#qhint{font-weight:400;color:var(--muted)}#version-note{font-size:14px;padding:0 28px}#version-note:empty{display:none}
.solve-footer{position:fixed;bottom:0;left:0;right:0;z-index:20;display:grid;grid-template-columns:88px minmax(0,1fr) minmax(0,1fr);align-items:center;gap:16px;background:var(--surface);border:0;padding:14px max(28px,calc((100vw - 1424px)/2)) max(16px,env(safe-area-inset-bottom));margin:0}.solve-footer button{display:flex;justify-content:center;align-items:center;gap:10px;min-height:60px;min-width:0;border-radius:16px;font-size:21px;font-weight:600;padding:12px 16px;box-shadow:var(--shadow)}.solve-footer #prev{grid-column:1;grid-row:1;font-size:14px;margin:0;border:0;background:transparent;box-shadow:none;flex-direction:column;gap:2px;color:var(--blue);padding:4px}.solve-footer #retry,.solve-footer #submit{grid-column:2;grid-row:1;margin:0;border:0}.solve-footer #retry{background:var(--paper);color:var(--ink)}.solve-footer #submit,.solve-footer #next{background:var(--primary);color:#fff;border:0}.solve-footer #next{grid-column:3;grid-row:1;margin:0}.solve-footer #submit:disabled,.solve-footer #next:disabled{background:var(--grouped);color:var(--muted);box-shadow:none}.solve-footer .spacer{display:none}
.explanation-pane>h2,.explanation-heading{background:transparent;color:var(--ink);font-size:24px;padding:0 0 18px;border-bottom:1px solid var(--line);margin:0 0 24px;font-weight:700}.explanation-section{margin-bottom:28px}.explanation-section h3,.explanation-section.memory h3{font-size:21px;background:transparent;color:var(--ink);padding:0 0 12px;border:0;border-bottom:1px solid var(--line);margin:0 0 16px;line-height:1.5}.explanation,.text-content,.point-lesson .explanation-text{font-size:var(--body-size);line-height:1.85}.result,.result.wrong,.result.neutral{border:0;background:transparent;border-radius:0;padding:0 0 22px;border-bottom:1px solid var(--line);font-size:23px;line-height:1.5;color:var(--blue);font-weight:700;margin-bottom:22px}.result.wrong{color:var(--red)}.result.neutral{color:var(--muted)}.result small{display:block;color:var(--muted);font-size:15px;line-height:1.7;font-weight:400;margin-top:6px}.result small:first-of-type{margin-top:16px}.result-symbol{font-size:30px;vertical-align:-2px;margin-right:10px;font-weight:500}.rating{gap:6px;font-size:15px;margin:20px 0 28px}.rating>span{margin-right:8px;font-weight:500;color:var(--muted)}.rating button{font-size:20px;min-width:44px;border:0;background:var(--grouped)}.original-toggle{border:0;border-radius:12px;padding:12px 16px;font-size:16px;color:var(--blue)}
/* Floating Notes-style tools. Popovers remain outside the toolbar clipping area. */
.ink-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:4px;background:var(--paper);font-size:14px;border:1px solid var(--line);border-radius:16px;padding:8px;margin:16px;box-shadow:0 4px 14px #00000008;position:relative;z-index:5}.ink-toolbar>b{display:none}.ink-toolbar button,.ink-toolbar select,.notebook-tools summary{font-size:14px;min-height:44px;padding:8px 10px;border:0;border-radius:10px;background:transparent}.ink-toolbar button{display:inline-flex;align-items:center;justify-content:center;gap:5px}.ink-toolbar select{color:var(--blue);background:var(--soft-blue);max-width:134px}.ink-toolbar button[aria-pressed=true]{color:var(--blue);background:var(--soft-blue)}.ink-toolbar>small{flex-basis:100%;font-size:12px;line-height:1.4;margin:2px 6px;color:var(--muted)}.ink-toolbar>small:empty{display:none}.notebook-tools{margin:0;border:0;padding:0}.notebook-tools summary{display:flex;align-items:center;justify-content:center;gap:5px;font-weight:500;list-style:none;cursor:pointer}.notebook-tools summary::-webkit-details-marker{display:none}.notebook-settings{top:54px;border-radius:16px;box-shadow:0 12px 40px #00000018;border:1px solid var(--line);font-size:16px;width:360px;z-index:25}.notebook-settings label{padding:8px 0;border-bottom:1px solid var(--line)}.notebook-settings button{background:var(--grouped)}.notebook-settings p{color:var(--muted);font-size:14px}.notebook-dialog{border-radius:20px}.notebook-dialog .ink-toolbar{margin:16px 0}.notebook-heading h2{margin:0}.notebook-page-actions button,.notebook-page-actions select{font-size:15px}.notebook-thumbnail{border-radius:12px;font-size:14px}.notebook-thumbnail canvas{border-radius:6px}.notebook-thumbnail.active{border-width:1px;border-color:var(--blue);background:var(--soft-blue);color:var(--blue)}.notebook-paper{border-radius:8px}.ink-zoom-dialog{border-radius:20px}
.display-settings{display:flex;gap:12px;align-items:center;font-size:18px;flex-wrap:wrap;margin:8px 0 24px}.display-settings label{min-height:44px;display:flex;align-items:center;gap:12px}dialog{border:0;border-radius:20px;padding:28px;box-shadow:0 20px 80px #00000026}dialog::backdrop{background:#0006;backdrop-filter:blur(4px)}dialog h2{margin-bottom:20px}dialog form[method=dialog]{display:flex;justify-content:flex-end;margin-top:24px}dialog form[method=dialog] button{background:var(--soft-blue);color:var(--blue);border:0;min-width:100px}
#v-personal>h2{margin-top:36px}#personal-sets,#due-list,#notes-list,#stats,.placeholder{border:0;border-radius:16px;padding:24px;background:var(--paper);box-shadow:var(--shadow)}#personal-sets:empty,#due-list:empty,#notes-list:empty{display:none}.note-row,.field-progress,#personal-sets .point-actions{border-color:var(--line);padding:18px 0}.note-row:last-child,.field-progress:last-child{border-bottom:0}.field-progress .progress{background:var(--line);height:5px}.placeholder{margin-top:24px}.chart-placeholder{border-color:var(--line)}#v-stats .summary{margin-top:0}#v-objections>.table-wrap{background:var(--paper);padding:12px;margin:24px 0;border-radius:16px}#v-objections>p{max-width:850px}.text-content{background:var(--paper);border-radius:16px;padding:28px;box-shadow:var(--shadow)}.text-layout{grid-template-columns:240px minmax(0,1fr);gap:24px}#text-toc{border:0;top:20px}#text-toc details{border-color:var(--line)}#text-toc button{font-size:16px;border:0;background:transparent;border-radius:10px}#text-toc button.active{background:var(--soft-blue)}.text-content h1{font-size:28px}.text-content h2{font-size:24px}.text-content h3{font-size:21px}.text-content .pt,.text-content .rest,.text-content details.q,.shared-figure{border-color:var(--line)}.text-content .goal,.text-content .card,.text-content .memo,.text-content .goro{border-radius:10px;border-left-width:2px}.text-content details.q{font-size:18px}.point-reading{padding:28px;background:var(--paper);border-radius:16px;margin-top:24px}.point-lesson{max-width:none;border-color:var(--line);padding:24px 0}.point-lesson h3{font-size:21px}.point-reading h2{font-size:24px}#tanmon-list{max-height:740px}.related-national{font-size:15px;border-color:var(--line)}.reading-note{font-size:.72em;font-weight:400;color:var(--muted);line-height:1.5;white-space:normal}.reading-note.unsure{text-decoration:underline dotted;text-underline-offset:3px}.reading-label{font-size:14px;color:var(--muted)}
html[data-voice=off] #voice,html[data-voice=off] #oral-rating,html[data-voice=off] option[value=oral],html[data-voice=off] [data-voice-control]{display:none!important}#related-national:not(:has(a)),#objection-point:empty{display:none}
@media(max-width:1023px){.solve-grid{grid-template-columns:minmax(0,1fr);gap:20px}.selection{grid-template-columns:200px minmax(0,1fr);gap:18px}header{padding:16px 20px 0}main{padding:24px 20px 124px}.selection-detail{padding:22px}.explanation-pane{padding:28px}.solve-top{grid-template-columns:auto 1fr auto auto}.text-layout{grid-template-columns:200px minmax(0,1fr)}}
@media(max-width:650px){header{padding:14px 16px 0;grid-template-columns:1fr auto auto;gap:8px}header .brand{font-size:21px;grid-column:1}.brand-logo{width:30px;height:30px}.brand-caption{font-size:11px}header>.spacer{display:none}header .review-link{grid-column:1;grid-row:2;font-size:14px;min-height:44px}header>button{font-size:14px;padding:8px 10px}header nav{grid-row:3;padding:4px 0 12px;gap:4px}header nav button{font-size:14px;min-height:44px;padding:8px 10px}main{padding:24px 16px 112px}.heading h1,h1{font-size:27px}.heading{margin-bottom:20px}#bank-count{font-size:14px}.tabs{width:100%;margin-bottom:20px}.tabs button{min-width:86px;font-size:15px;padding:8px 12px}.selection{display:block}#category-list{margin-bottom:20px}#category-list button{min-height:64px}.remaining{font-size:12px}.selection-detail,.tanmon-selection .selection-detail{padding:20px 16px}.filters{gap:14px}.filters>label{flex:1 1 125px;min-width:0}.filters .search{flex-basis:100%}.filters input,.filters select{width:100%}.filters input[type=checkbox]{width:22px}.summary{gap:18px}.summary strong{font-size:24px}table{font-size:16px}th,td{padding:14px 10px}.pager{gap:6px;font-size:14px;justify-content:space-between}.pager button{font-size:14px;padding:8px}.startbar{position:static;padding:18px 16px}.startbar label{flex:1 1 125px;min-width:0}.startbar #start{margin-left:0;flex:1}.startbar #download{width:100%;font-size:16px}.practice-options,.question-notes{padding:20px 16px}.practice-options .point-actions>*{max-width:100%}.point-actions input{width:100%}#set-name{min-width:0}.solve-top{padding:0;gap:8px;margin-bottom:20px;grid-template-columns:auto 1fr auto}#qpos{font-size:15px}#back{font-size:14px}#reference{font-size:14px;padding:8px}#session-clock{grid-column:2;grid-row:2;justify-self:center;font-size:12px}#exercise-progress{max-width:150px}.session-progress{min-width:0}.explanation-pane{padding:24px 20px}#paper{padding:20px 18px 12px}#qmeta{font-size:13px;margin-bottom:20px}#paper .stem{margin-bottom:24px}.choice,.choice:last-child,.choice.selected,.choice.correct{padding:12px;gap:10px;min-height:64px}.choice>b{width:32px;height:32px;min-width:32px;flex-basis:32px;font-size:19px}.choice .mark{min-width:20px;width:20px;font-size:21px}.choice.selected:not(:disabled)::after{width:18px;background-size:18px}.answer-actions{padding:16px 18px}#version-note{padding:0 18px}.solve-footer{grid-template-columns:44px minmax(0,1fr) minmax(0,1fr);gap:8px;padding:12px 12px max(14px,env(safe-area-inset-bottom))}.solve-footer button{min-height:56px;font-size:18px;border-radius:14px;padding:10px 8px;gap:6px}.solve-footer #prev{font-size:0;gap:0}.solve-footer #prev:before{width:24px;height:24px}.solve-footer #next::before,.solve-footer #retry::before{width:22px;height:22px}.ink-toolbar{margin:12px 12px 0;gap:3px;padding:6px}.ink-toolbar button,.ink-toolbar select,.notebook-tools summary{font-size:13px;padding:8px}.ink-toolbar select{max-width:120px}.ink-toolbar>small{font-size:11px}.notebook-settings{left:0;max-width:calc(100vw - 68px)}.notebook-dialog{padding:16px;max-width:calc(100% - 16px)}.notebook-heading{gap:8px;font-size:14px;flex-wrap:wrap}.notebook-heading h2{font-size:22px}.notebook-page-actions{gap:6px}.notebook-page-actions button{font-size:14px;padding:8px}.notebook-dialog .ink-toolbar{margin:12px 0}.notebook-dialog .notebook-settings{max-width:calc(100vw - 48px)}.text-layout{display:block}#text-toc{position:static;max-height:280px;margin-bottom:20px}.text-content{padding:22px 18px}.point-reading{padding:22px 18px}#tanmon-chapters{display:flex;max-height:200px;overflow:auto;flex-wrap:wrap;margin-bottom:20px}#tanmon-chapters button{width:auto;font-size:15px}#personal-sets,#due-list,#notes-list,#stats,.placeholder{padding:20px 18px}.field-progress{grid-template-columns:1fr 1fr}.field-progress>span:last-child{grid-column:1/-1}#message:not(:empty){margin:12px 16px 0}.display-settings{font-size:17px}dialog{padding:24px;max-width:calc(100% - 24px)}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media print{header,.solve-top,.solve-footer,.ink-toolbar,.display-settings,.question-notes,#version-note,.original-toggle{display:none!important}main{padding:0}.solve-grid{display:block}.explanation-pane{break-before:page}.question-pane,.explanation-pane{border:0;box-shadow:none}.annotation-canvas{position:absolute!important}.notebook-dialog{position:static!important;max-height:none!important;width:100%!important}body{background:white!important;color:black!important}}

/* Thin, current-color SVG symbols; labels remain accessible. */
:root{--icon-check:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m5%2012%204.5%204.5L19%207%22%2F%3E%3C%2Fsvg%3E");--icon-list:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%224%22%20y%3D%223%22%20width%3D%2216%22%20height%3D%2218%22%20rx%3D%223%22%2F%3E%3Cpath%20d%3D%22M8%208h8M8%2012h8M8%2016h5%22%2F%3E%3C%2Fsvg%3E");--icon-book:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%205v15M3%204c3-1%206-1%209%201%203-2%206-2%209-1v15c-3-1-6-1-9%201-3-2-6-2-9-1Z%22%2F%3E%3C%2Fsvg%3E");--icon-stack:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%227%22%20y%3D%223%22%20width%3D%2214%22%20height%3D%2217%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3%207v13a2%202%200%200%200%202%202h12M11%208h6M11%2012h6%22%2F%3E%3C%2Fsvg%3E");--icon-play:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m9%205%2011%207-11%207Z%22%2F%3E%3C%2Fsvg%3E");--icon-chart:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2019V9m7%2010V4m7%2015v-7M3%2022h19%22%2F%3E%3C%2Fsvg%3E");--icon-note:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%224%22%20y%3D%223%22%20width%3D%2216%22%20height%3D%2218%22%20rx%3D%223%22%2F%3E%3Cpath%20d%3D%22M4%208h16M8%2012h8M8%2016h5%22%2F%3E%3C%2Fsvg%3E");--icon-flag:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2022V3c4-3%209%203%2014%200v11c-5%203-10-3-14%200%22%2F%3E%3C%2Fsvg%3E");--icon-settings:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%207h16M4%2017h16%22%2F%3E%3Ccircle%20cx%3D%228%22%20cy%3D%227%22%20r%3D%223%22%2F%3E%3Ccircle%20cx%3D%2216%22%20cy%3D%2217%22%20r%3D%223%22%2F%3E%3C%2Fsvg%3E");--icon-exit:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M10%204H5a2%202%200%200%200-2%202v12a2%202%200%200%200%202%202h5M9%2012h12m-4-4%204%204-4%204%22%2F%3E%3C%2Fsvg%3E");--icon-retry:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%207V2m0%205h-5M20%207a9%209%200%201%200%201%209%22%2F%3E%3C%2Fsvg%3E");--icon-next:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%2012h16m-7-7%207%207-7%207%22%2F%3E%3C%2Fsvg%3E");--icon-prev:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%2012H4m7-7-7%207%207%207%22%2F%3E%3C%2Fsvg%3E");--icon-undo:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%2010h10a6%206%200%200%201%200%2012M4%2010l5-5m-5%205%205%205%22%2F%3E%3C%2Fsvg%3E");--icon-redo:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%2010H10a6%206%200%200%200%200%2012m10-12-5-5m5%205-5%205%22%2F%3E%3C%2Fsvg%3E");--icon-eye:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M2%2012s4-7%2010-7%2010%207%2010%207-4%207-10%207S2%2012%202%2012Z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223%22%2F%3E%3C%2Fsvg%3E");--icon-pen:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.65%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m15%203%206%206M3%2021l6-1L21%208a2%202%200%200%200%200-3l-2-2a2%202%200%200%200-3%200L4%2015Z%22%2F%3E%3C%2Fsvg%3E");}
header [data-view="select"]::before,header [data-view="national"]::before,header [data-view="text"]::before,header [data-view="tanmon"]::before,header .review-link::before,header [data-view="solve"]::before,#submit::before,header [data-view="stats"]::before,header [data-view="personal"]::before,[data-pages]::before,header [data-view="objections"]::before,header [data-open-settings]::before,.notebook-tools>summary::before,#logout::before,#retry::before,#next::before,#prev::before,[data-undo]::before,[data-redo]::before,[data-toggle]::before{content:"";display:inline-block;width:19px;height:19px;flex:none;background:currentColor;mask:var(--control-icon) center/contain no-repeat}
header [data-view="select"],header [data-view="national"]{--control-icon:var(--icon-list)}
header [data-view="text"]{--control-icon:var(--icon-book)}
header [data-view="tanmon"],header .review-link{--control-icon:var(--icon-stack)}
header [data-view="solve"],#submit{--control-icon:var(--icon-play)}
header [data-view="stats"]{--control-icon:var(--icon-chart)}
header [data-view="personal"],[data-pages]{--control-icon:var(--icon-note)}
header [data-view="objections"]{--control-icon:var(--icon-flag)}
header [data-open-settings],.notebook-tools>summary{--control-icon:var(--icon-settings)}
#logout{--control-icon:var(--icon-exit)}
#retry{--control-icon:var(--icon-retry)}
#next{--control-icon:var(--icon-next)}
#prev{--control-icon:var(--icon-prev)}
[data-undo]{--control-icon:var(--icon-undo)}
[data-redo]{--control-icon:var(--icon-redo)}
[data-toggle]{--control-icon:var(--icon-eye)}
.solve-footer button::before{width:27px;height:27px}.login-brand{display:flex;align-items:center;gap:10px;font-size:23px;font-weight:700;margin-bottom:36px}.login-panel h1{font-size:27px}.login-panel>p{font-size:17px;line-height:1.8}.login-panel details{margin-top:28px}.login-panel #login label{display:flex;flex-direction:column;gap:8px;margin:12px 0}.login-panel #login button{width:100%;background:var(--primary);color:white;border:0}.login-panel #google-button{min-height:44px;margin-top:26px}.login-panel #google-note{font-size:14px}
@media(max-width:650px){header nav button::before{width:17px;height:17px}.solve-footer button::before{width:22px;height:22px}.solve-footer #prev::before{width:24px;height:24px}}
/* Keep the floating palette compact while retaining every tool's label. */
.ink-toolbar [data-undo],.ink-toolbar [data-redo],.ink-toolbar [data-toggle],.ink-toolbar [data-pages],.ink-toolbar .notebook-tools>summary{font-size:0;width:44px;height:44px;min-width:44px;padding:10px;gap:0}
.ink-toolbar [data-undo]::before,.ink-toolbar [data-redo]::before,.ink-toolbar [data-toggle]::before,.ink-toolbar [data-pages]::before,.ink-toolbar .notebook-tools>summary::before{width:22px;height:22px}
@media(min-width:1024px){header:has([data-view=solve].active){display:flex;flex-wrap:nowrap;padding:16px 28px;gap:12px}header:has([data-view=solve].active) nav{flex:1;min-width:0;padding:0;scrollbar-width:none}header:has([data-view=solve].active)>.spacer{display:none}header:has([data-view=solve].active)>a:not(.brand){font-size:0;gap:0;width:44px;justify-content:center}header:has([data-view=solve].active)>.brand{font-size:21px}header:has([data-view=solve].active) nav button{font-size:14px;padding:8px 10px}}
@media(max-width:650px){.ink-toolbar select{max-width:86px;padding:8px 6px}.ink-toolbar{gap:2px}.ink-toolbar [data-undo],.ink-toolbar [data-redo],.ink-toolbar [data-toggle],.ink-toolbar [data-pages],.ink-toolbar .notebook-tools>summary{padding:10px}.ink-toolbar .notebook-settings{left:0}}
@media(min-width:1024px){main:has(#v-solve:not(.hide)){padding-top:16px}.solve-top{min-height:52px;margin-bottom:12px;padding:4px 0}.question-pane>.ink-toolbar{margin:12px 16px 0;padding:6px 8px}.question-pane>.ink-toolbar>small{flex:1 1 120px;font-size:11px;margin:0 4px;line-height:1.5}#paper{padding-top:20px}#qmeta{margin-bottom:18px}#paper .stem{margin-bottom:20px}.choice,.choice:last-child{margin:8px 0}#qchoices{padding-top:8px}}
.ink-toolbar .notebook-tools{position:static}.ink-toolbar .notebook-tools>summary{border:0;border-radius:10px}.ink-toolbar .notebook-settings{top:calc(100% + 8px);left:8px;max-width:calc(100% - 16px)}
header nav .review-link{display:flex;align-items:center;gap:7px;min-height:44px;flex:none;white-space:nowrap;padding:8px 12px;border-radius:10px;font-size:15px;text-decoration:none;color:var(--blue)}header nav .review-link:hover{background:var(--soft-blue)}
.subject-overview{padding:0;margin:0 0 20px;border-top:0;border-bottom:1px solid var(--line)}.subject-overview>summary{font-size:16px;font-weight:500;color:var(--blue)}.subject-overview:has(#subitems:empty){display:none}
@media(min-width:1024px){header:has([data-view=solve].active) nav .review-link{font-size:14px;width:auto;gap:7px;padding:8px 10px}}
@media(max-width:650px){header nav{grid-row:2}header nav .review-link{grid-column:auto;grid-row:auto;font-size:14px;gap:7px;padding:8px 10px}#category-list{max-height:260px}}
#text-toc summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:10px 12px;border-radius:10px;list-style:none;font-size:16px;font-weight:500}#text-toc summary::-webkit-details-marker{display:none}#text-toc summary::after{content:"";width:16px;height:16px;flex:none;mask:var(--icon-next) center/contain no-repeat;background:var(--muted)}#text-toc details[open]>summary::after{transform:rotate(90deg)}#text-toc summary.active{background:var(--soft-blue);color:var(--blue)}
#back{display:inline-flex;align-items:center;gap:6px}#back::before{content:"";width:19px;height:19px;flex:none;mask:var(--icon-prev) center/contain no-repeat;background:currentColor}.solve-footer #prev:disabled{color:var(--muted);background:transparent}.table-wrap:focus-visible{outline:3px solid var(--blue);outline-offset:3px}

/* Size each list by the space left beside the subject navigation. */
.table-list{container-type:inline-size;min-width:0;width:100%}
.question-table,.objection-table{table-layout:fixed}
.question-meta-col{width:8rem}.question-result-col{width:6.5rem}
.question-table th{white-space:normal}
.result-header-detail{display:block;font-size:12px;font-weight:400;color:var(--muted)}
#question-list td{min-width:0;overflow-wrap:anywhere}
#question-list .question-meta{min-width:0}
.question-meta>button{white-space:nowrap;font-variant-numeric:tabular-nums}
#question-list .question-meta .muted{font-size:12px;line-height:1.5}
#question-list .question-open{display:block;width:100%;padding:0;min-height:44px;color:var(--ink);font-weight:400;line-height:1.7;border-radius:4px}
.question-preview{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;overflow-wrap:anywhere;white-space:normal}
.question-open:hover .question-preview{color:var(--blue)}
#question-list .question-result{font-size:14px}
#question-list .question-result .muted{font-size:12px;line-height:1.6;margin-top:4px}
.question-result-detail{display:inline-block;white-space:nowrap;margin-inline-end:6px}
.objection-score-col{width:5rem}.objection-question-col{width:42%}
.objection-table td{overflow-wrap:anywhere}
.stats-table th{white-space:normal}.stats-table td:not(:first-child){white-space:nowrap;font-variant-numeric:tabular-nums}
.point-table td:not(:first-child){white-space:nowrap}
.note-row>button,#due-list>button{max-width:100%;overflow-wrap:anywhere}
#personal-sets .point-actions>*{min-width:0;overflow-wrap:anywhere}
@container (max-width:640px){
 .table-list>table,.table-list>table>tbody{display:block;width:100%;min-width:0}
 .table-list>table>colgroup{display:none}
 /* Retain column headings for assistive technology in the card layout. */
 .table-list>table>thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 .table-list>table>tbody>tr{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:12px;background:var(--paper)}
 .table-list>table>tbody>tr>td{display:block;border:0;padding:0;min-width:0;width:auto;white-space:normal;overflow-wrap:anywhere}
 #question-list .question-meta{min-width:0}
 #question-list .question-meta>button{min-height:44px}
 #question-list .question-meta .muted{font-size:13px}
 #question-list .question-stem{width:auto}
 #question-list .question-result{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;border-top:1px solid var(--line);padding-top:10px}
 #question-list .question-result .muted{margin:0;font-size:13px}
 .table-list td[data-label]::before{content:attr(data-label);display:block;font-size:13px;line-height:1.6;color:var(--muted);font-weight:400;margin-bottom:2px}
 .table-list>.stats-table>tbody>tr,.table-list>.point-table>tbody>tr{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
 .stats-table td:first-child,.point-table td:first-child{grid-column:1/-1;font-weight:600}
 #tanmon-list td:first-child{min-width:0}
 #tanmon-list table{min-width:0}
 .objection-table td[colspan]{grid-column:1/-1}
}
@media(max-width:650px){
 .field-progress{grid-template-columns:minmax(0,1fr);gap:8px}
 .field-progress>b{overflow-wrap:anywhere}
 #stats,#personal-sets,#due-list,#notes-list{padding:16px}
}

/* Shared iOS-inspired appearance. Blue text is deepened to meet 4.5:1. */
:root{color-scheme:light;--paper:#ffffff;--surface:#f2f2f7;--grouped:#f8f8fa;--ink:#1c1c1e;--muted:#63636a;--blue:#0066cc;--soft-blue:#edf5ff;--line:#e5e5ea;--navy:#0066cc;--teal:#0066cc;--red:#c42b32;--pink:#fff2f2;--primary:#0066cc;--primary-hover:#0057b8;--shadow:0 2px 10px #00000005,0 1px 3px #00000003;background:var(--surface);color:var(--ink)}
:root[data-theme=dark]{color-scheme:dark;--paper:#2c2c2e;--surface:#000000;--grouped:#1c1c1e;--ink:#f5f5f7;--muted:#b2b2bb;--blue:#64aaff;--soft-blue:#182e49;--line:#414144;--navy:#0066cc;--teal:#0066cc;--red:#ff8a8f;--pink:#3b2024;--primary:#0066cc;--primary-hover:#0057b8;--shadow:0 2px 10px #00000012}
body{background:var(--surface);color:var(--ink)}
button,input,select,textarea,dialog{background:var(--paper);color:var(--ink);border-color:var(--line)}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
button:disabled,button.primary:disabled{opacity:1;background:var(--grouped);color:var(--muted);border-color:var(--line)}
button.primary,button.primary:hover{background:var(--primary);color:#fff;border-color:var(--primary)}button.primary:hover{background:var(--primary-hover)}
button:hover{background:var(--grouped)}button.active,button[aria-pressed=true],header nav button.active,.tabs button.active{background:var(--soft-blue);color:var(--blue)}
header,.startbar,.selection-detail,.explanation-pane,#paper,dialog.image-viewer,#login,.login-panel{background:var(--paper);color:var(--ink)}
#gate{background:var(--surface);color:var(--ink);padding:24px}
.login-panel{width:480px;max-width:100%;margin:0;border:0;border-radius:20px;padding:40px;box-shadow:var(--shadow)}
.login-panel h1,.login-panel p,.login-panel summary{color:var(--ink)}#gnote{color:var(--red)}
.login-panel .theme-setting{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--line);margin-top:28px;padding-top:20px;font-size:16px}.theme-setting select{min-height:44px}
#display-settings-dialog{width:480px;max-width:calc(100% - 32px)}#display-settings-dialog .display-settings{align-items:stretch;flex-direction:column;gap:0}#display-settings-dialog .display-settings label{justify-content:space-between;min-height:72px;border-bottom:1px solid var(--line);padding:12px 0}
header .brand,.summary strong,.heading small{color:var(--ink)}small,.muted,#session-clock,.text-content .smq,.text-content .meta,.text-content .note{color:var(--muted)}
th,.absent,.original-toggle,#message{background:var(--grouped);color:var(--ink)}
#category-list,#tanmon-chapters{background:transparent;color:var(--ink)}#category-list button,#tanmon-chapters button{background:transparent;color:var(--ink)}#category-list button:hover,#tanmon-chapters button:hover,#category-list button.active,#tanmon-chapters button.active{background:var(--soft-blue);color:var(--blue)}
.text-content .goal,.text-content .goro,.text-content .card,.text-content .memo,.text-content .qb{background:var(--grouped);color:var(--ink);border-color:var(--line)}.progress{background:var(--line)}.field-progress .progress i{background:var(--blue)}
.image-viewport{background:var(--surface)}
/* Medical images and handwriting pages retain their original paper and colors. */
.figure-paper,.image-paper,.explanation-diagram{background:#fff;color:#1c1c1e;color-scheme:light}
.subject-group{min-width:0}.subject-group h2{font-size:15px;color:var(--muted);margin:24px 0 10px;padding:0 12px}.subject-subgroup h3{font-size:15px;color:var(--muted);margin:20px 0 10px;padding:0 12px}
#subitems{display:block}#subitems .subject-group>div,#subitems .subject-subgroup>div{display:flex;flex-wrap:wrap;gap:8px}#subitems .subject-group h2,#subitems .subject-subgroup h3{padding:0}
/* Review cards and the older voice screen share the same design system. */
.legacy-app{font-size:18px;line-height:1.75}.legacy-app main{max-width:860px;padding-top:28px}.legacy-app #gate,.legacy-app #review{background:var(--surface)!important;color:var(--ink)}
.legacy-app li,.legacy-app .fb div,.legacy-app #modes,.legacy-app #vbar{background:var(--paper)!important;color:var(--ink);box-shadow:var(--shadow)}
.legacy-app .top,.legacy-app #prog,.legacy-app #rvcount{color:var(--muted)!important}.legacy-app .note{color:var(--red)}.legacy-app li b{color:var(--blue)}
.legacy-app .book,.legacy-app .row button.sub,.legacy-app #vbar button{background:var(--paper)!important;color:var(--blue);border:1px solid var(--line);border-radius:16px}
.legacy-app .row button:not(.sub),.legacy-app .mic,.legacy-app #rvbtn,.legacy-app #vclose{background:var(--primary)!important;color:#fff;border-radius:16px}
.legacy-app button,.legacy-app input,.legacy-app select{min-height:44px;font-family:inherit}.legacy-app textarea,.legacy-app input,.legacy-app select{background:var(--paper);color:var(--ink);border-color:var(--line)}
.legacy-app .theme-setting{display:flex;align-items:center;justify-content:space-between;font-size:16px;margin:0 0 24px}.legacy-app .stem{font-size:24px;line-height:1.6}.legacy-app li{font-size:18px;padding:16px 20px}.legacy-app .book,.legacy-app .row button{font-size:18px;padding:16px}.legacy-app .fb div{border-width:0 0 0 3px;padding:20px}.legacy-app .fb .ok{border-color:var(--blue)!important}.legacy-app .fb .ng{border-color:var(--red)!important}.legacy-app .fb .partial,.legacy-app .fb .none{border-color:var(--muted)!important}.legacy-app textarea{font-size:18px;border-width:1px}.legacy-app #vbar button.sel{background:var(--soft-blue)!important;border-color:var(--blue)}
@media(max-width:650px){
 #category-list{display:block;max-height:340px;overflow-y:auto;padding:8px 0}#category-list>button{width:100%}#category-list .subject-group>div,#category-list .subject-subgroup>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}#category-list button{width:100%;min-width:0;white-space:normal;margin:0;font-size:15px;padding:10px;flex-wrap:wrap}#category-list button .category-copy{flex:1;min-width:70px}#category-list .subject-group h2,#category-list .subject-subgroup h3{grid-column:1/-1;padding:0;margin-top:18px}
 .login-panel{padding:28px 24px}.heading{flex-direction:column;align-items:flex-start;gap:8px}.legacy-app #vbar{height:122px;flex-wrap:wrap;gap:6px;padding:6px}.legacy-app #vbar button{height:52px;min-width:52px;flex:0 0 52px}.legacy-app #vbar #vclose{height:48px;min-width:0;flex:1 0 100%}.legacy-app #vscroll{top:122px}
}
@media print{:root{--paper:#ffffff;--surface:#ffffff;--ink:#1c1c1e;--muted:#63636a;--blue:#0066cc;--soft-blue:#edf5ff;--red:#c42b32;--pink:#fff2f2}body{background:#fff;color:#1c1c1e}}
.legacy-app button,.legacy-app input,.legacy-app select{font:inherit;border-radius:12px;padding:10px 12px;border:1px solid var(--line)}.legacy-app #modes{padding:20px!important;border-radius:16px}.legacy-app #modes>div{padding:10px 0;border-bottom:1px solid var(--line)}.legacy-app #modes>div:last-child{border-bottom:0}.legacy-app #modes label{display:flex;align-items:center;gap:10px;min-height:44px}.legacy-app #modes input{width:20px;height:20px;min-height:20px;accent-color:var(--blue);flex:none}.legacy-app #modes small{display:block;color:var(--muted);font-size:14px;line-height:1.7;margin-left:30px}.legacy-app #modes label.unavailable{color:var(--muted)}.legacy-app #prog{font-size:15px!important;line-height:1.8;margin-bottom:20px!important}.legacy-app #rvcount{font-size:16px!important;line-height:1.8}.legacy-app #gate input{font-size:18px!important;border-width:1px!important}

/* The companion login and original textbook viewer use the same surfaces. */
.legacy-app #gate{padding:32px 20px!important;overflow-y:auto;text-align:left!important}
.legacy-app .legacy-login-panel{margin:max(0px,calc((100vh - 740px)/2)) auto;text-align:left}
.legacy-app .legacy-login-panel .theme-setting{margin:0 0 24px;padding:0 0 20px;border-top:0;border-bottom:1px solid var(--line)}
.legacy-app .legacy-login-panel h2{font-size:27px;line-height:1.4;margin:0 0 16px}
.legacy-app .legacy-login-panel details{border-top:1px solid var(--line);padding-top:20px}
.legacy-app .legacy-login-panel summary{min-height:44px;cursor:pointer}
.legacy-app .legacy-login-panel #gkey{width:100%!important}
.legacy-app .legacy-login-panel #google-note{color:var(--muted);font-size:15px}
.legacy-app #viewer{background:var(--surface)}
.legacy-app #vbar{top:16px;left:16px;right:16px;max-width:1000px;margin:auto;height:76px;border:1px solid var(--line);border-radius:16px;padding:8px;box-shadow:0 4px 14px #00000008;z-index:2}
.legacy-app #vbar button{height:52px;min-width:52px;padding:8px;border-width:1px;border-radius:12px}
.legacy-app #vscroll{top:108px;padding:0 16px 16px}
.legacy-app h2{font-size:24px;line-height:1.5}
@media(max-width:650px){.legacy-app #gate{padding:20px 16px!important}.legacy-app .legacy-login-panel{padding:28px 24px}.legacy-app #vbar{top:12px;left:12px;right:12px;height:122px;gap:6px;padding:6px}.legacy-app #vbar button{flex:1 1 44px;min-width:44px;height:48px}.legacy-app #vbar #vclose{flex:1 0 100%}.legacy-app #vscroll{top:146px;padding:0 12px 12px}}

.legacy-app li{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line)}
.legacy-app li b{display:inline-flex;align-items:center;justify-content:center;flex:0 0 34px;width:34px;height:34px;border:1px solid var(--line);border-radius:50%;background:var(--grouped);color:var(--ink);font-weight:400;text-transform:uppercase;line-height:1}
.legacy-app .mic.on{background:var(--pink)!important;color:var(--red)}

.legacy-app .login-brand{display:flex;align-items:center;gap:10px;font-size:23px;font-weight:700;margin-bottom:32px}.legacy-app .brand-logo{width:34px;height:34px;color:var(--blue);flex:none}

/* Keep text clear of both overlay and permanently visible vertical scrollbars. */
:root{--scroll-clearance:calc(16px + 12px);--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%2363636a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
:root[data-theme=dark]{--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23b2b2bb' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
/* Include palette, notebook and legacy selects despite their local padding rules. */
select,.ink-toolbar select,.legacy-app select{appearance:none;-webkit-appearance:none;background-image:var(--select-chevron);background-repeat:no-repeat;background-size:12px 8px;background-position:right 14px center;padding-right:36px}
select[multiple],select[size]:not([size="1"]){background-image:none}
.ink-toolbar select{min-width:108px;max-width:134px}
#category-list,#tanmon-chapters,#tanmon-list,#text-toc,#authors,.notebook-settings,dialog:not(.image-viewer),.zoom-scroll,#gate,.legacy-app #gate{scrollbar-gutter:stable;padding-right:var(--scroll-clearance)}
#category-list button{flex-wrap:nowrap;margin:0;gap:8px}
#category-list .category-copy{flex:1 1 0;min-width:0;overflow-wrap:anywhere;white-space:normal}
#category-list .remaining{flex:0 0 auto;white-space:nowrap}
#text-toc details{margin:0;padding:0;border-top:0;border-bottom:1px solid var(--line)}
#text-toc summary{padding:12px;line-height:1.5}
#text-toc button{display:block;width:100%;text-align:left;white-space:normal;overflow-wrap:anywhere;padding:12px}
#text-toc details:last-child{border-bottom:0}

/* Compact, aligned header lockup. */
header .brand,header:has([data-view=solve].active) .brand{font-family:-apple-system,"Hiragino Sans",sans-serif;font-size:21px;font-weight:650;letter-spacing:-.01em;gap:8px;align-items:flex-start}
header .brand-logo{width:28px;height:28px;margin-top:calc((1.2em - 28px)/2)}
header .brand>span{display:flex;flex-direction:column;align-items:flex-start;gap:3px;line-height:1.2}
header .brand-title{display:block}
header .brand-caption{margin:0;font-size:12px;font-weight:400;letter-spacing:0;line-height:1.3;color:var(--muted)}

/* One 70px action row on iPad; two rows on phones, plus the safe area. */
.startbar{position:fixed;bottom:0;left:max(16px,calc((100vw - 1424px)/2));right:max(16px,calc((100vw - 1424px)/2));display:grid;grid-template-columns:minmax(0,156px) minmax(0,184px) minmax(max-content,1fr) auto auto;align-items:center;gap:10px;margin:0;padding:13px 12px calc(13px + env(safe-area-inset-bottom));border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0;z-index:20}
.startbar label{position:relative;display:block;min-width:0;margin:0}
.startbar label>span{position:absolute;top:-8px;left:10px;padding:0 3px;background:var(--paper);color:var(--muted);font-size:11px;line-height:16px}
.startbar select{width:100%;height:44px;min-height:44px;padding-top:9px;padding-bottom:9px;font-size:14px}
.startbar-actions{display:contents}
.startbar #selection-count{justify-self:end;white-space:nowrap;font-size:14px;font-variant-numeric:tabular-nums}
.startbar #start,.startbar #download{width:auto;min-height:44px;height:44px;margin:0;padding:8px 12px;font-size:14px;white-space:nowrap;line-height:1.5}
.startbar #start{font-weight:600}
main:has(#v-select:not(.hide)){padding-bottom:calc(var(--selection-bar-height,70px) + 24px)}
html:has(#v-select:not(.hide)){scroll-padding-bottom:calc(var(--selection-bar-height,70px) + 24px)}
@media(max-width:650px){
 .startbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 8px;padding:13px 10px calc(13px + env(safe-area-inset-bottom))}
 .startbar-actions{grid-column:1/-1;display:flex;align-items:center;gap:8px;min-width:0}
 .startbar #selection-count{margin-right:auto}
 .startbar #start,.startbar #download{flex:0 0 auto;padding:8px 10px}
}
@media print{.startbar{display:none}}
/* Task 23: one persistent writing bar, shared by every ink surface. */
:root{--ink-bar-height:62px;--ink-top-offset:62px}
:root[data-ink-position=bottom]{--ink-top-offset:0px}
body:has(#global-ink-toolbar){padding-top:var(--ink-top-offset);padding-bottom:var(--ink-bar-height)}
#global-ink-toolbar{position:fixed;inset:0 0 auto;z-index:35;display:flex;flex-wrap:nowrap;align-items:center;gap:4px;margin:0;padding:8px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));height:var(--ink-bar-height);border:0;border-bottom:1px solid var(--line);border-radius:0;background:var(--paper);box-shadow:var(--shadow)}
#global-ink-toolbar .ink-main-tools{display:flex;align-items:center;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:none;flex:1}
#global-ink-toolbar .ink-main-tools::-webkit-scrollbar{display:none}
#global-ink-toolbar button,#global-ink-toolbar summary{min-height:44px;flex-shrink:0;padding:8px 10px;font-size:14px;white-space:nowrap}
#global-ink-toolbar [data-pages]{margin-left:auto}
#global-ink-toolbar .ink-color,#global-ink-toolbar .ink-width{display:flex;align-items:center;flex-shrink:0;gap:6px;min-height:44px;margin:0;padding:0 6px;font-size:13px;white-space:nowrap}
#global-ink-toolbar input[type=color]{width:32px;min-height:32px;height:32px;padding:2px;border-radius:8px;cursor:pointer}
#global-ink-toolbar .ink-width select{min-width:58px;width:58px;max-width:58px;min-height:44px;padding:6px 22px 6px 8px;background-position:right 7px center;font-size:14px}
#global-ink-toolbar>.notebook-tools{position:static;flex-shrink:0}
#global-ink-toolbar .notebook-settings{position:absolute;left:auto;right:12px;top:calc(100% + 8px);margin:0;max-height:calc(100dvh - 90px)}
#global-ink-toolbar>small{position:absolute;right:70px;bottom:0;font-size:10px;line-height:12px;max-width:50vw;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;margin:0}
:root[data-ink-position=bottom] #global-ink-toolbar{inset:auto 0 0;border-bottom:0;border-top:1px solid var(--line);padding-bottom:max(8px,env(safe-area-inset-bottom));height:calc(var(--ink-bar-height) + env(safe-area-inset-bottom))}
:root[data-ink-position=bottom] #global-ink-toolbar .notebook-settings{top:auto;bottom:calc(100% + 8px)}
header{scroll-margin-top:var(--ink-top-offset)}
.text-content,.text-content [id],.annotation-block{scroll-margin-top:calc(var(--ink-top-offset) + 16px)}
#text-toc{top:calc(var(--ink-top-offset) + 16px);border-right:0;max-height:calc(100dvh - var(--ink-bar-height) - 48px)}
#text-toc details{border:1px solid transparent;border-bottom-color:var(--line);border-radius:14px;margin:0 0 6px;padding:0;transition:background .2s,border-color .2s,box-shadow .2s;overflow:hidden}
#text-toc details[open]{background:var(--paper);border-color:var(--line);box-shadow:var(--shadow)}
#text-toc summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;font-size:16px;list-style:none;min-height:48px}
#text-toc summary::-webkit-details-marker{display:none}
#text-toc .toc-chevron{display:inline-block;font-size:25px;font-weight:400;line-height:1;transition:transform .2s;color:var(--muted);transform-origin:center}
#text-toc details[open] .toc-chevron{transform:rotate(90deg);color:var(--blue)}
#text-toc .toc-points{margin:0 12px 10px 22px;padding-left:10px;border-left:2px solid var(--blue);overflow:hidden}
#text-toc .toc-points button{display:block;margin:0;width:100%;min-height:44px;padding:8px 10px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font-size:14px;line-height:1.4}
#text-toc .toc-points button:last-child{border-bottom:0}
#text-toc .toc-points button.active{border-radius:8px;color:var(--blue);background:var(--soft-blue)}
#text-toc .toc-points button>span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.text-content .rm a{display:block;min-height:44px;padding:6px 0}
.figure-ink-state{display:block;margin:4px 0;font-size:11px}
.notebook-dialog:has(#global-ink-toolbar),.image-viewer:has(#global-ink-toolbar),.ink-zoom-dialog:has(#global-ink-toolbar){padding-top:calc(var(--ink-top-offset) + 18px);padding-bottom:calc(var(--ink-bar-height) + 18px)}
@media(max-width:760px){#text-toc{max-height:360px}#global-ink-toolbar button{padding:8px}#global-ink-toolbar{padding-left:8px;padding-right:8px}.text-layout>div{min-width:0}}
@media(prefers-reduced-motion:reduce){#text-toc details,#text-toc .toc-chevron{transition:none}}
@media print{#global-ink-toolbar{display:none!important}body:has(#global-ink-toolbar){padding:0}}
#text-toc summary::after{content:none}
#global-ink-toolbar [data-undo],#global-ink-toolbar [data-redo],#global-ink-toolbar [data-toggle],#global-ink-toolbar [data-pages],#global-ink-toolbar .notebook-tools>summary{font-size:0;padding:10px;gap:0}
:root[data-ink-position=bottom] .startbar,:root[data-ink-position=bottom] .solve-footer{bottom:calc(var(--ink-bar-height) + env(safe-area-inset-bottom))}
:root[data-ink-position=bottom] main{padding-bottom:calc(var(--selection-bar-height,90px) + var(--ink-bar-height) + 32px)}
/* Compact filter rows share the same layout on phones, tablets and computers. */
#question-filters .filter-panel>p{font-size:12px;margin:8px 0;color:var(--muted)}
#question-filters .filter-groups{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;margin:8px 0}
#question-filters .filter-groups[hidden]{display:none}
#question-filters .filter-row{display:grid;grid-template-columns:3.5em minmax(0,1fr);align-items:center;gap:8px;min-width:0}
#question-filters .filter-label{font-size:12px;color:var(--muted);white-space:nowrap}
#question-filters .filter-choices{display:flex;flex-wrap:nowrap;gap:6px;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;padding:2px}
#question-filters .filter-choices label{flex:0 0 auto;white-space:nowrap;min-height:44px;gap:5px;padding:5px 9px;font-size:14px;border-radius:18px;overflow-wrap:normal}
#question-filters .filter-choices input[type=checkbox]{flex:0 0 16px;width:16px;height:16px;min-height:16px;font-size:16px}
#question-filters .filter-choices label:focus-within{outline:2px solid var(--blue);outline-offset:1px}
#question-filters #filter-advanced{padding:0;border-top:0}
#question-filters #filter-advanced>summary{font-size:13px;min-height:36px;padding:6px 0}
#question-filters .filter-panel-actions{padding-top:8px}
/* login width fix (phone) */
#gate{grid-template-columns:minmax(0,1fr);padding:16px;box-sizing:border-box}
#gate .login-panel{width:min(480px,100%);max-width:100%;min-width:0;margin:0 auto;box-sizing:border-box}
#gate .login-panel *{max-width:100%}
#gate .login-panel p{overflow-wrap:anywhere}
#google-button,#google-button>div,#google-button iframe{max-width:100%!important}
@media (max-width:500px){#gate .login-panel{padding:24px 20px}.login-panel .theme-setting{flex-wrap:wrap}.login-panel .theme-setting select{flex:1 1 140px;min-width:0}}

/* Immediate touch feedback; retain the existing quiet blue/white surfaces. */
button,a,summary,input,select,label{touch-action:manipulation}
button:active,a:active,summary:active{opacity:.72}
#question-list[aria-busy=true]{opacity:.65}
@media(pointer:coarse){
  dialog::backdrop{backdrop-filter:none}
  dialog{box-shadow:0 8px 30px #00000020}
}

#app-update{padding:10px 24px;border-bottom:1px solid var(--line);background:var(--soft-blue);color:var(--ink)}

/* Appearance is the first setting, shared with the login preference. */
#display-settings-dialog{position:fixed;inset:auto 0 0;margin:0 auto;width:480px;max-width:100%;max-height:85dvh;border-radius:22px 22px 0 0;padding:24px 24px max(24px,env(safe-area-inset-bottom));border:1px solid var(--line)}
#display-settings-dialog .theme-options{border:0;border-bottom:1px solid var(--line);padding:0 0 20px;margin:0;min-width:0}
.theme-options legend{font-size:16px;font-weight:600;padding:0;margin:0 0 12px}
.theme-segments{display:grid;grid-template-columns:1fr 1fr 1.7fr;gap:3px;padding:3px;background:var(--surface);border:1px solid var(--line);border-radius:12px}
.theme-segments button{min-width:0;min-height:44px;padding:8px 4px;font-size:14px;white-space:nowrap;border:0;border-radius:9px;background:transparent;color:var(--ink);box-shadow:none;transition:none}
.theme-segments button[aria-pressed=true]{background:var(--paper);color:var(--ink);box-shadow:0 1px 4px #0002;font-weight:600}
.theme-segments button:focus-visible{outline:2px solid var(--blue);outline-offset:1px}

/* Layout follows window width; ink editing follows device identity. */
#mobile-more,.category-toggle{display:none}
#mobile-more-dialog .more-destinations{display:grid;gap:8px;margin-bottom:20px}
@media screen and (max-width:899px){
 header{display:flex;flex-wrap:wrap;gap:8px;padding:10px 16px}
 header nav{display:flex;flex-wrap:nowrap;order:3;flex:1 0 100%;min-width:0;overflow-x:auto;scrollbar-width:none}
 header nav button,header nav .review-link{flex:none;white-space:nowrap;font-size:16px;min-height:44px}
 header .brand{width:auto;flex:1}
 header>.spacer{display:none}
 .heading{flex-direction:column;align-items:flex-start;gap:8px}
 #text-toc .toc-points button{font-size:16px}
 .selection,.text-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
 .category-toggle{display:flex;justify-content:space-between;width:100%;text-align:left;min-height:48px;margin:8px 0;font-size:16px}
 .category-toggle::after{content:'⌄';flex:none;margin-left:8px}
 .category-toggle[aria-expanded=true]::after{transform:rotate(180deg)}
 .category-toggle[aria-expanded=false]+#category-list,.category-toggle[aria-expanded=false]+#tanmon-chapters{display:none}
 #category-list,#tanmon-chapters{position:static;display:block;max-height:320px;border:0;border-bottom:1px solid var(--line);padding:8px var(--scroll-clearance) 12px 0}
 #category-list .subject-group>div,#category-list .subject-subgroup>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
 #category-list button,#tanmon-chapters button{width:100%;font-size:16px}
 .selection-detail{padding:20px;min-width:0}
 #text-toc{position:static;max-height:280px;margin-bottom:16px}
 .text-layout>div{min-width:0}
 .solve-grid{display:grid;grid-template-columns:minmax(0,1fr)}
 .question-pane{border-right:0;border-bottom:1px solid var(--line)}
 .paper-scroll{overflow:visible}
 #paper{width:100%;max-width:100%;min-width:0;padding:20px}
 #paper .stem,.choice,.explanation{overflow-wrap:anywhere;word-break:normal}
 .choice{min-height:48px;max-width:100%;white-space:normal}
 .choice>span{min-width:0}
 .explanation-pane{min-width:0;padding:20px}
 main canvas,.images img,.annotation-block>img,.supplement-open{max-width:100%}
 .supplement-thumbnails{grid-template-columns:minmax(0,1fr)}
 .point-actions,.filters,.solve-top,.rating{flex-wrap:wrap;min-width:0}
 .point-actions>*{min-width:0;max-width:100%;overflow-wrap:anywhere}
 .startbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:10px 12px calc(10px + env(safe-area-inset-bottom))}
 .startbar-actions{display:flex;grid-column:1/-1;align-items:center;gap:8px;min-width:0}
 .startbar #selection-count{margin-right:auto}
 .notebook-heading,.notebook-page-actions{flex-wrap:wrap}
 .notebook-heading h2{margin:0}
 .notebook-dialog{min-width:0}
}
@media screen and (max-width:500px){
 :root{font-size:16px;--ink-top-offset:0px;--mobile-nav-height:calc(64px + env(safe-area-inset-bottom));scroll-padding-bottom:240px}
 body{--bottom-tools:0px}
 body:has(#global-ink-toolbar){padding-top:0;padding-bottom:0}
 body:has(#v-solve:not(.hide)),body:has(#v-text:not(.hide)),body:has(#v-tanmon:not(.hide)){--bottom-tools:56px}
 body:has(dialog[open]){--bottom-tools:0px}
 header{min-height:56px;padding:8px 12px;gap:4px;flex-wrap:nowrap}
 header .brand,header:has([data-view=solve].active) .brand{font-size:19px;gap:6px}
 header .brand-caption{display:none}
 header .brand-logo{width:24px;height:24px;margin-top:0}
 header>button{font-size:0;width:44px;height:44px;padding:10px;justify-content:center}
 header>button::before{width:22px;height:22px}
 header nav{position:fixed;inset:auto 0 0;order:0;z-index:40;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;padding:4px max(4px,env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-left));height:var(--mobile-nav-height);background:var(--paper);border-top:1px solid var(--line);overflow:visible}
 header nav [data-view]:not([data-short-label]),header nav .review-link{display:none}
 header nav button[data-short-label],header nav #mobile-more{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:52px;margin:0;padding:2px;border:0;border-radius:8px;font-size:16px;line-height:1.2;white-space:nowrap}
 header nav .nav-label{display:none}
 header nav [data-short-label]::after{content:attr(data-short-label)}
 header nav button::before{width:21px;height:21px}
 #mobile-more::before{content:'•••';height:21px;font-size:22px;line-height:16px}
 main,main:has(#v-select:not(.hide)),:root[data-ink-position=bottom] main{padding:16px 12px calc(var(--mobile-nav-height) + var(--bottom-tools) + 28px)}
 main:has(#v-select:not(.hide)){padding-bottom:calc(var(--mobile-nav-height) + var(--selection-bar-height,110px) + 24px)}
 main:has(#v-solve:not(.hide)){padding-bottom:calc(var(--mobile-nav-height) + var(--bottom-tools) + 88px)}
 main :is(p,small,.muted,label,input,select,textarea,button,summary,td,th,.badge,.reading-note,#qmeta,#qhint,#bank-count,#page-info,.category-copy,.remaining){font-size:16px}
 #global-ink-toolbar{display:none}
 body:has(#v-solve:not(.hide)) #global-ink-toolbar,body:has(#v-text:not(.hide)) #global-ink-toolbar,body:has(#v-tanmon:not(.hide)) #global-ink-toolbar,dialog[open] #global-ink-toolbar{display:flex}
 #global-ink-toolbar,:root[data-ink-position=bottom] #global-ink-toolbar{inset:auto 0 var(--mobile-nav-height);height:56px;padding:6px 8px;border-top:1px solid var(--line);border-bottom:0}
 #global-ink-toolbar button,#global-ink-toolbar select{font-size:16px}
 #global-ink-toolbar [data-undo],#global-ink-toolbar [data-redo],#global-ink-toolbar [data-toggle],#global-ink-toolbar [data-pages],#global-ink-toolbar .notebook-tools>summary{font-size:0}
 #global-ink-toolbar>.notebook-tools{order:3}
 #global-ink-toolbar>.ink-main-tools{order:2}
 #global-ink-toolbar .notebook-settings,:root[data-ink-position=bottom] #global-ink-toolbar .notebook-settings{position:fixed;inset:auto 8px calc(var(--mobile-nav-height) + 64px);width:auto;max-width:none;max-height:calc(100dvh - var(--mobile-nav-height) - 88px);font-size:16px}
 #global-ink-toolbar .notebook-settings :is(p,input,select,button,label){font-size:16px}
 #global-ink-toolbar .notebook-settings label:has([data-position]),.display-settings label:has(#ink-position){display:none}
 #global-ink-toolbar>small{display:none}
 .startbar,:root[data-ink-position=bottom] .startbar{bottom:var(--mobile-nav-height);left:0;right:0;border-radius:0;padding:8px 12px;gap:8px}
 .startbar label>span{position:static;display:none}
 .startbar select,.startbar #start,.startbar #download,.startbar #selection-count{font-size:16px}
 .startbar #start,.startbar #download{padding:8px;flex:none}
 .startbar #start{flex:1}
 .startbar #download{font-size:0;width:44px}
 .startbar #download::before{content:'↓';font-size:22px}
 .startbar #selection-count{margin-right:0;flex:1}
 .startbar label select{padding-left:8px;padding-right:30px}
 .startbar label{min-width:0}
 .solve-footer,:root[data-ink-position=bottom] .solve-footer{position:fixed;inset:auto 0 calc(var(--mobile-nav-height) + var(--bottom-tools));z-index:30;display:flex;gap:6px;padding:8px;background:var(--paper);border-top:1px solid var(--line);margin:0;border-radius:0}
 .solve-footer button{min-width:44px;min-height:44px;padding:8px;font-size:16px;gap:4px;flex:1;justify-content:center;white-space:nowrap}
 .solve-footer #prev{font-size:0;flex:0 0 44px}
 .solve-footer .spacer{display:none}
 .solve-footer #submit::before,.solve-footer #retry::before,.solve-footer #next::before{display:none}
 .selection-detail{padding:16px}
 #paper{padding:16px;min-height:0}
 .explanation-pane{padding:16px}
 #category-list .subject-group>div,#category-list .subject-subgroup>div{grid-template-columns:minmax(0,1fr)}
 #category-list button{flex-wrap:nowrap}
 .filters{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
 .filters label,.filters input,.filters select{width:100%;min-width:0;max-width:100%}
 .filters input[type=checkbox]{width:22px}
 #version-label{max-width:none}
 .point-actions{display:flex;flex-direction:column;align-items:stretch}
 .point-actions>*,.display-settings label{width:100%}
 .pager{flex-wrap:wrap;justify-content:space-between;font-size:16px}
 .pager button{font-size:16px}
 .table-list>.stats-table>tbody>tr,.table-list>.point-table>tbody>tr{grid-template-columns:minmax(0,1fr)}
 .table-list td[data-label]::before,#question-list :is(.muted,.question-result,.question-result .muted){font-size:16px}
 .notebook-dialog,.image-viewer,.ink-zoom-dialog{max-width:100%;width:100%;max-height:100dvh}
 dialog:has(#global-ink-toolbar){padding-top:16px;padding-bottom:calc(76px + env(safe-area-inset-bottom))}
 dialog #global-ink-toolbar,:root[data-ink-position=bottom] dialog #global-ink-toolbar{bottom:0;height:calc(56px + env(safe-area-inset-bottom));padding-bottom:calc(6px + env(safe-area-inset-bottom))}
 dialog #global-ink-toolbar .notebook-settings{bottom:calc(64px + env(safe-area-inset-bottom))}
 .notebook-dialog{padding-left:12px;padding-right:12px;scroll-padding-bottom:80px}
 .notebook-pages{flex-direction:column;max-height:160px;overflow-y:auto}
 .notebook-thumbnail{display:flex;align-items:center;gap:12px}
 .notebook-thumbnail canvas{width:40px;height:50px}
 .notebook-page-actions{display:grid;grid-template-columns:minmax(0,1fr)}
 .notebook-heading{gap:8px}
 #display-settings-dialog{padding:16px}
 #display-settings-dialog .display-settings label{flex-direction:column;align-items:stretch;gap:8px}
 #display-settings-dialog .display-settings label:has(input[type=checkbox]){flex-direction:row;align-items:center}
 #mobile-more-dialog{width:calc(100% - 24px);max-height:calc(100dvh - 100px)}
 .image-viewer-footer{flex-wrap:wrap}
 .image-viewer-footer :is(button,small),.image-viewer>small,.notebook-page-actions :is(button,small){font-size:16px}
 .image-viewer-heading strong{font-size:16px}
 .mobile-image-zoom{max-width:100%;width:100%;max-height:96dvh;overflow:auto;padding:12px;background:var(--paper)}
 [data-mobile-zoom]{cursor:zoom-in}
}
@media print{#mobile-more,.category-toggle,#mobile-more-dialog{display:none!important}}
@media screen and (max-width:500px){#global-ink-toolbar .ink-width select{font-size:16px}}
@media screen and (max-width:899px){
 input,select,textarea,#global-ink-toolbar .ink-width select{font-size:16px}
}
@media screen and (max-width:899px){#global-ink-toolbar .notebook-settings :is(input,select,textarea){font-size:16px}}
/* Prevent iOS focus zoom even inside inherited notebook/dialog control styles. */
@media screen and (max-width:899px){body :is(input,select,textarea){font-size:16px!important}}
@media screen and (max-width:500px){
 main :is(.smq,.meta,.note,.figtag,.figure-ink-state,.reading-label,#qpos,#session-clock),#global-ink-toolbar .ink-color,#global-ink-toolbar .ink-width{font-size:16px}
}

/* Saved ink stays visible; only tablets expose editing controls. */
:root[data-ink-readonly=true]{--ink-top-offset:0px}
:root[data-ink-readonly=true] body{--bottom-tools:0px!important}
:root[data-ink-readonly=true] :is(#global-ink-toolbar,.ink-toolbar,.figure-toolbar,.notebook-page-actions,.display-settings label:has(#ink-position)){display:none!important}
:root[data-ink-readonly=true] .annotation-canvas,:root[data-ink-readonly=true] #ink{pointer-events:none!important;touch-action:pan-x pan-y pinch-zoom!important}
:root[data-ink-readonly=true] body{padding-top:0}
:root[data-ink-readonly=true] dialog:has(#global-ink-toolbar){padding-bottom:16px}
.en-translation{display:block;margin-top:6px;color:var(--muted);font-size:.82em;font-weight:400;line-height:1.65;white-space:pre-line;overflow-wrap:anywhere}
.en-translation[hidden]{display:none}
#qstem>.en-translation{margin-top:12px}

/* Phone density; tablet spacing is shared below without shrinking its body text. */
@media screen and (width < 600px){
 :root[data-phone=true]{font-size:15px;line-height:1.6;--mobile-nav-height:calc(52px + env(safe-area-inset-bottom))}
 :root[data-phone=true] body:has(#global-ink-toolbar){padding-top:0;padding-bottom:0}
 :root[data-phone=true] header{min-height:52px;padding:4px 12px;gap:4px;flex-wrap:nowrap}
 :root[data-phone=true] header .brand{font-size:19px;gap:6px}
 :root[data-phone=true] header .brand-caption{display:none}
 :root[data-phone=true] header .brand-logo{width:24px;height:24px;margin-top:0}
 :root[data-phone=true] header>button{font-size:0;width:44px;height:44px;padding:10px;justify-content:center}
 :root[data-phone=true] header nav{position:fixed;inset:auto 0 0;z-index:40;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;padding:3px max(4px,env(safe-area-inset-right)) calc(3px + env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-left));height:var(--mobile-nav-height);background:var(--paper);border-top:1px solid var(--line);overflow:visible}
 :root[data-phone=true] header nav :is([data-view]:not([data-short-label]),.review-link,.nav-label){display:none}
 :root[data-phone=true] header nav :is(button[data-short-label],#mobile-more){display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:0;min-height:44px;margin:0;padding:2px;border:0;border-radius:8px;font-size:12px;line-height:1.2;white-space:nowrap}
 :root[data-phone=true] header nav [data-short-label]::after{content:attr(data-short-label)}
 :root[data-phone=true] header nav button::before{width:19px;height:19px}
 :root[data-phone=true] #mobile-more::before{content:'•••';font-size:20px;line-height:14px}
 :root[data-phone=true] main,:root[data-phone=true][data-ink-position=bottom] main{padding:10px 12px calc(var(--mobile-nav-height) + 12px)}
 :root[data-phone=true] main:has(#v-select:not(.hide)){padding-bottom:calc(var(--mobile-nav-height) + var(--selection-bar-height,104px) + 12px)}
 :root[data-phone=true] main:has(#v-solve:not(.hide)){padding-bottom:calc(var(--mobile-nav-height) + 72px)}
 :root[data-phone=true] main :is(p,label,button,summary,td,th,.category-copy){font-size:15px}
 :root[data-phone=true] main :is(small,.muted,.badge,.remaining,.reading-note,.smq,.meta,.note,.figtag,.figure-ink-state,.reading-label,#qmeta,#qhint,#bank-count,#page-info,#qpos,#session-clock),
 :root[data-phone=true] #question-list :is(.muted,.question-result,.question-result .muted),
 :root[data-phone=true] .table-list td[data-label]::before{font-size:13px;line-height:1.5}
 :root[data-phone=true] body :is(input,select,textarea){font-size:16px!important;min-height:44px}
 :root[data-phone=true] body input[type=checkbox]{min-height:22px}
 :root[data-phone=true] :is(.heading h1,h1,.text-content h1){font-size:20px;line-height:1.35;margin:0 0 8px}
 :root[data-phone=true] :is(h2,.text-content h2,.point-reading h2){font-size:18px;margin:0 0 8px}
 :root[data-phone=true] :is(h3,.text-content h3,.point-lesson h3,.explanation-section h3){font-size:17px;margin:0 0 8px}
 :root[data-phone=true] .heading{gap:2px;margin-bottom:8px}
 :root[data-phone=true] #v-select .heading small{display:none}
 :root[data-phone=true] #v-select .heading h1{margin-bottom:0}
 :root[data-phone=true] #bank-count{max-width:none}
 :root[data-phone=true] .tabs{margin:0 0 8px;scrollbar-width:none;scroll-padding-inline:4px}
 :root[data-phone=true] .tabs::-webkit-scrollbar{display:none}
 :root[data-phone=true] .tabs button{flex:none;min-width:0;min-height:44px;padding:8px 12px;white-space:nowrap;font-size:15px}
 :root[data-phone=true] .category-toggle{min-height:44px;margin:0;padding:8px 12px;font-size:15px}
 :root[data-phone=true] :is(.selection-detail,.tanmon-selection .selection-detail,#paper,.explanation-pane,.text-content,.point-reading,.practice-options,.question-notes,#personal-sets,#due-list,#notes-list,#stats,.placeholder){padding:14px}
 :root[data-phone=true] :is(.selection,.solve-grid,.text-layout){gap:10px}
 :root[data-phone=true] :is(#category-list,#tanmon-chapters,#text-toc){margin-bottom:8px}
 :root[data-phone=true] :is(#category-list button,#tanmon-chapters button,#text-toc .toc-points button){min-height:44px;font-size:15px;white-space:normal}
 :root[data-phone=true] .filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0}
 :root[data-phone=true] .filters label{min-width:0;max-width:none;width:100%;font-size:13px;gap:2px}
 :root[data-phone=true] .filters :is(input,select){width:100%;min-width:0;max-width:100%;padding:6px 8px}
 :root[data-phone=true] .filters input[type=checkbox]{width:22px}
 :root[data-phone=true] .filters>:is(.search,.muted){grid-column:1/-1}
 :root[data-phone=true] .summary{gap:8px 14px;padding:8px 0;margin:8px 0}
 :root[data-phone=true] .summary strong{font-size:20px;padding-left:4px}
 :root[data-phone=true] :is(.subject-overview,.explanation-section){margin-bottom:10px}
 :root[data-phone=true] :is(.practice-options,.question-notes){margin:10px 0}
 :root[data-phone=true] :is(.explanation-pane>h2,.explanation-heading,.result){font-size:20px;padding-bottom:10px;margin-bottom:10px}
 :root[data-phone=true] .answer-actions{padding:10px 14px}
 :root[data-phone=true] .table-list>table>tbody>tr{padding:14px;margin-bottom:8px;gap:8px}
 :root[data-phone=true] .pager{gap:4px;margin:8px 0;font-size:13px}
 :root[data-phone=true] .startbar,:root[data-phone=true][data-ink-position=bottom] .startbar{bottom:var(--mobile-nav-height);left:0;right:0;border-radius:0;gap:6px 8px;padding:4px 12px;grid-template-columns:repeat(2,minmax(0,1fr))}
 :root[data-phone=true] .startbar label>span{display:none}
 :root[data-phone=true] .startbar-actions{display:flex;grid-column:1/-1;gap:8px;align-items:center}
 :root[data-phone=true] .startbar #selection-count{font-size:13px;margin-right:0;flex:1}
 :root[data-phone=true] .startbar #start{font-size:15px;flex:1;padding:8px}
 :root[data-phone=true] .startbar #download{font-size:0;flex:0 0 44px;width:44px;padding:8px}
 :root[data-phone=true] .startbar #download::before{content:'↓';font-size:22px}
 :root[data-phone=true] .solve-footer,:root[data-phone=true][data-ink-position=bottom] .solve-footer{position:fixed;inset:auto 0 var(--mobile-nav-height);z-index:30;display:flex;gap:6px;margin:0;padding:4px 12px;border-top:1px solid var(--line);border-radius:0;background:var(--paper)}
 :root[data-phone=true] .solve-footer button{min-width:44px;min-height:44px;padding:8px;font-size:15px;flex:1;justify-content:center;white-space:nowrap}
 :root[data-phone=true] .solve-footer #prev{font-size:0;flex:0 0 44px}
 :root[data-phone=true] .solve-footer .spacer,
 :root[data-phone=true] .solve-footer #submit::before,
 :root[data-phone=true] .solve-footer #retry::before,
 :root[data-phone=true] .solve-footer #next::before{display:none}
 :root[data-phone=true] .solve-top{gap:8px;margin-bottom:10px}
 :root[data-phone=true] #qmeta{margin-bottom:10px}
 :root[data-phone=true] #paper{min-height:0}
 :root[data-phone=true] #paper .stem{font-size:15px;line-height:1.75;margin-bottom:12px}
 :root[data-phone=true] :is(.choice,.choice:last-child,.choice.selected,.choice.correct){font-size:15px;min-height:44px;padding:10px;margin:8px 0;gap:8px}
 :root[data-phone=true] .choice>b{font-size:17px;width:28px;height:28px;min-width:28px;flex-basis:28px}
 :root[data-phone=true] :is(.explanation,.point-lesson .explanation-text,.text-content,.text-content details.q){font-size:15px;line-height:1.75}
 :root[data-phone=true] :is(.point-reading,.placeholder){margin-top:10px}
 :root[data-phone=true] :is(.point-actions,.rating){gap:8px;margin:10px 0}
 :root[data-phone=true] .point-lesson{padding:10px 0}
 :root[data-phone=true] .text-content :is(.goal,.card,.memo,.goro){padding:10px 14px;margin:8px 0}
}

/* Filters expand in the document, pushing the list down instead of covering it. */
#question-filters{margin:0 0 12px;border:1px solid var(--line);border-radius:12px;background:var(--paper);min-width:0}
#question-filters>summary{display:flex;align-items:center;gap:12px;min-height:48px;padding:10px 14px;cursor:pointer;font-weight:600;list-style:none}
#question-filters>summary::-webkit-details-marker{display:none}
#question-filters>summary::after{content:'⌄';margin-left:auto;flex:none}
#question-filters[open]>summary::after{transform:rotate(180deg)}
#filter-summary{font-size:14px;font-weight:400;color:var(--muted);overflow-wrap:anywhere;min-width:0}
.filter-panel{padding:0 14px 14px;border-top:1px solid var(--line)}
.filter-panel>p{margin:12px 0}
.filter-groups{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr));margin:16px 0}
.filter-groups[hidden],#filter-advanced[hidden]{display:none}
.filter-groups fieldset{border:0;padding:0;margin:0;min-width:0}
.filter-groups legend{font-weight:600;margin-bottom:8px;padding:0}
.filter-choices{display:flex;flex-wrap:wrap;gap:6px}
.filter-choices label{display:flex;align-items:center;gap:8px;min-height:44px;max-width:100%;margin:0;padding:8px 12px;background:var(--grouped);border:1px solid var(--line);border-radius:8px;cursor:pointer;overflow-wrap:anywhere}
.filter-choices label:has(:checked){color:var(--blue);border-color:var(--blue);background:var(--soft-blue)}
.filter-choices input[type=checkbox]{flex:0 0 20px;width:20px;height:20px;min-height:20px;margin:0;accent-color:var(--blue)}
.filter-subjects{grid-column:1/-1;min-width:0;padding:0;margin:0;border:0}
.filter-subjects>summary{min-height:44px;padding:8px 0;font-weight:600}
.filter-subjects>summary span{font-size:14px;font-weight:400;color:var(--muted);margin-left:8px}
.filter-subjects .filter-choices{margin-top:8px}
#filter-advanced{padding:12px 0;border-top:1px solid var(--line)}
#filter-advanced summary{cursor:pointer;min-height:44px;padding:8px 0;color:var(--muted)}
#version-label{display:flex;flex-wrap:wrap;align-items:center;gap:8px;max-width:100%;margin:8px 0}
#version-label select{max-width:100%;min-width:0}
.filter-panel-actions{display:flex;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:12px}
.filter-panel-actions button{min-height:44px}
#filter-done{color:var(--blue);font-weight:600}
.question-search{margin-bottom:12px}
.question-search input{width:100%;min-width:0;min-height:44px;max-width:100%}
#categories.tabs{display:flex;flex-wrap:wrap;overflow:visible;gap:4px}
#categories.tabs button{flex:0 0 auto;min-width:0;white-space:normal}
#category-list button[role=checkbox]::before{content:'✓';display:inline-grid;place-items:center;flex:0 0 20px;width:20px;height:20px;border:1px solid var(--line);border-radius:5px;color:transparent;background:var(--paper);margin-right:8px}
#category-list button[aria-checked=true]::before{color:var(--paper);background:var(--blue);border-color:var(--blue)}
.category-toggle{overflow-wrap:anywhere;white-space:normal}
@media screen and (max-width:599px){
 .filter-groups{grid-template-columns:minmax(0,1fr);gap:14px}
 #question-filters>summary{flex-wrap:wrap;gap:4px 8px}
 #filter-summary{flex-basis:calc(100% - 32px);order:2}
 #question-filters>summary::after{position:static}
 .filter-choices label{font-size:15px;padding:8px 10px}
 #categories.tabs button{padding:8px 10px}
}
#category-detail:empty,.heading:empty,.point-reading:empty{display:none}
body #v-select .selection-heading{display:flex;flex-direction:row;justify-content:flex-end;margin-bottom:8px}
body #bank-count{font-size:14px;white-space:nowrap;padding:3px 9px;border-radius:12px;background:var(--grouped)}
.category-toggle[aria-expanded=true]{color:var(--blue);background:var(--soft-blue)}
:root[data-tablet=true] body :is(input,select,textarea){font-size:16px!important}
@media screen and (max-width:1199px){
 :root[data-tablet=true]{font-size:16px;line-height:1.65}
 :root[data-tablet=true] main{padding-inline:16px;padding-top:12px}
 :root[data-tablet=true] main :is(.selection,.solve-grid,.text-layout){gap:12px}
 :root[data-tablet=true] :is(.selection-detail,.tanmon-selection .selection-detail,#paper,.explanation-pane,.text-content,.point-reading,.practice-options,.question-notes,#personal-sets,#due-list,#notes-list,#stats){padding:16px}
 :root[data-tablet=true] :is(.heading h1,.text-content h1){font-size:24px;margin:0 0 10px;line-height:1.4}
 :root[data-tablet=true] .tabs{margin-bottom:8px}
 :root[data-tablet=true] :is(.tabs button,.category-toggle){min-height:44px;padding:8px 12px;font-size:16px}
 :root[data-tablet=true] .category-toggle{margin:0}
 :root[data-tablet=true] :is(.summary,.point-actions,.rating){gap:8px 12px;margin:10px 0}
 :root[data-tablet=true] .summary{padding:8px 0}
 :root[data-tablet=true] .summary strong{font-size:22px}
 :root[data-tablet=true] :is(.practice-options,.question-notes,.explanation-section){margin-block:10px}
 :root[data-tablet=true] #paper .stem{font-size:var(--body-size,18px);line-height:1.75;margin-bottom:14px}
 :root[data-tablet=true] .choice{font-size:var(--body-size,18px);min-height:44px;padding:12px;margin:8px 0;gap:10px}
 :root[data-tablet=true] .choice>b{font-size:18px;width:30px;height:30px;min-width:30px;flex-basis:30px}
 :root[data-tablet=true] :is(.explanation,.text-content,.point-lesson .explanation-text){font-size:var(--body-size,18px);line-height:1.75}
 :root[data-tablet=true] .table-list>table>tbody>tr{padding:14px;margin-bottom:8px;gap:8px}
 :root[data-tablet=true] .filters:not(.bank-filters){gap:8px;margin:8px 0}
 :root[data-tablet=true] .text-content :is(.goal,.card,.memo,.goro){padding:12px 16px;margin:10px 0}
}

.category-toggle:has(+ #category-list.hide){display:none}
#question-filters{padding-top:0}

/* One continuous iOS-style segment row, with a visible next segment on overflow. */
#categories.tabs{display:flex;flex-wrap:nowrap;width:fit-content;max-width:100%;overflow-x:auto;overflow-y:hidden;gap:2px;padding:3px;background:var(--line);border:0;border-radius:11px;scrollbar-width:thin;scroll-padding-inline:3px}
#categories.tabs button{flex:0 0 auto;min-width:0;min-height:44px;white-space:nowrap;font-size:14px;line-height:1.25;padding:8px 6px;border:0;border-radius:8px;background:transparent}
#categories.tabs button.active{background:var(--paper);color:var(--blue);box-shadow:0 1px 3px #0002}
#categories.tabs button:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
#list-status:empty,#offline-state:empty,#subitems:empty,#summary:empty{display:none}
#v-select>.practice-options{margin-bottom:8px}
#v-select>#offline-state{margin:8px 0 0}
#subitems{border:0}
#summary{border-top:0}
#list-status{margin:8px 0;min-height:24px}
@media(display-mode:standalone){#install{display:none!important}}
#categories.tabs.has-next{mask-image:linear-gradient(to right,#000 calc(100% - 14px),transparent)}
@media(max-width:400px){#categories.tabs{width:100%;scrollbar-width:none}}

/* UI47: reserve room for sticky controls, including programmatic scrolling. */
:root{--solve-bar-height:64px;--ink-top-offset:0px}
.solve-top{top:var(--ink-top-offset);background:var(--paper);border-radius:0;border-bottom:1px solid var(--line);padding:8px;isolation:isolate}
main:has(#v-solve:not(.hide)) :is(#paper,#qmeta,#qstem,#qchoices,#question-change,#explanation,#original-content,#eimgs,.annotation-block){scroll-margin-top:calc(var(--ink-top-offset) + var(--solve-bar-height) + 16px)}
.filters label:has(input[type=checkbox]),.display-settings label:has(input[type=checkbox]),.filter-choices label{display:flex;flex-direction:row;align-items:center;gap:10px;min-height:44px;cursor:pointer;padding:8px}
.filters label:has(input[type=checkbox]) input{flex:0 0 22px;width:22px;height:22px;margin:0}
.question-change>summary{display:inline-flex;min-height:44px;padding:8px 12px;border-radius:12px;background:var(--soft-blue);font-size:14px;gap:8px}
.question-change>summary::after{content:'⌄';font-size:16px}
.question-change[open]>summary::after{content:'⌃'}
.question-change-body{margin-top:8px;font-size:15px;line-height:1.7}
#categories.tabs.has-next{mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent)}
#toggle-writing{display:none}
#global-ink-toolbar{display:none}
body:has(#global-ink-toolbar){padding-top:0;padding-bottom:0}
:root[data-tablet=true] #toggle-writing{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;font-size:14px;padding:8px}
:root[data-tablet=true] body>header{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;padding:8px 16px;min-height:60px}
:root[data-tablet=true] header .brand{flex:none;width:auto;font-size:18px}
:root[data-tablet=true] header .brand-caption{display:none}
:root[data-tablet=true] header .brand-logo{width:24px;height:24px;margin:0}
:root[data-tablet=true]{--ink-bar-height:82px}
:root[data-tablet=true] header nav{padding:0;order:0;flex:1 1 0%;min-width:0;width:auto;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:thin}
:root[data-tablet=true] header nav :is(button,.review-link){flex:none;min-height:44px;padding:8px 10px;white-space:nowrap;font-size:15px}
:root[data-tablet=true] header>.spacer{display:none}
:root[data-tablet=true] header>button{flex:none;min-width:44px;min-height:44px}
:root[data-tablet=true] main :is(small,.muted,.badge,.remaining,.reading-note,.smq,.meta,.note,.figtag,.figure-ink-state,.reading-label,#qmeta,#qhint,#page-info,#qpos,#session-clock),
:root[data-tablet=true] #question-list :is(.muted,.question-result,.question-result .muted),
:root[data-tablet=true] #question-filters :is(.filter-label,.filter-panel>p,#filter-advanced>summary),
:root[data-tablet=true] .startbar label>span,:root[data-tablet=true] .result-header-detail{font-size:14px;line-height:1.5}
:root[data-tablet=true] #global-ink-toolbar :is(.ink-color,.ink-width){font-size:14px}
:root[data-tablet=true][data-ink-editing=true]:has(:is(#v-solve,#v-text,#v-tanmon):not(.hide)){--ink-top-offset:82px;--ink-bar-height:82px}
:root[data-tablet=true][data-ink-editing=true][data-ink-position=bottom]{--ink-top-offset:0px}
:root[data-tablet=true][data-ink-editing=true] body:has(:is(#v-solve,#v-text,#v-tanmon):not(.hide)){padding-top:var(--ink-top-offset);padding-bottom:var(--ink-bar-height)}
:root[data-tablet=true][data-ink-editing=true] body:has(:is(#v-solve,#v-text,#v-tanmon):not(.hide))>#global-ink-toolbar,
:root[data-tablet=true] dialog[open] #global-ink-toolbar{display:flex}
:root[data-tablet=true] #global-ink-toolbar{padding-bottom:26px}
:root[data-tablet=true] #global-ink-toolbar>small{font-size:14px;line-height:20px;bottom:3px;right:16px;max-width:calc(100% - 32px)}
@media screen and (width < 600px){
 :root[data-phone=true] header nav :is(button[data-short-label],#mobile-more){font-size:13px}
 :root[data-phone=true] #question-filters :is(.filter-label,.filter-panel>p,#filter-advanced>summary),
 :root[data-phone=true] .filters label,:root[data-phone=true] .question-change>summary{font-size:14px}
 :root[data-phone=true] .filters label:has(input[type=checkbox]){gap:8px;padding:8px 4px}
}
@media print{#toggle-writing{display:none!important}}

:root[data-tablet=true] dialog[open]:has(#global-ink-toolbar){padding-top:calc(var(--ink-bar-height) + 18px)}
:root[data-tablet=true][data-ink-position=bottom] dialog[open]:has(#global-ink-toolbar){padding-top:18px}

/* CBT shares the existing exam navigation. */
header nav [data-view="cbt"]::before{content:"▤"}
