@charset "UTF-8";
:root{color-scheme:light;--bg:#f5f5ef;--surface:#fffefa;--surface-2:#eeeee7;--ink:#222c27;--muted:#68716b;--line:#dddfd5;--accent:#365e48;--accent-soft:#e4eadb;--button-text:#fffefa;--shadow:0 20px 60px #2d3d2b0b;--radius:18px;--script-ink:#9dbe8c;--serif:Georgia,"Noto Serif SC","Songti SC",SimSun,serif;--sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif}
:root[data-theme="dark"]{color-scheme:dark;--script-ink:#b3d1a2;--bg:#161d19;--surface:#202a23;--surface-2:#26322a;--ink:#e9eee6;--muted:#a6b2a7;--line:#37453a;--accent:#b4cf9b;--accent-soft:#2d402f;--button-text:#18261c;--shadow:0 20px 60px #0002}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:98px}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.7 var(--sans);-webkit-font-smoothing:antialiased}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a,input{touch-action:manipulation}button,a{color:inherit}button{cursor:pointer}button:disabled{cursor:default}button{border:0}a{text-decoration:none}svg{display:block}button svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:5px}::selection{background:var(--accent-soft);color:var(--ink)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-70px;left:20px;z-index:100;background:var(--accent);color:var(--button-text);padding:10px 20px;border-radius:6px}.skip-link:focus{top:10px}.section-shell{max-width:1240px;margin:0 auto;padding-left:40px;padding-right:40px}.site-header{height:96px;max-width:1240px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:0 40px;gap:30px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-weight:650;font-size:16px;line-height:1.4}.brand{position:relative}.brand-symbol{display:block;width:44px;height:44px;flex-shrink:0;filter:drop-shadow(0 6px 14px #365e481f)}.brand-symbol svg{width:100%;height:100%;overflow:visible}.brand:hover .brand-symbol{transform:rotate(-6deg)}.brand-symbol{transition:transform .28s cubic-bezier(.34,1.4,.64,1)}.brand [data-profile-name]{background:linear-gradient(96deg,var(--accent),#7d9a6a 62%,var(--ink));-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:-.2px}.brand-sub{display:block;font-size:8px;letter-spacing:1.8px;color:var(--muted);font-weight:500;margin-top:5px}.site-header nav{display:flex;gap:34px;margin-left:auto;margin-right:32px;font-size:13px}.site-header nav a{position:relative;padding:12px 0;color:var(--muted)}.site-header nav a:hover{color:var(--accent)}.site-header nav .nav-work{color:var(--ink)}.nav-work:after{content:"";position:absolute;bottom:3px;width:4px;height:4px;left:calc(50% - 2px);background:var(--accent);border-radius:50%}.theme-toggle{display:flex;gap:7px;align-items:center;padding:9px 12px;background:transparent;border:1px solid var(--line);border-radius:22px;font-size:11px;min-height:40px}.theme-toggle svg{width:16px;height:16px}.hero{display:grid;grid-template-columns:1.13fr 1fr;gap:74px;padding-top:76px;padding-bottom:72px;align-items:center}.eyebrow{display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:1.4px;font-weight:600;color:var(--muted);line-height:1.7}.status-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;flex-shrink:0}.tiny-line{display:inline-block;width:22px;height:1px;background:var(--line);margin:0 4px}.hero h1{font-family:var(--serif);font-size:clamp(44px,4.75vw,66px);letter-spacing:-2px;line-height:1.4;font-weight:600;margin:24px 0}.highlight-word{color:var(--accent);position:relative;display:inline-block}.highlight-word svg{position:absolute;bottom:-5px;left:0;width:100%;height:12px;stroke:#9eac7d;stroke-width:2;fill:none}.hero-intro{color:var(--muted);font-size:14px;line-height:2.1;max-width:440px;margin:27px 0 30px}.hero-actions{display:flex;align-items:center;gap:24px}.button{display:inline-flex;align-items:center;justify-content:center;gap:22px;min-height:47px;padding:10px 21px;border-radius:7px;font-size:13px;font-weight:500;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--accent);color:var(--button-text)}.button-primary span{font-size:20px;line-height:1}.button-secondary{background:var(--accent-soft);color:var(--accent);border:1px solid var(--line)}.text-link{font-size:12px;display:inline-flex;gap:12px;align-items:center}.text-link:hover{color:var(--accent)}.hero-meta{display:flex;align-items:center;gap:22px;font-size:10px;color:var(--muted);margin-top:37px}.hero-meta strong{color:var(--ink);font-family:Georgia,serif;font-size:19px;font-weight:400;margin-right:3px}.hero-meta>span+span{border-left:1px solid var(--line);padding-left:22px}.hero-showcase{background:var(--surface);border:1px solid var(--line);padding:18px;border-radius:16px;box-shadow:var(--shadow);transform:rotate(1deg)}.showcase-top{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:1.05px;color:var(--muted);padding:0 2px 15px}.showcase-top>span:first-child{display:flex;align-items:center;gap:7px}.hero-art{display:block;position:relative;isolation:isolate;width:100%;height:323px;border-radius:9px;background:#e2e7d5;overflow:hidden;text-align:left;color:#354e3b}.poetry-orbit{position:absolute;border:1px solid #bac4aa99;border-radius:50%;width:440px;height:440px;pointer-events:none;z-index:-1}.orbit-one{left:50%;top:65px}.orbit-two{right:32%;bottom:100px}.vertical-note{position:absolute;writing-mode:vertical-rl;right:24px;top:42px;font-family:var(--serif);font-size:12px;letter-spacing:4px;color:#69775d}.poetry-book{position:absolute;left:19%;top:29px;width:53%;height:259px;background:#f7f6ec;border-radius:2px 6px 6px 2px;box-shadow:14px 20px 28px #51644324,3px 0 #cccbb7,-7px 0 #f6f5e7;border-left:1px solid #d5d6c4;transform:rotate(-7deg);padding:18px 18px 14px;transition:transform .4s}.hero-art:hover .poetry-book{transform:rotate(-3deg) translateY(-4px)}.book-top,.book-bottom{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:1px}.book-top{border-bottom:1px solid #c9ccbd;padding-bottom:9px}.book-top span:first-child{font-family:var(--serif);font-size:13px}.book-body{display:flex;align-items:center;justify-content:center;gap:13px;height:162px}.book-character{font-family:var(--serif);font-size:86px;font-weight:400;line-height:1;color:#52694b}.poem-lines{font-family:var(--serif);writing-mode:vertical-rl;line-height:2;letter-spacing:2px;font-size:11px}.book-bottom{border-top:1px solid #c9ccbd;padding-top:10px;font-size:7px;letter-spacing:.5px}.floating-label{position:absolute;left:27%;bottom:39px;background:#fffdf3eF;padding:10px 15px;font-size:11px;border:1px solid #d9dece;border-radius:6px;box-shadow:0 5px 20px #3a523b10;transform:rotate(-3deg);white-space:nowrap}.floating-label span{color:#7c9666;margin-right:4px}.art-note{position:absolute;bottom:10px;left:12px;font-size:8px;letter-spacing:.5px;opacity:.8}.showcase-bottom{display:flex;justify-content:space-between;align-items:center;padding:16px 4px 0}.showcase-bottom h2{font-size:15px;margin:0 0 3px;font-weight:600}.showcase-bottom p{font-size:10px;color:var(--muted);margin:0}.round-arrow{border:1px solid var(--line);width:34px;height:34px;border-radius:50%;background:transparent;font-size:20px;line-height:1}.round-arrow:hover{background:var(--accent-soft)}.skill-strip{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-top:23px;padding-bottom:23px;position:relative}.skill-strip:before,.skill-strip:after{position:absolute;content:"";left:40px;right:40px;height:1px;background:var(--line)}.skill-strip:before{top:0}.skill-strip:after{bottom:0}.skill-strip>span{font-size:11px;color:var(--muted)}.skill-strip>div{display:flex;gap:27px;align-items:center;color:var(--muted);font-family:var(--sans);font-size:16px}.skill-strip b{font-weight:550;letter-spacing:-.3px}.skill-strip>div>span{font-size:12px;font-weight:300;opacity:.4}.work-section{padding-top:74px;padding-bottom:72px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px;gap:24px}.section-heading h2,.about-copy h2{font-family:var(--serif);font-size:30px;letter-spacing:-.6px;margin:10px 0 0;font-weight:600;line-height:1.5}.small-dot{color:var(--accent);margin-left:4px}.section-heading>p{color:var(--muted);font-size:12px;margin:0 0 7px}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:17px}.filters{display:flex;gap:5px;flex-wrap:wrap}.filter-button{display:flex;gap:7px;align-items:center;padding:7px 13px;background:transparent;border:1px solid transparent;border-radius:6px;font-size:12px;min-height:38px;color:var(--muted)}.filter-button small{font-size:9px;opacity:.65}.filter-button[aria-pressed="true"]{background:var(--accent);color:var(--button-text)}.filter-button:not([aria-pressed="true"]):hover{border-color:var(--line);color:var(--ink)}.search-box{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:0 10px;width:231px;height:38px;flex-shrink:0}.search-box:focus-within{border-color:var(--accent)}.search-box svg{width:15px;height:15px;stroke:var(--muted);fill:none;stroke-width:1.6;flex-shrink:0}.search-box input{width:100%;min-width:0;background:transparent;border:0;padding:8px 0;color:var(--ink);font-size:11px;outline:none}.search-box input::placeholder{color:var(--muted)}.search-box input:focus-visible{outline:none}.search-box kbd{font-size:10px;font-family:var(--sans);color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 5px}.results-line{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:var(--muted);margin-bottom:14px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.project-card{border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow:hidden;transition:transform .22s,box-shadow .22s,border-color .22s;display:flex;flex-direction:column}.project-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--accent)}.card-visual-button{display:block;background:transparent;padding:0;width:100%;text-align:left;position:relative}.card-visual-button:focus-visible{outline-offset:-5px;z-index:1}.project-art{position:relative;isolation:isolate;overflow:hidden;height:192px;background:var(--art-bg,#e4e8dc);color:var(--art-ink,#43563d);display:flex;align-items:center;justify-content:center}.project-art:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 15% 20%,#ffffff35,transparent 70%);z-index:-1;pointer-events:none}.art-index{position:absolute;left:16px;top:12px;font-size:8px;letter-spacing:1.3px;opacity:.8}.art-caption{position:absolute;right:12px;bottom:9px;font-size:8px;letter-spacing:.7px;opacity:.85}.card-content{padding:19px 20px 16px;display:flex;flex-direction:column;flex:1}.card-category{font-size:9px;letter-spacing:.7px;color:var(--muted);margin:0 0 5px}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:7px}.card-heading h3{font-size:17px;letter-spacing:-.4px;font-weight:600;margin:0}.card-heading button{background:transparent;text-align:left;padding:0}.card-heading button:hover{color:var(--accent)}.card-heading .card-arrow{color:var(--muted);font-size:18px}.card-summary{font-size:12px;line-height:1.9;color:var(--muted);margin:9px 0 17px;min-height:45px}.tags{display:flex;flex-wrap:wrap;gap:5px}.tag{font-size:9px;padding:2px 7px;border:1px solid var(--line);border-radius:4px;white-space:nowrap;color:var(--muted);background:var(--surface)}.card-footer{margin-top:auto;padding-top:15px;display:flex;justify-content:space-between;align-items:center;gap:8px}.card-footer button{background:transparent;font-size:10px;font-weight:600;padding:5px 0;color:var(--accent)}.card-footer small{font-size:9px;color:var(--muted)}.cover-image{width:100%;height:100%;object-fit:cover}.art-poetry{--art-bg:#e1e6d6;--art-ink:#4b6043}.mini-poetry{display:flex;align-items:center;gap:23px;transform:rotate(-5deg)}.mini-poetry strong{font-family:var(--serif);font-weight:400;font-size:90px;line-height:1}.mini-poetry span{writing-mode:vertical-rl;font:12px/2.2 var(--serif);letter-spacing:3px}.mini-stamp{position:absolute;right:43px;top:45px;border:1px solid #8c5f42;color:#8c5f42;padding:4px;writing-mode:vertical-rl;font-family:var(--serif);font-size:10px;opacity:.75}.art-debate{--art-bg:#ebe4de;--art-ink:#715744}.debate-portrait{display:flex;align-items:center;gap:18px}.debate-side{height:80px;width:72px;border:1px solid #baa898;background:#f7f2e9;border-radius:38px 38px 13px 13px;text-align:center;display:flex;flex-direction:column;justify-content:center;transform:rotate(-8deg);font-family:var(--serif);font-size:26px;box-shadow:4px 6px #cfc2b43b}.debate-side:last-child{transform:rotate(8deg);background:#d8ccc1}.debate-side small{font:7px var(--sans);letter-spacing:1.4px;margin-top:5px}.debate-vs{font-family:Georgia,serif;font-style:italic;font-size:22px}.debate-bubble{position:absolute;left:19px;top:42px;border:1px solid #cfbeb0;border-radius:9px 9px 0 9px;background:#f8f1e9;padding:4px 9px;font-size:8px;transform:rotate(-7deg)}.art-dictionary{--art-bg:#dce5e8;--art-ink:#425a66}.dict-window{width:205px;border:1px solid #b8cacf;border-radius:9px;background:#f4f7f5;box-shadow:9px 13px 0 #bfd0d338;padding:11px 15px;transform:rotate(-4deg);color:#3d525e}.window-dots{display:flex;gap:4px;align-items:center;font:7px var(--sans);color:#687d84}.window-dots i{display:block;width:4px;height:4px;border-radius:50%;background:#b3c3c5}.window-dots span{margin-left:auto}.dict-word{font:24px/1.6 Georgia,serif;margin-top:6px}.dict-pronounce{font:9px Georgia,serif;color:#73828a}.dict-meaning{font-size:10px;margin-top:8px;padding-top:7px;border-top:1px solid #dbe3e2}.shortcut{position:absolute;right:17px;bottom:20px;padding:3px 8px;border:1px solid #b4c5cb;border-radius:4px;background:#eaf0ef;font-size:8px;transform:rotate(5deg)}.art-word{--art-bg:#eee6d4;--art-ink:#776544}.word-root{position:relative;text-align:center}.word-root .root-word{font:40px Georgia,serif;letter-spacing:-1px}.root-word span{color:#a68343;border-bottom:1px solid #b69960;padding-bottom:5px}.root-parts{display:flex;justify-content:center;gap:47px;font-size:9px;margin-top:15px}.root-line{width:190px;border-top:1px dashed #b7a783;position:absolute;top:68px;left:50%;transform:translateX(-50%)}.art-cards{--art-bg:#e6e5ed;--art-ink:#655b7c}.note-card{position:absolute;width:142px;height:106px;border:1px solid #c8c2d3;border-radius:7px;padding:13px;background:#f7f5fa;box-shadow:0 7px 15px #6255750c;left:calc(50% - 71px);top:45px}.note-card.back{transform:rotate(-13deg) translate(-35px,-6px);background:#ddd8e7}.note-card.front{transform:rotate(7deg) translate(22px,-1px)}.note-card>span{font-size:8px;letter-spacing:1px}.note-card>strong{font-size:12px;display:block;margin:6px 0 10px}.note-line{height:3px;background:#d8d2e0;border-radius:3px;margin:7px 0;width:100%}.note-line.short{width:60%}.art-mods{--art-bg:#e4e8de;--art-ink:#55664d}.mod-window{width:204px;background:#f5f6ef;border:1px solid #bdc8b6;border-radius:8px;padding:11px 13px;transform:rotate(-4deg)}.mod-title{font-size:10px;padding-bottom:7px;border-bottom:1px solid #d5ddce}.mod-row{display:flex;align-items:center;gap:8px;font-size:9px;margin-top:9px}.mod-box{width:11px;height:11px;border:1px solid #899a7c;border-radius:3px;background:#d7e3c8}.mod-status{margin-left:auto;font-size:8px;color:#617451}.art-graph{--art-bg:#e3e8e5;--art-ink:#4f7264}.graph-visual{width:245px;height:152px;overflow:visible}.graph-visual line{stroke:#9db2a6;stroke-width:1.5}.graph-visual circle{stroke:#9db2a6;stroke-width:1;fill:#f5f7ef}.graph-visual .graph-core{fill:#799580;stroke:#63876c}.graph-visual text{font:9px var(--sans);fill:#4f6558;text-anchor:middle;dominant-baseline:middle}.graph-visual .core-label{fill:#fff}.art-tree{--art-bg:#e9e1da;--art-ink:#7c6152}.tree-visual{width:188px;font:11px/1.8 monospace;transform:rotate(-3deg);background:#f8f4ed;border:1px solid #d1bfb0;border-radius:7px;padding:11px 17px;color:#765f50;box-shadow:7px 10px #cdbfaf40}.tree-visual .tree-title{font-weight:600;font-size:10px;padding-bottom:5px;border-bottom:1px solid #e4d8cc;margin-bottom:5px}.tree-leaf{display:block;padding-left:14px}.tree-leaf em{font-size:8px;color:#8b8174;font-style:normal;margin-left:9px}.empty-state{text-align:center;padding:60px 20px;background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius)}.empty-state>span{font-size:40px;color:var(--muted)}.empty-state h3{font-family:var(--serif);font-size:23px;font-weight:500}.empty-state p{color:var(--muted);font-size:13px}.empty-state button{margin-top:12px}.about-section{padding-top:0;padding-bottom:54px}.about-card{display:grid;grid-template-columns:1fr 1.2fr;border-radius:14px;background:var(--surface-2);border:1px solid var(--line);padding:44px 49px;gap:75px}.about-mark{display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--line)}.about-mark>span{font:54px/1.03 Georgia,serif;letter-spacing:-2px;color:var(--accent)}.mark-caption{margin-top:26px;font-size:11px;color:var(--muted);letter-spacing:2px}.about-copy h2{font-size:28px;margin-top:9px}.about-copy>p{font-size:12px;color:var(--muted);line-height:2;margin:15px 0 20px}.principles{display:flex;flex-direction:column;gap:13px}.principles>div{display:flex;gap:15px;align-items:flex-start}.principles>div>span{font:11px Georgia,serif;color:var(--muted);padding-top:4px}.principles p{font-size:11px;color:var(--muted);margin:0;line-height:1.8}.principles strong{display:block;color:var(--ink);font-size:12px;font-weight:550}.learning-section{display:flex;align-items:center;gap:24px;padding-top:15px;padding-bottom:57px}.learning-icon{width:68px;height:68px;flex-shrink:0;background:var(--accent-soft);color:var(--accent);border-radius:14px;display:flex;align-items:center;justify-content:center}.learning-icon svg{width:35px;height:35px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.learning-section h2{font-family:var(--serif);font-size:23px;letter-spacing:-.6px;font-weight:600;margin:5px 0}.learning-section p{font-size:12px;color:var(--muted);margin:0}.coming-soon{display:flex;align-items:center;gap:7px;margin-left:auto;white-space:nowrap;background:var(--surface-2);border:1px solid var(--line);padding:7px 12px;border-radius:5px;font-size:10px;color:var(--muted)}.site-footer{padding-top:28px;padding-bottom:30px;display:flex;justify-content:space-between;align-items:center;position:relative;gap:20px}.site-footer:before{content:"";height:1px;background:var(--line);left:40px;right:40px;top:0;position:absolute}.footer-brand{font-family:var(--serif);font-size:16px}.site-footer p{font-size:10px;color:var(--muted);margin:6px 0 0}.footer-right{display:flex;gap:25px;align-items:center;font-size:10px;color:var(--muted)}.footer-right a{color:var(--ink)}.footer-right a:hover{color:var(--accent)}.noscript-notice{padding:20px;border:1px solid var(--line)}
/* 手写开场白 / 尾页签名：中线等粗细描边、逐笔揭示。刻意无笔锋（用户选定形态）。淡绿近白、纯色无渐变无模糊，靠 --script-ink 统一调色。
   子规则挂在 [data-rendered="handwriting"] 上而不是 .hero-intro，这样任何被手写模块渲染过的元素都能复用。 */
.hero-intro[data-rendered="handwriting"]{color:var(--muted);font-size:12px;line-height:1.9}[data-rendered="handwriting"] .handwriting{display:block;width:var(--handwriting-width,clamp(190px,56%,290px));height:auto;margin:10px 0 8px;overflow:visible}[data-rendered="handwriting"] .handwriting-stroke{fill:none;stroke:var(--script-ink);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;stroke-dasharray:var(--length,0) calc(var(--length,0)*2);stroke-dashoffset:var(--length,0);animation:handwriting-reveal var(--duration,760ms) cubic-bezier(.42,.05,.2,1) var(--delay,0ms) forwards}[data-rendered="handwriting"] .handwriting-fallback{opacity:0}[data-rendered="handwriting"] .handwriting-fallback-text{fill:var(--script-ink);stroke:none;font-family:"Kaiti SC","STKaiti",KaiTi,"Noto Serif SC",serif}[data-rendered="handwriting"].handwriting-instant .handwriting-stroke{animation:none;stroke-dashoffset:0}[data-rendered="handwriting"].handwriting-instant .handwriting-fallback{opacity:1}
/* 尾页签名比开场白小一号，避免在正文段落里显得过重。 */
.about-copy>p[data-rendered="handwriting"]{--handwriting-width:clamp(130px,38%,200px)}
/* 笔画从整段隐藏推到整段显形，得到沿笔迹方向"写出来"的效果。 */
@keyframes handwriting-reveal{from{stroke-dashoffset:var(--length,0)}to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){[data-rendered="handwriting"] .handwriting-stroke{animation:none;stroke-dashoffset:0}[data-rendered="handwriting"] .handwriting-fallback{opacity:1}}
/* 手写先排好版但按住不动（ink-waiting），等开屏结束 / 滚动到视口再放开，从第一笔开始写。 */
[data-rendered="handwriting"].ink-waiting .handwriting-stroke{animation-play-state:paused}
/* 蜡笔图标：页头与开屏共用同一份 SVG。质感来自 #crayon-grain：噪声位移让边缘毛糙，噪声做透明度蒙版留出纸纹白点。 */
:root{--crayon-dot:#7d9a6a}:root[data-theme="dark"]{--crayon-dot:#9dbe8c}
.crayon-mark path{fill:none;stroke-linecap:round;stroke-linejoin:round}.crayon-fill{stroke:var(--accent-soft);stroke-width:3.1}.crayon-frame{stroke:var(--accent);stroke-width:1.5;stroke-opacity:.5}.crayon-ink{stroke:var(--accent);stroke-width:3.3}.crayon-dot{stroke:var(--crayon-dot);stroke-width:2.6}
/* 开屏：仅 html.splash-pending 时显示（由 <head> 内联脚本在首帧前决定，每个会话一次）。 */
.splash{display:none}html.splash-pending .splash{display:grid;place-items:center;position:fixed;inset:0;z-index:200;cursor:pointer}.splash-veil{position:absolute;inset:0;background:var(--bg)}.splash-mark{position:relative;width:132px;height:132px;transform-origin:center;filter:drop-shadow(0 18px 40px #365e481f)}.splash-mark svg{width:100%;height:100%;overflow:visible}.splash-fade{opacity:0;transition:opacity .4s ease}
html.splash-pending .brand-symbol svg{visibility:hidden}
html.splash-pending main,html.splash-pending .site-footer{opacity:0;transform:translateY(14px)}html.splash-pending .site-header>:not(.brand),html.splash-pending .brand>span:last-child{opacity:0}
html.splash-revealing .splash-veil{opacity:0;transition:opacity .65s ease .1s}html.splash-revealing main,html.splash-revealing .site-footer{opacity:1;transform:none;transition:opacity .6s ease .12s,transform .68s cubic-bezier(.2,.7,.2,1) .12s}html.splash-revealing .site-header>:not(.brand),html.splash-revealing .brand>span:last-child{opacity:1;transition:opacity .55s ease .2s}
/* 绘制顺序：外框 → 斜排线填色 → h 竖笔 → h 弯笔 → 圆点。pathLength=1 让每笔都用 0..1 的 dash 进度。 */
.splash-drawing svg{animation:splash-in .45s ease-out both}.splash-drawing .crayon-mark path{stroke-dasharray:1 1.05;stroke-dashoffset:1.02;animation:crayon-draw var(--d,.5s) cubic-bezier(.55,.08,.3,1) var(--t,0s) both}.splash-drawing .crayon-frame{--t:.15s;--d:.8s}.splash-drawing .crayon-fill{--t:.72s;--d:.82s;animation-timing-function:cubic-bezier(.4,.1,.5,1)}.splash-drawing .crayon-stem{--t:1.3s;--d:.32s}.splash-drawing .crayon-arch{--t:1.56s;--d:.5s}.splash-drawing .crayon-dot{--t:1.98s;--d:.3s}
.splash-drawn .crayon-mark path,.splash-drawn svg{animation:none!important;stroke-dashoffset:0;opacity:1}
@keyframes crayon-draw{0%{stroke-dashoffset:1.02;opacity:0}4%{opacity:1}100%{stroke-dashoffset:0;opacity:1}}
@keyframes splash-in{from{opacity:0;transform:scale(.94) rotate(-3deg)}to{opacity:1;transform:none}}
@supports not ((-webkit-background-clip:text) or (background-clip:text)){.brand [data-profile-name]{background:none;color:var(--accent)}}
/* 数据驱动的精选封面与长内容保持同一布局，不绑定特定项目。 */
.hero-art>.project-art{height:100%;width:100%}.showcase-bottom>div{min-width:0;padding-right:10px}.showcase-bottom .round-arrow{flex-shrink:0}.search-box kbd{white-space:nowrap}.card-heading h3,.card-summary,.dialog-description,.highlight-list,.hero-intro,.showcase-bottom h2,.showcase-bottom p{overflow-wrap:anywhere}.hero:has(.hero-showcase[hidden]){grid-template-columns:1fr}.brand [data-profile-name]{overflow-wrap:anywhere;max-width:180px;display:inline-block}
/* 原生对话框保留浏览器焦点约束、Esc 关闭与语义。 */
dialog{width:min(800px,calc(100% - 32px));max-height:88vh;max-height:88dvh;padding:0;border:1px solid var(--line);border-radius:16px;color:var(--ink);background:var(--surface);box-shadow:0 24px 100px #0004;overscroll-behavior:contain}dialog::backdrop{background:#17231d88;backdrop-filter:blur(5px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:13px 24px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:2}.dialog-head>span{font-size:9px;letter-spacing:1.5px;color:var(--muted)}.dialog-head button{background:var(--surface-2);color:var(--ink);border-radius:50%;width:36px;height:36px;font-size:24px;line-height:1}.dialog-main{padding:24px 30px 30px}.dialog-main .project-art{height:245px;border-radius:9px;margin-bottom:24px}.dialog-title-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.dialog-title-row h2{font-size:27px;font-family:var(--serif);margin:4px 0 9px}.dialog-main>.eyebrow{font-size:9px}.dialog-main .tags{margin-bottom:18px}.dialog-description{font-size:14px;color:var(--muted);line-height:1.95}.dialog-main h3{font-size:15px;margin-top:24px}.highlight-list{padding:0;list-style:none;display:grid;gap:10px;font-size:13px}.highlight-list li{position:relative;padding-left:20px}.highlight-list li:before{position:absolute;left:0;top:10px;content:"";width:5px;height:5px;background:var(--accent);border-radius:50%}.project-note{background:var(--surface-2);border-radius:7px;padding:12px 14px;font-size:11px;color:var(--muted);line-height:1.8}.dialog-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:23px}.pending-link{font-size:11px;color:var(--muted);padding:9px 13px;border:1px dashed var(--line);border-radius:6px}.content-provenance{margin:18px 0 0;font-size:10px;color:var(--muted)}body.dialog-open{overflow:hidden}
/* 深色主题下示意图也使用深底亮字，避免切换后大块发白。 */
[data-theme="dark"] .hero-art{background:#2c3d2b;color:#dbe6ce}[data-theme="dark"] .vertical-note{color:#a7b994}[data-theme="dark"] .poetry-orbit{border-color:#60735155}[data-theme="dark"] .poetry-book{background:#374a33;border-color:#5f7156;box-shadow:14px 20px 28px #1115,3px 0 #54684b,-7px 0 #2f402d}[data-theme="dark"] .book-top,[data-theme="dark"] .book-bottom{border-color:#667958}[data-theme="dark"] .book-character{color:#c9dbb4}[data-theme="dark"] .floating-label{background:#415337;color:#dfebd3;border-color:#687b58}[data-theme="dark"] .floating-label span{color:#c1dca2}[data-theme="dark"] .project-art{--art-bg:#304033;--art-ink:#c6d9b5}[data-theme="dark"] .project-art:after{background:radial-gradient(ellipse at 15% 20%,#ffffff06,transparent 70%)}[data-theme="dark"] .art-debate,[data-theme="dark"] .art-tree{--art-bg:#42392f;--art-ink:#e0c4ac}[data-theme="dark"] .art-dictionary{--art-bg:#2c3e46;--art-ink:#c4dbe1}[data-theme="dark"] .art-word{--art-bg:#403c2c;--art-ink:#dfd0aa}[data-theme="dark"] .art-cards{--art-bg:#3b364b;--art-ink:#d6cbe8}[data-theme="dark"] .debate-side,[data-theme="dark"] .debate-bubble,[data-theme="dark"] .tree-visual{background:#514536;border-color:#847260;color:#edddc9}[data-theme="dark"] .debate-side:last-child{background:#62503e}[data-theme="dark"] .tree-title{border-color:#7c6a58}[data-theme="dark"] .tree-leaf em{color:#c4b6a5}[data-theme="dark"] .dict-window,[data-theme="dark"] .shortcut{background:#394d54;border-color:#6d8990;color:#d2e3e8}[data-theme="dark"] .dict-pronounce,[data-theme="dark"] .window-dots{color:#bdced4}[data-theme="dark"] .dict-meaning{border-color:#6d8990}[data-theme="dark"] .note-card{background:#4c435f;border-color:#8e80a1}[data-theme="dark"] .note-card.back{background:#5c5270}[data-theme="dark"] .note-line{background:#8d7ca6}[data-theme="dark"] .mod-window{background:#3f5036;border-color:#7a8d69}[data-theme="dark"] .mod-title{border-color:#758b63}[data-theme="dark"] .mod-status{color:#c0d5af}[data-theme="dark"] .mod-box{background:#90a873}[data-theme="dark"] .root-word span{color:#dac18a;border-color:#af9766}[data-theme="dark"] .graph-visual circle{fill:#455d48;stroke:#8da286}[data-theme="dark"] .graph-visual .graph-core{fill:#607e58}[data-theme="dark"] .graph-visual text{fill:#e0ecda}[data-theme="dark"] .mini-stamp{color:#d8aa8a;border-color:#bd8e6f}
@media(min-width:1500px){.hero{padding-top:88px;padding-bottom:86px}}
@media(max-width:1000px){.hero{gap:35px}.hero h1{font-size:53px}.hero .eyebrow{font-size:9px;letter-spacing:.5px}.hero .tiny-line{display:none}.hero-art{height:295px}.poetry-book{height:244px;top:25px;left:16%;width:57%;padding:15px}.book-body{height:153px}.book-character{font-size:76px}.vertical-note{right:16px}.floating-label{left:20%;bottom:28px;font-size:10px}.skill-strip>div{gap:18px;font-size:14px}.project-grid{gap:17px}.card-content{padding:17px 15px}.card-heading h3{font-size:16px}.filter-button{padding:7px 9px;font-size:11px}.search-box{width:210px}.about-card{gap:42px;padding:36px}.about-mark>span{font-size:48px}.section-heading>p{font-size:11px}}
@media(max-width:800px){.section-shell,.site-header{padding-left:24px;padding-right:24px}.site-header{height:80px}.site-header nav{margin-right:0;gap:23px}.hero{padding-top:45px;padding-bottom:42px;gap:26px}.hero h1{font-size:43px;letter-spacing:-1px}.hero-copy>.eyebrow{font-size:8px;flex-wrap:wrap;letter-spacing:.4px}.hero-intro{font-size:12px;line-height:1.9;margin:20px 0}.hero-actions{gap:14px;flex-wrap:wrap}.hero-actions .button{min-height:43px;font-size:11px;padding:9px 14px;gap:12px}.hero-actions .text-link{font-size:10px}.hero-meta{gap:10px;font-size:9px;margin-top:22px}.hero-meta>span+span{padding-left:10px}.hero-showcase{padding:12px}.hero-art{height:270px}.showcase-top{font-size:8px;letter-spacing:.1px;padding-bottom:12px}.poetry-book{width:60%;left:13%;height:221px;top:22px;padding:12px}.book-body{height:139px;gap:9px}.book-character{font-size:67px}.poem-lines{font-size:9px;letter-spacing:1px}.book-top{font-size:7px}.book-top span:first-child{font-size:11px}.book-bottom{font-size:6px;letter-spacing:0}.floating-label{font-size:8px;padding:7px 10px;bottom:31px;left:17%}.vertical-note{font-size:9px;right:13px;top:30px}.showcase-bottom h2{font-size:13px}.showcase-bottom p{font-size:8px}.skill-strip:before,.skill-strip:after,.site-footer:before{left:24px;right:24px}.skill-strip{padding-top:20px;padding-bottom:20px;gap:18px;flex-wrap:wrap}.skill-strip>span{font-size:10px}.skill-strip>div{gap:14px;font-size:13px}.work-section{padding-top:50px;padding-bottom:45px}.section-heading{align-items:start;gap:10px;flex-direction:column;margin-bottom:23px}.section-heading h2{font-size:28px}.filter-bar{flex-wrap:wrap;gap:12px}.filters{gap:4px}.filter-button{font-size:11px;padding:7px 10px}.search-box{width:100%}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.project-art{height:194px}.card-content{padding:18px}.card-summary{min-height:46px}.about-card{grid-template-columns:.85fr 1.15fr;gap:28px;padding:29px}.about-mark>span{font-size:38px;letter-spacing:-1px}.about-copy h2{font-size:24px}.learning-section{flex-wrap:wrap;gap:18px}.learning-section>div:nth-child(2){flex:1}.learning-section h2{font-size:20px}.learning-section p{font-size:11px}.coming-soon{margin-left:86px}.footer-right{gap:14px;flex-wrap:wrap;justify-content:flex-end}.footer-right>span{font-size:9px}}
@media(max-width:560px){html{scroll-padding-top:25px}.section-shell,.site-header{padding-left:20px;padding-right:20px}.site-header{height:75px;gap:12px}.brand{font-size:13px;gap:8px}.brand-symbol{font-size:35px}.brand-sub{font-size:6px;letter-spacing:1px}.site-header nav{gap:16px;font-size:11px}.site-header nav a:last-child{display:none}.theme-toggle{min-height:36px;width:36px;padding:9px;flex-shrink:0;justify-content:center}.theme-label{display:none}.hero{grid-template-columns:1fr;padding-top:34px;gap:35px}.hero-copy>.eyebrow{font-size:8px;letter-spacing:.5px}.hero h1{font-size:clamp(43px,11vw,59px);margin:19px 0;line-height:1.38}.hero-intro{font-size:13px;max-width:100%;margin:23px 0}.hero-actions{gap:23px}.hero-actions .button{font-size:12px;padding:10px 17px;min-height:45px}.hero-actions .text-link{font-size:11px}.hero-meta{margin-top:25px;gap:16px;font-size:10px}.hero-meta>span+span{padding-left:16px}.hero-showcase{transform:none;padding:14px;max-width:430px;width:100%;justify-self:center}.showcase-top{font-size:8px;letter-spacing:.7px}.hero-art{height:285px}.poetry-book{width:51%;left:23%;height:233px;top:22px;padding:13px}.book-body{height:146px}.book-character{font-size:77px}.poem-lines{font-size:10px}.book-top span:first-child{font-size:12px}.floating-label{left:30%;font-size:9px;bottom:30px;padding:8px 10px}.vertical-note{right:16px;font-size:10px}.showcase-bottom h2{font-size:14px}.showcase-bottom p{font-size:9px}.skill-strip{gap:14px}.skill-strip>div{width:100%;gap:0;justify-content:space-between;font-size:13px}.skill-strip:before,.skill-strip:after,.site-footer:before{left:20px;right:20px}.work-section{padding-top:43px}.section-heading h2{font-size:27px}.eyebrow{font-size:9px;letter-spacing:1.1px}.filters{gap:2px;justify-content:space-between;width:100%}.filter-button{font-size:10px;padding:6px 7px;gap:4px}.filter-button small{font-size:8px}.results-line{font-size:9px;flex-wrap:wrap;gap:4px;margin-bottom:13px}.project-grid{grid-template-columns:1fr;gap:22px}.project-art{height:207px}.card-content{padding:20px}.card-heading h3{font-size:19px}.card-summary{font-size:13px;min-height:0;margin:9px 0 14px}.card-category{font-size:10px}.tag{font-size:10px}.card-footer button{font-size:11px}.card-footer small{font-size:10px}.about-card{grid-template-columns:1fr;padding:27px;gap:28px}.about-mark{border-right:0;border-bottom:1px solid var(--line);padding-bottom:25px}.about-mark>span{font-size:44px}.mark-caption{margin-top:18px}.about-copy h2{font-size:25px}.about-copy>p{font-size:13px}.principles p{font-size:12px}.principles strong{font-size:13px}.learning-section{padding-top:0;padding-bottom:37px;gap:15px}.learning-icon{width:48px;height:48px;border-radius:10px}.learning-icon svg{width:28px;height:28px}.learning-section h2{font-size:20px;margin:7px 0 9px}.learning-section .eyebrow{font-size:8px}.learning-section p{font-size:12px}.coming-soon{margin-left:63px}.site-footer{padding-top:24px;padding-bottom:25px;align-items:start;flex-direction:column;gap:15px}.footer-right{width:100%;justify-content:space-between;font-size:10px}.dialog-head{padding:12px 16px}.dialog-main{padding:18px}.dialog-main .project-art{height:195px;margin-bottom:20px}.dialog-title-row h2{font-size:24px}.dialog-description{font-size:13px}.highlight-list{font-size:12px}.dialog-actions{gap:8px}.pending-link{font-size:10px}.content-provenance{font-size:9px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
