@font-face{font-family:'Source Serif 4';src:url('fonts/source-serif-4-latin.woff2') format('woff2');font-style:normal;font-weight:200 900;font-display:swap}
@font-face{font-family:Pretendard;src:url('fonts/pretendard-variable.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
:root{--paper:#f8f4eb;--ivory:#fffcf5;--beige:#eae1d2;--green:#174e40;--ink:#263a31;--muted:#706f60;--brass:#99794b;--line:#d9ccb5;--english-size:20px;--leaf-height:548px;--serif:'Source Serif 4',Georgia,serif;--sans:Pretendard,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color-scheme:light}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink)}body{font:14px/1.6 var(--sans)}body[data-view=reader]{height:100dvh;overflow:hidden}body[data-theme=dark]{--paper:#192922;--ivory:#1f3028;--beige:#304336;--green:#a8c8a5;--ink:#e0e8d8;--muted:#adbaa3;--brass:#c6b284;--line:#435340;color-scheme:dark}
[hidden]{display:none!important}button,input{font:inherit;color:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:default;opacity:.3}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--green);outline-offset:4px}button svg,a svg{width:18px;height:18px;vertical-align:middle;flex-shrink:0}button span[data-icon]{display:inline-flex}h1,h2,h3,p{margin:0}button{border:0;background:none}sup{line-height:0}summary{cursor:pointer}.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}
.skip-link{position:fixed;top:-60px;left:20px;z-index:100;background:var(--green);color:var(--ivory);padding:12px 18px}.skip-link:focus{top:12px}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 30px;gap:22px;border-bottom:1px solid var(--line);background:var(--paper)}.brand{font-size:27px;font-weight:650;letter-spacing:-1.2px;text-decoration:none;white-space:nowrap}.top-book{flex:1;min-width:0;text-align:center}.top-book strong{display:block;font:500 18px/1.2 var(--serif);letter-spacing:.025em}.top-book small{display:block;font-size:11px;color:var(--muted);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-nav{display:flex;align-items:center;gap:15px}.top-nav button,.home-link{display:inline-flex;align-items:center;gap:6px;font-size:12px;min-height:43px;padding:8px 2px;text-decoration:none;white-space:nowrap}.top-nav .saved-count{font-size:12px;color:var(--brass)}
.library-home,.book-home{max-width:1080px;margin:0 auto;padding:55px 30px 80px}.library-heading{padding:0 0 42px;position:relative;isolation:isolate}.library-heading:after{content:'';position:absolute;z-index:-1;right:5%;top:-20px;width:225px;height:280px;border:1px solid color-mix(in srgb,var(--brass) 22%,transparent);border-radius:130px 130px 0 0;transform:rotate(12deg);pointer-events:none}.library-heading h1{font-size:clamp(32px,4vw,48px);line-height:1.3;font-weight:500;letter-spacing:-1.8px}.brand-tag{display:inline}.shelf-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:24px}.shelf-heading h2{font-size:18px;font-weight:500}.shelf-heading span{font-size:12px;color:var(--muted)}#library-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,370px),1fr));gap:25px}.library-book{display:grid;grid-template-columns:115px 1fr;column-gap:27px;row-gap:10px;padding:29px;background:var(--green);color:var(--ivory);border-radius:18px;position:relative;overflow:hidden;text-decoration:none;min-width:0;box-shadow:0 10px 28px #17362b0b}.library-book:after{content:'';position:absolute;right:-50px;top:17px;width:170px;height:300px;border:1px solid #d2bd8345;border-radius:100px;transform:rotate(18deg);pointer-events:none}.library-book>a{display:contents;text-decoration:none;color:inherit}.library-book-cover{width:115px;height:auto;aspect-ratio:3/4;object-fit:cover;grid-row:span 2;box-shadow:8px 10px 18px #071c1740;align-self:center}.library-book-copy{min-width:0;position:relative;z-index:1;padding-top:8px}.library-book h2{font:500 29px/1.2 var(--serif);letter-spacing:-.5px;margin-bottom:9px}.library-author{font-size:13px;opacity:.8}.library-location{font-size:13px;color:#e0d2a9;margin-top:23px}.library-meta{font-size:11px;opacity:.75;margin-top:9px}.book-card-actions{position:relative;z-index:1;grid-column:2;display:flex;align-items:center;justify-content:flex-end}.book-card-actions a{font-size:12px;padding:7px 0;color:inherit;text-decoration:none}.book-card-actions a:hover{text-decoration:underline}body[data-theme=dark] .library-book{background:#214f40;color:#f7f1e2}.book-back{font-size:13px;text-decoration:none;color:var(--muted)}.book-detail-heading{display:flex;align-items:center;gap:35px;margin:32px 0 42px}.book-detail-cover{width:130px;box-shadow:8px 12px 25px #1f302421}.book-detail-heading h1{font:500 clamp(31px,5vw,48px)/1.15 var(--serif);letter-spacing:-1px;margin-bottom:12px}.book-detail-heading p{font-size:14px;color:var(--muted);margin-top:7px}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:18px;min-height:44px;background:var(--green);color:var(--ivory);padding:11px 17px;border-radius:5px;font-weight:550;font-size:13px}.book-detail-heading .primary-button{margin-top:22px}.text-button{font-size:12px;color:var(--muted);padding:7px 0;text-decoration:underline;text-underline-offset:4px}
.reader-view{height:calc(100dvh - 72px);display:flex;flex-direction:column;min-height:0}.reader-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 32px 10px;flex-shrink:0}.layout-switch{display:flex;gap:2px;background:var(--ivory);border:1px solid var(--line);padding:3px;border-radius:6px}.layout-switch button{display:flex;align-items:center;gap:7px;padding:7px 13px;min-height:34px;border-radius:3px;font-size:12px}.layout-switch button[aria-pressed=true]{background:var(--green);color:var(--ivory)}.reader-options{display:flex;align-items:center;gap:21px}.reader-options button{min-height:40px;padding:7px 2px;font-size:12px}.reader-options button[aria-pressed=true]{color:var(--green);text-decoration:underline;text-underline-offset:5px}.reader-options .font-button{font:400 24px var(--serif)}.reader-stage{position:relative;padding:0 36px 5px;flex:1;min-height:0}.page-spread{display:grid;grid-template-columns:1fr;width:100%;height:100%;margin:0 auto;box-shadow:0 8px 25px #24302109;min-height:0}.layout-two .page-spread{grid-template-columns:repeat(2,minmax(0,1fr))}.page-leaf{height:var(--leaf-height);padding:22px 32px 13px;background:var(--ivory);border:1px solid var(--line);min-width:0;display:flex;flex-direction:column;position:relative}.layout-two .page-leaf+.page-leaf{border-left:0;background:linear-gradient(90deg,#b8a58312,transparent 24px),var(--ivory)}.layout-two .page-leaf:first-child{background:linear-gradient(-90deg,#b8a58312,transparent 24px),var(--ivory)}.running-head{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-bottom:11px;border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.page-flow{flex:1;min-height:0;overflow:hidden;padding-top:15px;overflow-wrap:anywhere}
.page-flow,.newspaper-english{font:400 var(--english-size)/1.65 var(--serif);letter-spacing:-.15px}.en-paragraph{font:inherit;margin:0 0 16px}.en-paragraph:last-child,.ko-paragraph:last-child{margin-bottom:0}.ko-paragraph,.newspaper-korean{font:400 16px/1.75 var(--sans);color:var(--muted);letter-spacing:0;overflow-wrap:anywhere}
.ko-paragraph{margin:7px 0 20px}.word{display:inline;font:inherit;line-height:inherit;letter-spacing:inherit;text-align:left;padding:0;border:0;border-radius:2px;background:none;color:inherit;overflow-wrap:anywhere;touch-action:pan-y}.word:hover,.word:focus-visible{background:color-mix(in srgb,var(--green) 10%,transparent)}.word.is-saved{text-decoration:underline;text-decoration-color:var(--brass);text-underline-offset:4px}.word.is-selected{outline:1px solid var(--green);outline-offset:2px}.chapter-front{padding:3px 0 20px}.chapter-front small{font:500 10px/1.5 var(--sans);letter-spacing:.18em;color:var(--brass)}.chapter-front h1{font:500 31px/1.15 var(--serif);letter-spacing:-.7px;margin:9px 0}.chapter-front p{font:400 12px/1.7 var(--sans);color:var(--muted);letter-spacing:0}.page-folio{font:400 12px/1.5 var(--serif);padding-top:10px;flex-shrink:0;color:var(--brass);text-align:center}.blank-page{align-items:center;justify-content:center;color:var(--brass);font:400 24px var(--serif)}.edge-button{position:absolute;top:0;bottom:5px;width:35px;display:flex;align-items:center;justify-content:center;padding:0;color:var(--brass);z-index:2}.edge-prev{left:0}.edge-next{right:0}.edge-button:hover{background:color-mix(in srgb,var(--brass) 8%,transparent)}.reader-bottom{height:65px;min-height:65px;flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:18px;padding:8px 22px max(8px,env(safe-area-inset-bottom));position:relative}.turn-button{width:42px;min-height:42px;padding:10px;display:grid;place-items:center}.page-jump{display:flex;align-items:center;justify-content:center;gap:7px}.page-jump input{width:56px;min-width:0;height:36px;border:1px solid var(--line);border-radius:4px;background:var(--ivory);text-align:center;font-size:15px;font-variant-numeric:tabular-nums;padding:3px 5px}.page-jump input[aria-invalid=true]{border-color:#ae6253}.page-jump span{font-size:12px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.page-jump button{display:grid;place-items:center;width:34px;min-height:35px;padding:7px;color:var(--green)}.end-complete{position:absolute;right:27px;font-size:11px}.reader-loading{position:absolute;inset:0 36px 5px;background:var(--ivory);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:17px;z-index:4;text-align:center;color:var(--muted);padding:30px}.reader-loading p{font-size:14px}.page-measure{position:absolute;left:-16000px;top:0;visibility:hidden;pointer-events:none}.footnote{font:500 10px var(--sans);vertical-align:super;color:var(--brass);padding:0 2px;min-width:12px}.book-figure{margin:15px 0;font:400 13px/1.6 var(--sans);letter-spacing:0;break-inside:avoid}.book-figure img{display:block;width:auto;max-width:100%;height:auto;max-height:calc(var(--leaf-height) - 160px);object-fit:contain;margin:0 auto}.book-figure figcaption{font-size:11px;line-height:1.7;color:var(--muted);margin-top:9px}.book-table-title{text-align:center;font:500 17px var(--serif);margin-bottom:9px}.book-table{border-collapse:collapse;width:100%;font:400 12px/1.5 var(--sans);table-layout:fixed}.book-table td,.book-table th{text-align:center;padding:6px 2px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.book-table th{font-weight:600}
dialog{color:var(--ink);background:var(--ivory);border:1px solid var(--line);padding:0}dialog::backdrop{background:#102b2480;backdrop-filter:blur(3px)}.reading-help-dialog{width:min(1080px,calc(100vw - 48px));height:min(900px,calc(100dvh - 48px));max-width:none;max-height:none;border-radius:14px;overflow:hidden}.help-dialog-layout{display:flex;flex-direction:column;height:100%;min-height:0}.focused-source{display:flex;flex-direction:column;padding:21px 29px 14px;background:var(--paper);border-bottom:1px solid var(--line);max-height:32%;min-height:85px;flex-shrink:0;overflow:hidden}.source-text{min-height:0;flex:1;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;font:400 21px/1.75 var(--serif);letter-spacing:-.15px}.source-legend{display:flex;flex-wrap:wrap;gap:11px;font-size:11px;line-height:1.5;color:var(--muted);padding-top:10px;flex-shrink:0}.source-legend span{background:none!important;border:0!important}.source-legend span:before{content:'';display:inline-block;width:6px;height:6px;border-radius:1px;margin-right:4px;vertical-align:middle;background:currentColor}.source-text .word{border-bottom:1px solid transparent;padding:0 1px}.help-scroll{flex:1;min-height:0;overflow:auto;padding:25px 29px 32px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--brass) var(--paper)}.inline-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:17px}.inline-title{min-width:0;overflow-wrap:anywhere}.inline-title h2{font:400 34px/1.2 var(--serif);letter-spacing:-.6px}.phonetics{font-size:12px;color:var(--muted);margin-top:7px}.inline-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.icon-button{display:grid;place-items:center;width:36px;min-height:36px;padding:8px;border-radius:4px}.icon-button[aria-pressed=true]{background:var(--green);color:var(--ivory)}.help-word-meaning{font:600 18px/1.75 var(--sans);margin-top:21px}.word-pos{display:inline-block;background:var(--beige);color:var(--green);border-radius:3px;font:500 12px/1.6 var(--sans);padding:3px 7px;margin-right:9px;vertical-align:middle}.help-word-form{font-size:13px;color:var(--muted);margin-top:5px}.help-pattern{font:500 16px/1.75 var(--sans);padding:14px 17px;margin-top:19px;background:var(--beige);border-radius:5px}.help-pattern strong{display:block;font:500 21px/1.5 var(--serif);margin-bottom:4px}.help-section{margin-top:25px;padding-top:20px;border-top:1px solid var(--line)}.help-section>h3,.help-flow-head h3{font:600 14px/1.6 var(--sans);color:var(--green);margin-bottom:14px}.core-row{display:grid;grid-template-columns:65px minmax(0,1fr);gap:12px;padding:15px 16px;margin:9px 0;border-left:3px solid #6689a3;border-radius:5px}.core-role{font:500 12px/1.5 var(--sans);overflow-wrap:anywhere}.core-role b{display:block;font-size:16px;font-weight:600;margin-bottom:3px}.core-role small{display:block;font-size:11px}.core-row>div>p:first-child{font:400 21px/1.55 var(--serif);color:var(--ink);overflow-wrap:anywhere}.core-row .core-ko{font:400 16px/1.75 var(--sans);color:var(--muted);margin-top:4px}.core-row.role-v{border-left-color:#b77d6b}.core-row.role-o{border-left-color:#a48c54}.core-row.role-m{border-left-color:#779276}.core-row.role-form{border-left-color:#9c7da5}.help-explanation,.help-flow{font:500 16px/1.85 var(--sans);color:var(--ink);word-break:keep-all;overflow-wrap:anywhere}.help-flow-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:12px}.help-flow-head h3{margin:0}.listen-sentence{font-size:12px;white-space:nowrap;border:1px solid var(--line);background:var(--paper);padding:7px 10px;border-radius:4px;min-height:35px}.whole-skeleton{font:400 17px/1.8 var(--serif);margin-top:15px}.whole-skeleton>span:first-child{display:block;font:500 12px/1.7 var(--sans);color:var(--muted);margin-bottom:7px}.syntax-en{font:400 21px/1.95 var(--serif);overflow-wrap:anywhere}.syntax-mark{padding:1px 2px;border-bottom:1px solid;box-decoration-break:clone;-webkit-box-decoration-break:clone}.syntax-label{font:600 11px/1 var(--sans);position:relative;top:-.35em;margin-left:3px}.help-modifier{padding:16px;background:var(--paper);border:1px solid var(--line);border-radius:5px;margin-top:16px}.help-return-bar{padding:14px 24px max(14px,env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);flex-shrink:0}.help-return-bar button{width:100%;justify-content:space-between}
.role-s{--role-bg:#e6edf3;--role:#285d7f;--role-line:#6b8ca3;background:var(--role-bg);color:var(--role);border-bottom-color:var(--role-line)}.role-v{--role-bg:#f7e8e3;--role:#914f43;--role-line:#b77d6b;background:var(--role-bg);color:var(--role);border-bottom-color:var(--role-line)}.role-o{--role-bg:#f4ecdc;--role:#80622d;--role-line:#a48c54;background:var(--role-bg);color:var(--role);border-bottom-color:var(--role-line)}.role-c{--role-bg:#eee8f0;--role:#775581;--role-line:#92759c;background:var(--role-bg);color:var(--role);border-bottom-color:var(--role-line)}.role-m{--role-bg:#e7eee3;--role:#466b4e;--role-line:#779276;background:var(--role-bg);color:var(--role);border-bottom-color:var(--role-line)}.role-n{--role-bg:#eeeadd;--role:#786842;--role-line:#9a8963;background:var(--role-bg);color:var(--role);border-bottom-color:var(--role-line)}.role-form{--role-bg:#f0e9f2;--role:#74577e;--role-line:#9c7da5;background:var(--role-bg);color:var(--role);border-bottom-color:var(--role-line)}.has-syntax .word[data-syntax-role]{border-bottom-width:1px;border-bottom-style:solid}body[data-theme=dark] .role-s{--role-bg:#2a3d49;--role:#b6d9ef}body[data-theme=dark] .role-v{--role-bg:#4a302b;--role:#eab6a8}body[data-theme=dark] .role-o{--role-bg:#443b27;--role:#e1cf9c}body[data-theme=dark] .role-c,body[data-theme=dark] .role-form{--role-bg:#3b2f43;--role:#d9bfdf}body[data-theme=dark] .role-m{--role-bg:#2c4030;--role:#c0d7b6}body[data-theme=dark] .role-n{--role-bg:#3a3b2a;--role:#d7d0a9}
.app-dialog{width:min(620px,calc(100vw - 40px));max-height:calc(100dvh - 60px);overflow:auto;padding:26px 28px 30px;border-radius:9px}.dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:25px}.dialog-header h2{font-size:23px;font-weight:550;letter-spacing:-.6px}.eyebrow{font-size:10px;letter-spacing:.15em;color:var(--brass);margin-bottom:8px}.dialog-hint,.settings-hint{font-size:13px;line-height:1.8;color:var(--muted)}.dialog-hint{margin-bottom:24px}.contents-dialog{width:min(760px,calc(100vw - 40px))}.toc-part{margin:0 0 30px}.toc-part-number{font-size:10px;letter-spacing:.13em;color:var(--brass);margin-bottom:6px}.toc-part h3{font:500 26px/1.3 var(--serif);margin-bottom:13px}.toc-chapters{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.toc-chapters li{border-bottom:1px solid var(--line);display:flex;gap:14px;align-items:center;color:var(--muted);padding:14px 0;font:400 18px/1.4 var(--serif)}.toc-chapters li:has(button){padding:0;color:var(--ink)}.toc-read{width:100%;display:flex;align-items:center;gap:14px;text-align:left;padding:14px 0;font:inherit}.toc-number{width:25px;flex-shrink:0;color:var(--brass);font:400 18px var(--serif)}.toc-ready{margin-left:auto;flex-shrink:0;color:var(--green);font:500 10px var(--sans)}.toc-current .toc-number{color:var(--green)}.saved-item{display:block;width:100%;text-align:left;border-bottom:1px solid var(--line);padding:17px 0}.saved-item strong{font:400 26px var(--serif)}.saved-item small{display:block;font-size:11px;color:var(--brass);margin-top:5px}.saved-item p{font-size:15px;color:var(--muted);margin-top:7px}.empty-list{font-size:14px;line-height:1.9;color:var(--muted);padding:25px 0}.setting-label{font-size:14px;font-weight:550;margin:25px 0 13px}.font-controls{display:flex;align-items:center;justify-content:space-between;gap:18px}.font-controls button{width:54px;min-height:43px;border:1px solid var(--line);border-radius:4px;font-size:18px}.font-controls span{font-size:15px}.theme-buttons{display:flex;gap:12px}.theme-buttons button{border:1px solid var(--line);min-width:100px;min-height:43px;padding:8px 17px;border-radius:4px}.theme-buttons button[aria-pressed=true]{border-color:var(--green);background:var(--beige)}.settings-hint{margin-top:25px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.stat-card{background:var(--paper);padding:20px;border-radius:5px}.stat-card strong{font:500 29px var(--serif);display:block;margin-bottom:8px}.stat-card span{font-size:12px;color:var(--muted)}.stats-note{font-size:13px;color:var(--muted);line-height:1.9;margin-top:22px}.about-copy p{font-size:15px;line-height:1.85;margin:17px 0}.footnote-copy{font:400 18px/1.8 var(--serif);white-space:pre-wrap;overflow-wrap:anywhere}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,15px);z-index:100;max-width:calc(100vw - 40px);padding:12px 17px;border-radius:5px;background:var(--green);color:var(--ivory);font-size:13px;line-height:1.7;pointer-events:none;opacity:0;transition:opacity .15s,transform .15s}.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(max-width:800px){.topbar{height:65px;padding:0 19px;gap:13px}.brand{font-size:25px}.top-book strong{font-size:15px}.top-book small{font-size:10px}.top-nav{gap:10px}.top-nav button,.home-link{font-size:11px;gap:4px}#stats-open{display:none}.reader-view{height:calc(100dvh - 65px)}.reader-toolbar{padding:10px 20px 8px}.reader-options{gap:16px}.layout-switch button{padding:6px 11px}.reader-stage{padding:0 25px 4px}.page-leaf{padding:20px 22px 12px}.edge-button{width:24px;bottom:4px}.edge-button svg{width:15px;height:15px}.running-head{font-size:9px}.chapter-front h1{font-size:29px}.chapter-front p{font-size:11px}.reader-bottom{height:61px;min-height:61px;gap:10px;padding-left:9px;padding-right:9px}.end-complete{right:15px;bottom:4px;font-size:10px;transform:translateY(-2px)}.reader-bottom:has(.end-complete:not([hidden])){height:78px;min-height:78px;padding-bottom:22px}.reader-loading{inset:0 25px 4px}.library-home,.book-home{padding:36px 23px 60px}.library-heading{padding-bottom:35px}.library-heading:after{right:-10px;width:160px;height:220px;top:0}.library-book{grid-template-columns:87px 1fr;padding:25px 21px;column-gap:23px}.library-book-cover{width:87px}.library-book h2{font-size:27px}.library-author{font-size:12px}.library-location{margin-top:17px}.library-meta{font-size:10px}.book-detail-heading{gap:24px}.book-detail-cover{width:100px}.book-detail-heading h1{font-size:32px}.book-detail-heading p{font-size:12px}.book-detail-heading .primary-button{font-size:12px;padding:9px 12px}.reading-help-dialog{width:100vw;height:100dvh;border-radius:0;border:0;margin:0}.focused-source{padding:19px 22px 13px;max-height:31%;min-height:95px}.source-text{font-size:20px;line-height:1.65}.help-scroll{padding:23px 23px 28px}.inline-title h2{font-size:31px}.inline-actions{gap:1px}.inline-actions .icon-button{width:32px;min-height:35px;padding:7px}.core-row{grid-template-columns:54px minmax(0,1fr);padding:14px 13px;gap:10px}.help-return-bar{padding:13px 19px max(13px,env(safe-area-inset-bottom))}.app-dialog{padding:23px 23px 27px}.dialog-header h2{font-size:22px}.app-dialog,.contents-dialog{width:calc(100vw - 28px);max-height:calc(100dvh - 36px)}.toc-part h3{font-size:24px}.toc-chapters li{font-size:17px}.footnote-copy{font-size:17px}}
@media(max-width:620px){.top-nav .home-link{display:none}.layout-two .page-leaf{padding:16px 11px 12px}.layout-two .page-flow{font-size:17px}.layout-two .chapter-front h1{font-size:21px}.layout-two .running-head{font-size:8px}.layout-two .ko-paragraph{font-size:13px}.book-table{font-size:10px}.book-table td,.book-table th{padding:5px 1px}.book-table-title{font-size:15px}}
@media(max-width:370px){.topbar{padding:0 15px;gap:10px}.top-nav{gap:7px}.top-book strong{font-size:14px}.reader-toolbar{padding-left:15px;padding-right:15px}.reader-options{gap:12px}.layout-switch button{padding:6px 9px;font-size:11px}.reader-stage{padding-left:21px;padding-right:21px}.edge-button{width:20px}.page-leaf{padding-left:18px;padding-right:18px}.reader-loading{left:21px;right:21px}.library-book{column-gap:18px;padding:23px 17px}.library-book h2{font-size:24px}.library-book-cover{width:79px}.library-book{grid-template-columns:79px 1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.toast{transition:none}}
.mode-switch{display:flex;align-items:center;gap:2px;padding:3px;background:var(--ivory);border:1px solid var(--line);border-radius:6px}.reader-options .mode-switch button{padding:6px 10px;min-height:34px;border-radius:3px;font-family:"Noto Serif KR",serif;font-size:12px;font-weight:500;letter-spacing:0;white-space:nowrap}.reader-options .mode-switch button[aria-pressed=true]{background:var(--green);color:var(--ivory);text-decoration:none}.page-folio{min-height:28px}.page-leaf.has-overflow .page-flow{overflow:auto;overscroll-behavior:contain}.empty-leaf{pointer-events:none}.page-spread{touch-action:pan-y}.library-book-cover{aspect-ratio:auto;object-fit:contain}.book-detail-cover{height:auto;object-fit:contain}
@media(max-width:800px){#stats-open:not([hidden]){display:inline-flex}.reader-toolbar{gap:12px}.reader-options{gap:12px}.reader-options .mode-switch button{font-size:11px;padding:6px 7px}.reader-bottom:has(.end-complete:not([hidden])){height:61px;min-height:61px;padding-bottom:max(8px,env(safe-area-inset-bottom))}.end-complete{display:none}.top-nav{gap:9px}}
@media(max-width:620px){.layout-switch [data-icon]{display:none}.layout-two .page-flow{font-size:var(--english-size)}.layout-two .ko-paragraph{font-size:16px}.layout-switch button{padding-left:10px;padding-right:10px}.top-book strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-nav button{min-width:25px;justify-content:center}.reader-options .mode-switch button{padding-left:6px;padding-right:6px}}
.library-book>a{display:grid;grid-column:1/-1;grid-template-columns:inherit;column-gap:inherit;align-items:center}.library-book-cover{grid-row:auto}
:root{--reader-max-width:1280px;--reader-header-height:46px;--reader-toolbar-pad-y:4px;--reader-footer-height:48px;--leaf-pad-top:18px;--leaf-pad-bottom:10px}
body[data-view=reader] {
  --reader-frame-width: calc(var(--reader-max-width) + 72px);
  --reader-toolbar-gutter: 32px;
  --reader-layout-shift: 4px;
  /* On desktop the brand follows the first button inside the switch. */
  --reader-brand-offset: 4px;
}
body[data-view=reader] .topbar {
  height: var(--reader-header-height);
  padding-inline-start: calc(
    max(0px, (100% - var(--reader-frame-width)) / 2)
    + var(--reader-toolbar-gutter) + var(--reader-layout-shift) + var(--reader-brand-offset)
  );
}
body[data-view=reader] .top-nav button,body[data-view=reader] .home-link{min-height:40px;padding-block:4px}
.reader-view{height:calc(100dvh - var(--reader-header-height))}
#reader-view .reader-toolbar {
  width: 100%;
  max-width: var(--reader-frame-width);
  margin-inline: auto;
  padding: var(--reader-toolbar-pad-y) var(--reader-toolbar-gutter);
}
/* The paper inset exceeds the toolbar inset at each breakpoint. */
#reader-view .layout-switch {
  position: relative;
  inset-inline-start: var(--reader-layout-shift);
}
#reader-view .reader-options button{min-height:34px}
#reader-view .reader-options .font-button{padding-block:0;min-height:36px;line-height:1}
.reader-stage{width:100%;max-width:var(--reader-frame-width);margin-inline:auto}
.page-leaf{padding-top:var(--leaf-pad-top);padding-bottom:var(--leaf-pad-bottom)}
.page-flow{padding-top:0}
.page-folio{min-height:22px;padding-top:4px}
#reader-view .reader-bottom{height:calc(var(--reader-footer-height) + env(safe-area-inset-bottom));min-height:calc(var(--reader-footer-height) + env(safe-area-inset-bottom));padding:4px 22px calc(4px + env(safe-area-inset-bottom));gap:14px}
#reader-view .turn-button{min-height:36px;height:36px;padding:7px}
#reader-view .page-jump input{height:32px}
#reader-view .page-jump{align-items:center;line-height:1}
#reader-view .page-jump input{padding:0 5px 4px;line-height:1;vertical-align:middle}
#reader-view #page-total{line-height:1;position:relative;top:-2px}
#reader-view .turn-button{align-items:center;justify-content:center;line-height:1}
#reader-view .page-jump button{min-height:32px;height:32px}
#reader-view #page-go{display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:40px;padding:0 7px;border:1px solid var(--line);border-radius:4px;font-size:12px;line-height:1;white-space:nowrap}
#page-go .page-go-label{font:inherit;line-height:1;position:relative;top:-1px}
@media (max-width: 800px) {
  .topbar .top-nav > :is(button, a) { align-self: center; flex-shrink: 0; }
  body[data-view=reader] {
    --reader-toolbar-gutter: 20px;
    --reader-layout-shift: 5px;
    --reader-brand-offset: 0px;
  }
  /* Bring the first serif glyph's visible edge onto the shared border line. */
  body[data-view=reader] .brand { text-indent: -.08em; }
  .reader-width-settings { display: none; }
}
@media (max-width: 420px) {
  .topbar { gap: 8px; }
  .topbar .top-nav { gap: 5px; }
  .topbar .top-nav > :is(button, .home-link) { padding-inline: 1px; gap: 3px; }
}
@media (max-width: 370px) {
  .topbar .top-nav { gap: 2px; }
  .topbar .top-nav > :is(button, .home-link) {
    padding-inline: 0;
    gap: 2px;
    font-size: 10px;
  }
  .topbar .top-nav #account-open { padding-inline: 6px; }
  .topbar .top-nav .saved-count { font-size: 10px; }
  body[data-view=reader] {
    --reader-toolbar-gutter: 15px;
    --reader-layout-shift: 6px;
  }
}
.overflow-reading{flex-shrink:0;padding-top:7px;border-top:1px solid var(--line);margin-top:6px}
.overflow-reading button{width:100%;min-height:32px;padding:3px 7px;text-align:center;font:500 12px/1.6 var(--sans);color:var(--green);background:var(--beige);border-radius:3px}
.page-leaf.has-overflow .page-flow{margin-inline-end:calc(-1 * var(--overflow-rail,18px));padding-inline-end:var(--overflow-rail,18px);scrollbar-gutter:auto;scrollbar-width:thin;scrollbar-color:var(--brass) transparent;overscroll-behavior:contain}

/* Leave visible paper between syntax rows; keep selection borders inside each word. */
#reading-help-dialog .source-text{line-height:1.95}
#reading-help-dialog .source-text .source-word-run{display:inline-block;max-width:100%;vertical-align:baseline}
#reading-help-dialog .source-text .word{display:inline-block;line-height:1.25;vertical-align:baseline;padding:1px 2px 2px;margin:2px 0}
#reading-help-dialog .source-text .word.is-selected{position:relative;z-index:1;outline:none;outline-offset:0;box-shadow:inset 0 0 0 1.5px var(--green)}
#reading-help-dialog .source-text .word.is-selected:focus-visible{box-shadow:inset 0 0 0 2px var(--brass)}

/* Related reading controls stay together, with a distinct border around each choice. */
@media(min-width:801px){#reader-view .reader-toolbar{justify-content:flex-start;gap:16px}#reader-view .reader-options{gap:16px}}

.help-meaning-block{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 20px;margin-top:16px}
.help-meaning-block .help-word-meaning{margin:0;overflow-wrap:anywhere}
.help-word-meaning>.word-pos{vertical-align:baseline;position:relative;inset-block-start:-.2em}
.help-word-form{margin:0;font:400 13px/1.7 var(--sans);color:var(--muted)}
.help-word-form strong{font-weight:500;color:var(--ink)}
.help-expression-label{font:500 12px/1.6 var(--sans);color:var(--muted);margin-bottom:8px}
.help-pattern{margin-top:20px}

.library-book-subtitle{font-size:13px;color:#e0d2a9;margin:-2px 0 8px;line-height:1.5}

/* Keyboard focus and pointer selection retain the prepared grammar colour. */
.word[data-syntax-role]{background:var(--role-bg);color:var(--role)}

.book-password-dialog{max-width:410px}.book-password-dialog h2{font-size:23px;margin:8px 0 12px}.book-password-dialog label{display:block;margin:20px 0 8px}.book-password-dialog input{display:block;width:100%;padding:12px;border:1px solid var(--line);border-radius:5px;background:var(--ivory);font-size:18px}.book-password-message{min-height:3.2em;margin:12px 0;font-size:13px;color:var(--muted)}.book-password-actions{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:20px}.library-lock{font-size:12px;margin-top:9px}

/* Every shelf card has the same frame within each viewport. */
/* One reading-place underline; phrase backgrounds include their internal spaces. */
.page-leaf,.focused-source{position:relative}
.word{border-bottom-color:transparent}
.syntax-phrase{display:inline;padding-block:2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.syntax-phrase .word,.word[data-syntax-role]{background:transparent;color:inherit;border-bottom-color:transparent}
#reading-help-dialog .source-text .word.is-selected{background:transparent;color:inherit;box-shadow:none}
.word.is-reading-place,#reading-help-dialog .source-text .word.is-reading-place{text-decoration-line:underline;text-decoration-color:var(--green);text-decoration-thickness:2px;text-underline-offset:.16em;text-decoration-skip-ink:none}
.reading-place-marker{position:absolute;left:10px;width:3px;height:10px;border-radius:2px;background:var(--green);pointer-events:none}
#admin-open:not([hidden]){display:inline-flex;color:var(--green)}
@media(max-width:620px){.reading-place-marker{left:8px}}
.library-heading h1{font-size:26px}
#library-list{grid-auto-rows:1fr;align-items:stretch}
.library-book{height:100%;min-height:246px;grid-template-rows:1fr;align-content:start;border-radius:18px;padding:29px;row-gap:0}
.library-book-cover{grid-row:1;align-self:start}
.library-book-copy{padding-top:0}
@media(max-width:800px){.library-heading h1{font-size:22px}.library-book{min-height:218px;padding:25px 21px;border-radius:18px}}

/* Chapter-local pages and the book position are separate navigation controls. */
#reader-view .reader-bottom{height:calc(54px + env(safe-area-inset-bottom));min-height:calc(54px + env(safe-area-inset-bottom));display:grid;grid-template-columns:36px minmax(0,1fr) 36px;grid-template-rows:36px 16px;gap:0 8px;padding:0 22px calc(2px + env(safe-area-inset-bottom))}
#reader-view .page-jump{justify-self:center;gap:6px;min-width:0;max-width:100%}
#reader-view .page-jump select{width:65px;min-width:0;height:32px;padding:3px 5px;border:1px solid var(--line);border-radius:4px;background:var(--ivory);color:var(--ink);font:12px var(--sans)}
#reader-view .page-jump input{width:45px;padding-bottom:1px;font-size:14px}
#reader-view #page-total{font-size:11px;top:0;max-width:110px;overflow:hidden;text-overflow:ellipsis}
#reader-view #page-go{min-width:34px;padding-inline:5px;font-size:11px}
#reader-view .reader-bottom>.turn-button{width:36px;height:36px;min-height:36px}
#reader-view .reader-bottom .end-complete{display:none}
.book-position-control{grid-column:1/-1;min-width:0;align-self:stretch;position:relative}
.book-position-heading{position:absolute;right:0;bottom:20px;display:flex;align-items:center;gap:12px;max-width:100%;padding:3px 7px;background:var(--ivory);border:1px solid var(--line);border-radius:4px;font-size:11px;line-height:16px;color:var(--muted);white-space:nowrap;pointer-events:none;opacity:0;z-index:3}
.book-position-control:hover .book-position-heading,.book-position-control:focus-within .book-position-heading{opacity:1}
.book-position-heading output{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--brass)}
#book-position{--book-position-track:color-mix(in srgb,var(--brass) 28%,var(--paper));display:block;width:100%;height:16px;margin:0;appearance:none;-webkit-appearance:none;background:transparent;accent-color:var(--brass);cursor:pointer;touch-action:pan-y}
#book-position::-webkit-slider-runnable-track{height:4px;border:0;border-radius:999px;background:linear-gradient(to right,var(--brass) 0 var(--book-position-fill,0%),var(--book-position-track) var(--book-position-fill,0%) 100%)}
#book-position::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:14px;height:14px;margin-top:-5px;border:0;border-radius:50%;background:var(--brass)}
#book-position::-moz-range-track{height:4px;border:0;border-radius:999px;background:var(--book-position-track)}
#book-position::-moz-range-progress{height:4px;border:0;border-radius:999px;background:var(--brass)}
#book-position::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:var(--brass)}
#book-position:disabled{cursor:default;opacity:.5}
@media(max-width:620px){#reader-view .reader-bottom{padding-inline:15px;grid-template-columns:29px minmax(0,1fr) 29px;column-gap:5px}#reader-view .reader-bottom>.turn-button{width:29px;padding:5px}#reader-view .page-jump{gap:4px}#reader-view .page-jump select{width:54px;font-size:11px;padding-inline:3px}#reader-view .page-jump input{width:36px;font-size:13px}#reader-view #page-total{font-size:10px;max-width:85px}#reader-view #page-go{min-width:29px;padding-inline:4px;font-size:10px}}
@media(max-width:370px){#reader-view .reader-bottom{padding-inline:10px;grid-template-columns:26px minmax(0,1fr) 26px;column-gap:4px}#reader-view .reader-bottom>.turn-button{width:26px}#reader-view .page-jump{gap:3px}#reader-view .page-jump select{width:49px}#reader-view .page-jump input{width:32px}#reader-view #page-total{max-width:70px}}

/* Centre the chapter label independently of the native picker arrow. */
#reader-view .page-jump .chapter-picker{position:relative;display:inline-flex;align-items:center;flex:none;color:var(--ink)}
#reader-view .page-jump .chapter-picker::after{content:"";position:absolute;inset-inline-end:9px;top:calc(50% - 4px);width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);pointer-events:none}
#reader-view .page-jump .chapter-picker select{appearance:none;-webkit-appearance:none;text-align:center;text-align-last:center;padding:0 12px 3px;font-family:"Noto Serif KR",serif;font-weight:500;line-height:1;font-variant-numeric:tabular-nums;cursor:pointer}
#reader-view .page-jump .chapter-picker:has(select:disabled){opacity:.5}
@media(max-width:620px){#reader-view .page-jump .chapter-picker select{width:56px;padding-inline:10px}}

.sentence-help-trigger{
  display:inline-block;
  margin-inline-start:.45em;
  padding:2px 6px;
  border:1px solid var(--line);
  border-radius:4px;
  background:transparent;
  color:var(--green);
  font:500 11px/1.55 var(--sans);
  vertical-align:.12em;
  white-space:nowrap;
}
.sentence-help-trigger:hover,.sentence-help-trigger[aria-expanded="true"]{background:var(--paper)}
.sentence-help-trigger:focus-visible{outline:2px solid var(--brass);outline-offset:2px}
#reading-help-dialog .source-text .word.is-related:not(.is-selected){box-shadow:inset 0 -2px var(--brass)}
#reading-help-dialog #selected-word[lang="ko"]{font-family:var(--sans);font-size:23px}
#reading-help-dialog .sentence-translation{margin-top:0}
.help-dialogue,.help-relation{
  margin:12px 0 0;
  padding:8px 10px;
  border-inline-start:2px solid var(--brass);
  background:var(--paper);
  font:400 14px/1.6 var(--sans);
  word-break:keep-all;
  overflow-wrap:anywhere;
}
.help-dialogue span,.help-relation div span{color:var(--muted);font-size:12px}
.help-dialogue b+span{margin-inline-start:10px}
.help-relation h3{margin:0 0 4px;color:var(--green);font-size:13px}
.help-relation div{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px}
.help-relation b,.help-relation-example{font:500 16px/1.5 var(--serif)}
.help-relation p{margin:4px 0 0}
.help-relation .help-relation-parts{column-gap:14px}
.help-hint{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:3px 8px;
  margin:0 0 8px;
  padding:6px 9px;
  border-inline-start:2px solid var(--brass);
  background:var(--paper);
  color:var(--ink);
  font:400 14px/1.55 var(--sans);
  word-break:keep-all;
  overflow-wrap:anywhere;
}
.help-hint>strong{color:var(--green);font-size:12px;font-weight:600}
.help-hint-operand,.help-hint-second{min-inline-size:0}
.help-hint-operand [lang="en"]{font:500 16px/1.45 var(--serif)}
.help-hint-operand small{color:var(--muted);font-size:12px}
.help-hint-second{display:inline-flex;align-items:baseline;gap:6px}
.help-hint-symbol{flex:none;color:var(--brass);font-weight:600}
.help-pattern.help-pattern-with-hint{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:1px 8px;
  margin-top:12px;
  padding:7px 10px;
  overflow-wrap:anywhere;
}
.help-pattern-with-hint .help-expression-label,.help-pattern-with-hint strong{margin:0}
.help-section-with-hint{margin-top:16px;padding-top:12px}
.help-section-with-hint>h3{margin-bottom:6px}
