:root{--bg:#f4f0e8;--paper:#fffefa;--text:#252824;--muted:#7f817d;--line:#deded7;--accent:#344a3c;--size:23px;--leading:1.85;--column-width:580px;--column-gap:80px;color-scheme:light}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;height:100%;overflow:hidden}body{background:var(--bg);color:var(--text);font-family:"DM Sans",sans-serif}button,input{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button:disabled{opacity:.28;cursor:default}
.app-shell{height:100dvh;display:flex;flex-direction:column;min-height:420px}.topbar{height:74px;flex:none;display:flex;align-items:center;padding:0 clamp(16px,3.2vw,56px);gap:24px;border-bottom:1px solid var(--line);background:var(--paper)}.icon-button{border:0;background:none;color:var(--text);width:42px;height:42px;display:grid;place-items:center;border-radius:50%;font-size:26px}.icon-button:hover,.page-button:hover:not(:disabled){background:rgba(50,66,55,.08)}.menu-icon{display:grid;gap:5px}.menu-icon i{display:block;width:20px;height:1.5px;background:currentColor}.brand{display:flex;align-items:baseline;gap:11px;min-width:0}.brand-mark{font-family:Georgia,serif;font-size:29px;color:var(--accent);margin-right:13px}.brand-title{font-size:17px;font-weight:600;white-space:nowrap}.brand-author{font-size:12px;color:var(--muted);white-space:nowrap}.top-actions{display:flex;margin-left:auto;gap:5px}.text-icon{font-family:"Noto Serif KR",serif;font-size:24px}.info-icon{font-family:Georgia,serif;font-style:italic;font-size:21px}
.main{flex:1;display:flex;flex-direction:column;min-height:0;max-width:1600px;width:100%;margin:auto;padding:0 clamp(18px,4vw,78px)}.book-head{height:72px;display:flex;align-items:center;gap:13px;color:var(--muted);font-size:13px;letter-spacing:.06em;flex:none}.book-head #book-label{color:var(--accent);font-weight:700}.divider{height:13px;width:1px;background:#c9c9c2}
.reader{position:relative;background:var(--paper);flex:1;min-height:0;box-shadow:0 16px 45px rgba(45,39,25,.07);border:1px solid #e8e5de;display:flex;align-items:stretch;justify-content:center}.page-viewport{width:min(100%,calc(2 * var(--column-width) + var(--column-gap)));margin:0 auto;overflow:hidden;position:relative}.book-text{width:var(--column-width);height:100%;column-width:var(--column-width);column-gap:var(--column-gap);column-fill:auto;overflow:visible;padding:clamp(32px,5vh,65px) 0;position:relative;left:0;will-change:transform;font-family:"Noto Serif KR",serif;font-size:var(--size);line-height:var(--leading);letter-spacing:-.025em;word-break:keep-all;overflow-wrap:break-word}.book-text p{margin:0 0 1.08em;text-indent:1.5em;orphans:2;widows:2}.book-text p:first-of-type{text-indent:0}.book-text h1{font-family:"Noto Serif KR",serif;font-size:2.15em;font-weight:500;line-height:1.4;letter-spacing:-.075em;margin:0 0 1.15em;break-after:avoid}.book-text .book-roman{display:block;font-family:Georgia,serif;font-size:12px;letter-spacing:.18em;color:var(--muted);font-weight:400;margin-bottom:1.4em}.book-text .book-caption{color:var(--muted);font-size:.62em;line-height:1.65;text-indent:0;margin:-1.1em 0 2.3em}
.edge{position:absolute;top:0;bottom:0;width:9%;z-index:2;border:0;background:transparent}.edge-prev{left:0;cursor:w-resize}.edge-next{right:0;cursor:e-resize}.edge:disabled{pointer-events:none}.loading{position:absolute;inset:0;display:grid;place-items:center;background:var(--paper);font-size:14px;color:var(--muted);z-index:3}.loading[hidden]{display:none}
.footer{height:73px;flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;color:var(--muted);font-size:12px;letter-spacing:.03em}.footer #percent{text-align:right}.pagination{display:flex;align-items:center;gap:24px}.page-button{border:0;background:none;color:var(--accent);font-family:Georgia,serif;font-size:34px;line-height:1;width:40px;height:40px;border-radius:50%}.position{border:0;background:none;color:var(--muted);font-size:13px;min-width:78px}.progress-track{height:3px;background:#e0e2dc;margin:0 -1px}.progress-track>div{height:100%;background:var(--accent);width:0;transition:width .25s}
.scrim{position:fixed;inset:0;background:rgba(22,28,24,.38);z-index:10}.scrim[hidden]{display:none}.drawer{position:fixed;z-index:11;top:0;bottom:0;left:0;width:min(420px,88vw);background:var(--paper);transform:translateX(-105%);transition:transform .23s;box-shadow:18px 0 35px rgba(20,30,24,.1);display:flex;flex-direction:column}.drawer.open{transform:translateX(0)}.drawer-header,.modal-header{display:flex;align-items:start;justify-content:space-between;padding:34px 34px 20px}.eyebrow{color:#9c9e95;font-size:10px;font-weight:700;letter-spacing:.2em}.drawer h2,.modal h2{font-family:"Noto Serif KR",serif;font-weight:500;font-size:30px;margin:7px 0 0}.close-button{border:1px solid var(--line);background:transparent;color:var(--muted);font-size:28px;font-weight:300;width:40px;height:40px;line-height:1;border-radius:50%}.drawer-intro{color:var(--muted);margin:0 34px 24px;font-family:"Noto Serif KR",serif;font-size:14px}.book-list{overflow-y:auto;flex:1;padding:0 20px 20px}.book-list button{width:100%;border:0;background:none;text-align:left;display:grid;grid-template-columns:45px 1fr auto;align-items:center;gap:12px;padding:15px 14px;border-bottom:1px solid var(--line);color:var(--text)}.book-list button:hover,.book-list button.active{background:rgba(52,74,60,.07)}.book-list .roman{font-family:Georgia,serif;color:var(--muted);font-size:14px}.book-list .ko{font-family:"Noto Serif KR",serif;font-size:15px}.book-list .number{color:#adb0aa;font-size:11px}.drawer-foot{border-top:1px solid var(--line);color:var(--muted);font-size:11px;padding:20px 34px}
dialog{border:0;border-radius:5px;background:var(--paper);color:var(--text);box-shadow:0 25px 75px rgba(0,0,0,.2);max-width:min(490px,calc(100vw - 32px));width:100%;padding:0 34px 34px}dialog::backdrop{background:rgba(20,30,24,.38)}.modal-header{padding:28px 0 28px}.modal p{font-family:"Noto Serif KR",serif;font-size:14px;line-height:1.9;margin:0 0 16px;word-break:keep-all}.modal .help{font-family:"DM Sans",sans-serif;color:var(--muted);font-size:12px;margin-top:24px}.modal .source-links{display:flex;gap:15px;flex-wrap:wrap}.source-links a{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.range-label{display:flex;justify-content:space-between;margin:10px 0;color:var(--text);font-size:13px}.range-label span{color:var(--muted)}input[type=range]{width:100%;accent-color:var(--accent);margin:0 0 23px}.theme-choices{display:flex;gap:8px}.theme-choices button{background:transparent;border:1px solid var(--line);padding:11px 17px;color:var(--text);border-radius:4px}.theme-choices button[aria-pressed=true]{border-color:var(--accent);background:rgba(52,74,60,.08)}#toast{position:fixed;z-index:20;left:50%;bottom:35px;transform:translate(-50%,15px);background:#293d30;color:#fff;padding:12px 18px;border-radius:4px;font-size:13px;opacity:0;transition:.2s;pointer-events:none}#toast.visible{opacity:1;transform:translate(-50%,0)}
html[data-theme=white]{--bg:#f7f7f7;--paper:#fff}html[data-theme=dark]{--bg:#181d1a;--paper:#242b26;--text:#e8e8e0;--muted:#a4aea4;--line:#3b473e;--accent:#aac7ae;color-scheme:dark}html[data-theme=dark] .reader{border-color:#344036}html[data-theme=dark] .book-list button:hover,html[data-theme=dark] .book-list button.active{background:rgba(170,199,174,.1)}
@media(max-width:900px){:root{--column-gap:0px}.topbar{height:62px}.main{padding:0}.book-head{height:56px;padding:0 24px}.reader{border:0;box-shadow:none}.page-viewport{width:calc(100% - 68px)}.book-text{padding:16px 0 8px}.footer{height:62px;padding:0 20px}.footer-book{font-size:10px}.edge{width:10%}}
@media(max-width:620px){.topbar{padding:0 15px;gap:12px}.brand-mark{font-size:23px;margin-right:1px}.brand-title{font-size:14px}.brand-author{display:none}.top-actions{gap:0}.icon-button{width:39px;height:39px}.book-head{padding:0 25px;height:48px}.page-viewport{width:calc(100% - 52px)}.footer-book{display:none}.footer{grid-template-columns:1fr auto}.pagination{grid-column:1;justify-content:center;gap:18px}.footer #percent{grid-column:2;grid-row:1}.edge{width:11%}.drawer-header{padding:27px 25px 20px}.drawer-intro{margin-left:25px}.drawer-foot{padding-left:25px}}
@media(max-height:650px){.book-head{height:38px}.footer{height:50px}.book-text{padding-top:12px}}
