:root{color-scheme:light;--bg:#f5f4ed;--card:#fffefa;--ink:#203d34;--muted:#747d72;--line:#dce0d5;--green:#245b49;--soft:#e8eee4;--highlight:#ffe496;--shadow:0 12px 44px #243e3206;font-family:-apple-system,BlinkMacSystemFont,"Noto Sans TC",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}button,summary,select{cursor:pointer}button{border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);padding:11px 15px;min-height:44px;font-size:14px;font-weight:600}button:hover{filter:brightness(.96)}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #bc963d;outline-offset:3px}.primary{background:var(--green);color:#fff;border-color:var(--green)}.shell{max-width:980px;margin:auto;padding:0 44px}header{height:104px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);font-weight:750;font-size:20px;letter-spacing:2px}.brand img{border-radius:12px}.brand small{display:block;letter-spacing:2px;font-size:9px;margin-top:5px;color:var(--muted)}main{padding-bottom:140px}.eyebrow{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px;letter-spacing:2px;padding-top:32px}.eyebrow span{letter-spacing:0}.intro{padding:30px 0 26px}.intro h1{font-family:Georgia,"Songti TC",serif;font-weight:500;font-size:46px;letter-spacing:2px;line-height:1.4;margin:0 0 16px}.intro p{font-size:14px;color:var(--muted);line-height:1.8;margin:0}.toolbar{display:flex;justify-content:space-between;margin:6px 0 20px}.readerCard{background:var(--card);padding:30px 36px;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow)}.articleMeta{display:flex;align-items:center;justify-content:space-between}.articleMeta button{border:0;background:transparent;color:var(--muted);padding-right:0}.pill{font-size:11px;letter-spacing:1px;background:var(--soft);padding:7px 11px;border-radius:20px}.readerCard h2{font-size:21px;line-height:1.5;margin:18px 0 8px}.readingHint{font-size:12px;color:var(--muted);margin:0 0 25px}#reader{font-family:Georgia,"Times New Roman","Songti TC",serif;font-size:var(--reader-size,24px);line-height:1.95;white-space:pre-wrap;overflow-wrap:anywhere;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;min-height:200px}#reader.selectMode{touch-action:none;cursor:text}#reader.scrollMode{touch-action:pan-y;cursor:grab}#reader .selected{background:var(--highlight);color:#29291e;box-decoration-break:clone;-webkit-box-decoration-break:clone}.articleFooter{border-top:1px solid var(--line);padding-top:20px;margin-top:28px;display:flex;justify-content:space-between;gap:14px;font-size:11px;color:var(--muted)}.notice{font-size:13px;color:var(--green);line-height:1.7;margin:20px 4px 8px}.selectionPreview{font-size:13px;white-space:pre-wrap;max-height:110px;overflow:auto;color:var(--muted)}.install{color:var(--muted);font-size:12px;margin:24px 4px 0;line-height:1.8}.cacheStatus{font-size:11px;color:var(--muted);margin:10px 4px}.controls{display:flex;gap:10px;align-items:center;position:fixed;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:var(--card);border:1px solid var(--line);padding:8px;border-radius:20px;box-shadow:0 8px 30px #142a3020;z-index:5;width:max-content;max-width:calc(100% - 24px)}.controls button{border:0;background:transparent;white-space:nowrap}.modeGroup{display:flex;background:var(--bg);border-radius:13px}.modeGroup button[aria-pressed=true]{background:var(--green);color:white}.controls small{display:block;font-size:10px;margin-top:3px;color:var(--muted)}dialog{width:min(560px,calc(100% - 24px));max-height:85dvh;border:1px solid var(--line);border-radius:23px;padding:25px;background:var(--card);color:var(--ink);box-shadow:0 24px 70px #0003}dialog::backdrop{background:#102e275c;backdrop-filter:blur(5px)}.dialogHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.dialogHead h2{margin:0;font-size:22px}.dialogHead button{border:0;background:var(--bg)}label{display:block;font-size:14px;font-weight:600;margin:20px 0}input:not([type=range]),select,textarea{display:block;width:100%;padding:13px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);margin-top:10px;font-size:16px}textarea{resize:vertical;line-height:1.65}input[type=range]{display:block;width:100%;margin-top:20px;accent-color:var(--green)}output{float:right;color:var(--muted)}.subtle,dialog details{color:var(--muted);font-size:12px;line-height:1.8}.formActions{display:flex;justify-content:space-between;gap:12px}.libraryItem{border-top:1px solid var(--line);padding:16px 0;display:flex;gap:10px;align-items:center}.libraryItem .openArticle{text-align:left;flex:1;min-width:0;overflow-wrap:anywhere}.libraryItem small{display:block;color:var(--muted);font-weight:400;margin-top:6px}#allVoices{padding-left:20px;max-height:180px;overflow:auto}html[data-theme=dark]{color-scheme:dark;--bg:#17251f;--card:#20322a;--ink:#edf0df;--muted:#a4b0a0;--line:#3d5143;--green:#86c4a3;--soft:#364b3c}html[data-theme=dark] .primary,html[data-theme=dark] .modeGroup button[aria-pressed=true]{color:#15251d}@media(prefers-color-scheme:dark){html:not([data-theme=light]){color-scheme:dark;--bg:#17251f;--card:#20322a;--ink:#edf0df;--muted:#a4b0a0;--line:#3d5143;--green:#86c4a3;--soft:#364b3c}html:not([data-theme=light]) .primary,html:not([data-theme=light]) .modeGroup button[aria-pressed=true]{color:#15251d}}@media(max-width:600px){.shell{padding:0 20px}header{height:88px}.eyebrow{font-size:8px;letter-spacing:1px;padding-top:25px}.intro{padding:26px 0}.intro h1{font-size:36px}.readerCard{padding:20px;border-radius:18px}.articleFooter span:last-child{display:none}.controls{gap:2px;padding:6px}.controls button{padding:10px 12px;font-size:13px}.brand{font-size:18px}.notice{font-size:12px}}@media(prefers-reduced-motion:no-preference){dialog[open]{animation:appear .16s ease-out}@keyframes appear{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}}

button:disabled{opacity:.45;cursor:not-allowed}.controls{flex-wrap:wrap;justify-content:center}

/* A permanent, separate touch lane; it never overlaps selectable text. */
.shell{padding-right:56px}#pageScroll{position:fixed;right:max(0px,env(safe-area-inset-right));top:max(138px,calc(env(safe-area-inset-top) + 100px));bottom:max(118px,calc(env(safe-area-inset-bottom) + 90px));width:44px;z-index:6;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:ns-resize;display:flex;justify-content:center;padding:28px 0 8px;border-radius:20px;background:color-mix(in srgb,var(--card) 82%,transparent);border:1px solid var(--line)}#scrollTrack{position:relative;width:8px;border-radius:8px;background:var(--line);height:100%;pointer-events:none}#scrollThumb{position:absolute;left:-3px;top:0;width:14px;min-height:44px;background:var(--green);border-radius:12px;will-change:transform;pointer-events:auto;box-shadow:0 0 0 4px var(--card)}.scrollLabel{position:absolute;top:7px;left:0;right:0;font-size:8px;line-height:1.2;text-align:center;letter-spacing:0;color:var(--muted)}#pageScroll.dragging{background:var(--soft)}#pageScroll:focus-visible{outline:3px solid #bc963d;outline-offset:1px}#pageScroll[aria-disabled=true]{opacity:.35;cursor:default}.modeGroup{display:none}#reader.scrollMode{touch-action:none;cursor:text}
@media(max-width:600px){.shell{padding-right:54px}header{gap:8px}.brand{gap:8px;font-size:16px;letter-spacing:0}.brand img{width:32px;height:32px}.brand small{font-size:8px;letter-spacing:1px}header>button{padding:10px;font-size:12px}.eyebrow{letter-spacing:0;flex-wrap:wrap}.readerCard{padding:18px}.intro h1{font-size:32px}#pageScroll{width:42px}}
@media(max-height:500px){#pageScroll{top:70px;bottom:90px}}

/* The scroll lane and the content both include the same device safe inset. */
.shell{padding-left:calc(44px + env(safe-area-inset-left, 0px));padding-right:calc(56px + env(safe-area-inset-right, 0px))}
#pageScroll{right:env(safe-area-inset-right, 0px);padding:8px 0;overscroll-behavior:contain}
.controls{left:calc((100% + env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px))/2);max-width:calc(100% - 24px - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px))}
/* Each grapheme has a touch strip below it. Extra leading leaves the text visible. */
#reader{line-height:calc(1em + var(--reader-gap, 36px))}.brand small #appVersion{font-size:8px;font-weight:700;letter-spacing:0;color:var(--green)}
#reader .glyph{position:relative}
#reader .glyph:not(.newline)::after{content:'';position:absolute;left:0;right:0;top:calc(100% + var(--reader-handle-offset, 6px));height:24px;background:linear-gradient(to bottom,transparent 0 11px,var(--handle-color,#abc0ad) 11px 13px,transparent 13px);opacity:.8;pointer-events:auto}
#reader .glyph.space::after{background:none}
#reader.tapMode{touch-action:pan-y;cursor:pointer}
#reader.tapMode .glyph::after{display:none}
#reader .glyph.selected::after{--handle-color:var(--green)}
@media(max-width:600px){.shell{padding-left:calc(20px + env(safe-area-inset-left, 0px));padding-right:calc(54px + env(safe-area-inset-right, 0px))}}
/* Shared variables keep content aligned with the rail on folded-device safe areas. */
:root{--safe-left:env(safe-area-inset-left, 0px);--safe-right:env(safe-area-inset-right, 0px)}
.shell{padding-left:calc(44px + var(--safe-left));padding-right:calc(56px + var(--safe-right))}
#pageScroll{right:var(--safe-right)}
.controls{left:calc((100% + var(--safe-left) - var(--safe-right))/2);max-width:calc(100% - 24px - var(--safe-left) - var(--safe-right))}
@media(max-width:600px){.shell{padding-left:calc(20px + var(--safe-left));padding-right:calc(54px + var(--safe-right))}}
#reader .glyph.handle-start::after,#reader .glyph.handle-end::after{left:50%;right:auto;width:24px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px var(--card);transform:translateX(-50%);opacity:1}
#reader .glyph.handle-start.is-dragging::after,#reader .glyph.handle-end.is-dragging::after{opacity:0}
#selectionHandle{position:fixed;left:0;top:0;width:22px;height:22px;border:3px solid var(--card);border-radius:50%;background:var(--green);box-shadow:0 2px 8px #102e2755;opacity:0;pointer-events:none;z-index:8;transform:translate3d(var(--handle-x,-40px),var(--handle-y,-40px),0) translate(-50%,-50%) scale(.78);transition:opacity .16s ease,transform .14s cubic-bezier(.2,.75,.25,1);will-change:transform}
#selectionHandle::before{content:'';position:absolute;width:2px;height:13px;left:50%;bottom:100%;background:var(--green);transform:translateX(-50%)}
#selectionHandle.visible{opacity:1;transform:translate3d(var(--handle-x,-40px),var(--handle-y,-40px),0) translate(-50%,-50%) scale(1)}

.copyright{text-align:center;color:var(--muted);font-size:11px;letter-spacing:.04em;margin:24px 0 0;padding:0 0 calc(150px + env(safe-area-inset-bottom));}
.seoLead{max-width:760px;line-height:1.9}.seoContent{max-width:860px;margin:28px auto 20px;padding:0 8px}.infoLinks{justify-content:flex-start;border-bottom:1px solid var(--line);padding:0 0 16px;margin:0 0 28px}.infoLinks a{color:var(--green);font-size:13px;font-weight:600;text-decoration:none;padding:8px 10px;border-radius:10px}.infoLinks a:hover{background:var(--soft);text-decoration:underline}.seoSection{scroll-margin-top:18px;margin:34px 0 42px;line-height:1.8}.seoSection h2{font-size:23px;line-height:1.4;margin:0 0 12px;letter-spacing:.1px}.seoSection p,.seoSection li{font-size:15px;line-height:1.85;color:var(--muted)}.seoSection li{margin:8px 0}.seoSection details{border-top:1px solid var(--line);padding:14px 2px}.seoSection details:last-child{border-bottom:1px solid var(--line)}.seoSection summary{font-size:15px;line-height:1.6;color:var(--ink);font-weight:650}.seoSection details p{margin:8px 0 0}
