/* css/03-session.css —— 练习会话与边栏：会话进度 / 答题栏 / 分析边栏 / 日历热力
 * 拆分自 public/index.html 单文件版（第 3/5 段，保持原始顺序）。
 * 本项目的 CSS 为多轮迭代叠加：后引入的文件覆盖先前的同名规则，
 * 修改样式请优先在本段内追加；不要调整 index.html 中的引入顺序。
 * 本段包含的迭代：
 *   - A study edition: a deliberate opening, an index, and a reading margin.
 *   - Complete the new composition at its native scale.
 *   - Paper for action; ink for the instruments.
 */
/* A study edition: a deliberate opening, an index, and a reading margin. */
.overview-v5 .overview-heading{margin-bottom:28px}
.study-opening,.study-register{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:40px}
.study-opening{padding-bottom:30px;border-bottom:1px solid #d9ddd0;margin-bottom:30px}
.opening-task{padding-top:2px}
.opening-task>.eyebrow{font-size:13px;color:#56664f;line-height:20px}
.opening-task h2{font-family:"Songti SC","STSong","Noto Serif CJK SC",serif;font-size:52px;line-height:1.25;font-weight:600;letter-spacing:0;color:#27352a;margin-top:13px}
.opening-evidence{display:flex;gap:42px;margin-top:20px}
.opening-evidence>div{display:flex;align-items:baseline;gap:11px}
.opening-evidence strong{font-size:28px;font-weight:400;line-height:34px;color:#354e3b}
.opening-evidence small{font-size:16px;margin-left:2px}
.opening-evidence span{font-size:14px;color:#56644f}
.opening-task>.button{margin-top:25px;height:44px;padding:0 20px;font-size:14px}
.overview-v5 .rhythm-panel{padding:0;background:none;border:0;height:auto;box-shadow:none}
.overview-v5 .rhythm-meta{margin-top:9px}
.overview-v5 .rhythm-content{margin-top:12px}
.overview-v5 .rhythm-side{padding-left:20px;border-color:#d9dfd0}
.overview-v5 .rhythm-stat:first-child strong{font-size:34px;line-height:38px}
.overview-v5 .rhythm-stat:last-child strong{font-size:26px;line-height:30px}
.chapter-register>.between{height:28px}
.chapter-register>.between h2{font-family:inherit;font-size:20px;line-height:28px;font-weight:550;color:#2c3d2e}
.chapter-index{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;margin-top:16px}
.study-chapter{display:block;text-align:left;padding:16px 0 17px;border-bottom:1px solid #dddfd2;border-radius:0;min-width:0}
.chapter-caption{display:flex;align-items:center;justify-content:space-between;gap:12px}
.chapter-caption strong{font-size:18px;line-height:26px;font-weight:500;color:#2d3d30}
.chapter-caption .icon{width:15px;height:15px;color:#6e8367;flex:none}
.study-chapter:hover .chapter-caption strong{text-decoration:underline;text-underline-offset:4px}
.study-chapter.is-priority .chapter-caption strong{color:#365e4c;font-weight:600}
.chapter-facts{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:#57644f;margin-top:10px;white-space:nowrap}
.chapter-facts b{font-size:14px;font-weight:400;color:#3f513e}
.chapter-index .track{display:block;margin-top:11px;height:3px;width:100%;background:#d6ddcd;border-radius:1px;overflow:hidden}
.chapter-index .track>span{display:block;height:100%;background:#8b9f83;transform-origin:left;animation:coverage-ink .7s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--row)*60ms)}
.study-chapter.is-priority .track>span{background:#4e7156}
.chapter-register .exam-shortcut{margin-top:19px;padding-top:19px;border-top:0}
.overview-v5 .trend-panel{padding:0;background:none;border:0;box-shadow:none;height:auto}
.overview-v5 .trend-panel .panel-head{padding:0}
.overview-v5 .trend-panel .chart-readout{margin-top:10px}
.overview-v5 .trend-panel .chart{margin-top:8px}
.overview-v5 .summary-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 24px;padding-top:20px;margin-top:22px;border-top:1px solid #d9ddd0}
.overview-v5 .summary-scope{grid-column:1/-1;font-size:14px;font-weight:500;margin:0}
.overview-v5 .summary-stat{padding:0}
.overview-v5 .summary-stat p{font-size:13px;line-height:20px;margin-top:7px}
.overview-v5 .summary-stat.coverage-stat strong{font-size:26px;line-height:34px;color:#4a5c45}
.overview-v5 .summary-stat .mistake-entry strong{font-size:26px;line-height:34px}
.overview-v5 .summary-stat .mistake-entry>span,.overview-v5 .summary-stat>div>span{font-size:13px;line-height:20px}
.overview-v5 .footer-note{margin-top:24px}
body.practice-mode .content{max-width:996px;width:calc(100% - 96px);margin:44px auto 50px;padding:0;min-height:0}
.practice-spread{display:grid;grid-template-columns:170px minmax(0,1fr);gap:96px}
.session-margin{border-right:1px solid #d9dfd0;padding-right:32px;color:#56664f}
.session-label{display:block;font-size:12px;line-height:18px;letter-spacing:.04em}
.session-pagecount{display:flex;align-items:baseline;gap:8px;margin-top:7px}
.session-pagecount strong{font-size:76px;line-height:84px;font-weight:300;color:#78896d;letter-spacing:-3px}
.session-pagecount>span{font-size:14px;color:#6a7960}
.session-progress{height:2px;background:#d9dfd0;margin-top:14px}
.session-progress>span{display:block;height:100%;background:#507254}
.session-page p{font-size:12px;line-height:18px;margin-top:10px;color:#65735d}
.session-page p b{font-weight:400}
.session-answers{display:flex;flex-direction:column;gap:2px;margin-top:29px}
.session-entry{display:flex;align-items:center;justify-content:space-between;min-height:30px;width:100%;padding:3px 10px 3px 0;border:0;border-radius:0;color:#798770;font-size:14px;text-align:left}
.session-entry.current{color:#33563c;font-weight:600;border-right:2px solid #567b57}
.session-entry.current>.num{font-size:18px}
.entry-state{display:flex;align-items:center;justify-content:center;min-width:26px;font-size:11px;font-weight:400;color:#68815c}
.entry-state .icon{width:14px;height:14px;stroke-width:2.2}
.session-entry.is-correct .entry-state{color:#4e7652}
.session-entry.is-wrong .entry-state{color:#9a6846}
.session-entry:hover{color:#2b4530}
.practice-spread .reading-body{min-width:0}
.practice-spread .quiz-context{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 22px;padding:0;border:0}
.practice-spread .quiz-context>div:first-child{width:auto;font-size:14px;line-height:24px;color:#52664c}
.practice-spread .question-title{font-family:"Songti SC","STSong","Noto Serif CJK SC",serif;font-size:28px;line-height:1.8;font-weight:600;letter-spacing:0;margin-bottom:27px;color:#27362a}
.practice-spread .options .option{min-height:72px;padding:16px 18px;gap:15px;border-radius:0}
.practice-spread .options .option .option-text{font-size:18px;line-height:1.8}
.practice-spread .question-actions{margin-top:22px}
.practice-spread .question-actions .keyboard-note,.practice-spread .question-actions .keyboard-note kbd{font-size:13px}
.reading-night .session-margin{border-color:#47523f;color:#bdcbb1}
.reading-night .session-pagecount strong{color:#829675}
.reading-night .session-pagecount>span,.reading-night .session-page p{color:#a2b096}
.reading-night .session-progress{background:#4a5542}
.reading-night .session-progress>span{background:#a1b98d}
.reading-night .session-entry{color:#91a084}
.reading-night .session-entry.current{color:#d9e3cd;border-color:#a5be90}
.reading-night .session-entry.current .entry-state{color:#b6caa1}
.reading-night .session-entry.is-correct .entry-state{color:#a8c194}
.reading-night .session-entry.is-wrong .entry-state{color:#cfab82}
.reading-night .session-entry:hover{color:#d9e3cd}
.reading-night .practice-spread .question-title{color:#e4e5d9}
@keyframes coverage-ink{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:1100px){.study-opening,.study-register{gap:30px}.opening-task h2{font-size:45px}.opening-evidence{gap:27px}.chapter-index{column-gap:23px}.chapter-caption strong{font-size:16px}.chapter-facts{font-size:12px}.chapter-facts b{font-size:13px}}
@media(max-width:1000px){body.practice-mode .content{width:calc(100% - 64px);margin:32px auto 40px}.practice-spread{grid-template-columns:120px minmax(0,1fr);gap:40px}.session-margin{padding-right:20px}.session-pagecount strong{font-size:64px;line-height:74px}.practice-spread .question-title{font-size:26px}}
@media(max-width:760px){.study-opening,.study-register{grid-template-columns:1fr;gap:28px}.opening-task h2{font-size:40px}.study-opening{padding-bottom:28px;margin-bottom:28px}.opening-evidence{gap:35px}.chapter-index{column-gap:22px}.chapter-caption strong{font-size:16px}.chapter-facts{flex-direction:column;gap:2px}.overview-v5 .summary-metrics{margin-top:20px}.overview-v5 .rhythm-content{grid-template-columns:minmax(0,281px) minmax(75px,1fr)}body.practice-mode .content{width:calc(100% - 36px);margin:24px auto 34px}.practice-spread{grid-template-columns:1fr;gap:28px}.session-margin{display:grid;grid-template-columns:72px minmax(0,1fr);gap:18px;padding:0;border:0}.session-pagecount strong{font-size:44px;line-height:52px;letter-spacing:-1px}.session-pagecount{gap:4px;margin-top:3px}.session-pagecount>span{font-size:12px}.session-progress,.session-page p{display:none}.session-answers{flex-direction:row;gap:4px;margin:12px 0 0;overflow-x:auto}.session-entry{width:34px;min-width:34px;min-height:44px;padding:3px;flex-direction:column;justify-content:flex-start;gap:5px}.session-entry.current{border-right:0;border-bottom:2px solid #567b57}.session-entry.current>.num{font-size:14px}.entry-state{font-size:0;min-width:0}.entry-state .icon{width:12px;height:12px}.practice-spread .quiz-context{margin-bottom:18px;gap:12px}.practice-spread .quiz-context>div:first-child{font-size:12px;gap:8px}.practice-spread .question-title{font-size:24px;line-height:1.85}.practice-spread .options .option{padding:15px 12px}.practice-spread .options .option .option-text{font-size:16px}.practice-spread .question-actions .keyboard-note{display:none}}
@media(prefers-reduced-motion:reduce){.chapter-index .track>span{animation:none}}
/* Complete the new composition at its native scale. */
.chapter-index .track{max-width:none;flex:none}
.overview-v5 .trend-panel .chart{width:100%;height:auto;margin:8px 0 0;max-height:none}
.overview-v5 .overview-heading{margin-bottom:22px}
.overview-v5 .study-opening{padding-bottom:22px;margin-bottom:24px}
.overview-v5 .study-chapter{padding:13px 0 14px}
.overview-v5 .summary-metrics{padding-top:16px;margin-top:18px;row-gap:10px}
.overview-v5 .footer-note{margin-top:15px}
body:not(.practice-mode) .content:has(.overview-v5){padding-top:24px;padding-bottom:22px}
/* Paper for action; ink for the instruments. */
.overview-v6 .overview-heading{margin-bottom:24px}
.desk-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(340px,1fr);gap:44px;align-items:start}
.overview-v6 .opening-task h2{font-size:42px;line-height:1.3;margin-top:10px}
.overview-v6 .opening-evidence{margin-top:16px;gap:38px}
.overview-v6 .opening-task>.button{display:flex;justify-content:space-between;width:100%;height:48px;margin-top:23px;padding:0 20px;background:#293b2d;font-size:15px;box-shadow:inset 0 1px 0 #ffffff12,0 1px 0 #1f2f23}
.overview-v6 .opening-task>.button:hover{background:#344e3a}
.overview-v6 .chapter-register{margin-top:34px}
.overview-v6 .chapter-index{margin-top:15px;column-gap:27px}
.overview-v6 .study-chapter{padding:18px 0 20px}
.overview-v6 .chapter-caption strong{font-size:17px}
.overview-v6 .chapter-facts{flex-direction:row;justify-content:space-between;gap:10px;margin-top:9px;font-size:13px;line-height:19px}
.overview-v6 .chapter-facts b{font-size:14px}
.overview-v6 .chapter-index .track{margin-top:12px}
.overview-v6 .exam-shortcut{margin-top:20px;padding-top:0}
.overview-v6 .footer-note{margin-top:22px}
.analysis-rail{padding:24px;background:#29312a;color:#d9e0cf;border-radius:2px}
.overview-v6 .analysis-rail .summary-metrics{margin:0;padding:0;border:0;gap:10px 22px}
.overview-v6 .analysis-rail .summary-scope{color:#c5d0b9;font-size:14px;line-height:20px}
.overview-v6 .analysis-rail .summary-stat>div>span,.overview-v6 .analysis-rail .summary-stat .mistake-entry>span{color:#b8c7aa;font-size:13px;line-height:19px}
.overview-v6 .analysis-rail .summary-stat.coverage-stat strong{font-size:32px;line-height:38px;color:#e0e7d5}
.overview-v6 .analysis-rail .summary-stat .mistake-entry{color:#c4d1b6}
.overview-v6 .analysis-rail .summary-stat .mistake-entry strong{font-size:28px;line-height:38px;color:#d5dec9}
.overview-v6 .analysis-rail .summary-stat p{font-size:12px;line-height:18px;color:#aab99b;margin-top:5px}
.analysis-rail .trend-panel,.analysis-rail .rhythm-panel{margin-top:18px;padding-top:18px;border-top:1px solid #475441}
.overview-v6 .analysis-rail .panel-title{font-size:15px;line-height:22px;font-weight:500;color:#dce3d2}
.analysis-rail .segmented{background:#333e30;border:0}
.analysis-rail .segmented button{color:#acbc9c;font-size:12px;padding:4px 7px}
.analysis-rail .segmented button.active{background:#a7ba93;color:#283923;box-shadow:none}
.overview-v6 .analysis-rail .chart-readout{margin-top:7px}
.analysis-rail .chart-period,.analysis-rail .rhythm-meta{font-size:13px;line-height:18px;color:#adbc9f}
.overview-v6 .analysis-rail .chart{width:100%;height:auto;margin:8px 0 0}
.analysis-rail .chart .axis-value,.analysis-rail .chart .axis-date{font-size:15px;fill:#b7c4aa;font-weight:400}
.analysis-rail .chart .mean-caption{font-size:15px;fill:#a7b798}
.analysis-rail .chart .latest-caption{font-size:15px;fill:#dce6cc;font-weight:500}
.analysis-rail .chart .chart-rule{stroke:#6f7d64;opacity:.4}
.analysis-rail .chart .mean-rule{stroke:#9aaa87;opacity:.8}
.analysis-rail .chart .trend-line{stroke:#bacba7}
.analysis-rail .chart .latest-point{fill:#d1debf;stroke:#29312a}
.overview-v6 .analysis-rail .rhythm-meta{margin-top:7px}
.overview-v6 .analysis-rail .rhythm-content{grid-template-columns:minmax(0,267px) minmax(72px,1fr);gap:14px;margin-top:10px}
.overview-v6 .analysis-rail .rhythm-side{padding-left:13px;border-color:#4d5a45}
.overview-v6 .analysis-rail .rhythm-stat>span{font-size:12px;color:#b7c6a7}
.overview-v6 .analysis-rail .rhythm-stat:first-child strong{font-size:26px;line-height:31px;color:#d4dfc2}
.overview-v6 .analysis-rail .rhythm-stat:last-child strong{font-size:24px;line-height:29px;color:#d4dfc2}
.analysis-rail .rhythm-stat small{font-size:12px}
.analysis-rail .calendar-labels,.analysis-rail .calendar-week time{font-size:13px;color:#b7c6a7}
.analysis-rail .heat-cell{height:24px;border-radius:1px}
.analysis-rail .heat-cell.is-empty,.analysis-rail .heat-key>span:first-child i{border-color:#8b9b7c}
.analysis-rail .heat-cell.today:after{background:#d6e0c4}
.analysis-rail .heat-key{font-size:13px;line-height:20px;color:#c4d1b5;gap:9px;margin-top:10px}
body.practice-mode .content{max-width:942px}
.practice-spread{grid-template-columns:148px minmax(0,1fr);gap:64px}
.session-margin{padding-right:24px}
.session-pagecount strong{font-size:56px;line-height:64px;letter-spacing:-2px}
.session-pagecount{gap:8px}
.session-answers{margin-top:24px}
.practice-spread .question-title{font-size:26px;line-height:1.7;font-weight:500}
.practice-spread .options .option.selected{box-shadow:inset 2px 0 0 #4e7552;background:#e9efdf}
.reading-night .practice-spread .options .option.selected{box-shadow:inset 2px 0 0 #bfd2ab;background:#394933}
.reading-night .practice-spread .options .option .letter{color:#c9d5bb}
body.practice-mode.reading-night,body.practice-mode.reading-night .topbar{background:#29312a}
@media(max-width:1100px){.desk-grid{gap:30px}.analysis-rail{padding:22px}.overview-v6 .chapter-caption strong{font-size:16px}.overview-v6 .opening-task h2{font-size:38px}}
@media(max-width:1000px){.practice-spread{grid-template-columns:120px minmax(0,1fr);gap:40px}.session-margin{padding-right:20px}.desk-grid{grid-template-columns:minmax(0,1.4fr) minmax(320px,1fr);gap:24px}.overview-v6 .chapter-index{grid-template-columns:1fr}.overview-v6 .chapter-facts{flex-direction:row}.overview-v6 .study-chapter{padding:15px 0}}
@media(max-width:760px){.desk-grid{grid-template-columns:1fr;gap:28px}.overview-v6 .chapter-index{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:22px}.overview-v6 .chapter-facts{flex-direction:column}.overview-v6 .opening-task h2{font-size:36px}.overview-v6 .opening-evidence{gap:26px}.analysis-rail{padding:22px}.practice-spread{grid-template-columns:1fr;gap:26px}.session-margin{grid-template-columns:72px minmax(0,1fr);padding:0}.session-pagecount strong{font-size:44px;line-height:52px}.session-answers{margin-top:12px}.practice-spread .question-title{font-size:24px;line-height:1.75}.overview-v6 .analysis-rail .rhythm-content{grid-template-columns:minmax(0,1fr) 75px;gap:12px}}
.overview-v6 .analysis-rail .trend-panel,.overview-v6 .analysis-rail .rhythm-panel{border-radius:0}
.analysis-rail .heat-cell{border:0}
.analysis-rail .heat-cell.is-empty{border:1px solid #8b9b7c}
