:root{--space-1: .375rem;--space-2: .75rem;--space-3: 1rem;--space-4: 1.5rem;--space-5: 2rem;--space-6: 3rem;--page-width: 46rem;--sidebar-width: 16rem;--header-height: 5.5rem;--motion-fast: .16s;--motion-medium: .28s;--focus-ring-width: 3px;--reader-shadow: 0 18px 54px rgb(21 37 50 / .1)}html[data-theme=editorial]{--color-background: #f2f0eb;--color-surface: #fffdf8;--color-text: #252e36;--color-heading: #173a54;--color-muted: #5e6c76;--color-border: #cad2d3;--color-accent: #174d70;--color-focus: #095b83;--font-body: "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", Georgia, serif;--font-ui: -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif}html[data-theme=study]{--color-background: #eae0ce;--color-surface: #f9f1e2;--color-text: #342b27;--color-heading: #663a2b;--color-muted: #6d5d52;--color-border: #cbbca5;--color-accent: #963e2e;--color-focus: #8a321f;--font-body: "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", Georgia, serif;--font-ui: -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif}html[data-theme=night]{--color-background: #142331;--color-surface: #203141;--color-text: #e6e2d7;--color-heading: #f2ddad;--color-muted: #b4bec2;--color-border: #496070;--color-accent: #e8bd79;--color-focus: #f0ca8b;--reader-shadow: 0 18px 54px rgb(3 12 20 / .32);--font-body: "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", Georgia, serif;--font-ui: -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif}*{box-sizing:border-box}html{color-scheme:light}html[data-theme=night]{color-scheme:dark}body{min-width:320px;margin:0;background:var(--color-background);color:var(--color-text);font-family:var(--font-ui)}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,a:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:3px}h1,h2,p{margin:0}.skip-link{position:absolute;z-index:10;top:-4rem;left:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--color-surface);color:var(--color-text)}.skip-link:focus{top:var(--space-2)}.eyebrow,.brand-kicker{color:var(--color-muted);font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.app-shell{min-height:100vh}.app-header{display:flex;min-height:var(--header-height);align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border)}.brand{display:flex;align-items:center;gap:var(--space-3)}.brand-mark{display:grid;width:2.5rem;height:2.5rem;place-items:center;border:1px solid var(--color-accent);color:var(--color-accent);font-family:var(--font-body);font-size:1.4rem}.brand h1{margin-top:.15rem;font-size:1rem;font-weight:600;letter-spacing:.04em}.header-actions{display:flex;flex-wrap:wrap;gap:var(--space-1)}.text-button,.page-button,.icon-button{display:inline-flex;min-width:44px;min-height:44px;align-items:center;justify-content:center;border:0;background:transparent;color:var(--color-text)}.text-button{padding:var(--space-2) var(--space-3)}.text-button:hover,.page-button:hover{color:var(--color-accent)}.reading-layout{display:block}.reading-layout.toc-is-persistent.toc-is-open{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr)}.toc-drawer{min-height:calc(100vh - var(--header-height));padding:var(--space-6) var(--space-5);border-right:1px solid var(--color-border);background:var(--color-surface)}.toc-drawer[hidden],.toc-overlay[hidden]{display:none}.reading-layout:not(.toc-is-persistent) .toc-drawer{position:fixed;z-index:6;inset:var(--header-height) auto 0 0;width:min(var(--sidebar-width),calc(100vw - 3rem));min-height:0;overflow-y:auto;box-shadow:12px 0 40px #0000002e}.toc-overlay{position:fixed;z-index:5;inset:var(--header-height) 0 0;width:100%;padding:0;border:0;background:#00000059}.toc-list{margin:var(--space-4) 0 0;padding:0;list-style:none}.toc-list .toc-list{margin:var(--space-1) 0 var(--space-2);padding-left:var(--space-4);border-left:1px solid var(--color-border)}.toc-node-button{display:flex;width:100%;min-height:44px;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-1);border:0;background:transparent;color:var(--color-text);text-align:left;line-height:1.5}.toc-node-button:hover,.toc-node.is-current>.toc-node-button{color:var(--color-accent)}.toc-node--has-target{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start}.toc-node--has-target>.toc-list{grid-column:1 / -1}.toc-node--has-target>.toc-node-target{width:auto;min-width:44px;color:var(--color-muted);font-size:.78rem}.toc-node-button[aria-expanded]:before{content:"▸";display:inline-block;color:var(--color-muted);font-size:.75em}.toc-node-button[aria-expanded=true]:before{content:"▾"}.toc-node--book>.toc-node-button{font-family:var(--font-body);font-size:1.08rem;font-weight:600}.toc-node--chapter>.toc-node-button{font-weight:600}.toc-node--section>.toc-node-button{font-size:.92rem}.panel-heading h2{margin-top:var(--space-2);font-family:var(--font-body);font-size:1.5rem;font-weight:400}.reader-stage{width:100%;min-width:0;padding:var(--space-6) var(--space-5) var(--space-5)}.reader-intro{display:flex;max-width:var(--page-width);align-items:center;gap:var(--space-3);margin:0 auto var(--space-5)}.reader-rule{height:1px;flex:1;background:var(--color-border)}.book-root{width:min(100%,var(--reader-page-width, var(--page-width)));max-width:var(--reader-page-width, var(--page-width));margin:auto;background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--reader-shadow)}.reader-error:not(:empty){width:min(100%,var(--reader-page-width, var(--page-width)));margin:0 auto var(--space-4);padding:var(--space-4);border:1px solid var(--color-border);background:var(--color-surface)}.reader-error button,.book-root [data-retry-pagination]{min-height:44px;padding:var(--space-2) var(--space-4);color:var(--color-accent)}.reader-scroll-fallback{max-height:var(--reader-page-height, min(60vh, 42rem));overflow:auto;padding:var(--space-5);font-family:var(--font-body);font-size:calc(1rem * var(--reader-font-scale, 1));line-height:var(--reader-line-height, 1.75)}.reader-fallback-note{margin:var(--space-4) var(--space-5) 0;color:var(--color-muted)}.reader-page{width:100%;height:var(--reader-page-height, min(60vh, 42rem));overflow:hidden;padding:var(--space-5);font-family:var(--font-body);font-size:calc(1rem * var(--reader-font-scale, 1));line-height:var(--reader-line-height, 1.75)}.reader-page h1,.reader-page h2,.reader-page h3,.reader-page h4{color:var(--color-heading)}.book-root:not(.has-page-flip)>.reader-page{display:none}.book-root:not(.has-page-flip)>.reader-page.is-current{display:block}.book-root.has-page-flip .stf__wrapper{max-width:100%}.book-root.has-page-flip .reader-page{background:var(--color-surface);color:var(--color-text)}.reader-page>*+*{margin-top:var(--space-3)}.reader-page>h1,.reader-page>h2,.reader-page>h3{line-height:1.3}.reader-page>h2{font-size:1.5em}.reader-page>h3{font-size:1.2em}.pagination-measure{position:fixed;top:0;left:-100000px;visibility:hidden;pointer-events:none}.reader-controls{display:flex;width:min(100%,var(--page-width));align-items:center;justify-content:space-between;gap:var(--space-2);margin:var(--space-4) auto 0}.page-button{padding:var(--space-2)}.page-button:disabled{cursor:default;color:var(--color-muted);opacity:.62}.progress-label{color:var(--color-muted);font-size:.85rem;text-align:center}.search-dialog{width:min(calc(100% - 2rem),36rem);padding:var(--space-5);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.search-dialog::backdrop{background:#00000073}.dialog-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.search-dialog label{display:block;margin-bottom:var(--space-2)}.search-dialog input{width:100%;min-height:44px;padding:var(--space-2);border:1px solid var(--color-border);background:var(--color-background);color:var(--color-text)}.search-dialog [data-search-results]{max-height:min(55vh,30rem);overflow-y:auto;margin-top:var(--space-4)}.search-results-list{display:grid;gap:var(--space-2);margin:0;padding:0;list-style:none}.search-results-list button{display:grid;width:100%;min-height:44px;gap:var(--space-1);padding:var(--space-3);border:1px solid var(--color-border);background:var(--color-background);color:var(--color-text);text-align:left}.search-results-list button:hover{border-color:var(--color-accent)}.search-result-path{color:var(--color-heading);font-weight:600}.search-result-snippet{color:var(--color-muted);font-size:.9rem;line-height:1.5}.settings-panel{position:fixed;z-index:4;top:var(--header-height);right:0;width:min(25rem,100%);max-height:calc(100vh - var(--header-height));overflow-y:auto;padding:var(--space-5);border-left:1px solid var(--color-border);background:var(--color-surface);box-shadow:-12px 0 32px #00000026}.settings-panel[hidden]{display:none}.settings-panel .panel-heading{display:flex;align-items:end;justify-content:space-between;flex-wrap:wrap}.settings-panel .panel-heading .eyebrow{width:100%}.settings-close{min-width:44px;min-height:44px;font-size:1.5rem}.settings-form{display:grid;gap:var(--space-4);margin-top:var(--space-5)}.settings-group{min-width:0;margin:0;padding:0;border:0}.settings-group legend{margin-bottom:var(--space-2);color:var(--color-heading);font-weight:600}.settings-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-1)}.settings-option{position:relative;display:block}.settings-option input{position:absolute;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.settings-option span{display:block;min-height:2.75rem;padding:var(--space-2);border:1px solid var(--color-border);border-radius:.35rem;color:var(--color-text);text-align:center}.settings-option input:checked+span{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-surface);font-weight:600}.settings-option input:focus-visible+span{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:3px}.settings-option:hover span{border-color:var(--color-accent)}@media(max-width:800px){.app-header{padding:var(--space-3)}.reader-stage{padding:var(--space-5) var(--space-3)}}@media(max-width:480px){.brand-kicker{display:none}.brand-mark{width:2rem;height:2rem}.header-actions{gap:0}.text-button{padding:var(--space-2) var(--space-1)}}@media(prefers-reduced-motion:no-preference){.text-button,.page-button{transition:color var(--motion-fast) ease}}
