:root{--paper:oklch(98.5% 0.012 85);--paper-raised:oklch(99.5% 0.008 85);--ink:oklch(28% 0.02 60);--ink-soft:oklch(45% 0.02 60);--ink-faint:oklch(62% 0.018 60);--accent:oklch(55% 0.15 28);--accent-deep:oklch(45% 0.15 28);--line:oklch(90% 0.015 80);--surface-shadow:0 1px 2px oklch(40% 0.03 60/0.06),0 8px 24px oklch(40% 0.03 60/0.06);--text-base:clamp(1rem,0.95rem + 0.3vw,1.0625rem);--reader-size:20px;--reader-leading:1.85;--measure:38rem;--radius:14px;--ease:cubic-bezier(0.16,1,0.3,1)}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--paper:oklch(22% 0.012 70);--paper-raised:oklch(26% 0.012 70);--ink:oklch(90% 0.015 80);--ink-soft:oklch(75% 0.015 80);--ink-faint:oklch(60% 0.015 80);--accent:oklch(72% 0.13 40);--accent-deep:oklch(80% 0.13 45);--line:oklch(32% 0.012 70);--surface-shadow:0 1px 2px oklch(0% 0 0/0.3),0 8px 24px oklch(0% 0 0/0.35)}}:root[data-theme=dark]{color-scheme:dark;--paper:oklch(21% 0.012 70);--paper-raised:oklch(25% 0.012 70);--ink:oklch(91% 0.015 80);--ink-soft:oklch(76% 0.015 80);--ink-faint:oklch(60% 0.015 80);--accent:oklch(73% 0.13 40);--accent-deep:oklch(82% 0.13 45);--line:oklch(32% 0.012 70);--surface-shadow:0 1px 2px oklch(0% 0 0/0.3),0 8px 24px oklch(0% 0 0/0.35)}:root[data-theme=sepia]{--paper:oklch(93% 0.035 80);--paper-raised:oklch(95% 0.03 80);--ink:oklch(33% 0.04 55);--ink-soft:oklch(46% 0.04 55);--ink-faint:oklch(58% 0.035 60);--accent:oklch(50% 0.14 35);--accent-deep:oklch(42% 0.14 35);--line:oklch(85% 0.04 75);--surface-shadow:0 1px 2px oklch(45% 0.05 60/0.1),0 8px 24px oklch(45% 0.05 60/0.12)}*{box-sizing:border-box}body,html{margin:0;padding:0}:focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:6px}.book:focus-visible .book-frame{outline:2.5px solid var(--accent);outline-offset:3px}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui),ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:var(--text-base);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background .3s var(--ease),color .3s var(--ease)}a{color:inherit;text-decoration:none}.site-head{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;gap:.75rem;padding:.85rem clamp(1rem,4vw,2rem);background:color-mix(in oklch,var(--paper) 86%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.brand,.site-head{align-items:center}.brand{display:inline-flex;gap:.55rem;font-weight:700;letter-spacing:-.02em;font-size:1.05rem}.brand-mark{width:36px;height:36px;border-radius:9px;flex:none;box-shadow:0 1px 3px oklch(0 0 0/.16)}.brand-words{display:flex;flex-direction:column;line-height:1.12}.brand-name{font-weight:800}.brand-name i{color:var(--accent);font-style:normal}.brand small{display:block;font-weight:500;color:var(--ink-faint);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase}.wrap{max-width:64rem;margin:0 auto;padding:clamp(1.25rem,4vw,2.5rem)}.hero{margin:.5rem 0 2rem}.hero h1{font-size:clamp(1.9rem,1.2rem + 3vw,3rem);line-height:1.05;letter-spacing:-.03em;margin:0 0 .5rem}.hero p{color:var(--ink-soft);max-width:32rem;margin:0}.grid{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr))}.card{display:flex;flex-direction:column;gap:.5rem;padding:1.1rem 1.2rem;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--surface-shadow);transition:transform var(--ease) .25s,box-shadow var(--ease) .25s}.card:hover{transform:translateY(-3px);box-shadow:0 6px 14px oklch(40% .03 60/.1),0 18px 40px oklch(40% .03 60/.12)}.card .vi{font-size:1.3rem;font-weight:700;letter-spacing:-.02em;line-height:1.15}.card .cn{color:var(--ink-faint);font-size:.9rem}.card .author{color:var(--ink-soft);font-size:.85rem}.card .meta{margin-top:auto;display:flex;gap:.5rem;padding-top:.6rem}.card .meta,.pill{align-items:center}.pill{display:inline-flex;gap:.3rem;font-size:.72rem;font-weight:600;letter-spacing:.02em;padding:.2rem .6rem;border-radius:999px;background:color-mix(in oklch,var(--accent) 14%,transparent);color:var(--accent-deep)}.pill.muted{background:color-mix(in oklch,var(--ink-faint) 16%,transparent);color:var(--ink-soft)}.chapter-list{list-style:none;margin:1.5rem 0 0;padding:0;display:grid;grid-gap:2px;gap:2px}.chapter-list li a{display:flex;align-items:baseline;gap:.75rem;padding:.85rem 1rem;border-radius:10px;border:1px solid transparent;transition:background var(--ease) .18s,border-color var(--ease) .18s}.chapter-list li a:hover{background:var(--paper-raised);border-color:var(--line)}.chapter-list .num{color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;min-width:2.5rem}.chapter-list .t{flex:1 1}.chapter-list .t .ti{font-weight:600}.chapter-list .t .tc{color:var(--ink-faint);font-size:.82rem}.chapter-list .raw{color:var(--ink-faint);font-size:.72rem}.backlink{color:var(--ink-soft);font-size:.9rem;display:inline-flex;gap:.35rem;align-items:center;margin-bottom:.5rem}.backlink:hover{color:var(--accent)}.reader{max-width:var(--reader-measure,var(--measure));margin:0 auto;padding:clamp(1.25rem,4vw,2rem) clamp(1.1rem,4vw,1.5rem) 5rem}.read-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:25;background:var(--accent);transform-origin:left;transform:scaleX(0);transition:transform .1s linear}.read-meta{position:fixed;top:.55rem;right:clamp(1rem,4vw,2rem);z-index:21;font-size:.72rem;font-weight:600;color:var(--ink-faint);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:.02em}.download-btn.is-done{border-color:var(--accent);color:var(--accent-deep)}.download-btn[disabled]{opacity:.7;cursor:progress}.reader .crumb{color:var(--ink-faint);font-size:.82rem;letter-spacing:.03em;text-transform:uppercase}.reader h1{font-size:clamp(1.5rem,1.1rem + 2vw,2.1rem);letter-spacing:-.02em;line-height:1.15;margin:.4rem 0 .2rem}.reader .titleCn{color:var(--ink-faint);font-size:.95rem;margin-bottom:2rem}.reader .reader-body{font-family:var(--font-reading),Georgia,"Noto Serif",serif;font-size:var(--reader-size);line-height:var(--reader-leading);color:var(--ink);font-feature-settings:"kern","liga"}:root[data-font=sans] .reader .reader-body{font-family:var(--font-ui),system-ui,sans-serif}.reader .reader-body p{margin:0 0 1.15em;text-align:left}.reader.paged{height:calc(100dvh - 58px);display:flex;flex-direction:column;padding-top:clamp(.75rem,2vw,1.25rem);padding-bottom:3.4rem;box-sizing:border-box}.reader.paged .reader-headblock{flex:0 0 auto}.reader.paged .titleCn{margin-bottom:.75rem}.page-viewport{flex:1 1 auto;min-height:0;overflow:hidden;position:relative}.pages{column-fill:auto;column-gap:48px;will-change:transform;transition:transform .32s var(--ease)}.pages p:first-child{margin-top:0}.reader-nav{position:fixed;bottom:0;left:0;right:0;z-index:15;display:flex;justify-content:space-between;gap:.75rem;padding:.7rem clamp(1rem,4vw,2rem);background:color-mix(in oklch,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line)}.btn,.reader-nav{align-items:center}.btn{display:inline-flex;gap:.4rem;padding:.55rem 1.1rem;border-radius:10px;font-weight:600;font-size:.92rem;background:var(--paper-raised);border:1px solid var(--line);color:var(--ink);cursor:pointer;transition:transform var(--ease) .18s,border-color var(--ease) .18s}.btn:hover{transform:translateY(-1px)}.btn.primary,.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:white}.btn[aria-disabled=true]{opacity:.4;pointer-events:none}.reader-nav .btn{white-space:nowrap}.reader-nav .nav-icon{flex:0 0 auto;min-width:44px;justify-content:center;font-size:1.05rem}.nav-short{display:none}@media (max-width:560px){.site-head{padding:.45rem .9rem}.brand{font-size:.95rem;line-height:1.1}.brand small{display:none}.reader-nav{padding:.4rem .6rem;gap:.4rem}.reader-nav .btn{padding:.45rem .6rem;font-size:.82rem;border-radius:9px;flex:0 1 auto;min-width:0}.reader-nav .nav-icon{min-width:40px;padding:.45rem .5rem}.reader{padding-bottom:4rem}.genre-bar{top:40px}.nav-full{display:none}.nav-short{display:inline}}.empty{color:var(--ink-soft);padding:3rem 0;text-align:center}.site-foot{margin-top:clamp(3rem,6vw,5rem);border-top:1px solid var(--line);background:var(--paper-raised)}.site-foot:before{content:"";display:block;height:2px;background:linear-gradient(90deg,var(--accent),transparent 55%)}.foot-grid{max-width:72rem;margin:0 auto;padding:clamp(2rem,5vw,3.25rem) clamp(1.25rem,4vw,2.5rem) clamp(1.5rem,3vw,2rem);display:grid;grid-gap:clamp(1.75rem,4vw,2.5rem);gap:clamp(1.75rem,4vw,2.5rem);grid-template-columns:1.6fr repeat(3,minmax(7rem,.8fr)) 1.5fr;align-items:start}.foot-col{min-width:0}.foot-logo{display:inline-flex;align-items:center;gap:.5rem;font-weight:800;font-size:1.2rem;letter-spacing:-.02em;color:var(--ink)}.foot-logo img{width:30px;height:30px;border-radius:7px;flex:none}.foot-logo i{color:var(--accent);font-style:normal}.foot-tagline{margin:.7rem 0 0;font-size:.88rem;line-height:1.55;color:var(--ink-soft);max-width:24rem}.foot-mail{display:inline-block;margin-top:.9rem;font-size:.84rem;color:var(--ink-faint);transition:color var(--ease) .16s}.foot-mail:hover{color:var(--accent)}.foot-h{margin:0 0 .85rem;font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.foot-col ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:.55rem;gap:.55rem}.foot-col ul a{font-size:.9rem;color:var(--ink-soft);transition:color var(--ease) .16s}.foot-col ul a:hover{color:var(--accent)}.foot-app-col .app-dl-label{display:none}.foot-base{max-width:72rem;margin:0 auto;padding:1.1rem clamp(1.25rem,4vw,2.5rem) 1.75rem;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;align-items:center;justify-content:space-between}.foot-legal{margin:0;font-size:.76rem;line-height:1.55;color:var(--ink-faint);max-width:52rem}.foot-legal a{color:var(--ink-soft);text-decoration:underline;text-underline-offset:2px}.foot-legal a:hover{color:var(--accent)}.foot-top{flex-shrink:0;font-size:.8rem;font-weight:600;color:var(--ink-soft);display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;border:1px solid var(--line);border-radius:999px;transition:border-color var(--ease) .16s,color var(--ease) .16s,transform var(--ease) .16s}.foot-top:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}body:has(main.reader) .site-foot{display:none}@media (max-width:860px){.foot-grid{grid-template-columns:1fr 1fr}.foot-app-col,.foot-brand-col{grid-column:1/-1}}@media (max-width:480px){.foot-grid{grid-template-columns:1fr;gap:1.5rem}.foot-base{flex-direction:column;align-items:flex-start}}.app-dl-label{display:block;font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.6rem}.app-dl-row{display:flex;gap:.6rem;flex-wrap:wrap}.app-dl-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.6rem 1rem;border-radius:11px;font-weight:600;font-size:.9rem;cursor:pointer;background:var(--paper);border:1px solid var(--line);color:var(--ink);transition:transform var(--ease) .18s,border-color var(--ease) .18s}.app-dl-btn:hover{transform:translateY(-1px);border-color:var(--accent)}.ios-guide{margin-top:.9rem;max-width:26rem;padding:1rem 1.2rem;border-radius:12px;background:var(--paper);border:1px solid var(--line);box-shadow:var(--surface-shadow);font-size:.88rem;color:var(--ink-soft);animation:sheet-up .2s var(--ease)}.ios-guide strong{color:var(--ink);display:block;margin-bottom:.3rem}.ios-guide ol{margin:.5rem 0 0;padding-left:1.2rem;line-height:1.9}.ios-guide .ios-note{margin:.6rem 0 0;font-size:.8rem;color:var(--ink-faint)}.note{margin-top:2rem;padding:1rem 1.2rem;border-left:3px solid var(--accent);background:var(--paper-raised);border-radius:0 10px 10px 0;color:var(--ink-soft);font-size:.9rem}.store-shelves{padding-top:.5rem}.genre-bar{position:-webkit-sticky;position:sticky;top:56px;z-index:18;display:flex;gap:.55rem;overflow-x:auto;scrollbar-width:none;padding:.85rem 0;margin:.25rem 0 .5rem;background:color-mix(in oklch,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.genre-bar::-webkit-scrollbar{display:none}.genre-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .9rem;border-radius:999px;cursor:pointer;white-space:nowrap;background:var(--paper-raised);border:1px solid var(--line);color:var(--ink-soft);font-size:.9rem;font-weight:600;transition:transform var(--ease) .18s,border-color var(--ease) .18s,background var(--ease) .18s,color var(--ease) .18s}.genre-chip:hover{transform:translateY(-1px);border-color:var(--accent)}.genre-chip .gi{font-size:1rem}.genre-chip .gc{font-size:.72rem;font-weight:700;padding:.05rem .4rem;border-radius:999px;background:color-mix(in oklch,var(--ink-faint) 18%,transparent);color:var(--ink-soft)}.genre-chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.genre-chip[aria-pressed=true] .gc{background:rgba(255,255,255,.28);color:#fff}.genre-grid{display:grid;grid-gap:clamp(.8rem,2.5vw,1.4rem);gap:clamp(.8rem,2.5vw,1.4rem);grid-template-columns:repeat(auto-fill,minmax(116px,1fr))}@media (min-width:640px){.genre-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}.shelf-title span[aria-hidden]{margin-right:.1rem}.spotlight{display:grid;grid-template-columns:auto 1fr;grid-gap:clamp(1.25rem,4vw,2.75rem);gap:clamp(1.25rem,4vw,2.75rem);align-items:center;max-width:64rem;margin:0 auto;padding:clamp(1.5rem,4vw,3rem) clamp(1.25rem,4vw,2.5rem) 1rem}.spotlight-art{position:relative}.spotlight-art .book-fallback,.spotlight-art img{width:clamp(150px,22vw,230px);height:auto;border-radius:8px;box-shadow:0 2px 4px oklch(30% .03 60/.18),0 18px 44px oklch(30% .03 60/.28);transform:rotate(-2deg);transition:transform var(--ease) .4s}.spotlight-art img:hover{transform:rotate(0deg) scale(1.02)}.eyebrow{color:var(--accent);font-weight:700;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.spotlight-body h1{font-size:clamp(1.9rem,1.2rem + 3.2vw,3.4rem);line-height:1.02;letter-spacing:-.03em;margin:.5rem 0 .3rem}.spotlight-sub{color:var(--ink-faint);margin:0 0 .9rem;font-size:.95rem}.spotlight-intro{color:var(--ink-soft);max-width:34rem;margin:0 0 1.3rem;line-height:1.65;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.spotlight-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem}.shelf{max-width:64rem;margin:0 auto;padding:1.5rem 0 .5rem}.shelf-title{font-size:1.3rem;letter-spacing:-.02em;margin:0 0 1rem;display:flex;align-items:baseline;gap:.6rem}.shelf-count{font-size:.8rem;color:var(--ink-faint);font-weight:600}.shelf-row{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(116px,28vw,150px);grid-gap:clamp(.8rem,2.5vw,1.4rem);gap:clamp(.8rem,2.5vw,1.4rem);overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.75rem;margin:0 calc(-1 * clamp(1.25rem, 4vw, 2.5rem));padding-inline:clamp(1.25rem,4vw,2.5rem);scrollbar-width:thin}.shelf-row::-webkit-scrollbar{height:6px}.shelf-row::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}.book{display:flex;flex-direction:column;gap:.55rem;scroll-snap-align:start}.book-art{position:relative;display:block}.book-frame{display:block;aspect-ratio:3/4;border-radius:8px;overflow:hidden;background:var(--paper-raised);border:1px solid var(--line);box-shadow:0 1px 2px oklch(30% .03 60/.12),0 8px 20px oklch(30% .03 60/.12);transition:transform var(--ease) .28s,box-shadow var(--ease) .28s}.book:hover .book-frame{transform:translateY(-5px);box-shadow:0 4px 8px oklch(30% .03 60/.16),0 16px 36px oklch(30% .03 60/.22)}.book-frame img{width:100%;height:100%;object-fit:cover;display:block}.book-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:.6rem;background-size:cover}.book-fallback-title{color:white;font-weight:700;font-size:1.05rem;text-align:center;line-height:1.3;text-shadow:0 1px 4px rgba(0,0,0,.3);writing-mode:vertical-rl}.book-lg .book-fallback-title,.spotlight-art .book-fallback-title{font-size:1.5rem}.book-badge{position:absolute;top:.4rem;right:.4rem;font-size:.66rem;font-weight:700;padding:.15rem .45rem;border-radius:999px;background:var(--accent);color:white;box-shadow:0 2px 6px oklch(30% .03 60/.25)}.book-caption{display:flex;flex-direction:column;gap:.1rem}.book-title{font-weight:700;font-size:.92rem;line-height:1.2;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.book-sub{display:flex;align-items:center;justify-content:space-between;gap:.4rem}.book-author{color:var(--ink-faint);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-likes{flex:0 0 auto;color:oklch(58% .18 18);font-size:.74rem;font-weight:700}.like-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .7rem;border-radius:999px;cursor:pointer;background:var(--paper-raised);border:1px solid var(--line);color:var(--ink-soft);font-size:.82rem;font-weight:700;line-height:1;transition:transform var(--ease) .18s,border-color var(--ease) .18s,background var(--ease) .18s}.like-btn:hover{transform:translateY(-1px);border-color:oklch(60% .18 18)}.like-btn.liked{background:color-mix(in oklch,oklch(62% .2 18) 14%,var(--paper-raised));border-color:color-mix(in oklch,oklch(62% .2 18) 45%,var(--line));color:oklch(52% .2 18)}.like-heart{font-size:1rem;display:inline-block}.like-btn.pop .like-heart{animation:heart-pop .36s var(--ease)}.like-count{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:.8em;text-align:left}@keyframes heart-pop{0%{transform:scale(1)}35%{transform:scale(1.5)}60%{transform:scale(.9)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.like-btn.pop .like-heart{animation:none}}.continue .resume-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1.1rem 1.3rem;border-radius:var(--radius);background:linear-gradient(135deg,color-mix(in oklch,var(--accent) 12%,var(--paper-raised)),var(--paper-raised));border:1px solid var(--line);box-shadow:var(--surface-shadow);transition:transform var(--ease) .22s}.continue .resume-card:hover{transform:translateY(-2px)}.resume-meta{display:flex;flex-direction:column;gap:.15rem}.resume-novel{font-weight:700;font-size:1.05rem}.resume-chapter{color:var(--ink-soft);font-size:.85rem}.novel-head{display:grid;grid-template-columns:auto 1fr;grid-gap:clamp(1.1rem,4vw,2.25rem);gap:clamp(1.1rem,4vw,2.25rem);margin-top:.75rem;align-items:start}.novel-cover .book-fallback,.novel-cover img{width:clamp(120px,30vw,200px);height:auto;border-radius:10px;display:block;box-shadow:0 2px 4px oklch(30% .03 60/.18),0 16px 38px oklch(30% .03 60/.24)}.novel-info h1{font-size:clamp(1.6rem,1.1rem + 2.4vw,2.6rem);line-height:1.05;letter-spacing:-.03em;margin:0 0 .3rem}.novel-sub{color:var(--ink-faint);margin:0 0 .9rem}.novel-pills{gap:.5rem}.novel-actions,.novel-pills{display:flex;flex-wrap:wrap;margin-bottom:1.1rem}.novel-actions{gap:.6rem;align-items:center}.novel-intro{color:var(--ink-soft);line-height:1.7;max-width:42rem;white-space:pre-line}@media (max-width:640px){.spotlight{grid-template-columns:1fr;text-align:center;justify-items:center}.spotlight-intro{margin-inline:auto}.spotlight-actions{justify-content:center}.novel-head{grid-template-columns:1fr;justify-items:center;text-align:center}.novel-actions,.novel-pills{justify-content:center}.novel-intro{text-align:left}}@media (prefers-reduced-motion:reduce){*{transition:none!important}.spotlight-art img{transform:none}}.reader-fab{position:fixed;right:clamp(1rem,4vw,2rem);bottom:4.5rem;z-index:30;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--paper-raised);border:1px solid var(--line);color:var(--ink);box-shadow:var(--surface-shadow);cursor:pointer;font-size:1.15rem;transition:transform var(--ease) .2s}.reader-fab:hover{transform:scale(1.06);border-color:var(--accent)}.settings-backdrop{position:fixed;inset:0;z-index:40;background:oklch(20% .02 60/.35);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.settings-panel{position:fixed;left:50%;bottom:0;transform:translateX(-50%);z-index:41;width:min(30rem,100%);background:var(--paper-raised);border:1px solid var(--line);border-bottom:none;border-radius:18px 18px 0 0;box-shadow:0 -8px 40px oklch(30% .03 60/.2);padding:1.1rem 1.25rem 1.6rem;animation:sheet-up .28s var(--ease)}@keyframes sheet-up{0%{transform:translate(-50%,100%)}to{transform:translate(-50%)}}.settings-grip{width:38px;height:4px;border-radius:999px;background:var(--line);margin:0 auto 1rem}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 0}.settings-row+.settings-row{border-top:1px solid var(--line)}.settings-label{font-weight:600;font-size:.92rem;color:var(--ink-soft)}.stepper{display:inline-flex;align-items:center;gap:.5rem}.stepper button{width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:1.1rem;font-weight:700;cursor:pointer}.stepper button:hover{border-color:var(--accent)}.stepper .val{min-width:2.5rem;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600}.segmented{display:inline-flex;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px}.segmented button{border:none;background:transparent;color:var(--ink-soft);cursor:pointer;padding:.4rem .7rem;border-radius:8px;font-size:.85rem;font-weight:600;transition:background var(--ease) .15s,color var(--ease) .15s}.segmented button[aria-pressed=true]{background:var(--accent);color:#fff}.tap-zone{position:fixed;top:56px;bottom:56px;width:14%;max-width:90px;z-index:10;cursor:pointer;background:transparent;border:none}.tap-zone.left{left:0}.tap-zone.right{right:0}.tap-hint{position:fixed;bottom:4.5rem;left:50%;transform:translateX(-50%);z-index:30;background:oklch(30% .02 60/.8);color:#fff;font-size:.78rem;font-weight:600;padding:.4rem .9rem;border-radius:999px;pointer-events:none;opacity:0;transition:opacity .25s var(--ease)}.tap-hint.show{opacity:1}.legal{padding-bottom:4rem}.legal h1{margin:.4rem 0 .25rem;font-size:clamp(1.6rem,1rem + 2.5vw,2.2rem)}.legal-updated{color:var(--ink-faint);font-size:.85rem;margin:0 0 1.5rem}.legal-toc{display:flex;flex-wrap:wrap;gap:.5rem 1rem;padding:.9rem 1.1rem;margin-bottom:2rem;border-radius:12px;background:color-mix(in oklch,var(--accent) 8%,transparent)}.legal-toc a{color:var(--accent-deep);font-size:.9rem;font-weight:600}.legal-toc a:hover{text-decoration:underline}.legal section{margin-bottom:2.25rem;scroll-margin-top:5rem}.legal h2{font-size:1.2rem;margin:0 0 .75rem}.legal ol,.legal p,.legal ul{color:var(--ink-soft);line-height:1.7;margin:0 0 .9rem}.legal ol,.legal ul{padding-left:1.3rem}.legal li{margin-bottom:.45rem}.legal strong{color:var(--ink)}.legal a[href^=mailto]{color:var(--accent-deep);font-weight:600}.legal-note{border-left:3px solid var(--accent);padding:.6rem 0 .6rem .9rem;font-size:.9rem;color:var(--ink-faint)}.copyright-notice{margin:1.5rem 0 0;padding:.8rem 1rem;border-radius:10px;background:color-mix(in oklch,var(--accent) 10%,transparent);color:var(--ink-soft);font-size:.9rem;line-height:1.55}.copyright-notice a{color:var(--accent-deep);font-weight:600}.chapter-list a.locked{opacity:.62}.chapter-list a.locked .num{color:var(--ink-faint)}.lock-panel{display:flex;justify-content:center;padding-top:clamp(2rem,8vw,5rem)}.lock-card{max-width:34rem;text-align:center;padding:clamp(1.5rem,5vw,2.5rem);border-radius:16px;background:var(--surface,color-mix(in oklch,var(--accent) 5%,transparent));border:1px solid color-mix(in oklch,var(--ink-faint) 22%,transparent)}.lock-icon{font-size:2.5rem;display:block;margin-bottom:.5rem}.lock-card h1{font-size:clamp(1.3rem,1rem + 1.5vw,1.7rem);margin:0 0 .75rem}.lock-card p{color:var(--ink-soft);line-height:1.7;margin:0 0 1.25rem}.lock-card strong{color:var(--ink)}.lock-actions{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center;margin-bottom:1rem}.lock-note{font-size:.85rem;color:var(--ink-faint);margin:0}.lock-note a{color:var(--accent-deep)}.doc{max-width:44rem}.doc h1{font-size:clamp(1.8rem,1.2rem + 2.5vw,2.6rem);letter-spacing:-.03em;margin:.4rem 0 1rem}.doc h2{font-size:1.2rem;letter-spacing:-.01em;margin:2rem 0 .6rem}.doc p{color:var(--ink-soft);line-height:1.75;margin:0 0 1rem}.doc strong{color:var(--ink)}.doc a{color:var(--accent-deep);text-decoration:underline;text-underline-offset:2px}.doc ul{color:var(--ink-soft);line-height:1.8;padding-left:1.2rem;margin:0 0 1rem}.doc li{margin-bottom:.35rem}.doc-contact{font-size:1.15rem}.doc-foot{margin-top:2.5rem;padding-top:1.25rem;border-top:1px solid var(--line);font-size:.9rem}.admin-login{display:flex;flex-direction:column;gap:.7rem;margin-top:1rem}.admin-login input{padding:.7rem .9rem;border-radius:10px;border:1px solid var(--line);background:var(--paper-raised);color:var(--ink);font-size:1rem}.admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.admin-head h1{font-size:clamp(1.5rem,1.1rem + 2vw,2.2rem);margin:0}.admin-stats{color:var(--ink-soft);margin:.3rem 0 0}.admin-list{display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0 0}.admin-row{display:flex;align-items:center;gap:.85rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:12px;background:var(--paper-raised)}.admin-row.pending{border-color:color-mix(in oklch,var(--accent) 45%,var(--line));background:color-mix(in oklch,var(--accent) 6%,var(--paper-raised))}.admin-cover{flex:0 0 auto;width:48px;height:64px;border-radius:6px;overflow:hidden;background:var(--paper);display:grid;place-items:center;border:1px solid var(--line)}.admin-cover img{width:100%;height:100%;object-fit:cover}.admin-cover-x{color:var(--ink-faint)}.admin-meta{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}.admin-title{font-weight:700;letter-spacing:-.01em}.admin-sub,.admin-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-sub{color:var(--ink-faint);font-size:.8rem}.admin-select{padding:.4rem .5rem;border-radius:8px;border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:.82rem}.admin-preview{color:var(--accent-deep);font-weight:600}.admin-preview,.admin-pub{flex:0 0 auto;font-size:.85rem}.admin-pub{padding:.5rem .85rem;border-radius:9px;font-weight:700;cursor:pointer;background:var(--paper);border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap}.admin-pub.on{background:var(--accent);border-color:var(--accent);color:#fff}.admin-pub:disabled{opacity:.5;cursor:progress}@media (max-width:640px){.admin-row{flex-wrap:wrap}.admin-meta{flex-basis:100%;order:-1}}