:root{--blue:#1155ff;--header:64px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;background:#eeeff8;color:#151515;font-family:Arial,'PingFang SC',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid var(--blue);outline-offset:5px}header{position:fixed;top:0;left:0;right:0;height:var(--header);z-index:20;display:flex;align-items:center;justify-content:space-between;padding:0 max(28px,7.8125vw);background:rgba(245,246,252,.78);backdrop-filter:blur(24px);border-bottom:1px solid #fff8;font-size:12px;letter-spacing:.04em}nav{display:flex;align-items:center;gap:32px}nav a,nav button{padding:12px 0}nav button{border:0;background:none}nav a:hover,nav button:hover{color:var(--blue)}.brand{font-size:12px}.edition{font-size:10px;color:#777}main{max-width:1920px;margin:auto}.page{position:relative;width:100%;aspect-ratio:1920/var(--height);isolation:isolate;scroll-margin-top:80px}.art{position:absolute;inset:0;overflow:hidden}.art>svg{display:block;transform:scale(var(--scale));transform-origin:0 0}.page.pending{background:linear-gradient(110deg,#eeeff8,#fafbff,#eeeff8)}.page.pending:before{content:attr(data-title);position:absolute;top:80px;left:7.8%;font-size:clamp(14px,2vw,32px);color:#787b91}.hit{position:absolute;border:0;border-radius:16px;background:transparent;z-index:2;cursor:pointer}.hit:hover{box-shadow:inset 0 0 0 2px #1155ff30;background:#1155ff03}.hit:focus-visible{outline:3px solid var(--blue);outline-offset:-3px}.diffusion{animation:drift 12s ease-in-out infinite alternate;transform-origin:960px 620px}.ribbon{animation:ribbon 15s ease-in-out infinite alternate;transform-origin:960px 620px}@keyframes drift{0%{transform:translate(-25px,10px) scale(.98)}50%{transform:translate(45px,-35px) scale(1.05)}100%{transform:translate(-35px,45px) scale(1.02)}}@keyframes ribbon{to{transform:translate(15px,-15px) rotate(2deg)}}body.paused .diffusion,body.paused .ribbon{animation-play-state:paused}.reader{position:fixed;right:24px;bottom:24px;z-index:25;display:flex;align-items:center;gap:2px;padding:5px;background:#ffffffdf;backdrop-filter:blur(20px);border:1px solid #fff;box-shadow:0 8px 35px #1d338d13;border-radius:40px}.reader button{border:0;background:none;padding:10px 12px;border-radius:24px;color:#444}.reader button:hover{background:#1155ff0e;color:var(--blue)}.reader .total{color:#aaa;font-size:11px}#project-menu{position:fixed;z-index:30;top:74px;right:20%;padding:12px;border:1px solid #eee;background:#fffffff2;backdrop-filter:blur(25px);border-radius:20px;box-shadow:0 20px 60px #14244720}#project-menu button{display:block;width:100%;border:0;background:none;text-align:left;padding:16px 20px;border-radius:10px;font-size:14px}#project-menu button:hover{background:#1155ff0c;color:var(--blue)}dialog{width:min(650px,90vw);max-height:80vh;border:0;border-radius:24px;padding:24px;box-shadow:0 30px 100px #18224c30}dialog::backdrop{background:#1b224b55;backdrop-filter:blur(8px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.dialog-top button{border:0;background:#f3f4fa;border-radius:50%;width:36px;height:36px;font-size:24px}#page-list{display:grid;grid-template-columns:1fr 1fr;gap:6px}#page-list button{border:0;background:#f7f8fc;padding:14px;border-radius:10px;text-align:left;font-size:12px;line-height:1.6}#page-list button:hover,#page-list button.current{color:var(--blue);background:#1155ff12}#toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);z-index:40;background:#202535;color:white;padding:12px 22px;border-radius:30px;opacity:0;pointer-events:none;transition:opacity .2s;font-size:13px}#toast.show{opacity:1}.skip{position:fixed;top:-100px;left:20px;z-index:50;background:white;padding:12px}.skip:focus{top:10px}@media(max-width:700px){:root{--header:54px}header{padding:0 18px}nav{gap:18px}.edition{display:none}.brand{font-size:10px}.reader{right:12px;bottom:14px}#project-menu{right:16px}.page{scroll-margin-top:64px}#page-list{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.diffusion,.ribbon{animation:none}}
.page{overflow:clip}

/* Keep exported backgrounds in their own SVG documents. */
.art>object{display:block;position:absolute;inset:0;transform:scale(var(--scale));transform-origin:0 0;pointer-events:none;border:0}
html{scroll-padding-top:0}.page{scroll-margin-top:var(--header)}
:root{--motion-feedback:180ms;--motion-viewer:250ms;--motion-enter:450ms;--motion-chart:600ms;--motion-stagger:80ms;--motion-ease:cubic-bezier(.22,1,.36,1);--motion-offset:20px}
#reading-progress{position:fixed;top:var(--header);left:0;width:100%;height:2px;border:0;appearance:none;z-index:26;background:transparent}#reading-progress::-webkit-progress-bar{background:transparent}#reading-progress::-webkit-progress-value{background:#1155ff}.reader{max-width:calc(100vw - 24px)}.reader button{white-space:nowrap}.reader button.current{color:var(--blue)}#project-menu{max-height:calc(100dvh - 110px);width:min(360px,calc(100vw - 32px));overflow:auto;right:24px}#project-menu summary{padding:14px 16px;cursor:pointer;border-radius:10px;font-size:14px}#project-menu .active-project>summary{color:var(--blue);background:#1155ff0a}#project-menu button{font-size:12px;padding:12px 18px}#project-menu .current{background:#1155ff12;color:var(--blue)}.hit:hover{background:transparent;box-shadow:none}.gallery-hit:hover{box-shadow:inset 0 0 0 2px #1155ff45}.directory-hit{transition:transform var(--motion-feedback) var(--motion-ease),box-shadow var(--motion-feedback)}.directory-hit:active{transform:scale(.99)}@media(hover:hover) and (pointer:fine){.directory-hit:hover{transform:translateY(-4px);box-shadow:0 4px 0 #ffffff55}.gallery-hit{cursor:zoom-in}}
#skip-intro{position:fixed;left:24px;bottom:24px;z-index:28;border:1px solid #ddd;background:#fffd;border-radius:24px;padding:10px 16px}#skip-intro[hidden]{display:none}.retry-page{position:absolute;top:80px;left:8%;padding:16px;border:1px solid #ddd;border-radius:16px;background:white}.selectable{pointer-events:auto!important;user-select:all}
#image-viewer{padding:0;inset:0;width:calc(100vw - 32px);height:calc(100dvh - 32px);max-width:none;max-height:none;overflow:hidden;background:#17191f;color:white;border:1px solid #ffffff30;border-radius:18px}#image-viewer::backdrop{background:#111827c9;backdrop-filter:blur(8px)}.viewer-tools{height:64px;display:flex;align-items:center;gap:8px;padding:10px 16px;background:#22252d;border-bottom:1px solid #ffffff18}.viewer-tools button{border:1px solid #ffffff24;color:white;background:#ffffff0c;border-radius:9px;min-width:36px;height:36px;padding:0 12px;font-size:12px}.viewer-tools button:hover{background:#ffffff20}.viewer-tools button:disabled{opacity:.3;cursor:default}.viewer-tools output{font:12px monospace;min-width:42px;text-align:center}#viewer-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.viewer-stage{position:absolute;top:64px;bottom:0;left:0;right:0;overflow:hidden;touch-action:none;cursor:grab;outline-offset:-4px}.viewer-stage:active{cursor:grabbing}.viewer-image{position:absolute;left:50%;top:50%;transform-origin:50% 50%;pointer-events:none;background:transparent}.viewer-image>object{width:100%;height:100%;pointer-events:none;display:block}.viewer-status{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:16px;pointer-events:none;font-size:14px;color:#ddd}.viewer-status button{pointer-events:auto;padding:10px 20px;border:0;border-radius:8px}.viewer-status:empty{display:none}
@media(max-width:700px){header nav>a{display:none}header nav{gap:10px}#image-viewer{width:100vw;height:100dvh;border:0;border-radius:0}.viewer-tools{height:100px;flex-wrap:wrap;align-content:center;gap:6px;padding:10px}.viewer-stage{top:100px}#viewer-title{flex-basis:calc(100% - 60px);order:0}.viewer-tools button{height:34px;min-width:34px;padding:0 10px}.reader{gap:0;right:12px;bottom:max(14px,env(safe-area-inset-bottom));padding:4px}.reader button{padding:9px 8px;font-size:11px}#skip-intro{bottom:70px;font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.directory-hit:hover{transform:none}}

main{overflow-anchor:none}

/* Project switcher contains projects only; chapters stay local. */
#project-menu{width:240px;padding:8px;max-height:70dvh;border-radius:16px}#project-menu>button{font-size:14px;padding:14px 16px;line-height:1.5}#project-menu>button.current{background:#1155ff0a;color:var(--blue)}#pages-dialog{width:min(440px,calc(100vw - 32px));padding:20px}#page-list{grid-template-columns:1fr}#page-list>button{font-size:13px;padding:12px 14px}

/* Reading indicator: page count only. */
.reader>button:not(#page-picker){display:none}
#page-picker{pointer-events:none;padding:8px 14px;cursor:default;font-size:13px}
.reader{gap:0;padding:3px;border-radius:24px}
#page-picker .total{font-size:inherit;color:inherit}

/* Persistent top-level shortcuts on desktop and compact screens. */
header nav>a.quick-link{display:inline-flex;align-items:center}
@media(max-width:700px){header nav{gap:18px}header nav>a.quick-link{font-size:12px;white-space:nowrap}header nav #projects{font-size:12px}.brand{font-size:9px}header{padding:0 16px}}
