:root{--ink:#202a28;--muted:#6b7773;--paper:#f4f2ec;--panel:#fffefa;--line:#deded4;--teal:#295b55;--teal-soft:#e7efeb;--rust:#a45c42;--gold:#b18a4b;--shadow:0 12px 32px rgba(38,53,47,.07)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Source Sans 3","Noto Serif SC",sans-serif}.topbar{height:76px;background:#fbfaf6;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,4vw,60px);position:sticky;top:0;z-index:10}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);text-decoration:none}.brand-mark{display:grid;place-items:center;width:40px;height:40px;background:var(--teal);color:#fff;border-radius:4px;font-family:"Noto Serif SC",serif;font-size:22px}.brand strong,.brand small{display:block}.brand strong{font-family:"Noto Serif SC",serif;font-size:16px;letter-spacing:.08em}.brand small{font-size:11px;color:var(--muted);letter-spacing:.1em;margin-top:3px}.top-actions{display:flex;align-items:center;gap:12px}.search-wrap{display:flex;align-items:center;gap:8px;background:#f1f0e9;border:1px solid var(--line);border-radius:3px;padding:8px 12px;color:var(--muted);width:min(340px,40vw)}.search-wrap input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font:inherit}.menu-toggle{display:none;border:1px solid var(--line);background:#fffefa;border-radius:3px;padding:8px 10px;color:var(--teal)}.layout{display:grid;grid-template-columns:270px minmax(0,1fr);max-width:1600px;margin:0 auto;min-height:calc(100vh - 76px)}.sidebar{background:#eeede6;border-right:1px solid var(--line);padding:30px 18px 22px;position:sticky;top:76px;height:calc(100vh - 76px);overflow:auto}.side-kicker{font-size:10px;letter-spacing:.18em;color:#7e8781;margin:0 12px 16px}.nav-group{margin:22px 0}.nav-title{padding:0 12px 8px;color:#8b8d83;font-size:10px;letter-spacing:.14em;text-transform:uppercase}.nav-link{display:flex;justify-content:space-between;align-items:center;text-decoration:none;color:#47534f;padding:9px 12px;border-radius:3px;font-size:14px;line-height:1.35}.nav-link:hover{background:#e4e5dc}.nav-link.active{background:var(--teal);color:white}.nav-link .count{font-size:11px;opacity:.7;font-variant-numeric:tabular-nums}.chapter-links{max-height:46vh;overflow:auto;margin-top:4px}.side-foot{border-top:1px solid #d6d8cf;margin:24px 10px 0;padding-top:14px;color:#7c837c;font-size:11px;line-height:1.6}main{min-width:0;padding:clamp(26px,5vw,68px);max-width:1250px;width:100%;margin:0 auto}.status{color:var(--muted);padding:14px 0}.status.error{color:#9c4638}.hero{padding:clamp(28px,5vw,62px);background:var(--teal);color:#f7f4ea;min-height:270px;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;box-shadow:var(--shadow)}.hero:after{content:"";position:absolute;right:5%;top:-55%;width:330px;height:330px;border:1px solid rgba(255,255,255,.17);border-radius:50%;box-shadow:0 0 0 30px rgba(255,255,255,.035),0 0 0 60px rgba(255,255,255,.035)}.eyebrow{font-size:11px;letter-spacing:.2em;text-transform:uppercase;opacity:.76}.hero h1{font-family:"Noto Serif SC",serif;font-size:clamp(34px,5vw,64px);font-weight:500;letter-spacing:.09em;margin:15px 0 9px;position:relative;z-index:1}.hero p{max-width:700px;line-height:1.9;margin:0;color:#e1e8df;position:relative;z-index:1}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 34px}.stat{background:var(--panel);border:1px solid var(--line);padding:18px 20px}.stat b{font-family:"Noto Serif SC",serif;font-size:25px;color:var(--teal);display:block}.stat span{font-size:12px;color:var(--muted)}.section-title{font-family:"Noto Serif SC",serif;font-weight:500;font-size:23px;margin:30px 0 15px}.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.module-card{display:block;text-decoration:none;color:inherit;background:var(--panel);border:1px solid var(--line);padding:18px 20px;transition:.18s}.module-card:hover{border-color:#98b4aa;transform:translateY(-2px);box-shadow:var(--shadow)}.module-card .tag{font-size:10px;letter-spacing:.12em;color:var(--rust)}.module-card h3{font:500 17px "Noto Serif SC",serif;margin:9px 0}.module-card p{font-size:13px;color:var(--muted);line-height:1.65;margin:0}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:25px}.page-head h1{font:500 clamp(26px,4vw,38px) "Noto Serif SC",serif;margin:0 0 8px}.page-head p{color:var(--muted);margin:0;font-size:13px}.source-link{color:var(--teal);font-size:12px;text-decoration:none;border-bottom:1px solid #a9bdb4;white-space:nowrap}.content-card{background:var(--panel);border:1px solid var(--line);padding:clamp(18px,3vw,34px);box-shadow:0 4px 18px rgba(38,53,47,.025)}.markdown{font-size:15px;line-height:1.85;overflow-wrap:anywhere}.markdown h2{font:600 25px "Noto Serif SC",serif;margin:1.7em 0 .7em;padding-bottom:.35em;border-bottom:1px solid var(--line)}.markdown h3{font:600 19px "Noto Serif SC",serif;margin:1.5em 0 .6em;color:var(--teal)}.markdown h4{font-size:16px;margin:1.35em 0 .5em}.markdown p{margin:.7em 0}.markdown blockquote{margin:1em 0;padding:10px 16px;border-left:3px solid var(--gold);background:#f7f4eb;color:#54584f}.markdown table{border-collapse:collapse;width:100%;font-size:13px;line-height:1.65;margin:1em 0 1.5em;display:block;overflow-x:auto}.markdown th,.markdown td{border:1px solid var(--line);padding:9px 11px;text-align:left;vertical-align:top;min-width:90px}.markdown th{background:#e9eee9;color:#345b54;font-weight:600}.markdown ul,.markdown ol{padding-left:1.5em}.markdown li{margin:.35em 0}.markdown code{background:#f0eee6;padding:1px 4px;border-radius:2px;font-size:.9em}.markdown pre{white-space:pre-wrap;background:#f0eee6;padding:16px;overflow:auto;font-size:12px}.chapter-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 18px}.chapter-toolbar select,.chapter-toolbar input{border:1px solid var(--line);background:var(--panel);padding:9px 12px;border-radius:3px;font:inherit;color:var(--ink)}.chapter-toolbar input{flex:1;min-width:180px}.chapter-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:16px;align-items:start}.chapter-list{position:sticky;top:96px;max-height:calc(100vh - 120px);overflow:auto;background:var(--panel);border:1px solid var(--line);padding:8px}.chapter-item{display:flex;gap:10px;width:100%;text-align:left;border:0;border-bottom:1px solid #edede7;background:transparent;padding:9px 8px;cursor:pointer;color:#44514d;font:inherit;font-size:12px}.chapter-item:hover,.chapter-item.active{background:var(--teal-soft);color:var(--teal)}.chapter-num{font-variant-numeric:tabular-nums;color:var(--rust);min-width:24px}.chapter-detail{min-height:300px}.chapter-detail h2{font:500 26px "Noto Serif SC",serif;margin:0 0 12px}.chapter-meta{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:20px}.chip{font-size:11px;background:var(--teal-soft);color:var(--teal);padding:4px 8px;border-radius:2px}.chapter-body{font-size:14px;line-height:1.9}.chapter-body p{margin:10px 0}.chapter-body b{color:var(--teal)}.relations-highlight{background:#fff3db}.empty{color:var(--muted);padding:26px;text-align:center}.timeline-grid{display:grid;gap:16px}.timeline-panel{background:var(--panel);border:1px solid var(--line);padding:22px}.timeline-panel h2{font:500 21px "Noto Serif SC",serif;margin:0 0 12px}.relation-filter{width:100%;margin-bottom:15px;padding:10px;border:1px solid var(--line);font:inherit}.chapter-pill{display:inline-block;padding:2px 7px;background:#e8eee8;color:var(--teal);border-radius:2px;margin:1px 2px;font-size:11px;text-decoration:none}.chapter-pill:hover{background:var(--teal);color:white}.footer-note{font-size:11px;color:var(--muted);margin-top:30px;border-top:1px solid var(--line);padding-top:15px}
@media(max-width:850px){.layout{grid-template-columns:1fr}.sidebar{position:fixed;z-index:9;left:0;top:76px;bottom:0;height:auto;width:280px;transform:translateX(-102%);transition:transform .2s;box-shadow:var(--shadow)}.sidebar.open{transform:translateX(0)}.menu-toggle{display:block}main{padding:24px 18px}.chapter-layout{grid-template-columns:1fr}.chapter-list{position:static;max-height:220px;display:flex;overflow:auto;gap:4px}.chapter-item{min-width:160px;border-bottom:0}.stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.search-wrap{width:42vw}.card-grid{grid-template-columns:1fr}.hero{min-height:230px}.page-head{display:block}.source-link{display:inline-block;margin-top:12px}.chapter-toolbar{flex-wrap:wrap}.chapter-toolbar select{width:100%}}
.graph-wrap{overflow:auto;background:var(--panel);border:1px solid var(--line);padding:12px}.relation-graph{display:block;width:100%;min-width:850px;height:auto}.graph-group{fill:#f7f6f0;stroke:#deded4}.graph-group-label{font:600 12px sans-serif;letter-spacing:1px;fill:#6c7c75}.graph-edge{fill:none;stroke:#7b968b;stroke-width:1.5;opacity:.42}.graph-edge.dashed{stroke:#a45c42;stroke-dasharray:5 5;opacity:.8}.graph-node rect{fill:#fffefa;stroke:#9fb4aa;stroke-width:1.2}.graph-node text{font:600 13px sans-serif;fill:#263632}.graph-node .graph-node-id{font-size:9px;letter-spacing:1px;fill:#8b9189}.graph-legend{display:flex;gap:18px;padding:10px 5px 2px;color:var(--muted);font-size:11px}.graph-legend span{display:flex;align-items:center;gap:7px}.graph-legend i{width:20px;border-top:2px solid #7b968b}.graph-legend i.dashed-legend{border-top:2px dashed var(--rust)}

/* Story causal-thread view */
.hero-action{align-self:flex-start;position:relative;z-index:1;margin-top:24px;padding:11px 16px;background:#f4f2ec;color:#295b55;text-decoration:none;font-size:14px;font-weight:600;border-radius:3px}.hero-action:hover{background:#fff}
.story-page-head{align-items:center}.story-page-head h1{font:500 clamp(30px,4vw,42px) "Noto Serif SC",serif;margin:7px 0}.story-controls{display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px;background:var(--panel);border:1px solid var(--line);padding:14px 16px;margin-bottom:12px}.story-controls label{display:grid;gap:5px;color:var(--muted);font-size:12px}.story-controls select{min-width:145px;max-width:240px;border:1px solid var(--line);background:#fffefa;padding:8px 10px;color:var(--ink);font:inherit}.story-controls #storyPerson{min-width:165px}.story-count{margin-left:auto;color:var(--teal);font-size:12px}.story-explainer{font-size:12px;line-height:1.7;color:var(--muted);padding:8px 0 16px}.story-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.story-flow{position:relative;min-width:0;padding-left:24px}.story-flow:before{content:"";position:absolute;left:7px;top:10px;bottom:30px;width:2px;background:#c7d3ca}.story-chapter{position:relative;margin:0 0 22px;background:var(--panel);border:1px solid var(--line);padding:20px 22px;box-shadow:0 5px 15px rgba(38,53,47,.035);scroll-margin-top:95px}.story-chapter.context-only{opacity:.62}.story-spine-dot{position:absolute;left:-24px;top:28px;width:16px;height:16px;border-radius:50%;background:var(--teal);border:4px solid var(--paper);box-shadow:0 0 0 1px #8ba79b}.story-chapter-head{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:12px;align-items:start}.story-ch-number{font-variant-numeric:tabular-nums;color:var(--rust);font:500 23px "Noto Serif SC",serif}.story-volume{font-size:10px;letter-spacing:.08em;color:var(--muted)}.story-ch-title h2{margin:2px 0 5px;font:500 20px "Noto Serif SC",serif}.story-ch-title p{margin:0;font-size:12px;color:var(--muted);line-height:1.55}.story-title-link{background:none;border:0;padding:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.story-title-link:hover{color:var(--teal);text-decoration:underline}.open-outline{border:1px solid var(--line);background:transparent;color:var(--teal);padding:7px 9px;font:inherit;font-size:11px;cursor:pointer;white-space:nowrap}.open-outline:hover{background:var(--teal-soft)}.story-cast{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:15px 0 3px;padding:10px 0;border-top:1px solid #ecebe4;border-bottom:1px solid #ecebe4}.story-cast>span{font-size:11px;color:var(--muted);margin-right:4px}.person-chip,.inline-person{border:0;background:var(--teal-soft);color:var(--teal);padding:4px 8px;font:inherit;font-size:12px;cursor:pointer}.person-chip:hover,.inline-person:hover,.person-chip.selected{background:var(--teal);color:#fff}.story-beats{list-style:none;margin:12px 0 8px;padding:0}.story-beat{display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;position:relative;padding:11px 0 15px}.story-beat:not(:last-child):after{content:"↓";position:absolute;left:10px;bottom:-3px;color:var(--rust);font-size:17px}.beat-index{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#f0eee6;color:var(--rust);font-size:11px;font-variant-numeric:tabular-nums}.story-beat p{margin:2px 0 5px;font-size:13px;line-height:1.8}.beat-link-label{font-size:10px;color:var(--muted)}.inline-person{padding:0 2px;background:transparent;font-weight:600;text-decoration:underline;text-underline-offset:2px}.story-consequences{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin:8px 0}.story-consequences section{background:#f6f4ee;padding:10px 12px}.story-consequences section>span,.bridge-hook b{display:block;color:var(--rust);font-size:10px;letter-spacing:.05em;margin-bottom:4px}.story-consequences p{margin:0;font-size:12px;line-height:1.7}.story-bridge{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}.bridge-hook{display:grid;grid-template-columns:80px 1fr;gap:8px;align-items:start;margin-bottom:10px;font-size:12px;line-height:1.7}.bridge-hook b{margin:0}.bridge-next{width:100%;text-align:left;display:grid;gap:4px;border:0;border-left:2px solid var(--rust);background:#f4f1e9;padding:10px 12px;color:var(--ink);cursor:pointer}.bridge-next:hover{background:#ebe7dc}.bridge-next span{font-size:10px;color:var(--rust);letter-spacing:.08em}.bridge-next b{font-size:12px;font-weight:600}.bridge-next small{font-size:10px;color:var(--muted)}.bridge-end{font-size:11px;color:var(--muted)}.previous-link{border:0;background:transparent;color:var(--muted);padding:9px 0 0;font:inherit;font-size:11px;cursor:pointer}.previous-link:hover{color:var(--teal)}.story-person-panel{position:sticky;top:96px;max-height:calc(100vh - 115px);overflow:auto;background:var(--panel);border:1px solid var(--line);box-shadow:0 5px 15px rgba(38,53,47,.035)}.person-panel-head{padding:19px;border-bottom:1px solid var(--line)}.person-panel-head .eyebrow{color:var(--rust);font-size:9px}.person-panel-head h2{margin:6px 0;font:500 22px "Noto Serif SC",serif}.person-panel-head p{font-size:12px;line-height:1.7;color:var(--muted);margin:0 0 12px}.clear-person{border:1px solid var(--line);background:transparent;padding:6px 9px;color:var(--teal);font:inherit;font-size:11px;cursor:pointer}.story-person-panel>section{padding:15px 16px;border-bottom:1px solid var(--line)}.story-person-panel>section h3{font-size:12px;font-weight:600;margin:0 0 10px;color:var(--teal)}.person-appearance-list{display:grid;gap:2px;max-height:220px;overflow:auto}.person-appearance-list button{display:flex;gap:8px;text-align:left;border:0;background:transparent;padding:6px 4px;color:var(--ink);font:inherit;font-size:11px;cursor:pointer}.person-appearance-list button:hover{background:var(--teal-soft)}.person-appearance-list b{font-variant-numeric:tabular-nums;color:var(--rust)}.relation-path{border-top:1px solid #ecebe4;padding:10px 0}.relation-path>div:first-child{display:flex;align-items:center;gap:7px;font-size:11px}.relation-path button{border:0;background:var(--teal-soft);color:var(--teal);padding:3px 6px;font:inherit;font-size:11px;cursor:pointer}.relation-path button:hover{background:var(--teal);color:#fff}.relation-path p,.relation-path small{display:block;font-size:11px;line-height:1.6;margin:6px 0;color:var(--ink)}.relation-path small{color:var(--muted)}.relation-chapters{display:flex;flex-wrap:wrap;gap:4px}.relation-chapters button{font-variant-numeric:tabular-nums}.story-guide .person-panel-head{border-bottom:0}.guide-step{display:grid;grid-template-columns:56px 1fr;gap:10px;padding:12px 16px;border-top:1px solid #ecebe4;font-size:11px;line-height:1.65}.guide-step b{color:var(--rust)}.guide-step span{color:var(--muted)}
+@media(max-width:1000px){.story-layout{grid-template-columns:minmax(0,1fr) 260px;gap:12px}.story-controls{align-items:stretch}.story-controls label{flex:1}.story-controls select{max-width:none;width:100%}}
+@media(max-width:760px){.story-layout{grid-template-columns:1fr}.story-person-panel{position:static;max-height:none;order:-1}.story-person-panel:not(.story-guide){max-height:360px}.story-chapter-head{grid-template-columns:40px minmax(0,1fr)}.open-outline{grid-column:2;justify-self:start}.story-count{width:100%;margin-left:0}.story-flow{padding-left:20px}.story-flow:before{left:5px}.story-spine-dot{left:-20px}}
+@media(max-width:480px){.story-chapter{padding:15px 13px}.story-chapter-head{gap:8px}.story-ch-number{font-size:18px}.story-ch-title h2{font-size:17px}.story-controls label{min-width:100%}.story-controls select{width:100%}.story-beat{grid-template-columns:28px minmax(0,1fr);gap:7px}.bridge-hook{grid-template-columns:64px 1fr}}
.story-goal{display:grid;grid-template-columns:95px minmax(0,1fr);gap:8px;margin:12px 0 0;padding:10px 12px;background:#eef2ec;font-size:12px;line-height:1.7}.story-goal b{color:var(--teal);font-weight:600}.clue-ref{border:0;background:#eee8d8;color:#8c6237;padding:1px 5px;margin:0 1px;font:inherit;font-size:11px;cursor:pointer}.clue-ref:hover{background:var(--rust);color:#fff}
@media(max-width:480px){.story-goal{grid-template-columns:1fr;gap:2px}}

/* Cross-chapter clue and hook trails */
.thread-marker{display:inline-flex;align-items:center;gap:3px;border:1px solid #e4d2a5;border-radius:999px;background:#fbf2d9;color:#775716;padding:3px 9px;margin:2px 3px;font:inherit;font-size:11px;line-height:1.35;cursor:pointer;white-space:nowrap}.thread-marker:hover,.thread-marker:focus-visible{background:#ecd69e;border-color:#c6a85f;color:#563b0b;outline:2px solid #d9bf7c;outline-offset:1px}.clue-ref{font-size:10px}.hook-ref{margin-left:7px}.trail-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:rgba(27,34,31,.48)}.trail-dialog{position:relative;width:min(760px,96vw);max-height:min(82vh,900px);overflow:auto;background:var(--panel);border:1px solid #d7c99f;box-shadow:0 18px 70px rgba(0,0,0,.22);padding:26px 28px}.trail-dialog>.eyebrow{font-size:10px;letter-spacing:.09em;color:#8b6a26}.trail-dialog h2{font:500 23px "Noto Serif SC",serif;margin:8px 35px 16px 0;color:var(--ink)}.trail-close{position:absolute;right:15px;top:12px;border:0;background:transparent;color:var(--muted);font-size:28px;line-height:1;cursor:pointer}.trail-close:hover{color:var(--ink)}.trail-stages{display:grid;gap:10px}.trail-stage{background:#faf7ed;border-left:3px solid #c7a85b;padding:12px 14px}.trail-stage-head{display:flex;justify-content:space-between;align-items:center;gap:10px;color:#785a1c;font-size:12px}.trail-stage-head span,.trail-muted{font-size:10px;color:var(--muted)}.trail-stage p{margin:7px 0;font-size:12px;line-height:1.75;color:var(--ink)}.trail-links{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.trail-chapter-link{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fffefa;color:var(--ink);padding:6px 9px;font:inherit;font-size:11px;cursor:pointer}.trail-chapter-link:hover{border-color:#c7a85b;background:#fbf2d9}.trail-chapter-link b{color:#8b6a26;font-variant-numeric:tabular-nums;white-space:nowrap}.trail-people{margin:13px 0 0;color:var(--muted);font-size:11px;line-height:1.65}.hook-trail-text{margin-bottom:13px;padding:12px 14px;background:#fbf2d9;border:1px solid #e4d2a5;color:#4e421f;font-size:13px;line-height:1.75}.chapter-body .thread-marker{vertical-align:middle}
@media(max-width:600px){.trail-modal{padding:10px}.trail-dialog{width:100%;max-height:88vh;padding:22px 16px}.trail-dialog h2{font-size:20px}.trail-stage{padding:10px}.trail-chapter-link{flex:1 1 145px}}
.thread-legend{display:inline-flex;align-items:center;gap:6px;margin-left:12px;color:#785a1c;font-size:11px}.thread-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;background:#c7a85b;box-shadow:0 0 0 3px #fbf2d9}
.hook-marked{background:#fbf2d9;color:#6f541e;padding:1px 4px;border-radius:2px}

/* Dual-era character fate chart */
.fate-head h1{font:500 clamp(27px,4vw,40px) "Noto Serif SC",serif;margin:7px 0}.fate-controls{display:grid;grid-template-columns:repeat(4,minmax(125px,1fr));gap:10px;background:var(--panel);border:1px solid var(--line);padding:14px;margin:0 0 12px}.fate-controls label{display:grid;gap:5px;color:var(--muted);font-size:11px}.fate-controls select{min-width:0;width:100%;border:1px solid var(--line);background:#fffefa;padding:8px;color:var(--ink);font:inherit}.fate-controls .fate-zoom{grid-column:span 2}.fate-zoom input{width:100%;accent-color:var(--teal)}.fate-reset,.fate-clear{align-self:end;border:1px solid var(--line);background:transparent;color:var(--teal);padding:8px 11px;font:inherit;font-size:12px;cursor:pointer}.fate-reset:hover,.fate-clear:hover{background:var(--teal-soft)}.fate-legend{display:flex;gap:15px;flex-wrap:wrap;align-items:center;margin:10px 0 15px;color:var(--muted);font-size:11px}.fate-legend span{display:inline-flex;align-items:center;gap:6px}.fate-legend .legend-confirmed:before{content:"";width:12px;height:12px;border-left:3px solid var(--teal);background:#e8f0eb}.fate-legend .legend-candidate:before{content:"";width:12px;height:12px;border:1px dashed var(--rust);background:#fbf4ed}.fate-legend .legend-line:before{content:"";width:22px;border-top:2px solid #8a7661}.fate-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}.fate-board-shell{min-width:0;overflow:auto;background:#ebe9e1;border:1px solid var(--line);padding:12px}.fate-board{display:grid;grid-template-columns:minmax(270px,1fr) 230px minmax(270px,1fr);align-items:stretch;min-width:950px;gap:0}.fate-lane-head{position:sticky;top:0;z-index:2;display:flex;flex-direction:column;gap:4px;padding:13px 14px;background:#fbfaf6;border-bottom:1px solid var(--line)}.fate-lane-head b{font:500 15px "Noto Serif SC",serif}.fate-lane-head span{font-size:10px;color:var(--muted)}.fate-lane-head.past{border-top:3px solid #607f6e}.fate-lane-head.bridge{border-top:3px solid #98744b}.fate-lane-head.modern{border-top:3px solid #4f7891}.fate-lane{position:relative;min-width:0;padding:12px 10px 20px;background:#f8f6f0}.fate-lane:not(:last-child){border-right:1px solid #dedbd1}.fate-lane:before{content:"";position:absolute;top:52px;bottom:8px;left:14px;width:2px;background:#d6d9d1}.fate-axis-label{position:relative;padding:4px 4px 12px 15px;color:var(--muted);font-size:10px;letter-spacing:.08em}.fate-year{position:relative;margin:4px 0 16px;padding-left:13px}.fate-year h3{display:flex;justify-content:space-between;align-items:center;margin:0 0 7px;padding:3px 0 5px;border-bottom:1px solid #dddcd4;font:500 15px "Noto Serif SC",serif}.fate-year h3 small{font:11px sans-serif;color:var(--muted)}.fate-event{position:relative;margin:7px 0;padding:0;background:#fffefa;border:1px solid #e3e1d8;border-left:3px solid #82998c;box-shadow:0 2px 7px rgba(38,53,47,.025);transition:opacity .15s,box-shadow .15s}.fate-event:before{content:"";position:absolute;left:-18px;top:15px;width:12px;border-top:1px solid #aebbb1}.fate-event.candidate{border-left-style:dashed;border-left-color:#b1845c;background:#fffaf4}.fate-event.faded{opacity:.22}.fate-event.selected{box-shadow:0 0 0 2px #46766b}.fate-event-main{display:grid;width:100%;gap:5px;border:0;background:transparent;text-align:left;padding:9px 10px 6px;color:var(--ink);cursor:pointer;font:inherit}.fate-event-main:hover .fate-event-title{color:var(--teal);text-decoration:underline}.fate-event-top{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--muted)}.fate-event-top b{color:var(--rust);font-variant-numeric:tabular-nums}.fate-event-top i{margin-left:auto;font-style:normal;font-size:9px;border:1px solid #d8ddd7;padding:1px 4px;white-space:nowrap}.fate-event.candidate .fate-event-top i{border-style:dashed;color:#8a613b}.fate-event-title{font-size:12px;line-height:1.55;font-weight:600}.fate-event-loc{font-size:10px;color:var(--muted);line-height:1.5}.fate-event-people{display:flex;flex-wrap:wrap;gap:4px;padding:0 8px 8px}.fate-event-people>span{font-size:10px;color:var(--muted);padding:3px}.fate-person-tag{border:0;background:#eef0e8;color:#4d6759;padding:3px 5px;font:inherit;font-size:10px;cursor:pointer}.fate-person-tag:hover{filter:brightness(.94);text-decoration:underline}.fate-person-tag.J{background:#f0e9d8;color:#775b2f}.fate-person-tag.M{background:#e4edf0;color:#3b6475}.fate-person-tag.C{background:#eae9e4;color:#5a5d58}.fate-context{position:relative;margin:5px 0 12px 13px;padding:0 9px;background:#f1efe7;border:1px dashed #d3caba;font-size:10px}.fate-context summary{display:flex;justify-content:space-between;gap:10px;padding:8px 0;cursor:pointer;color:#4f5b54}.fate-context summary i{font-style:normal;color:#9b7350}.fate-context p{margin:0;padding:0 0 9px;color:var(--muted);line-height:1.6}.fate-edges{display:grid;gap:7px}.fate-edge-group{background:#f7f4ec;border:1px solid #ded9cd}.fate-edge-group>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 8px;cursor:pointer;list-style:none}.fate-edge-group>summary::-webkit-details-marker{display:none}.fate-edge-group>summary:before{content:"＋";font-size:12px;color:#876a44}.fate-edge-group[open]>summary:before{content:"−"}.fate-edge-group>summary>span{display:grid;gap:3px;min-width:0}.fate-edge-group>summary b{font-size:10px;line-height:1.4;color:#514d42}.fate-edge-group>summary small{font-size:9px;line-height:1.4;color:var(--muted)}.fate-edge-group>summary i{font-size:9px;font-style:normal;color:#876a44;white-space:nowrap}.fate-edge-group-rows{display:grid;gap:5px;padding:0 7px 7px}.fate-edge-group .fate-edge-row{background:#fffefa}.fate-edge-row{display:grid;gap:4px;width:100%;text-align:left;border:0;border-left:2px solid #9a866b;background:#f3f0e8;padding:8px 8px;color:var(--ink);cursor:pointer}.fate-edge-row:after{content:"↓";color:#8b7253;font-size:11px}.fate-edge-row:hover,.fate-edge-row.selected{background:#e9e3d6}.fate-edge-row .edge-kind{font-size:9px;color:#876a44}.fate-edge-row b{font-size:10px;font-variant-numeric:tabular-nums}.fate-edge-row small{font-size:9px;line-height:1.4;color:var(--muted)}.bridge-lane .fate-event{margin-top:8px}.fate-detail{position:sticky;top:94px;max-height:calc(100vh - 110px);overflow:auto;background:var(--panel);border:1px solid var(--line);box-shadow:0 4px 14px rgba(38,53,47,.035)}.fate-detail-head{padding:16px 17px;border-bottom:1px solid var(--line);background:#f9f8f2}.fate-detail-head>span{font-size:10px;color:var(--rust);letter-spacing:.04em}.fate-detail-head h2{margin:6px 0;font:500 18px/1.5 "Noto Serif SC",serif;overflow-wrap:anywhere}.fate-detail-head p{font-size:11px;line-height:1.6;color:var(--muted);margin:0}.fate-status{display:inline-block;font-style:normal;color:#386a58}.fate-status.is-candidate{color:#9a653c}.fate-detail-section{padding:12px 15px;border-bottom:1px solid #e8e6dd}.fate-detail-section h3{font-size:11px;font-weight:600;color:var(--teal);margin:0 0 8px}.fate-detail-section p,.fate-detail-section blockquote{font-size:11px;line-height:1.65;margin:5px 0;color:#4d5751;overflow-wrap:anywhere}.fate-detail-section blockquote{padding:8px;border-left:2px solid #b99463;background:#f5f1e8}.fate-detail-section small{color:var(--muted)}.fate-field{margin:0 0 9px}.fate-field b{font-size:10px;color:#8a6640}.fate-field p{margin:2px 0}.fate-link-row{display:grid;gap:3px;width:100%;border:0;border-bottom:1px solid #eeece5;background:transparent;padding:7px 2px;text-align:left;color:var(--ink);cursor:pointer}.fate-link-row:hover{background:#f0f1eb}.fate-link-row b{font-size:10px;color:#765b3b}.fate-link-row span{font-size:10px;line-height:1.5}.fate-detail-empty{padding:30px 20px;color:var(--muted);font-size:12px;line-height:1.7}.fate-detail-empty span{color:var(--teal);font:500 16px "Noto Serif SC",serif}.fate-detail-empty p{margin:8px 0}.fate-source{display:block;padding:12px 15px;color:var(--teal);font-size:10px;text-decoration:none}.fate-footnote{font-size:10px;line-height:1.7;color:var(--muted);margin:12px 0 0}.fate-clear{margin:10px 14px}.fate-zoom{font-size:11px}
@media(max-width:1100px){.fate-layout{grid-template-columns:1fr}.fate-detail{position:relative;top:auto;max-height:520px}.fate-controls{grid-template-columns:repeat(3,minmax(120px,1fr))}}
@media(max-width:650px){.fate-controls{grid-template-columns:repeat(2,minmax(115px,1fr));gap:8px;padding:10px}.fate-controls .fate-zoom{grid-column:span 2}.fate-reset{grid-column:span 2}.fate-board-shell{padding:7px}.fate-board{grid-template-columns:minmax(245px,1fr) 205px minmax(245px,1fr);min-width:760px}.fate-lane{padding-left:7px;padding-right:7px}.fate-legend{gap:8px}.fate-detail{max-height:none}}

/* Full-width plotline workspace: prioritize readable story actions over the grey fate graph. */
.layout{width:100%;max-width:none;grid-template-columns:260px minmax(0,1fr)}
main{width:100%;max-width:none;margin:0;padding:clamp(20px,2vw,38px)}
.story-page-head h1{font-size:clamp(34px,3vw,48px)}
.story-page-head p{font-size:16px;line-height:1.75;max-width:1100px}
.story-layout{grid-template-columns:minmax(0,1fr) minmax(360px,27vw);gap:22px}
.story-flow{padding-left:34px}
.story-flow:before{left:10px;width:3px;background:#b8c9bf}
.story-chapter{padding:26px 30px;margin-bottom:25px}
.story-spine-dot{left:-34px;top:31px;width:19px;height:19px}
.story-chapter-head{grid-template-columns:62px minmax(0,1fr) auto;gap:16px}
.story-ch-number{font-size:30px}
.story-ch-title h2{font-size:25px}
.story-ch-title p{font-size:14px}
.story-cast{gap:9px;margin:18px 0 8px;padding:14px 0}
.story-cast>span,.person-chip,.role-chip{font-size:14px}
.person-chip{padding:7px 11px}
.story-beat{grid-template-columns:42px minmax(0,1fr);gap:14px;padding:15px 0 19px}
.beat-index{width:34px;height:34px;font-size:13px}
.story-beat p{font-size:16px;line-height:1.9}
.beat-link-label{font-size:12px}
.story-consequences section{padding:14px 16px}
.story-consequences section>span,.bridge-hook b{font-size:12px}
.story-consequences p,.bridge-hook{font-size:14px;line-height:1.8}
.bridge-next{padding:14px 16px}
.bridge-next b{font-size:14px}
.bridge-next small{font-size:12px}
.story-count,.story-explainer{font-size:14px;line-height:1.8}
.story-person-panel{top:96px;max-height:calc(100vh - 116px)}
.person-panel-head{padding:23px}
.person-panel-head h2{font-size:29px}
.person-panel-head p{font-size:15px;line-height:1.8}
.story-person-panel>section{padding:19px 20px}
.story-person-panel>section h3{font-size:15px;margin-bottom:13px}
.person-appearance-list{max-height:42vh;gap:5px}
.person-appearance-list button{align-items:flex-start;padding:9px 5px;font-size:14px}
.person-appearance-list button b{font-size:14px;min-width:38px}
.person-appearance-list button span{display:grid;gap:4px}
.person-appearance-list button strong{font-weight:600}
.person-appearance-list button small{font-size:12px;line-height:1.65;color:var(--muted)}
.story-fate-summary{background:#edf2ed;border-left:4px solid var(--teal)}
.story-fate-summary p{font-size:15px;line-height:1.85;margin:0}
.story-fate-summary .story-fate-arc{margin-top:10px;padding-top:10px;border-top:1px solid #d5dfd7;color:#4f5b54}
.story-fate-arc b{color:var(--teal)}
@media(min-width:1500px){.story-layout{grid-template-columns:minmax(0,1fr) minmax(390px,25vw)}.story-chapter{padding:30px 36px}.story-beat p{font-size:17px}}
@media(max-width:850px){.layout{grid-template-columns:1fr}main{padding:24px 18px}.story-layout{grid-template-columns:1fr}.story-person-panel{position:static;max-height:none;order:-1}}
.data-export-link{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 11px;border:1px solid var(--line);border-radius:3px;color:var(--teal);text-decoration:none;font-size:12px;white-space:nowrap;background:#fffefa}
.data-export-link:hover{background:var(--teal-soft);border-color:#afc2b8}
.data-export-link.download{background:var(--teal);color:#fff;border-color:var(--teal)}
.data-export-link.download:hover{background:#214c46}
@media(max-width:650px){.topbar{gap:8px;padding:0 10px}.top-actions{gap:5px}.data-export-link{font-size:10px;padding:7px 8px}.search-wrap{width:30vw}}
