.night-mode-controls { grid-column:1 / -1; display:flex; justify-content:flex-end; }
.night-mode-toggle { display:inline-flex; align-items:center; justify-content:center; gap:8px; flex:none; min-height:44px; font:600 12px/1.4 -apple-system,BlinkMacSystemFont,"Yu Gothic",Meiryo,sans-serif; color:inherit; cursor:pointer; white-space:nowrap; }
.night-mode-toggle input { appearance:none; -webkit-appearance:none; position:relative; width:40px; height:24px; margin:0; border:1px solid #748797; border-radius:16px; background:#647687; cursor:pointer; flex:none; }
.night-mode-toggle input::before { content:""; position:absolute; top:2px; left:2px; width:18px; height:18px; border-radius:50%; background:#fff; }
.night-mode-toggle input:checked { background:#4f98bd; border-color:#7ab8d6; }
.night-mode-toggle input:checked::before { transform:translateX(16px); }
.night-mode-toggle input:focus-visible { outline:3px solid #edb752; outline-offset:4px; }
.night-mode-toggle.compact { width:44px; }
.night-mode-toggle.compact > span { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.home-main > .section-heading { flex-wrap:wrap; }
.home-main > .section-heading > p { margin-left:auto; }

html[data-color-mode="dark"] {
  color-scheme:dark;
  --night-bg:#000000; --night-surface:#161616; --night-raised:#242424;
  --night-ink:#fafafa; --night-muted:#cccccc; --night-line:#505050;
  --night-blue:#a7c7de; --night-green:#8edbb4; --night-red:#ffaaa5;
  --bg:var(--night-bg); --page:var(--night-bg); --paper:var(--night-surface);
  --card:var(--night-surface); --surface:var(--night-surface); --surface-soft:var(--night-raised);
  --wash:var(--night-raised); --ink:var(--night-ink); --text:var(--night-ink);
  --muted:var(--night-muted); --line:var(--night-line); --brand:var(--night-blue);
  --primary:#707070; --primary-dark:var(--night-ink); --primary-light:var(--night-muted);
  --red:var(--night-red); --green:var(--night-green); --success:var(--night-green); --danger:var(--night-red);
  --ok:var(--night-green); --ok-bg:#193b30; --ng:var(--night-red); --ng-bg:#432628;
  --shadow:0 5px 18px #0003;
  background:var(--night-bg) !important; color:var(--night-ink);
}
html[data-color-mode="dark"] body {
  background:var(--night-bg) !important; color:var(--night-ink) !important;
  --menu-ink:var(--night-ink); --menu-muted:var(--night-muted); --menu-line:var(--night-line);
  --menu-brand:#111111; --menu-tint:var(--night-raised); --menu-accent:#d0d0d0;
  --score-ink:var(--night-ink); --score-muted:var(--night-muted); --score-line:var(--night-line);
  --oq-accent:#b6d4c7; --oq-dark:var(--night-ink);
}
html[data-color-mode="dark"] :is(.app,.screen,.book-main) { background:var(--night-bg) !important; color:var(--night-ink); }
html[data-color-mode="dark"] :is(.brand-bar,.book-header,.hero,.topbar,.quiz-header) { background:#111111 !important; color:var(--night-ink) !important; box-shadow:none !important; }
html[data-color-mode="dark"] body[data-subject-theme] .screen:not([id="quizScreen"]) :is(.hero,.topbar) { background:#111111 !important; }
html[data-color-mode="dark"] body[data-subject-theme] #homeScreen .hero-title h1 { color:var(--night-ink); }
html[data-color-mode="dark"] .subject-card { background:var(--night-surface); border-color:var(--night-line); --art-bg:#303030; --art-line:#505050; --subject:#a7c7de; }
html[data-color-mode="dark"] .subject-card.tekisei { --subject:#86d7b1; --art-bg:#20332d; --art-line:#405a4e; }
html[data-color-mode="dark"] .subject-card.senmon { --subject:#efbf87; --art-bg:#342c25; --art-line:#5f4b39; }
html[data-color-mode="dark"] .subject-number { color:var(--subject); }
html[data-color-mode="dark"] body[data-subject-theme] .screen:not([id="quizScreen"]) .big-btn,
html[data-color-mode="dark"] body[data-subject-theme] #homeScreen #openSettingsBtn,
html[data-color-mode="dark"] body[data-subject-theme] #homeScreen :is(#resumeYearBtn,#resumeCategoryBtn) { background:var(--night-surface) !important; color:var(--night-ink) !important; border-color:var(--night-line) !important; }
html[data-color-mode="dark"] body[data-subject-theme] #homeScreen #openPastMenuBtn { background:#3a3a3a !important; color:var(--night-ink) !important; border-color:#606060 !important; }
html[data-color-mode="dark"] body[data-subject-theme] .screen:not([id="quizScreen"]) .big-btn.gray { background:transparent !important; color:var(--night-blue) !important; }
html[data-color-mode="dark"] :is(.big-btn small,.menu-icon,.menu-arrow,.night-mode-controls) { color:var(--night-muted) !important; }
html[data-color-mode="dark"] body[data-subject-theme] #homeScreen .home-progress-item :is(b,span) { color:var(--night-ink); }
html[data-color-mode="dark"] :is(.qText,.inlineChoice,.card,.block,.miniBox,.score-row,.review-card,.weak-card,.score-box,.category-card,.score-metric-card,.category-score-item,.year-tools-card,.oq-start,.oq-panel,.oq-card,.sheet,.legendItem) { background:var(--night-surface) !important; color:var(--night-ink) !important; border-color:var(--night-line) !important; }
html[data-color-mode="dark"] body[data-subject-theme] .screen:not([id="quizScreen"]) :is(.score-metric-card,.score-box,.category-score-item) { background:var(--night-surface) !important; }
html[data-color-mode="dark"] body[data-subject-theme] .screen:not([id="quizScreen"]) :is(.score-dashboard-card,.score-chart-card,.score-insight-card,.card) { background:transparent !important; }
html[data-color-mode="dark"] :is(.fixed-page-nav,.quiz-floating .counter,.nav-btn,.pill,.jump-btn,.choice,.guide-btn,.category-mini-btn,.setting-chip,.action-btn.gray,.oq-button,.oq-quick-count button) { background:var(--night-raised) !important; color:var(--night-ink) !important; border-color:var(--night-line) !important; box-shadow:none !important; }
html[data-color-mode="dark"] body[data-subject-theme] .screen:not([id="quizScreen"]) :is(.category-mini-btn,.action-btn.gray,.setting-chip) { background:var(--night-raised) !important; color:var(--night-ink) !important; border-color:var(--night-line) !important; }
html[data-color-mode="dark"] :is(.answerDock,.oq-answer-dock) { background:#111111 !important; border-color:var(--night-line) !important; box-shadow:0 -4px 16px #0004 !important; }
html[data-color-mode="dark"] .dockTitle { color:var(--night-muted); }
html[data-color-mode="dark"] :is(.closeBtn,.oq-button.primary,.guide-btn.primary,.action-btn.teal,.pill.active,.category-filter-btn.active) { background:#414141 !important; color:var(--night-ink) !important; }
html[data-color-mode="dark"] #modalBody :is(.explain-main,.explain-support,.choice-explain-item) { background:var(--night-surface) !important; color:var(--night-ink) !important; border-color:var(--night-line) !important; }
html[data-color-mode="dark"] #modalBody :is(.explain-main,.explain-support)::before { color:var(--night-blue); background:var(--night-raised); }
html[data-color-mode="dark"] :is(.category-list-btn,.category-filter-btn,.zoomBtn) { background:var(--night-raised) !important; color:var(--night-ink) !important; }
html[data-color-mode="dark"] :is(.app-update-link,.pwa-update-notice a) { color:var(--night-blue); }
html[data-color-mode="dark"] :is(.choice.correct,.jump-btn.correct,.oq-answer.correct-choice,.feedback.ok,.oq-result-feedback.good) { background:#193b30 !important; color:var(--night-green) !important; border-color:#578574 !important; }
html[data-color-mode="dark"] :is(.choice.wrong,.jump-btn.wrong,.oq-answer.wrong-choice,.feedback.ng,.oq-result-feedback.bad) { background:#432628 !important; color:var(--night-red) !important; border-color:#a16a70 !important; }
html[data-color-mode="dark"] .oq-answer { background:var(--night-raised); }
html[data-color-mode="dark"] .oq-answer[data-value="true"] { color:var(--night-green); }
html[data-color-mode="dark"] .oq-answer[data-value="false"] { color:var(--night-red); }
html[data-color-mode="dark"] :is(.modeBadge,.tag,.score-badge,.blankBox,.formula,.formulaDisplay,.formula-label,.compare dt,.truth-table th,.blank,.diagram-switch,.mode-switch) { background:var(--night-raised) !important; color:var(--night-ink) !important; border-color:var(--night-line) !important; }
html[data-color-mode="dark"] :is(.textbook-return-link,.textbook-practice-controls label,.textbook-practice-nav h2) { color:var(--night-ink); }
html[data-color-mode="dark"] .textbook-return-link { background:var(--night-raised); border-color:var(--night-line); }
html[data-color-mode="dark"] :is(.blank.revealed,.important-keyword,.formula-keyword,.answer-keyword,.term-actual,.term-target) { background:#3a3a3a !important; color:var(--night-ink) !important; }
html[data-color-mode="dark"] :is(.wrong-keyword,.related-alert,.term,.study-save-warning) { color:var(--night-red) !important; }
html[data-color-mode="dark"] .wrong-keyword { background:#432628 !important; }
html[data-color-mode="dark"] .correct-keyword { background:#193b30 !important; color:var(--night-green) !important; }
html[data-color-mode="dark"] .term.blue { color:var(--night-blue) !important; }
html[data-color-mode="dark"] :is(.modal) { background:#0009 !important; }
html[data-color-mode="dark"] :is(.sheetTop,.score-tabs) { background:var(--night-surface) !important; }
html[data-color-mode="dark"] body[data-subject-theme] :is(#scoreYearScreen,#scoreScreen,#categoryScoreScreen) { --score-ink:var(--night-ink); --score-muted:var(--night-muted); }
html[data-color-mode="dark"] body[data-subject-theme] :is(.score-tab,.score-mode-btn) { background:var(--night-surface); color:var(--night-muted); }
html[data-color-mode="dark"] body[data-subject-theme] :is(.score-tab[aria-selected="true"],.score-mode-btn[aria-pressed="true"]) { background:var(--night-raised); color:var(--night-blue); }
html[data-color-mode="dark"] body[data-subject-theme] :is(.score-kpi:last-child strong,.score-reset summary) { color:var(--night-red); }
html[data-color-mode="dark"] :is(.sheetTitle,.card-title,.score-card-title,.category-card-title,.score-big,.score-comment,.score-metric-value,.radar-legend-item b,.oq-statement,.oq-start h2,.oq-section-heading h2,.oq-subheading,.oq-topic-button strong,.oq-category-button strong,.reader-heading h1,.book-section h2,#article h3) { color:var(--night-ink) !important; }
html[data-color-mode="dark"] :is(.small-note,.noteText,.category-card-sub,.score-card-sub,.score-metric-label,.score-metric-sub,.oq-note,.oq-count-label,.oq-origin,.oq-prompt,.oq-quiz-meta,.oq-count-summary,.oq-count-badge,.oq-category-count,.oq-category-button small,.study-time-line,.study-time-details,.radar-legend-item span) { color:var(--night-muted) !important; }
html[data-color-mode="dark"] :is(.block p,.bullet li,.score-row,.inlineHelp,.oq-explanation,.oq-source-details,.point,.diagram-note) { color:var(--night-ink) !important; }
html[data-color-mode="dark"] :is(.study-time-line strong,.study-time-details dd) { color:var(--night-ink); }
html[data-color-mode="dark"] :is(.book-main a,.oq-details summary,.catalog-back,.contents-link) { color:var(--night-blue) !important; }
html[data-color-mode="dark"] :is(.reader-tools,.section-nav,.related-practice-toolbar) { background:var(--night-surface); border-color:var(--night-line); }
html[data-color-mode="dark"] :is(.mode-switch button[aria-pressed="true"],.diagram-switch button[aria-pressed="true"],.section-tab[aria-current="page"],.oq-quick-count button[aria-pressed="true"]) { background:#454545 !important; color:var(--night-ink) !important; }
html[data-color-mode="dark"] :is(.mode-switch button,.diagram-switch button,.page-arrow,.section-tab,.icon-button) { color:var(--night-muted); }
html[data-color-mode="dark"] :is(.mode-switch button,.diagram-switch button,.page-arrow,.section-tab,.icon-button,.group-row,.lesson-row,.exam-list a,.resume):hover { background:var(--night-raised); }
html[data-color-mode="dark"] :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea) { background:var(--night-raised) !important; color:var(--night-ink) !important; border-color:var(--night-line) !important; }
html[data-color-mode="dark"] :is(input,textarea)::placeholder { color:var(--night-muted); opacity:1; }
html[data-color-mode="dark"] :is(.warning,#localSaveNotice,.pwa-update-notice) { background:#3b3022 !important; color:#f3cb94 !important; border-color:#997647 !important; }
html[data-color-mode="dark"] :is(.score-table,.category-score-table,.truth-table) :is(th,td) { background:var(--night-surface) !important; color:var(--night-ink) !important; border-color:var(--night-line) !important; }

html[data-color-mode="dark"] #calcCategoryScreen .calc-training-topic { background:var(--night-surface); color:var(--night-ink); border-color:var(--night-line); }
html[data-color-mode="dark"] #calcCategoryScreen :is(.calc-training-topic h3,.calc-topic-stat,.calc-training-group h2) { color:var(--night-ink); }
html[data-color-mode="dark"] #calcCategoryScreen .calc-training-group h2 { border-color:var(--night-line); }
html[data-color-mode="dark"] #calcCategoryScreen :is(.calc-topic-hint,#calcTrainingVisibleCount) { color:var(--night-muted); }
html[data-color-mode="dark"] #calcCategoryScreen .calc-training-order span { background:var(--night-raised); color:var(--night-ink); border-color:var(--night-line); }
html[data-color-mode="dark"] #calcCategoryScreen .calc-training-order input:checked+span { background:#414141; color:var(--night-ink); border-color:var(--night-blue); }
html[data-color-mode="dark"] #calcCategoryScreen .calc-training-order input:focus-visible+span { outline-color:var(--night-blue); }
html[data-color-mode="dark"] #calcCategoryScreen .calc-topic-actions button { background:var(--night-raised); color:var(--night-ink); border-color:var(--night-line); }
html[data-color-mode="dark"] #calcCategoryScreen .calc-topic-actions button:first-child { background:#414141; border-color:#707070; }
html[data-color-mode="dark"] #calcCategoryScreen .calc-topic-actions button:not(:disabled):hover { background:#414141; border-color:var(--night-blue); }
html[data-color-mode="dark"] #calcCategoryScreen .calc-topic-actions button:focus-visible { outline:2px solid var(--night-blue); outline-offset:2px; }
html[data-color-mode="dark"] #calcCategoryScreen progress { color:var(--night-blue); accent-color:var(--night-blue); background:var(--night-raised); }
html[data-color-mode="dark"] #calcCategoryScreen progress::-webkit-progress-bar { background:var(--night-raised); }
html[data-color-mode="dark"] #calcCategoryScreen progress::-webkit-progress-value { background:var(--night-blue); }
html[data-color-mode="dark"] #calcCategoryScreen progress::-moz-progress-bar { background:var(--night-blue); }

html[data-color-mode="dark"] #nonCalcTopicScreen .action-btn.teal { background:#414141 !important; color:var(--night-ink) !important; border-color:#707070 !important; }
html[data-color-mode="dark"] #nonCalcTopicScreen fieldset { background:var(--night-raised); border-color:var(--night-line); }
html[data-color-mode="dark"] #nonCalcTopicScreen input[type="radio"] { accent-color:var(--night-blue); }

/* Keep source diagrams on paper: inversion would change their technical meaning. */
html[data-color-mode="dark"] :is(.figureWrap,.figurePanel,.singlePlate,.radar-chart,figure svg) { --ink:#26343e; --text:#26343e; color:#26343e; }
html[data-color-mode="dark"] :is(.figureWrap,.figurePanel,.singlePlate,.radar-chart) { background:#f4f5f6 !important; }
html[data-color-mode="dark"] :is(.figureHead,.figurePanelTitle) { color:#26343e !important; }
html[data-color-mode="dark"] :is(.figureSub) { color:#52616e; }
html[data-color-mode="dark"] figure figcaption { color:var(--night-muted); }
html[data-color-mode="dark"] .diagram-view { color:var(--night-muted) !important; }
html[data-color-mode="dark"] :is(.soil-keywords,.dam-keywords) .figure-term { background:var(--night-raised); color:var(--night-red); }
html[data-color-mode="dark"] :is(.soil-keywords,.dam-keywords) .figure-term.revealed { background:#3a3a3a; }
html[data-color-mode="dark"] :is(img,figure svg,.radar-chart svg) { filter:none; }
