.hero{--cell-title: clamp(58px, 9vw, 84px);position:relative;height:100vh;height:100svh;overflow:hidden;outline:none;touch-action:pan-y}.hero:focus-visible{outline:2px dashed rgba(179,64,42,.65);outline-offset:-12px}.hero canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.hero-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;padding-bottom:7vh}.hero-title{display:flex;align-items:center;gap:8px;margin:0;font-weight:400}.title-cell{width:var(--cell-title);height:var(--cell-title);border:1.5px solid rgba(38,32,22,.5);display:flex;align-items:center;justify-content:center;position:relative;flex:none}.title-char{font-size:calc(var(--cell-title) * .58);line-height:1;color:var(--ink);opacity:0}.title-char.on{animation:ink-in .2s ease-out forwards}@keyframes ink-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}.title-pair{position:relative;display:flex;gap:8px}.title-wei{width:0;border-color:transparent;overflow:hidden;transition:width .4s cubic-bezier(.2,.7,.3,1),border-color .4s ease}.title-wei.open{width:var(--cell-title);border-color:#26201680}.title-strike{position:absolute;left:4%;right:4%;top:53%;height:3px;background:var(--vermilion);transform:scaleX(0);transform-origin:left center;border-radius:2px}.title-strike.on{transform:scaleX(1);transition:transform .3s cubic-bezier(.2,.7,.3,1)}.hero-sub{margin-top:30px}.hero-hint{position:absolute;bottom:24px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:10px}.hero-hint-line{width:1px;height:34px;background:var(--graphite);animation:pulse-line 2.4s ease-in-out infinite;transform-origin:top center}@keyframes pulse-line{0%,to{transform:scaleY(.35)}50%{transform:scaleY(1)}}.hero-pencil{position:absolute;right:calc(var(--rule-gap) + 118px);bottom:22px;margin:0}@media (max-width: 720px){.hero-pencil{right:16px;bottom:14px;font-size:12px}.hero-overlay{padding-bottom:10vh}}@media (pointer: coarse){.hero-pencil{display:none}}.read-chapter{position:relative;height:280vh}.read-sticky{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden}.read-grid{border-left:1px solid var(--grid-line);border-top:1px solid var(--grid-line)}.read-cell.is-read{background:#fffcf299}.read-caret{position:absolute;left:18%;right:18%;bottom:3px;height:2px;background:var(--vermilion);animation:caret-blink 1.1s steps(2) infinite}@keyframes caret-blink{50%{opacity:.25}}.read-progress{margin-top:22px;color:var(--graphite)}.chapter-head .rule-marker{right:calc(-1 * var(--rule-gap) - 4px);transform:translate(50%)}@media (max-width: 720px){.chapter-head .rule-marker{right:-10px}}.machine{font-family:var(--font-work);font-size:14.5px;line-height:2.1;background:var(--paper-lift);border:1px solid var(--grid-line);padding:26px 28px;position:relative}.machine-line{position:relative;white-space:pre-wrap;color:var(--graphite)}.machine-line:first-child{color:var(--ink)}.machine-line.is-struck{color:var(--pencil)}.machine-error{margin-top:14px;margin-right:-34px;padding:12px 16px;border-left:3px solid var(--vermilion);background:var(--vermilion-wash);color:var(--vermilion-ink);animation:err-in .3s ease-out}@keyframes err-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.machine-error-sub{color:var(--graphite);font-size:13px;margin-top:6px}.machine-choices{margin-top:22px;display:flex;flex-direction:column;gap:10px}.machine-choice{text-align:left;border:1.5px solid var(--grid-line);background:var(--paper);padding:12px 16px;display:flex;flex-direction:column;gap:4px;transition:border-color .2s ease,background .2s ease}.machine-choice:hover{border-color:var(--vermilion);background:var(--paper-lift)}.machine-choice[aria-pressed=true]{border-color:var(--vermilion);box-shadow:inset 0 0 0 1px var(--vermilion)}.machine-choice-label{font-family:var(--font-settled);font-size:15px;color:var(--ink)}.machine-choice-label:before{content:"朱 ";color:var(--vermilion)}.machine-choice-hint{font-size:13px;color:var(--graphite)}.machine-fix{color:var(--ink)}.machine-fix.is-shame{color:var(--vermilion-ink)}.machine-run{color:var(--ink)}.machine-aside{color:var(--pencil);font-family:var(--font-kai);font-size:14px;margin-top:8px}.type-caret{display:inline-block;width:.55em;height:1em;background:var(--vermilion);vertical-align:-.12em;margin-left:2px;animation:caret-blink 1s steps(2) infinite}.machine-foot{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.machine-record{font-size:12.5px;color:var(--vermilion-ink)}@media (max-width: 720px){.machine{padding:18px 16px;font-size:13.5px}.machine-error{margin-right:0}}.confession{padding-top:72px}.confession-callout{margin:0 0 28px;font-size:15px}.confession-struck{position:relative;padding-right:96px}.confession-fake{font-size:clamp(20px,2.6vw,26px);line-height:2.2;margin:0 0 8px;color:var(--ink)}.strike-clause{position:relative;white-space:nowrap}.strike-clause.is-struck{color:var(--pencil)}.confession-notes{position:absolute;top:-6px;right:34px;display:flex;flex-direction:row-reverse;gap:14px;opacity:0;transition:opacity .4s ease}.confession-notes.show{opacity:1}.confession-notes .zhu-note{max-height:150px}.confession-honest{margin-top:44px;opacity:0;transform:translateY(6px);transition:opacity .6s ease,transform .6s ease}.confession-honest.show{opacity:1;transform:none}.confession-honest p{margin:0 0 6px;color:var(--ink)}@media (max-width: 720px){.confession-struck{padding-right:0}.confession-notes{position:static;flex-direction:column;gap:4px;margin-top:10px}.confession-notes .zhu-note{max-height:none}.strike-clause{white-space:normal}}.finale{padding-bottom:40px}.finale-ledger{margin-bottom:40px}.finale-count{font-size:17px;color:var(--ink);margin:0 0 16px}.finale-strip{display:flex;flex-wrap:wrap;gap:0;border-left:1px solid var(--grid-line);border-top:1px solid var(--grid-line);width:fit-content;max-width:100%}.finale-cell{border-color:#26201647}.finale-echo{margin-bottom:40px;border-left:3px solid var(--vermilion);padding:4px 0 4px 18px}.finale-echo p{margin:0;font-size:17px}.finale-echo-sub{margin-top:8px}.finale-close{margin-bottom:48px}.finale-close p{margin:0;font-size:clamp(19px,2.4vw,24px);line-height:2}.finale-close-strong{color:var(--vermilion-ink)}.finale-seal-row{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-right:-46px}.seal-btn{width:92px;height:92px;background:var(--vermilion);border-radius:6px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px #26201640,inset 0 0 0 3px #f4efe4e6,inset 0 0 0 6px #b3402a;transform:rotate(-3deg);transition:transform .32s cubic-bezier(.34,1.4,.4,1),opacity .3s ease;flex:none}.seal-btn:hover:not(:disabled){transform:rotate(-3deg) scale(1.04)}.seal-btn.is-pressing{transform:rotate(-5deg) scale(.94)}.seal-btn.is-sealed{opacity:.88;cursor:default}.seal-text{font-family:var(--font-settled);font-size:30px;letter-spacing:6px;padding-left:6px;color:var(--paper);writing-mode:vertical-rl}.finale-seal-note{max-width:20em}@media (max-width: 720px){.finale-seal-row{margin-right:0}}.blueprint-toggle{position:fixed;right:14px;bottom:14px;z-index:70;color:var(--pencil);border:1px dashed var(--pencil);padding:6px 12px;background:#f4efe4e6;font-size:12px;letter-spacing:.1em}.blueprint-toggle:hover,.blueprint-toggle[aria-pressed=true]{color:var(--vermilion);border-color:var(--vermilion)}.blueprint{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;pointer-events:none}.blueprint-lines{position:absolute;top:0;right:0;bottom:0;left:0}.bp-h{position:absolute;left:0;right:0;border-top:1px dashed rgba(107,97,83,.4)}.bp-v{position:absolute;top:0;bottom:0;border-left:1px dashed rgba(107,97,83,.4)}.bp-label{position:absolute;left:16px;font-family:var(--font-work);font-size:12px;color:var(--graphite);background:var(--paper-lift);border:1px solid var(--grid-line);padding:4px 10px;max-width:88%}.blueprint-panel{position:absolute;right:14px;bottom:58px;width:min(400px,92vw);max-height:62vh;overflow:auto;background:var(--paper-lift);border:1px solid var(--graphite);padding:18px 20px;pointer-events:auto;box-shadow:0 6px 24px #2620161f}.blueprint-title{font-family:var(--font-work);font-size:13px;color:var(--vermilion);margin:0 0 12px;letter-spacing:.1em}.blueprint-item{position:relative;font-family:var(--font-work);font-size:12.5px;line-height:1.9;color:var(--graphite);margin:0 0 8px;display:flex;flex-wrap:wrap;gap:2px 6px}.blueprint-from{color:var(--pencil);position:relative}.blueprint-strike{position:absolute;left:0;right:0;top:55%;border-top:1.5px solid var(--vermilion)}.blueprint-to{color:var(--ink)}:root{--paper: #f4efe4;--paper-deep: #ebe4d2;--paper-lift: #f9f5ec;--ink: #262016;--graphite: #6b6153;--pencil: #a89c85;--grid-line: rgba(107, 97, 83, .16);--vermilion: #b3402a;--vermilion-ink: #8f3221;--vermilion-wash: rgba(179, 64, 42, .12);--font-settled: "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", "SimSun", Georgia, serif;--font-kai: "Kaiti SC", "STKaiti", "KaiTi", "楷体", "Songti SC", serif;--font-work: ui-monospace, "SF Mono", Consolas, "Liberation Mono", "Courier New", monospace;--cell: clamp(26px, 4.2vw, 34px);--col: min(92vw, 880px);--rule-gap: 18px}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-settled);font-size:17px;line-height:2;-webkit-font-smoothing:antialiased;overflow-x:hidden}::selection{background:var(--vermilion-wash);color:var(--ink)}:focus-visible{outline:2px solid var(--vermilion);outline-offset:3px;border-radius:1px}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}.skip-link{position:absolute;left:16px;top:-60px;z-index:60;padding:8px 14px;background:var(--paper-lift);border:1px solid var(--ink);font-family:var(--font-work);font-size:13px;transition:top .15s ease}.skip-link:focus-visible{top:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.page-root{position:relative;min-height:100vh}.margin-rule{position:absolute;top:0;bottom:0;left:calc(50% + var(--col) / 2 + var(--rule-gap));width:1.5px;background:linear-gradient(to bottom,transparent,var(--vermilion) 6%,var(--vermilion) 94%,transparent);opacity:.75;pointer-events:none}.rule-marker{position:absolute;top:-14px;font-family:var(--font-kai);font-size:15px;color:var(--vermilion);background:var(--paper);padding:2px 3px;line-height:1.3}.ms-row{display:flex;flex-wrap:wrap}.ms-cell{width:var(--cell);height:var(--cell);border-right:1px solid var(--grid-line);border-bottom:1px solid var(--grid-line);display:flex;align-items:center;justify-content:center;position:relative;flex:none}.ms-char{font-size:calc(var(--cell) * .62);line-height:1;font-family:var(--font-work);color:var(--graphite);-webkit-user-select:none;user-select:none}.ms-char.is-ink{font-family:var(--font-settled);color:var(--ink)}.ms-char.is-pencil{color:var(--pencil)}.strike-line{position:absolute;left:8%;right:8%;top:50%;height:2px;margin-top:-1px;background:var(--vermilion);transform:scaleX(0);transform-origin:left center;border-radius:1px;pointer-events:none}.strike-line.is-drawn{transform:scaleX(1);transition:transform .28s cubic-bezier(.2,.7,.3,1)}.settle-dot{position:absolute;top:2px;right:2px;width:5px;height:5px;border-radius:50%;background:var(--vermilion);opacity:.8}.chapter{position:relative;width:var(--col);margin:0 auto;padding:96px 0}.chapter-head{position:relative;display:flex;align-items:baseline;gap:14px;margin-bottom:40px}.chapter-no{font-family:var(--font-work);font-size:13px;letter-spacing:.12em;color:var(--vermilion);flex:none}.chapter-title{font-family:var(--font-settled);font-size:clamp(24px,3.4vw,32px);font-weight:400;letter-spacing:.06em;margin:0;line-height:1.4}.chapter-lede{color:var(--graphite);max-width:34em;margin:0 0 36px}.work-note{font-family:var(--font-work);font-size:13px;color:var(--graphite);line-height:1.9}.pencil-note{font-family:var(--font-kai);color:var(--pencil);font-size:14px}.zhu-note{writing-mode:vertical-rl;font-family:var(--font-kai);font-size:14px;line-height:1.1;color:var(--vermilion);letter-spacing:.08em}.brush-btn{font-family:var(--font-settled);font-size:15px;letter-spacing:.08em;padding:10px 22px;border:1.5px solid var(--ink);border-radius:2px;background:var(--paper-lift);transition:background .2s ease,color .2s ease,border-color .2s ease}.brush-btn:hover{background:var(--ink);color:var(--paper)}.brush-btn:disabled{opacity:.45;cursor:default}.brush-btn:disabled:hover{background:var(--paper-lift);color:var(--ink)}@media (max-width: 720px){:root{--rule-gap: 10px}body{font-size:16px}.chapter{padding:64px 0}.margin-rule{left:auto;right:6px}.zhu-note{writing-mode:horizontal-tb}}.colophon{text-align:center;padding:56px 20px 84px;color:var(--graphite)}.colophon p{margin:0;line-height:2.2}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
