/* PC版与手机版共享内容，按屏幕宽度切换排版。字体参照草堂官网的常规正文与加重栏目层级。 */
:root{
 --sans:Arial,Verdana,"Microsoft YaHei","PingFang SC","Noto Sans CJK SC",sans-serif;
 --serif:"KaiTi","STKaiti","Kaiti SC","Noto Serif CJK SC","SimSun",serif;
}
body{font-family:var(--sans);font-size:15px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
.brand b{font-family:var(--serif);font-weight:700;font-size:29px;letter-spacing:4px}
.header nav a{font-family:var(--sans);font-size:14px;font-weight:400;letter-spacing:.5px}
.hero h1{font-family:var(--serif);font-weight:400;letter-spacing:5px}
.hero h1 span{letter-spacing:3px}
.section h2{font-family:var(--sans);font-size:clamp(27px,2.55vw,37px);font-weight:600;letter-spacing:1px;line-height:1.55}
.section h3,.photo-meta h2{font-family:var(--sans);font-weight:600;letter-spacing:.3px}
.poet-copy h3{font-family:var(--serif);font-weight:600;letter-spacing:7px}
.poet-copy blockquote,.large-copy,.poem-excerpt,.reader-poem{font-family:var(--serif)}
.reader-poem{font-size:26px;line-height:2}
.poem-body h3{font-size:22px}
.reading-timeline h3{font-size:21px}
.section-mark{font-family:var(--serif)}
.kicker{letter-spacing:2px}.gallery-item figcaption{font-family:var(--sans);font-size:15px}
.source-columns h3{font-weight:600;font-size:18px}
/* 图谱：圆形照片、卡通图标、名称标签和有方向的关系箭头。 */
.graph-section{background:#edf1e8}
.graph-canvas{background:#fffefa;border:1px solid #d9e1d2;border-radius:20px;padding:22px;box-shadow:0 8px 30px #2d493108}
.graph-detail{border-radius:16px;border-top:4px solid #426c63;background:#fffefa;scroll-margin-top:110px}
.graph-view-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:17px;flex-wrap:wrap}
.graph-view-switch{display:flex;background:#edf2e9;border-radius:12px;padding:4px;gap:4px}
.graph-view-switch button{padding:7px 14px;font-size:12px;border-radius:9px;color:#5a6e5c;min-height:35px}
.graph-view-switch button.active{background:#426c63;color:#fff;box-shadow:0 2px 6px #315b491a}
.graph-zoom{display:flex;align-items:center;gap:7px}
.graph-zoom button{border:1px solid #d8dfd1;border-radius:9px;min-width:32px;min-height:32px;padding:1px 8px;font-size:14px;background:white}
.graph-zoom span{font-size:11px;color:#71816b;min-width:32px;text-align:center}
.graph-zoom #graph-fit{font-size:11px}
.graph-zoom[hidden]{display:none}
.graph-legend{gap:20px;font-size:11px}
.dot.text{background:#426c63}.dot.today{background:#4774bc}.dot.pending{background:#c37068}
.graph-scroll{width:100%;max-width:none;max-height:700px;overflow:auto;scrollbar-width:thin;scrollbar-color:#a8baa9 transparent;touch-action:pan-x pan-y;margin:14px 0}
.graph-scroll[hidden]{display:none}
#knowledge-graph{display:block;max-width:none;min-height:0;height:auto;aspect-ratio:1030/850;overflow:visible}
.graph-edge{fill:none;stroke:#426c63;stroke-width:2.5;opacity:.8;transition:opacity .25s,stroke-width .25s}
.graph-edge.today{stroke:#4774bc}.graph-edge.pending{stroke:#c37068;stroke-dasharray:8 6}
.graph-edge.dim{opacity:.48}.graph-edge.edge-selected{stroke-width:3.5;opacity:1}
.relation-label rect{fill:#fffefa;stroke:#dce6d8;stroke-width:1}
.relation-label text{font-family:var(--sans);font-size:13px;font-weight:400;fill:#52645b;paint-order:normal;stroke:none}
.relation-label.today text{fill:#44679a}.relation-label.pending text{fill:#ad605a}
.relation-label.label-selected rect{fill:#f3f6ef;stroke:#92af99}
.relation-label.hidden,.graph-node.hidden,.graph-edge.hidden{display:none}
.graph-node .node-ring,.graph-node.center .node-ring,.graph-node.today .node-ring,.graph-node.pending .node-ring{fill:var(--node-bg);stroke:var(--node-color);stroke-width:6;stroke-dasharray:none;filter:drop-shadow(0 5px 5px #28493b16)}
.graph-node.pending .node-ring{stroke-dasharray:6 3}
.graph-node .node-nameplate{fill:var(--node-color);stroke:#fffefa;stroke-width:2}
.graph-node .node-name{font-family:var(--sans);font-size:15px;font-weight:700;fill:white;pointer-events:none;letter-spacing:.3px}
.graph-node.dim{opacity:.9}.graph-node:hover .node-ring,.graph-node.selected .node-ring{stroke-width:9;filter:drop-shadow(0 4px 7px #31584740)}
.graph-node.selected .node-nameplate{stroke:#efc66e;stroke-width:3}
.graph-node .node-art-image{pointer-events:none;transform-box:fill-box;transform-origin:center}
.graph-node.selected.center .node-art-image{animation:scholar-breathe 4s ease-in-out infinite}
@keyframes scholar-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.node-list{gap:7px;padding-top:16px}
.node-list button{font-family:var(--sans);font-size:11px;min-height:30px;padding:3px 10px;border-radius:8px;color:#546653;background:#fafcf7}
.node-list button.active{color:white;background:#426c63;border-color:#426c63}
.node-list[hidden]{display:none}
.graph-art-note{font-size:10px;color:#7a8571;margin-top:12px}
.graph-foot{font-size:11px;align-items:center}
.graph-card-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}
.graph-card-list[hidden]{display:none}
.graph-mini-card{display:flex;align-items:center;gap:13px;border:1px solid #d8e3d3;border-radius:15px;padding:14px;text-align:left;background:#f4f8ef;min-width:0}
.graph-mini-card.today{background:#f1f5fe;border-color:#d5e0f1}.graph-mini-card.pending{background:#fff3ed;border-color:#ead0c7}
.graph-mini-card img{width:53px;height:53px;border-radius:50%;flex-shrink:0;border:3px solid white;box-shadow:0 1px 5px #344d3d20}
.graph-mini-card b{display:block;font-size:13px;font-weight:600;line-height:1.5}.graph-mini-card small{display:block;font-size:10px;color:#7a8871;margin-top:4px}
.graph-mini-card i{font-style:normal;margin-left:auto;font-size:17px;color:#678263}
.graph-mini-card.active{outline:2px solid #426c63;outline-offset:-1px}
.graph-detail h3{font-size:26px}.graph-detail ul{list-style:none;padding:0;margin:0}
.graph-detail li{padding:8px 0;border-bottom:1px dashed #dce1d3}
.related-node{display:block;color:#4774bc;font-size:10px;padding:5px 0;min-height:26px;text-align:left}
.detail-illustration{width:100px;height:100px;border-radius:50%;overflow:hidden;margin:15px 0 20px;border:4px solid #e2ecdc}
.graph-detail .detail-illustration img{margin:0;width:100%;height:100%;object-fit:cover}
.graph-detail .detail-photo{height:160px;border-radius:10px;overflow:hidden;margin:15px 0}
.graph-detail .detail-photo img{margin:0;width:100%;height:100%}
.graph-detail .source-tag{font-size:11px}.mobile-dock{display:none}
@media(min-width:961px){.header nav{gap:23px}.graph-layout{grid-template-columns:minmax(0,1fr) 300px}.graph-detail{max-height:980px;overflow:auto}}
@media(min-width:641px) and (max-width:960px){.graph-detail{display:block;columns:2;column-gap:35px}.graph-detail h3,.graph-detail>.detail-kind{column-span:all}.graph-detail>p,.graph-detail>h4,.graph-detail>ul,.graph-detail>.source-tag{break-inside:avoid}.graph-detail .detail-photo{height:200px}}
@media(max-width:640px){
 html{scroll-padding-top:86px}body{font-size:15px;padding-bottom:calc(65px + env(safe-area-inset-bottom))}
 .header{height:74px;padding-inline:16px;gap:10px}.brand b{font-size:25px;letter-spacing:2px}.brand small{font-size:9px}
 .header nav{top:74px}.header nav a{font-size:15px;min-height:46px;padding:9px 15px}.menu-toggle{min-height:39px;padding:5px 10px;font-size:12px}.motion-toggle{font-size:10px;padding-left:10px}
 .hero{max-height:calc(100svh - 74px);min-height:560px}.hero h1{font-size:46px;letter-spacing:3px}.hero h1 span{font-size:22px;letter-spacing:1px}.hero-copy>p:not(.eyebrow){font-size:14px}.hero-copy{top:18%;left:7%}.hero-link{min-height:44px;font-size:13px;align-items:center}
 .section{padding:50px 20px}.section h2{font-size:25px;line-height:1.6;letter-spacing:0}.section-head{gap:15px}.section-mark{font-size:34px}.kicker{font-size:11px}
 .poet-copy>p:not(.large-copy),.reading-timeline p,.place-route article p,.learning-card p,.family-note p{font-size:14px;line-height:1.95}
 .poet-copy blockquote{font-size:21px}.poem-excerpt{font-size:20px}.reader-poem{font-size:23px}
 .chip{min-height:38px;padding:7px 11px;font-size:12px}.search{font-size:12px;min-height:44px}.search input{font-size:14px;min-height:44px}
 .poem-card{grid-template-columns:30% minmax(0,1fr)}.poem-body{padding:20px 16px}.poem-body h3{font-size:20px;line-height:1.6}.text-link{min-height:42px;padding-top:12px;font-size:13px}
 .graph-section{padding-inline:14px}.graph-section h2{font-size:25px}.graph-canvas{padding:15px 12px;border-radius:17px}.graph-toolbar{padding-inline:6px}.graph-filters{gap:2px}.graph-filters .chip{padding:6px 10px}
 .graph-view-tools{gap:9px;margin-bottom:14px}.graph-view-switch button{padding:7px 11px;font-size:12px;min-height:40px}.graph-zoom{gap:5px}.graph-zoom button{min-height:36px;min-width:31px;padding:0 7px}.graph-zoom span{font-size:10px;min-width:27px}
 .graph-scroll{height:430px;max-height:430px;border:1px solid #edf0e6;border-radius:12px;background:#fffefa;margin:10px 0 15px}
 .graph-mobile-tip{display:block;font-size:11px;line-height:1.6;color:#6c7e65;margin:12px 0 3px}
 .graph-legend{font-size:10px;gap:14px}.node-list button{min-height:36px;font-size:11px;padding:4px 8px}.graph-foot{font-size:10px;line-height:1.8}.graph-art-note{font-size:10px;line-height:1.7}
 .graph-card-list{grid-template-columns:1fr;gap:10px}.graph-mini-card{min-height:88px;padding:14px}.graph-mini-card img{width:59px;height:59px}.graph-mini-card b{font-size:15px}.graph-mini-card small{font-size:12px}
 .graph-detail{display:block;columns:auto;border-radius:17px;padding:23px 20px;scroll-margin-top:90px}.graph-detail h3{font-size:26px}.graph-detail p{font-size:14px;line-height:1.95}.graph-detail li{font-size:13px}.related-node{font-size:12px;min-height:38px}.graph-detail .detail-photo{height:205px}
 .detail-illustration{float:right;width:82px;height:82px;margin:0 0 15px 18px}.graph-detail>.detail-kind,.graph-detail>h3{clear:none}.graph-detail>h4{clear:both}.graph-detail .source-tag{font-size:11px}
 .gallery-section{scroll-margin-top:74px}.gallery-grid{gap:13px}.gallery-item figcaption{font-size:13px;line-height:1.7}.gallery-toolbar p{font-size:14px}
 dialog{max-height:calc(100svh - 30px);width:calc(100% - 24px);padding:42px 22px 25px;border-radius:16px}.dialog-close{min-width:43px;min-height:43px;font-size:29px}dialog h2{font-family:var(--sans);font-weight:600;font-size:25px}dialog p,dialog li{font-size:15px;line-height:1.9}
 .photo-dialog{padding:0}.photo-meta button{min-height:44px;font-size:13px}.task-actions button{min-height:44px;font-size:13px}
 .mobile-dock{display:flex;position:fixed;bottom:0;left:0;right:0;height:calc(62px + env(safe-area-inset-bottom));padding:6px 10px calc(6px + env(safe-area-inset-bottom));z-index:40;background:#fffdf5f5;border-top:1px solid #dfe5d5;box-shadow:0 -4px 20px #304a3110;backdrop-filter:blur(12px);justify-content:space-around;gap:10px}
 .mobile-dock a{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:65px;min-height:48px;color:#587160;text-decoration:none;font-size:10px;line-height:1.5;border-radius:10px}
 .mobile-dock a span{font-size:23px;line-height:1.15;font-family:Arial,sans-serif}.mobile-dock a.current{background:#e9f1e4;color:#294f3e}
 .back-top{bottom:calc(80px + env(safe-area-inset-bottom));right:13px;width:39px;height:39px;line-height:36px}
 footer{padding-bottom:35px}.sources-section .source-columns{font-size:12px}
}
@media print{body{padding-bottom:0}.mobile-dock{display:none!important}}
