@layer reset,base,components,responsive;
@layer reset{*{box-sizing:border-box}body,h1,h2,h3,p,blockquote{margin:0}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}img{max-width:100%}[hidden]{display:none!important}}
@layer base{
:root{--ink:#1f1f1f;--muted:#686b70;--line:#e2e5e8;--soft:#f1f5f8;--mark:#fff7ca;--radius:10px;--reading-size:20px;color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;color:var(--ink);background:#fff;font-size:15px;line-height:1.7}
body{min-width:320px}h1,h2,h3{font-weight:550;line-height:1.35;text-wrap:balance}h1{font-size:48px;letter-spacing:-1px}h2{font-size:29px}h3{font-size:20px}p{overflow-wrap:anywhere}a{text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:5px}button{color:inherit;background:transparent;border:1px solid var(--line);border-radius:6px;padding:7px 12px}button:hover{background:var(--soft)}button:disabled{opacity:.6;cursor:wait}input,textarea,select{background:#fff;color:var(--ink);border:1px solid #b8bec5;border-radius:6px;padding:10px 12px}textarea{width:100%;resize:vertical;line-height:1.8}label{display:block}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #354b70;outline-offset:4px}::selection,mark{background:var(--mark);color:var(--ink)}hr{border:0;border-top:1px solid var(--line);margin:24px 0}small,.small{font-size:12px}pre{white-space:pre-wrap;background:var(--soft);padding:20px;border-radius:var(--radius)}
}
@layer components{
.wrap{width:min(1200px,calc(100% - 96px));margin-inline:auto}.narrow{max-width:800px}.muted{color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:1.8px;line-height:1.6;font-weight:600;color:var(--muted)}.tiny-line{display:inline-block;width:22px;height:1px;background:var(--ink);vertical-align:middle;margin-right:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip{position:fixed;top:-100px;left:12px;background:#fff;padding:12px;z-index:20}.skip:focus{top:12px}header{border-bottom:1px solid var(--line);background:rgba(255,255,255,.98);position:relative;z-index:5}.header-inner{width:min(1360px,calc(100% - 80px));height:91px;display:flex;align-items:center;gap:40px;margin:auto}.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}.brand:hover{text-decoration:none}.brand-mark{width:39px;height:44px;border:1px solid var(--ink);display:grid;place-items:center;font-family:'Songti SC','SimSun',serif;font-size:28px;line-height:1}.brand-name{font-size:21px;line-height:1.2;font-weight:600;letter-spacing:2px}.brand-ai{font-weight:400;letter-spacing:0;font-size:16px}.brand-name small{display:block;font-size:8px;letter-spacing:2px;margin-top:6px;font-weight:500}nav{display:flex;gap:32px;align-items:center;margin-left:auto;font-size:13px}nav a{position:relative;padding:8px 0}nav a[aria-current]{font-weight:650}nav a[aria-current]:after{content:'';width:15px;height:2px;background:var(--ink);position:absolute;bottom:0;left:0}.search-link{margin-left:28px;padding-left:26px;border-left:1px solid var(--line);font-size:12px;display:flex;align-items:center;gap:9px}.search-link span:first-child{font-size:24px;line-height:1}.mobile-menu{display:none}#mobile-nav{border-top:1px solid var(--line);padding:20px 24px;flex-wrap:wrap;margin:0}
.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:85px;padding-block:82px 76px;align-items:center}.hero h1{font-size:clamp(42px,4.2vw,62px);line-height:1.45;letter-spacing:-1.5px;margin-top:23px;font-family:'Songti SC','STSong','SimSun',serif;font-weight:600}.hero-description{font-size:16px;color:var(--muted);line-height:1.95;margin-top:23px}.actions{display:flex;align-items:center;gap:26px;flex-wrap:wrap;margin-top:27px}.button{display:inline-flex;align-items:center;justify-content:center;gap:26px;padding:12px 23px;border-radius:var(--radius);font-size:13px;border:1px solid var(--ink);font-weight:550;min-height:46px}.button:hover{text-decoration:none}.primary{background:var(--ink);color:#fff}.primary:hover{background:#34373b}.secondary{background:#fff;color:var(--ink);border-color:var(--line)}.text-button{font-size:13px;font-weight:500;border:0;padding:0;border-radius:0;background:none}.text-button:hover{background:none;text-decoration:underline;text-underline-offset:5px}.hero-footnote{font-size:11px;color:var(--muted);margin-top:30px;display:flex;gap:12px;align-items:center}.hero-reading{min-height:365px;background:var(--soft);position:relative;padding:26px 28px 22px;display:flex;flex-direction:column;justify-content:space-between;border-radius:2px}.reading-label{font-size:10px;color:var(--muted);display:flex;justify-content:space-between;letter-spacing:1px}.vertical-label{position:absolute;right:28px;top:78px;writing-mode:vertical-rl;font-family:'Songti SC','SimSun',serif;font-size:15px;letter-spacing:8px;border-left:1px solid #c9ced3;padding-left:14px}.hero-reading blockquote{font-family:'Songti SC','STSong','SimSun',serif;font-size:33px;line-height:2.0;letter-spacing:2px;margin-left:20px;padding-block:27px 39px}.quote-bottom{border-top:1px solid #d5dce1;padding-top:16px;display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted)}.quote-bottom a{color:var(--ink);font-size:11px}.entry-strip{display:flex;justify-content:space-between;gap:20px;padding-block:22px;border-block:1px solid var(--line);font-size:12px}.entry-strip>span{color:var(--muted);font-size:11px}.section{padding-block:65px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:29px}.section-heading h2{margin-top:10px}.book-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.book-card{display:flex;padding:30px 23px 26px;gap:21px;transition:background .18s}.book-card+.book-card{border-left:1px solid var(--line)}.book-card:hover{background:var(--soft);text-decoration:none}.book-number{font-family:'Songti SC','SimSun',serif;writing-mode:vertical-rl;font-size:28px;border-right:1px solid var(--line);padding-right:14px;line-height:1;min-height:150px}.book-card small{font-size:10px;color:var(--muted)}.book-card h3{font-size:20px;margin-block:8px 12px}.book-card p{font-size:12px;color:var(--muted);max-width:225px;min-height:48px;line-height:1.9}.book-card .muted{display:flex;justify-content:space-between;font-size:10px;margin-top:22px}.source-note{font-size:11px;color:var(--muted);margin-top:18px}.source-note a{margin-left:8px}.practice-band{background:var(--soft);padding-block:54px;margin-top:0}.practice-grid{display:grid;grid-template-columns:1fr 1fr;gap:90px}.practice-grid h2{font-family:'Songti SC','SimSun',serif;font-size:35px;margin-top:19px;line-height:1.65}.practice-grid p{font-size:14px;color:#565d65;line-height:2}.steps{list-style:none;padding:0;margin:26px 0}.steps li{display:flex;gap:20px;padding-block:12px;border-bottom:1px solid #dce2e7;font-size:13px}.steps li span{font-size:10px;color:var(--muted);padding-top:3px}.steps small{font-size:11px;color:var(--muted);margin-left:auto}.source-banner{display:flex;gap:25px;align-items:center;padding-block:44px}.source-symbol{font-size:35px}.source-banner h3{font-size:17px}.source-banner p{font-size:11px;color:var(--muted);margin-top:8px}.source-banner>a{font-size:12px;margin-left:auto;white-space:nowrap}footer{border-top:1px solid var(--line);padding:32px max(40px,calc((100vw - 1200px)/2)) 26px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px;font-size:11px;color:var(--muted)}.footer-brand{font-size:14px;color:var(--ink)}.footer-brand span{font-size:11px;margin-left:20px;color:var(--muted)}footer div:nth-child(2){display:flex;gap:24px}footer>p{width:100%;font-size:10px}.page-heading{padding-block:64px 40px}.page-heading h1{margin-top:12px;margin-bottom:21px}.page-heading>p{color:var(--muted);margin-bottom:18px}.spaced{margin-top:48px;margin-bottom:20px}.extension-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.extension-card{display:block;border:1px solid var(--line);border-radius:var(--radius);padding:25px}.extension-card:hover{background:var(--soft);text-decoration:none}.extension-card small{color:var(--muted)}.extension-card h3{margin-block:10px}.extension-card p{font-size:13px;color:var(--muted)}.extension-card span{display:block;font-size:12px;margin-top:22px}.reader-layout{display:grid;grid-template-columns:180px minmax(0,760px);gap:60px;justify-content:center;padding-block:42px 80px}.reader-sidebar{align-self:start;position:sticky;top:25px;font-size:12px}.reader-sidebar>a{display:block;padding:10px 8px;margin-left:-8px;border-radius:4px}.reader-sidebar>a[aria-current]{background:var(--soft);font-weight:600}.reader-sidebar .eyebrow{margin-bottom:14px}.reader-sidebar p{color:var(--muted)}.reader-sections{margin-top:20px}.reader-sections a{display:block;font-size:11px;margin-top:9px}.reader-heading h1{font-family:'Songti SC','SimSun',serif;font-size:40px;margin-block:14px}.reader-heading>p{font-size:12px;color:var(--muted)}.reader-toolbar{display:flex;gap:8px;align-items:center;margin-block:22px;flex-wrap:wrap}.reader-toolbar label{font-size:11px}.reader-toolbar select{padding:7px;font-size:12px}.reader-toolbar button{font-size:11px}.notice{background:var(--soft);border-left:2px solid #9ba6b1;padding:13px 16px;font-size:12px;line-height:1.9}.reader-section{font-family:'Songti SC','SimSun',serif;font-size:25px;margin-block:43px 24px}.passage{display:grid;grid-template-columns:34px minmax(0,1fr);gap:14px;padding-block:19px;scroll-margin-top:25px;border-bottom:1px solid #f0f1f3}.passage:target{background:#fffdf2;box-shadow:0 0 0 12px #fffdf2}.passage-number{font-size:10px;color:#767c84;padding-top:10px}.original-text{font-family:'Songti SC','STSong','SimSun',serif;font-size:var(--reading-size);line-height:2.1;letter-spacing:.25px}.passage-tools{display:flex;align-items:start;gap:18px;margin-top:13px;font-size:10px;color:var(--muted)}.passage-tools button{padding:0;border:0;font-size:10px;min-width:25px}.passage-tools details{flex:1}.passage-tools summary{cursor:pointer;display:list-item}.passage-tools details p{padding:10px 0}.reader-end{margin-top:40px;background:var(--soft);padding:30px;border-radius:var(--radius)}.reader-end h2{font-size:22px}.reader-end p{font-size:13px;color:var(--muted);margin-block:15px 22px}.search-form{display:flex;gap:10px;margin-top:29px}.search-form input{flex:1;min-width:0}.filter{display:flex;align-items:center;gap:12px;font-size:12px;margin-block:20px}.filter select{font-size:12px}#search-status{font-size:12px;color:var(--muted);margin:28px 0}.search-result{display:block;padding:25px 0;border-top:1px solid var(--line)}.search-result small{color:var(--muted)}.search-result h2{font-size:18px;margin-block:7px 12px}.search-result p{font-family:'Songti SC','SimSun',serif;font-size:17px;line-height:1.9}.result-link{display:block;font-size:11px;color:var(--muted);margin-top:12px}.empty-state{border:1px dashed #c9ced3;padding:30px;border-radius:var(--radius);color:var(--muted);font-size:13px}.ask-layout{display:grid;grid-template-columns:minmax(0,750px) 240px;gap:90px;padding-block:65px 90px;min-height:70vh}.ask-main h1{font-size:38px;margin-block:14px 20px}.lead{font-size:16px;color:var(--muted)}.ask-suggestions{display:flex;gap:10px;flex-wrap:wrap;margin-block:30px}.ask-suggestions button{font-size:11px;text-align:left}.ask-actions{display:flex;gap:20px;justify-content:space-between;align-items:start;margin-top:15px}.ask-actions label{font-size:11px;max-width:320px;color:var(--muted);display:flex;align-items:start;gap:8px}.ask-actions input{margin-top:5px;flex-shrink:0}#ask-form>label,#journal-form>label{font-size:13px;margin-bottom:9px}#question{padding:18px;font-size:15px;border-radius:var(--radius)}.ask-aside{border-left:1px solid var(--line);padding-left:30px;align-self:start}.aside-index{font-size:40px}.ask-aside h2{font-family:'Songti SC','SimSun',serif;font-size:25px;margin-block:13px}.ask-aside p{font-size:12px;color:var(--muted);margin-block:15px}.ask-aside h3{font-size:13px}.ask-aside a{font-size:11px}#selected-passage{padding:18px;background:var(--soft);margin-top:25px;font-size:13px;border-radius:var(--radius)}#selected-passage blockquote{font-family:'Songti SC','SimSun',serif;margin-top:8px;max-height:180px;overflow:auto}#answer-status{font-size:12px;margin-top:25px}#answer{margin-top:28px;border-top:1px solid var(--line);padding-top:25px}#answer h2{font-size:22px;margin-bottom:18px}#answer h3{font-size:16px;margin-block:25px 14px}.answer-text{white-space:pre-wrap;line-height:2}.citation{display:block;padding:15px;background:var(--soft);border-radius:var(--radius);margin-block:12px;font-size:12px}.citation blockquote{font-family:'Songti SC','SimSun',serif;font-size:16px;margin-block:8px}.answer-label{font-size:10px;letter-spacing:1px;color:var(--muted)}.lesson-list{padding-bottom:60px;max-width:960px}.lesson{display:grid;grid-template-columns:70px 1fr 24px;gap:30px;padding-block:33px;border-top:1px solid var(--line)}.lesson-number{font-size:36px;font-family:serif;color:#aab0b6}.lesson small{font-size:10px;color:var(--muted)}.lesson h2{font-size:25px;margin-block:7px 12px}.lesson p{color:var(--muted);font-size:14px}.lesson .actions{margin-top:16px}.lesson-check{align-self:center}.journal-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-block:40px 20px}.journal-toolbar h2{font-size:23px}#journal-form .button{margin-top:15px}.journal-entry{border-top:1px solid var(--line);padding-block:20px}.journal-entry p{white-space:pre-wrap;font-size:14px;margin-block:13px}.journal-entry small{color:var(--muted)}.journal-entry button{font-size:10px}.saved-item{border-bottom:1px solid var(--line);padding-block:15px;display:flex;gap:15px;align-items:start}.saved-item a{flex:1;font-size:13px}.saved-item button{font-size:10px}.prose h2{font-size:24px;margin-block:38px 17px}.prose p{margin-block:15px;line-height:1.95}.prose table{width:100%;border-collapse:collapse;font-size:12px;margin-block:25px}.prose th,.prose td{padding:14px 10px;text-align:left;border-bottom:1px solid var(--line)}.prose th{background:var(--soft)}.prose dt{font-size:12px;color:var(--muted);margin-top:17px}.prose dd{margin-left:0;font-size:14px}.hash{overflow-wrap:anywhere;font-family:monospace;font-size:11px!important}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);padding:0;background:var(--ink);color:#fff;border-radius:6px;z-index:50;font-size:12px}#toast:not(:empty){padding:12px 20px}
}
@layer responsive{
@media(min-width:1500px){.hero{padding-block:100px 90px}.hero-reading{min-height:400px}}
@media(max-width:1050px){.wrap{width:calc(100% - 64px)}.header-inner{width:calc(100% - 48px);gap:20px}nav{gap:20px}.search-link{margin-left:0;padding-left:20px}.hero{gap:40px;padding-block:65px}.hero h1{font-size:46px}.hero-reading{min-height:340px;padding:22px}.hero-reading blockquote{font-size:28px;margin-left:7px}.book-card{padding:25px 18px;gap:14px}.book-card h3{font-size:18px}.book-number{font-size:24px;padding-right:10px}.practice-grid{gap:50px}.ask-layout{gap:40px;grid-template-columns:minmax(0,1fr) 210px}.reader-layout{gap:35px;grid-template-columns:155px minmax(0,1fr)}}
@media(max-width:760px){h1{font-size:35px}h2{font-size:25px}.wrap{width:calc(100% - 40px)}.header-inner{height:74px;width:calc(100% - 40px)}.brand-name{font-size:19px}.brand-mark{width:32px;height:37px;font-size:25px}.header-inner nav,.search-link{display:none}.mobile-menu{display:block;margin-left:auto;border:0;font-size:23px;padding:3px 9px}.hero{grid-template-columns:1fr;gap:40px;padding-block:43px 38px}.hero h1{font-size:clamp(30px,8.4vw,45px);margin-top:18px}.hero-description{font-size:14px;margin-top:18px}.hero-reading{min-height:295px;max-width:100%}.hero-reading blockquote{font-size:29px;padding-block:22px}.hero-footnote{margin-top:23px;font-size:10px}.entry-strip{display:grid;grid-template-columns:1fr;padding-block:19px;gap:14px}.entry-strip>span{font-size:10px}.section{padding-block:40px}.section-heading{align-items:center}.section-heading h2{font-size:24px}.section-heading>.text-button{font-size:11px}.eyebrow{font-size:9px}.book-grid{grid-template-columns:1fr}.book-card{padding:26px;gap:25px}.book-card+.book-card{border-left:0;border-top:1px solid var(--line)}.book-number{min-height:125px;padding-right:20px}.book-card h3{font-size:22px}.book-card p{max-width:none;min-height:0}.book-card .muted{margin-top:18px}.book-card>div{flex:1}.practice-band{padding-block:38px}.practice-grid{grid-template-columns:1fr;gap:27px}.practice-grid h2{font-size:30px}.practice-grid p{font-size:13px}.steps small{font-size:10px}.source-banner{align-items:start;gap:15px;flex-wrap:wrap;padding-block:32px}.source-banner>div{flex:1;min-width:230px}.source-banner h3{font-size:16px}.source-banner>a{margin-left:45px;font-size:11px}.source-symbol{font-size:27px}footer{padding:25px 20px;gap:18px}.footer-brand span{margin-left:15px}footer div:nth-child(2){gap:18px}.page-heading{padding-block:38px 30px}.extension-grid{grid-template-columns:1fr}.reader-layout{display:block;padding-top:20px}.reader-sidebar{position:relative;margin-bottom:28px;border-bottom:1px solid var(--line);padding-bottom:15px;display:flex;gap:6px;flex-wrap:wrap}.reader-sidebar .eyebrow,.reader-sidebar hr,.reader-sidebar p,.reader-sidebar .reader-sections{display:none}.reader-sidebar>a{font-size:10px;display:inline-block;padding:7px;margin:0}.reader-heading h1{font-size:33px}.reader-toolbar{gap:6px}.reader-toolbar button{font-size:10px;padding:6px 8px}.reader-toolbar select{font-size:10px}.original-text{font-size:var(--reading-size);line-height:2.0}.passage{grid-template-columns:25px minmax(0,1fr);gap:8px}.passage-tools{gap:12px;flex-wrap:wrap}.passage-tools details{min-width:50px}.reader-section{font-size:23px}.reader-end{padding:20px}.search-form{gap:8px}.search-form .button{padding-inline:16px}.search-form input{font-size:13px}.filter select{max-width:230px}.ask-layout{display:block;padding-block:40px 55px}.ask-main h1{font-size:31px}.ask-main .lead{font-size:14px}.ask-aside{border-left:0;border-top:1px solid var(--line);padding:25px 0 0;margin-top:40px}.ask-aside .aside-index{display:none}.ask-actions{flex-direction:column;gap:18px}.ask-actions label{max-width:none}.ask-actions button{width:100%}.ask-suggestions{gap:8px;margin-block:22px}.ask-suggestions button{font-size:10px}.lesson{grid-template-columns:36px 1fr;gap:15px;padding-block:25px}.lesson-number{font-size:28px}.lesson h2{font-size:22px}.lesson p{font-size:13px}.lesson-check{display:none}.lesson .actions{gap:15px}.lesson .text-button{font-size:11px}.prose table{font-size:11px}.prose td,.prose th{padding:12px 5px}.prose h2{font-size:23px}.prose p{font-size:14px}.notice{font-size:11px}.journal-toolbar h2{font-size:22px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
}
@layer components{
#correction-form{display:grid;gap:12px;margin-block:30px}#correction-form>label{margin-top:12px;font-size:14px}#correction-form label small{color:var(--muted);font-size:11px;margin-left:8px}#correction-form select,#correction-form textarea{width:100%;padding:13px;min-width:0}#correction-form .correction-consent{display:flex;align-items:flex-start;gap:10px;line-height:1.8;font-size:12px}#correction-form .correction-consent input{flex:0 0 auto;margin-top:5px}#correction-form .button{justify-self:start;margin-top:8px}#correction-context p{font-size:13px;line-height:1.9}#correction-success h2{margin-top:0}#correction-import{max-width:100%;font-size:12px;margin-block:12px 24px}#correction-receipts .actions{flex-wrap:wrap;gap:18px}#correction-receipts .actions button{font-size:12px;text-decoration:underline}#correction-status{overflow-wrap:anywhere}
}

/* ---- 2026-11 UX：可读性下限 ---- */
small,.small{font-size:13px}
.eyebrow{font-size:12px}
.notice{font-size:13px}
.reading-label{font-size:12px}
.quote-bottom{font-size:12px}
.quote-bottom a{font-size:14px}
.entry-strip{font-size:14px}
.entry-strip>span{font-size:13px}
.book-card .muted{font-size:12px}
.steps li{font-size:15px}
.steps li span{font-size:12px}
.steps small{font-size:13px}
.answer-label{font-size:12px}
.citation{font-size:13px}
.journal-entry button{font-size:13px}
.ask-actions label{font-size:13px}
.lesson .text-button,.text-button{font-size:14px}

/* 原文段落工具：可点、可读 */
.passage-tools{font-size:13px;gap:6px 22px;align-items:center;flex-wrap:wrap}
.passage-tools>a,.passage-tools>button,.passage-tools summary{min-height:36px;display:inline-flex;align-items:center}
.passage-tools button{font-size:13px;background:none;cursor:pointer;color:inherit}
.passage-tools .practice-link{color:var(--ink);font-weight:600}
.passage-tools details{flex-basis:100%}
.passage-tools details[open]{flex-basis:100%}

/* 知 · 行 · 省 */
.loop{display:grid;grid-template-columns:repeat(3,1fr);list-style:none;padding:0;margin:30px 0 26px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.loop li{padding:16px 18px;font-size:14px;color:var(--muted);line-height:1.7}
.loop li+li{border-left:1px solid var(--line)}
.loop b{display:block;font:600 24px/1.2 'Songti SC','STSong','SimSun',serif;color:var(--ink);margin-bottom:6px}
.step-tag{flex:none;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;margin-right:10px;border-radius:50%;background:var(--ink);color:#fff;font:600 14px/1 'Songti SC','STSong','SimSun',serif}
.practice-prompt{display:flex;align-items:start;gap:4px;margin:22px 0 0;padding:14px 16px;background:var(--mark);border-radius:var(--radius);font-size:15px;line-height:1.8}
.practice-prompt b{display:block;font-size:12px;letter-spacing:1px;color:var(--muted);font-weight:600}
.practice-form label{display:flex;align-items:center;margin:26px 0 10px;font-size:15px;font-weight:600}
.practice-form input{width:100%;font-size:16px;padding:13px 14px}
.practice-form textarea{font-size:16px}
.practice-form .hint{margin-top:8px}
#journal-form .button{margin-top:20px}
#practice-passage{margin-top:24px;padding:16px 18px;background:var(--soft);border-left:3px solid var(--ink);border-radius:0 var(--radius) var(--radius) 0;font-size:13px}
#practice-passage blockquote{font-family:'Songti SC','STSong','SimSun',serif;font-size:17px;line-height:1.9;margin-block:8px}
.count{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 8px;margin-left:6px;border-radius:999px;background:var(--ink);color:#fff;font-size:13px;vertical-align:middle}
.count:empty{display:none}
.practice-card{border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-block:12px}
.practice-card.open{border-color:#c9ced3;box-shadow:0 1px 0 rgba(0,0,0,.03)}
.practice-card.reviewed{background:#fbfcfd}
.practice-meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-bottom:6px}
.practice-source{color:var(--muted)}
.practice-line{display:flex;align-items:start;margin-block:12px;font-size:15px;line-height:1.8;white-space:pre-wrap}
.practice-line.act{font-weight:600}
.practice-text{white-space:pre-wrap;font-size:15px;line-height:1.8;margin-block:10px}
.outcome{font-style:normal;display:inline-block;margin-right:10px;padding:1px 9px;border-radius:999px;font-size:12px;background:var(--soft);color:var(--ink)}
.outcome.done{background:#e6f2ea}
.outcome.partly{background:var(--mark)}
.review{margin-top:8px}
.review summary{list-style:none;cursor:pointer;gap:10px;padding:9px 16px;min-height:40px;font-size:14px;background:#fff}
.review summary::-webkit-details-marker{display:none}
.review[open] summary{background:var(--ink);color:#fff}
.review form{margin-top:16px}
.review label[for]{font-size:14px;font-weight:600;margin:14px 0 8px}
.choice{border:0;padding:0;margin:0;display:flex;gap:10px;flex-wrap:wrap}
.choice legend{font-size:14px;font-weight:600;margin-bottom:10px;padding:0}
.choice label{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-size:14px;cursor:pointer}
.choice label:has(input:checked){border-color:var(--ink);background:var(--soft)}
.choice input{accent-color:var(--ink);margin:0}
.practice-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.practice-foot>span{display:flex;gap:18px;align-items:center}
.link-button{border:0;background:none;padding:6px 0;font-size:13px;color:var(--muted);cursor:pointer}
.link-button:hover{color:var(--ink);text-decoration:underline}
.saved-item{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;padding-block:12px;border-top:1px solid var(--line);font-size:14px}
.saved-item>span{display:flex;gap:16px;align-items:center}

/* 首页：今日一段 / 欢迎回来 */
.hero-reading.daily blockquote{font-size:clamp(19px,1.7vw,24px);line-height:2;letter-spacing:1px;margin-left:0;padding-right:56px}
.hero-reading.daily .quote-bottom{gap:16px;flex-wrap:wrap}
.daily-act{font-weight:600}
.continue-strip{display:flex;gap:14px 30px;align-items:center;flex-wrap:wrap;margin-top:28px;padding:16px 20px;border-radius:var(--radius);background:var(--mark);font-size:15px}
.continue-strip .strong{font-weight:600}

/* 学习路径进度 */
.lesson-check{font-size:13px;white-space:nowrap}
.lesson-check.is-open{padding:4px 10px;border-radius:999px;background:var(--mark)}
.lesson-check.is-done{padding:4px 10px;border-radius:999px;background:#e6f2ea}

/* 问心学：落到事上 */
.act-cta{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin-top:34px;padding:22px 24px;border-radius:var(--radius);background:var(--mark);font-size:15px;line-height:1.8}
.act-cta b{display:block;font-family:'Songti SC','STSong','SimSun',serif;font-size:19px}

@media(max-width:760px){
 .loop{grid-template-columns:1fr}
 .loop li+li{border-left:0;border-top:1px solid var(--line)}
 .loop li{display:flex;gap:14px;align-items:baseline}
 .loop b{margin:0}
 .eyebrow{font-size:11px}
 .notice{font-size:13px}
 .steps small{font-size:12px}
 .lesson .text-button{font-size:14px}
 .lesson-check{display:inline-block;margin-top:10px}
 .hero-reading.daily blockquote{font-size:19px;padding-right:44px}
 .entry-strip>span{font-size:13px}
}
.secondary{background:#fff;color:var(--ink)}
.lesson{grid-template-columns:70px 1fr auto}
.lesson small{font-size:12px}
.lesson p{font-size:15px}
.saved-item a{font-size:14px}
.saved-item button{font-size:13px}
@media(max-width:760px){.lesson{grid-template-columns:36px 1fr}.lesson-check{grid-column:2;justify-self:start}.lesson p{font-size:14px}.hero+.continue-strip{margin-top:0}}
.citation blockquote{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;line-height:1.9}
.ask-fallback{margin-top:18px;padding:18px 20px;border:1px solid var(--line);border-radius:var(--radius);font-size:15px;line-height:1.8}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}
.chips a{border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-size:14px}
.chips a:hover{border-color:var(--ink);text-decoration:none}
.practice-notice{margin-top:22px}
.continue-strip{margin-bottom:24px}

/* ==================================================================
   Apple 设计层（2026-11）
   清晰 Clarity · 谦让 Deference · 层次 Depth · 一致 · 反馈 · 包容
   只覆盖、不删除：原有样式在前，本层在最后。
   ================================================================== */

/* ---------- 1. 设计令牌：一套语义色，浅色 / 深色两套取值 ---------- */
:root{
 color-scheme:light dark;
 --bg:#ffffff;--elev:#ffffff;--ink:#1d1d1f;--muted:#6e6e73;--tertiary:#a1a1a6;
 --line:#e5e5ea;--line-strong:#d2d2d7;--soft:#f5f5f7;--mark:#fdf3cf;--ok:#e3f4e8;
 --accent:#0066cc;--on-ink:#ffffff;--focus:#0071e3;
 --material:rgba(255,255,255,.72);--shadow:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.06);
 --radius:14px;--radius-lg:20px;--ease:cubic-bezier(.25,.1,.25,1);
 background:var(--bg);color:var(--ink);font-size:16px;
 font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
}
@media(prefers-color-scheme:dark){:root:where(:not([data-theme=light])){
 --bg:#000000;--elev:#1c1c1e;--ink:#f5f5f7;--muted:#a1a1a6;--tertiary:#6e6e73;
 --line:#2c2c2e;--line-strong:#3a3a3c;--soft:#1c1c1e;--mark:rgba(255,214,10,.16);--ok:rgba(48,209,88,.18);
 --accent:#2997ff;--on-ink:#000000;--focus:#2997ff;
 --material:rgba(22,22,23,.72);--shadow:0 0 0 1px rgba(255,255,255,.06);
}}:root:where([data-theme=dark]){
 --bg:#000000;--elev:#1c1c1e;--ink:#f5f5f7;--muted:#a1a1a6;--tertiary:#6e6e73;
 --line:#2c2c2e;--line-strong:#3a3a3c;--soft:#1c1c1e;--mark:rgba(255,214,10,.16);--ok:rgba(48,209,88,.18);
 --accent:#2997ff;--on-ink:#000000;--focus:#2997ff;
 --material:rgba(22,22,23,.72);--shadow:0 0 0 1px rgba(255,255,255,.06);
}
html{scroll-padding-top:84px;-webkit-text-size-adjust:100%}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
::selection{background:color-mix(in srgb,var(--accent) 22%,transparent);color:inherit}

/* ---------- 2. 层次：半透明“材质”顶栏，始终可达 ---------- */
header{position:sticky;top:0;z-index:30;background:var(--material);border-bottom:.5px solid var(--line-strong);
 -webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){header{background:var(--bg)}}
.header-inner{height:64px}
.brand-mark{width:34px;height:38px;font-size:24px;border-radius:7px}
.brand-name{font-size:18px}
.brand-name small{font-size:10px;margin-top:3px;color:var(--muted)}
nav{font-size:14px;gap:28px}
nav a{padding:12px 0;color:var(--ink);opacity:.82;transition:opacity .2s var(--ease)}
nav a:hover,nav a[aria-current]{opacity:1;text-decoration:none}
nav a[aria-current]:after{width:100%;height:2px;border-radius:2px;bottom:4px}
.search-link{font-size:14px;border-left-color:var(--line)}
.reader-sidebar{top:88px}
.passage{scroll-margin-top:84px}
.skip{background:var(--elev);color:var(--ink);border-radius:10px;box-shadow:var(--shadow)}

/* ---------- 3. 一致：链接用同一种强调色，看得出“能点” ---------- */
.text-button,.prose a:not(.button),.hint a,.ask-fallback p a,#practice-passage a,#selected-passage a,
.quote-bottom a,.result-link,.practice-source:hover,.reader-end a:not(.button),.source-banner>a,.ask-aside a,
.section-heading>.text-button,.page-heading p a{color:var(--accent)}
.text-button:hover{text-decoration:underline;text-underline-offset:4px}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{
 outline:3px solid var(--focus);outline-offset:3px;border-radius:8px}  /* 第五阶段 #16：原为 60% 透明，焦点框对背景仅 2.35–2.92:1（WCAG 1.4.11 要求 ≥3:1）；改为不透明，日 4.44 / 夜 4.62 */

/* ---------- 4. 控件：胶囊按钮、44pt 触控、即时反馈 ---------- */
.button{border-radius:980px;min-height:44px;padding:11px 22px;font-size:15px;font-weight:500;gap:12px;
 transition:background-color .2s var(--ease),transform .12s var(--ease),opacity .2s var(--ease)}
.button:active{transform:scale(.97)}
.primary{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
.primary:hover{background:color-mix(in srgb,var(--ink) 84%,var(--bg))}
.secondary,.review summary{background:var(--elev);color:var(--ink);border-color:var(--line-strong)}
.review[open] summary{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
.button:disabled{opacity:.4;transform:none}
input,textarea,select{background:var(--elev);color:var(--ink);border:1px solid var(--line-strong);border-radius:12px;
 padding:12px 14px;font-size:16px;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
input:focus,textarea:focus,select:focus{border-color:var(--focus);box-shadow:0 0 0 4px color-mix(in srgb,var(--focus) 18%,transparent);outline:none}
input[type=checkbox],input[type=radio]{accent-color:var(--ink);width:18px;height:18px}
::placeholder{color:var(--tertiary)}
.ask-suggestions button,.chips a,.choice label{min-height:40px;border-radius:980px;padding:8px 16px;font-size:14px;
 background:var(--elev);color:var(--ink);border:1px solid var(--line-strong);transition:border-color .2s var(--ease),background-color .2s var(--ease)}
.ask-suggestions button:hover,.chips a:hover,.choice label:hover{border-color:var(--ink)}
.choice label:has(input:checked){background:var(--soft);border-color:var(--ink)}
.link-button{color:var(--muted);min-height:36px}
.step-tag,.count{background:var(--ink);color:var(--on-ink)}

/* ---------- 5. 层次：卡片与材质 ---------- */
.hero-reading{border-radius:var(--radius-lg);background:var(--soft)}
.vertical-label{border-left-color:var(--line-strong)}
.quote-bottom{border-top-color:var(--line-strong)}
.book-grid{border-radius:var(--radius-lg);border-color:var(--line);background:var(--elev)}
.book-card{transition:background-color .25s var(--ease)}
.book-card:hover{background:var(--soft)}
.citation,#selected-passage,.reader-end,.notice,#practice-passage,.practice-prompt,.continue-strip,.act-cta,.ask-fallback{border-radius:var(--radius)}
.citation{background:var(--soft);transition:background-color .2s var(--ease)}
.citation:hover{text-decoration:none;background:color-mix(in srgb,var(--soft) 70%,var(--line))}
.notice{border-left:0;background:var(--soft);color:var(--muted)}
.empty-state{border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--muted)}
.practice-card{border-color:var(--line);border-radius:var(--radius-lg);background:var(--elev);padding:20px 22px}
.practice-card.open{border-color:var(--line-strong);box-shadow:var(--shadow)}
.practice-card.reviewed{background:var(--soft);border-color:transparent}
.outcome{background:var(--elev)}
.outcome.done,.lesson-check.is-done{background:var(--ok)}
.outcome.partly,.lesson-check.is-open{background:var(--mark)}
.loop{border-color:var(--line);border-radius:var(--radius-lg)}
.loop li+li{border-color:var(--line)}
.practice-band{background:var(--soft)}
.practice-grid p{color:var(--muted)}
.steps li{border-bottom-color:var(--line-strong)}
.lesson{border-top-color:var(--line)}
.lesson-number{color:var(--tertiary)}
.search-result,.journal-entry,.saved-item,#answer{border-color:var(--line)}
.ask-aside{border-left-color:var(--line)}
.prose th{background:var(--soft)}
.prose th,.prose td{border-bottom-color:var(--line)}
footer{border-top-color:var(--line);color:var(--muted);font-size:13px}
footer>p{font-size:12px}
.footer-brand span{font-size:13px}
#toast{background:var(--ink);color:var(--on-ink);border-radius:980px;bottom:calc(25px + env(safe-area-inset-bottom));
 box-shadow:0 10px 30px rgba(0,0,0,.18);font-size:14px}
#toast:not(:empty){padding:12px 22px;animation:toast-in .35s var(--ease)}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}

/* ---------- 6. 谦让：阅读时让原文居先 ---------- */
.passage{border-bottom-color:var(--line)}
.passage:target{background:var(--mark);box-shadow:0 0 0 14px var(--mark);border-radius:4px}
.passage-number{color:var(--tertiary);font-size:12px;font-variant-numeric:tabular-nums}
.passage-number a{color:inherit}
.original-text{color:var(--ink)}
/* 可访问性（2026-11-05）：段落工具不再半透明淡化——.38 时文字对比度只有 1.8:1；要达到 4.5:1 至少需 .87，与不淡化几乎无异，故直接取消。 */
.passage-tools{color:var(--muted)}
.passage-tools .practice-link{color:var(--accent)}
.reader-sidebar>a{border-radius:10px;font-size:14px;transition:background-color .2s var(--ease)}
.reader-sidebar>a:hover{background:var(--soft);text-decoration:none}
.reader-sidebar,.reader-heading>p,.reader-toolbar label{font-size:13px}
.reader-toolbar button,.reader-toolbar select{min-height:36px;font-size:13px;padding:6px 14px;border-radius:980px;
 background:var(--elev);color:var(--ink);border:1px solid var(--line-strong);cursor:pointer}
.search-result p{color:var(--ink)}
mark{background:var(--mark);color:inherit;border-radius:3px;padding:0 2px}

/* ---------- 7. 细节动效：展开、出现 ---------- */
@media(prefers-reduced-motion:no-preference){
 details[open]>:not(summary){animation:reveal .28s var(--ease)}
 @keyframes reveal{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
 .continue-strip,.act-cta,.ask-fallback,#practice-passage,.practice-prompt{animation:reveal .35s var(--ease)}
}

/* ---------- 8. 移动端：44pt 目标、大字、安全区 ---------- */
@media(max-width:760px){
 html{scroll-padding-top:72px}
 .header-inner{height:56px}
 .passage{scroll-margin-top:72px}
 .mobile-menu{min-width:44px;min-height:44px;color:var(--ink);background:none;border-radius:10px}
 #mobile-nav{display:grid;gap:0;padding:6px 20px 14px;background:var(--material);border-top:.5px solid var(--line-strong)}
 #mobile-nav[hidden]{display:none}
 #mobile-nav a{display:flex;align-items:center;min-height:48px;font-size:17px;border-bottom:.5px solid var(--line)}
 #mobile-nav a:last-child{border-bottom:0}
 .eyebrow{font-size:12px}
 .search-form input,.search-form .button{font-size:16px}
 .ask-suggestions button{font-size:14px}
 .reader-sidebar>a{font-size:14px;padding:8px 14px;border-radius:980px;border:1px solid var(--line-strong);background:var(--elev)}
 .reader-sidebar>a[aria-current]{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
 .reader-toolbar button,.reader-toolbar select{font-size:14px;min-height:40px}
 .passage-tools{font-size:14px}
 .source-banner p,.source-banner>a,.section-heading>.text-button{font-size:14px}
 .book-card small,.book-card p,.book-card .muted{font-size:13px}
 .entry-strip a{min-height:40px;display:flex;align-items:center}
 footer{padding-bottom:calc(25px + env(safe-area-inset-bottom));font-size:13px}
 footer div:nth-child(2){flex-wrap:wrap;gap:6px 18px}
 footer div:nth-child(2) a{min-height:36px;display:inline-flex;align-items:center}
}

/* ---------- 9. 打印：只留原文 ---------- */
@media print{
 header,footer,.passage-tools,.reader-sidebar,.reader-toolbar,#toast,.skip{display:none!important}
 :root{--bg:#fff;--ink:#000;color-scheme:light}
 .reader-layout{display:block}
}

/* ---------- 10. 修正：移动端目录横向滑动；小目标补足 ---------- */
.journal-toolbar .text-button{min-height:44px;display:inline-flex;align-items:center}
@media(max-width:760px){
 .reader-sidebar{top:auto;flex-wrap:nowrap;overflow-x:auto;gap:8px;margin-inline:-20px;padding:2px 20px 14px;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
 .reader-sidebar::-webkit-scrollbar{display:none}
 .reader-sidebar>a{flex:none;white-space:nowrap;scroll-snap-align:start}
}
@media(max-width:760px){.reader-sidebar{scroll-padding-inline:20px}}
#toast{width:max-content;text-align:center}

/* ==================================================================
   五行设色层（2026-11）
   第一性原理：心属火；良知是“一点灵明”。
   ── 火 · 赤（朱砂）＝ 心、良知、印记：品牌、当前位置、焦点、朱批式强调
   ── 水 · 黑（玄墨）＝ 文字与智：正文墨色、主按钮
   ── 金 · 白（素）  ＝ 留白与收敛：卡片与输入面
   ── 土 · 黄（缃）  ＝ 中与日用：纸底、分隔、高亮
   ── 木 · 青（石青）＝ 生发与行：链接、修习、完成
   次序依相生：木 → 火 → 土 → 金 → 水。
   只覆盖令牌与少量细节，结构沿用前两层。
   ================================================================== */

:root{
 --wood:#25595A;--fire:#A8361F;--earth:#8A6420;--metal:#FFFDF8;--water:#1F1D1A;
 --seal:#A8361F;--seal-dot:#E8C46A;
 --bg:#F7F3EA;--elev:#FFFDF8;--soft:#EFE8D8;
 --ink:#1F1D1A;--muted:#5F5A50;--tertiary:#8C8576;
 --line:#E3DBC8;--line-strong:#CFC4AC;
 --mark:#F3E3B5;--ok:#E1ECE6;
 --accent:var(--wood);--focus:var(--fire);--on-ink:#F7F3EA;
 --material:rgba(247,243,234,.82);
 --shadow:0 1px 2px rgba(60,40,10,.05),0 10px 28px rgba(60,40,10,.07);
 --wuxing:linear-gradient(90deg,#25595A 0 20%,#A8361F 20% 40%,#C9A14A 40% 60%,#D8D1C0 60% 80%,#1F1D1A 80%);
 --serif:'Songti SC','STSong','Noto Serif SC','Source Han Serif SC','SimSun',serif;
}
@media(prefers-color-scheme:dark){:root:where(:not([data-theme=light])){
 --wood:#86B9AE;--fire:#E5735A;--earth:#D2AE68;--metal:#1E1C17;--water:#ECE5D6;
 --seal:#B8402A;--seal-dot:#F0CF7A;
 --bg:#14130F;--elev:#1E1C17;--soft:#24211B;
 --ink:#ECE5D6;--muted:#A69E8E;--tertiary:#7A7365;
 --line:#2E2B24;--line-strong:#3D392F;
 --mark:rgba(210,174,104,.2);--ok:rgba(134,185,174,.16);
 --on-ink:#14130F;
 --material:rgba(20,19,15,.8);
 --shadow:0 0 0 1px rgba(236,229,214,.06);
 --wuxing:linear-gradient(90deg,#4F8F84 0 20%,#C9503A 20% 40%,#C9A14A 40% 60%,#CFC8B6 60% 80%,#3A362D 80%);
}}:root:where([data-theme=dark]){
 --wood:#86B9AE;--fire:#E5735A;--earth:#D2AE68;--metal:#1E1C17;--water:#ECE5D6;
 --seal:#B8402A;--seal-dot:#F0CF7A;
 --bg:#14130F;--elev:#1E1C17;--soft:#24211B;
 --ink:#ECE5D6;--muted:#A69E8E;--tertiary:#7A7365;
 --line:#2E2B24;--line-strong:#3D392F;
 --mark:rgba(210,174,104,.2);--ok:rgba(134,185,174,.16);
 --on-ink:#14130F;
 --material:rgba(20,19,15,.8);
 --shadow:0 0 0 1px rgba(236,229,214,.06);
 --wuxing:linear-gradient(90deg,#4F8F84 0 20%,#C9503A 20% 40%,#C9A14A 40% 60%,#CFC8B6 60% 80%,#3A362D 80%);
}
::selection{background:color-mix(in srgb,var(--fire) 20%,transparent)}

/* ---------- 品牌：朱印“心”，中间一点是灵明 ---------- */
header:before{content:'';display:block;height:3px;background:var(--wuxing)}
.brand{gap:12px}
.brand-mark{width:36px;height:36px;border:0;border-radius:0;font-size:0;display:block}
.brand-mark svg{display:block;width:100%;height:100%}
.brand-name{letter-spacing:3px;font-family:var(--serif);font-weight:700}
.brand-ai{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif;font-weight:500;color:var(--fire);letter-spacing:.5px}
.brand-name small{letter-spacing:2.6px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-weight:500}
.footer-brand{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-weight:600;letter-spacing:2px}
.footer-brand:before{content:'';width:20px;height:20px;flex:none;background:url(/favicon.svg) center/contain no-repeat}
.footer-brand span{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif;letter-spacing:1px;margin-left:8px}

/* ---------- 朱批：当前位置与焦点用朱色标出 ---------- */
nav a[aria-current]{color:var(--ink)}
nav a[aria-current]:after{background:var(--fire)}
.tiny-line{background:var(--fire)}
.eyebrow{color:var(--muted);letter-spacing:2.2px}
.reader-sidebar>a[aria-current]{background:var(--soft);box-shadow:inset 2px 0 0 var(--fire)}
@media(max-width:760px){.reader-sidebar>a[aria-current]{background:var(--ink);box-shadow:none}}
.passage-number,.lesson-number{color:var(--fire)}  /* 去掉 .78 透明度：朱色段号 3.9:1 → 5.9:1（夜间 6.1:1） */
.passage:target{background:var(--mark);box-shadow:0 0 0 14px var(--mark)}

/* ---------- 标题与原文：宋体、墨色、宽行距 ---------- */
h1,h2,.page-heading h1,.section-heading h2{font-family:var(--serif);font-weight:700;letter-spacing:0}
.hero h1{letter-spacing:1px}
.original-text,.hero-reading blockquote,.passage p{font-family:var(--serif)}

/* ---------- 首页 ---------- */
.hero-reading{background:var(--elev);border:1px solid var(--line);box-shadow:var(--shadow);position:relative;overflow:hidden}
.hero-reading:after{content:'';position:absolute;inset:auto 0 0 0;height:3px;background:var(--wuxing);opacity:.9}
.vertical-label{border-left-color:var(--fire);color:var(--ink)}
.reading-label>span:first-child{color:var(--fire);font-weight:600}
.quote-bottom a{color:var(--accent)}
.entry-strip{border-color:var(--line)}
.entry-strip a{transition:color .2s var(--ease)}
.entry-strip a:hover{color:var(--fire);text-decoration:none}
.book-grid{background:var(--elev)}
.book-number{color:var(--ink);border-right-color:var(--line-strong);transition:color .2s var(--ease)}
.book-card:hover .book-number{color:var(--fire)}
.practice-band{background:var(--soft);border-block:1px solid var(--line)}
.practice-grid h2{color:var(--ink)}
.steps li span{color:var(--wood);font-weight:600}
.source-symbol{color:var(--fire)}

/* ---------- 按钮：墨为本，触之见朱 ---------- */
.primary{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}
.primary:hover{background:var(--fire);border-color:var(--fire);color:#FFFDF8}
.review[open] summary{background:var(--ink)}
.ask-suggestions button:hover,.chips a:hover,.choice label:hover{border-color:var(--fire);color:var(--ink)}
.choice label:has(input:checked){background:var(--mark);border-color:var(--earth)}
input[type=checkbox],input[type=radio]{accent-color:var(--fire)}
input:focus,textarea:focus,select:focus{border-color:var(--fire);box-shadow:0 0 0 4px color-mix(in srgb,var(--fire) 14%,transparent)}

/* ---------- 修习：知（水）→ 行（木）→ 省（火，回到心上） ---------- */
.loop li:nth-child(1) b,label[for=journal-know] .step-tag{background:var(--water);color:var(--bg)}
.loop li:nth-child(2) b,label[for=journal-act] .step-tag{background:var(--wood);color:var(--bg)}
.loop li:nth-child(3) b{background:var(--fire);color:var(--bg)}
.loop li b{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;font-family:var(--serif);margin-right:8px}
.count{background:var(--fire);color:#FFFDF8}
.practice-link,.passage-tools .practice-link{color:var(--wood)}
.outcome.done,.lesson-check.is-done{background:var(--ok)}
.practice-card.open{border-left:3px solid var(--wood)}

/* ---------- 引用与 AI 解释：原典墨、解释青、引文土 ---------- */
.citation{border-left:3px solid var(--earth)}
#answer{border-left:3px solid var(--wood);padding-left:18px}
.notice{background:var(--soft)}
mark{background:var(--mark)}

/* ---------- 页脚 ---------- */
footer{background:var(--soft);border-top:1px solid var(--line)}
footer a:hover{color:var(--fire);text-decoration:none}

#toast{background:var(--ink);color:var(--on-ink)}
@media print{header:before,.hero-reading:after{display:none}}

/* ---------- 知行合一：把“行”放到眼前 ---------- */
/* 首页：回来省察（有待省察的事时，排在一切阅读之前的下一步） */
.check-in{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;margin-block:0 28px;padding:22px 26px;
 background:var(--elev);border:1px solid var(--line);border-left:4px solid var(--wood);border-radius:var(--radius-lg);box-shadow:var(--shadow)}
.check-in .eyebrow{color:var(--wood)}
.check-act{font:600 22px/1.6 var(--serif);margin:6px 0 4px;color:var(--ink)}
.check-buttons{display:flex;gap:10px;flex-wrap:wrap}
.check-buttons .button{min-height:40px;padding:8px 18px;font-size:14px}
/* 修习页 */
.practice-stats{color:var(--wood);font-size:14px;margin:-8px 0 14px}
.practice-stats:empty{display:none}
.choice.when{border:0;padding:0;margin:14px 0 18px;display:flex;flex-wrap:wrap;gap:8px}
.choice.when legend{font-size:14px;color:var(--muted);margin-bottom:8px;width:100%}
.choice.when label{display:inline-flex;align-items:center;gap:6px}
.when-tag{display:inline-block;margin-left:10px;padding:1px 9px;border-radius:980px;background:var(--ok);color:var(--wood);font-size:12px;vertical-align:2px}
.practice-foot .text-button+.text-button{margin-left:16px}
[data-remind]{color:var(--wood)}
/* 原典：在事上练过的段落 */
.passage.practiced{box-shadow:inset 3px 0 0 var(--wood);padding-left:14px}
.lived-mark{color:var(--wood);font-weight:600}
@media(max-width:760px){.check-in{padding:18px}.check-buttons{width:100%}.check-buttons .button{flex:1}}
.practice-line.learned .step-tag{background:var(--earth);color:var(--bg)}
.stale-note{color:var(--muted);margin:6px 0 10px}
.stale-note a{color:var(--wood)}
.act-examples{margin:10px 0 4px}
.act-examples summary{cursor:pointer;color:var(--wood);font-size:14px;min-height:36px;display:inline-flex;align-items:center}
.act-examples .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.act-examples button{min-height:36px;border-radius:980px;padding:6px 14px;font-size:14px;background:var(--elev);border:1px solid var(--line-strong);color:var(--ink)}
.act-examples button:hover{border-color:var(--wood)}
textarea.learned{margin-bottom:14px}
/* 立事提示、概念标签、我的传习录、概念页功夫 */
.act-hint{color:var(--earth);margin:6px 0 0;min-height:0}
.act-hint:empty{display:none}
.concept-tag{display:inline-block;padding:0 9px;border-radius:980px;border:1px solid var(--line-strong);color:var(--muted);font-size:12px}
.concept-tag:hover{border-color:var(--fire);color:var(--fire);text-decoration:none}
.record-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:10px}
.record-list{list-style:none;padding:0;margin:0;border-left:2px solid var(--earth)}
.record-list li{padding:10px 0 14px 20px;position:relative}
.record-list li:before{content:'';position:absolute;left:-6px;top:17px;width:10px;height:10px;border-radius:50%;background:var(--earth)}
.record-date{font-size:12px;color:var(--muted)}
.record-learned{font:500 18px/1.8 var(--serif);color:var(--ink);margin:2px 0}
.record-ctx a{color:var(--wood)}
.my-practice{margin:28px 0 8px;padding:18px 22px;border-radius:var(--radius);background:var(--soft);border-left:3px solid var(--wood)}
.my-practice .eyebrow{color:var(--wood)}
.my-practice p{margin:6px 0}
.my-practice ul{list-style:none;padding:0;margin:10px 0}
.my-practice li{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:4px 0;font-family:var(--serif)}
.my-practice li b{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--earth);color:var(--bg);font-size:12px;flex:none}
.my-practice li small{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif}
@media print{body.print-record main>section>*:not(#record):not(#my-record){display:none!important}
 body.print-record #record{display:block!important;margin-top:0}body.print-record .record-head button{display:none}}
.fupan{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline;padding:12px 16px;margin:0 0 14px;border-radius:var(--radius);background:var(--mark);font-size:14px}
.fupan b{font-family:var(--serif);color:var(--earth)}

/* ---------- 日 / 夜：一个开关，两种工夫（日间在事上练，夜里回来省察） ---------- */
.theme-toggle{display:inline-flex;align-items:center;gap:2px;flex:none;margin-left:20px;padding:3px;min-height:36px;
 border:1px solid var(--line-strong);border-radius:980px;background:var(--elev);color:var(--muted);cursor:pointer;font:600 13px/1 var(--serif)}
.theme-toggle span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;transition:background .25s var(--ease),color .25s var(--ease)}
.theme-toggle[aria-pressed=false] .t-day,.theme-toggle[aria-pressed=true] .t-night{background:var(--ink);color:var(--on-ink)}
.theme-toggle[aria-pressed=false] .t-day{background:var(--fire);color:#FFFDF8}
.theme-toggle:hover{border-color:var(--fire)}
.theme-toggle:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
@media(max-width:760px){.theme-toggle{margin-left:auto}.theme-toggle+.mobile-menu{margin-left:6px}}
/* 切换时整页颜色一起过渡，平时不加过渡以免拖慢 */
@media(prefers-reduced-motion:no-preference){
 .theme-switching,.theme-switching *,.theme-switching *:before,.theme-switching *:after{transition:background-color .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease),fill .35s var(--ease)!important}}
/* 首页省察卡：夜里换成“省”的朱色 */
:root[data-mode=night] .check-in{border-left-color:var(--fire)}
:root[data-mode=night] .check-in .eyebrow{color:var(--fire)}
@media print{.theme-toggle{display:none}}
/* 只求日减：修习页精简 */
.know-opt{margin:18px 0 6px}
.know-opt>summary{cursor:pointer;color:var(--muted);font-size:14px;min-height:40px;display:flex;align-items:center}
.know-opt[open]>summary{margin-bottom:6px}
#practice-passage blockquote{font-size:16px;margin-block:4px}
.more-box{margin-top:40px;border-top:1px solid var(--line);padding-top:12px}
.more-box>summary{cursor:pointer;font:600 18px/1.5 var(--serif);min-height:44px;display:flex;align-items:center}
.more-box h2{font-size:16px;margin:18px 0 10px}
.practice-notice{margin-top:32px;font-size:12px}
@media(max-width:760px){.page-heading{padding-block:36px 24px}.page-heading h1{font-size:32px;margin-bottom:8px}}
/* 朱印「心」· logo 动画（2026-11-04）
   第一性原理：动画只讲 logo 本身已有的意思，不另加装饰。
   1 按印：一方朱印落下，略压一下再回弹，像真盖印。
   2 书写：按「心」的真实笔顺写出：左点 → 卧钩 → 中点 → 右点。卧钩用遮罩沿中线一笔走完。
   3 点亮：中间那一点原本也是素色，最后才转成金色，并漾开一圈光，表示「一点灵明」「此心光明」。
      良知本来就在，「致」就是让它亮起来，所以这一点先写出、后点亮。
   克制：这是读书的网站。动画只在本次访问的第一页播放一次（html.logo-intro，由 logo-anim.js 加上），约 2 秒；
   鼠标悬停时只让那一点再亮一下；系统设为「减少动态效果」时完全不动。
   只用 transform / opacity / stroke-dashoffset / fill，不影响排版；CSP 下可用（无内联样式）。 */

.lm .lm-dot, .lm .lm-seal, .lm .lm-halo { transform-box: fill-box; transform-origin: center }

@media (prefers-reduced-motion: no-preference) {
  /* 1 按印 */
  .logo-intro .lm .lm-seal { animation: lm-stamp .42s cubic-bezier(.3,.7,.4,1) both }
  /* 2 书写 */
  .logo-intro .lm .lm-d1 { animation: lm-dab .24s .32s cubic-bezier(.2,.8,.3,1.2) both }
  .logo-intro .lm .lm-pen { stroke-dasharray: 1; animation: lm-write .62s .52s cubic-bezier(.55,.05,.35,1) both }
  .logo-intro .lm .lm-d2 { animation: lm-dab .24s 1.12s cubic-bezier(.2,.8,.3,1.2) both, lm-light .5s 1.55s ease-out both }
  .logo-intro .lm .lm-d3 { animation: lm-dab .24s 1.3s cubic-bezier(.2,.8,.3,1.2) both }
  /* 3 点亮 */
  .logo-intro .lm .lm-halo { animation: lm-glow .9s 1.6s cubic-bezier(.2,.6,.3,1) both }

  /* 悬停：那一点再亮一次 */
  .brand:hover .lm .lm-halo, .brand:focus-visible .lm .lm-halo { animation: lm-glow .9s cubic-bezier(.2,.6,.3,1) both }
}

@keyframes lm-stamp {
  0%   { opacity: 0; transform: scale(1.14) }
  55%  { opacity: 1; transform: scale(.96) }
  100% { opacity: 1; transform: scale(1) }
}
@keyframes lm-dab {
  0%   { opacity: 0; transform: scale(.3) }
  100% { opacity: 1; transform: scale(1) }
}
@keyframes lm-write {
  from { stroke-dashoffset: 1 }
  to   { stroke-dashoffset: 0 }
}
@keyframes lm-light {
  from { fill: #F7F3EA }
  to   { fill: #E8C46A }
}
@keyframes lm-glow {
  0%   { opacity: 0; transform: scale(1) }
  20%  { opacity: .95 }
  100% { opacity: 0; transform: scale(2.5) }
}
:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}
