@font-face{font-family:Outfit;src:url('../assets/outfit-semibold.ttf') format('truetype');font-weight:600;font-display:swap}
:root{--primary:#0c1c2e;--ink:#25282b;--muted:#62676c;--surface:#f5f7f9;--line:#e3e8ed;--selected:#eaf0f5}
*{box-sizing:border-box}body{margin:0;background:#f3f5f7;color:var(--ink);font:14px/1.5 'Helvetica Neue',Arial,sans-serif}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button{color:inherit}button:disabled{cursor:default}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #7194b6;outline-offset:3px}[hidden]{display:none!important}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.symbols{position:absolute;width:0;height:0;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.desk-head,main{max-width:1380px;margin:auto;padding:0 36px}.desk-head{height:88px;display:flex;align-items:center;gap:24px;border-bottom:1px solid #dfe4e9}.desk-brand{font:600 26px Outfit,sans-serif;letter-spacing:-1px;color:var(--primary)}.desk-head>span{font-size:12px;color:var(--muted)}.overview-link{margin-left:auto;font-size:12px;min-height:44px;display:flex;align-items:center;gap:10px}.desk-title{display:flex;align-items:baseline;justify-content:space-between;padding:28px 0 32px;gap:20px}.desk-title h1{font-size:28px;font-weight:500;letter-spacing:-1px;margin:0}.desk-title p{font-size:12px;color:var(--muted);margin:0}.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px}.specimen{min-width:0}.specimen-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.specimen-title h2{font-size:15px;font-weight:500;display:flex;align-items:center;gap:12px;margin:0}.specimen-title h2>span{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.specimen-title>a{font-size:11px;color:var(--muted);padding:10px 0}.preview-controls{height:55px;display:flex;align-items:center;gap:4px}.preview-controls>span{font-size:11px;color:var(--muted)}.preview-controls button{font-size:12px;border:0;background:none;border-radius:8px;min-height:34px;padding:6px 12px;color:var(--muted)}.preview-controls button[aria-pressed=true]{background:#e0e6ec;color:var(--primary)}.phone{position:relative;aspect-ratio:390/844;border-radius:34px;overflow:hidden;background:white;box-shadow:0 0 0 1px #d4dce3,0 10px 32px #0c1c2e06;isolation:isolate}.device{position:absolute;left:0;top:0;width:390px;height:844px;transform:scale(var(--scale,1));transform-origin:top left;overflow:hidden;background:#fff;color:var(--ink);font-size:16px;--paper:#fff;--r-ink:#25282b;--r-muted:#62676c;--r-line:#e3e8ed;--r-surface:#f5f7f9;--r-accent:#0c1c2e;--r-action:#0c1c2e;--r-on-action:#fff;--read-size:18px}.annotation{font-size:12px;color:var(--muted);line-height:1.8;margin:18px 0 0}.state-controls{display:flex;align-items:center;gap:14px;margin-top:14px;font-size:11px}.state-controls>span{color:var(--muted);margin-right:auto}.state-controls button{border:0;background:none;padding:4px 0;min-height:30px}.design-notes{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;border-top:1px solid #dce2e8;margin-top:36px;padding:28px 0}.design-notes h2{font-size:13px;font-weight:500;margin:0 0 10px}.design-notes p{font-size:12px;line-height:1.9;color:var(--muted);margin:0}.desk-foot{font-size:11px;color:var(--muted);padding-bottom:30px;display:flex;gap:8px;flex-wrap:wrap}.desk-foot a{text-decoration:underline;text-underline-offset:3px}#preview-status{margin-left:auto}.mobile-pages{display:none}
/* App shell: 390 × 844 logical points, scaled as one surface. */
.status{position:absolute;inset:0 0 auto;height:51px;padding:17px 28px 0;display:flex;justify-content:space-between;align-items:flex-start;z-index:8;color:inherit;pointer-events:none;font-size:14px;line-height:20px}.status>b{font-weight:600;letter-spacing:.2px}.status-icons{display:flex;gap:6px;align-items:center;height:20px}.status-icons svg{width:16px;height:15px;stroke-width:1.7}.signal{height:11px;display:flex;align-items:end;gap:2px}.signal i{display:block;background:currentColor;width:3px;border-radius:1px}.signal i:nth-child(1){height:4px}.signal i:nth-child(2){height:6px}.signal i:nth-child(3){height:8px}.signal i:nth-child(4){height:11px}.battery{width:23px;height:11px;border:1px solid currentColor;border-radius:3px;position:relative;margin-left:1px}.battery:before{content:'';position:absolute;inset:1.5px;background:currentColor;border-radius:1px}.battery:after{content:'';position:absolute;top:2px;right:-3px;width:2px;height:5px;border-radius:1px;background:currentColor}.home-indicator{position:absolute;z-index:20;bottom:8px;left:131px;width:128px;height:5px;border-radius:4px;background:currentColor;pointer-events:none}.app-scroll{position:absolute;inset:51px 0 0;overflow:auto;overscroll-behavior:contain;scrollbar-width:none;padding:9px 24px 124px}.app-scroll::-webkit-scrollbar,.reader-scroll::-webkit-scrollbar,.horizontal::-webkit-scrollbar,.dialogue-scroll::-webkit-scrollbar{display:none}.app-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:26px;min-height:48px}.app-heading h1{font-size:30px;font-weight:500;letter-spacing:-.8px;line-height:1.1;margin:0}.app-heading .app-brand{font:600 30px Outfit,sans-serif;letter-spacing:-1.15px}.icon-btn{width:44px;height:44px;min-width:44px;display:grid;place-items:center;border:0;padding:0;background:none;color:inherit;border-radius:50%}.icon-btn.tinted{background:var(--surface)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 16px;min-height:44px}.section-head h2{font-size:20px;font-weight:500;letter-spacing:-.5px;margin:0}.text-btn{border:0;background:none;padding:0;min-height:44px;color:var(--primary);font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:5px}.text-btn svg{width:15px;height:15px}.app-section{margin-bottom:30px}.horizontal{display:flex;align-items:flex-start;scroll-padding-inline:24px;gap:16px;overflow:auto;margin:0 -24px;padding:0 24px;scrollbar-width:none;scroll-snap-type:x proximity}.book-card{flex:0 0 144px;width:144px;display:block;border:0;padding:0;text-align:left;background:none;color:inherit;scroll-snap-align:start}.cover{position:relative;display:block;width:100%;aspect-ratio:2/3;background:var(--surface);border-radius:6px;overflow:hidden;border:1px solid #0c1c2e10}.cover img{width:100%;height:100%;display:block;object-fit:cover}.cover:after{content:'';position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#10151bd6)}.cover-title{position:absolute;z-index:1;bottom:14px;left:11px;right:11px;font:20px/1.08 Georgia,serif;letter-spacing:-.4px;color:white;text-wrap:balance}.book-card>strong{font:17px/1.35 Georgia,serif;display:block;margin-top:10px;font-weight:400}.filters{display:flex;gap:22px;overflow:auto;scrollbar-width:none;white-space:nowrap;margin:-6px -24px 16px;padding:0 24px}.filters button{border:0;border-bottom:2px solid transparent;background:none;min-height:44px;padding:8px 0;color:var(--muted);font-size:15px}.filters button[aria-pressed=true]{border-bottom-color:var(--primary);color:var(--primary);font-weight:500}.tabbar{position:absolute;bottom:24px;left:19px;right:19px;height:64px;border:1px solid #e2e6eacc;background:#ffffffdf;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-radius:36px;padding:6px;display:flex;align-items:center;justify-content:space-between;z-index:10;box-shadow:0 3px 14px #0c1c2e07}.tabbar button{border:0;background:none;width:77px;height:50px;border-radius:27px;color:#444b52;display:grid;place-items:center}.tabbar button[aria-current=page]{background:#eceff2;color:var(--primary)}.tab-icon{display:block;width:28px;height:28px;background:currentColor;mask:var(--tab-art) center/contain no-repeat;-webkit-mask:var(--tab-art) center/contain no-repeat}.tab-icon.play{width:34px}.primary{width:100%;min-height:54px;border:0;border-radius:14px;background:var(--primary);color:white;font-size:16px;font-weight:500;display:flex;align-items:center;justify-content:center;gap:9px;padding:13px 18px}.primary svg{width:19px;height:19px}.primary:disabled{background:var(--line);color:var(--muted)}.primary:disabled.busy{background:var(--primary);color:white}.hero{border-radius:20px;background:var(--surface);padding:20px;margin-bottom:30px}.hero-main{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:18px;align-items:center;text-align:left;width:100%;border:0;padding:0;background:none}.hero h2{font:26px/1.15 Georgia,serif;font-weight:400;letter-spacing:-.65px;margin:0 0 14px;text-wrap:balance}.hero p{font-size:14px;line-height:1.65;margin:0;color:var(--muted)}.hero .cover-title{font-size:16px;bottom:10px;left:8px;right:8px}.hero-action{display:flex;justify-content:space-between;align-items:center;margin-top:18px;border-top:1px solid #e0e5ea;padding-top:7px}.hero-action .text-btn{font-size:15px;font-weight:500}.hero-action>span{font-size:13px;color:var(--muted)}.book-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 18px}.book-grid .book-card{width:100%}.book-grid .cover-title{font-size:23px}.resume{border-radius:16px;background:var(--surface);padding:16px;display:flex;gap:14px;align-items:center;margin-bottom:26px}.resume .cover{width:55px;flex-shrink:0}.resume .cover-title{display:none}.resume h2{font:19px/1.3 Georgia,serif;font-weight:400;margin:0 0 7px}.resume .text-btn{min-height:32px;font-size:14px;justify-content:flex-start}.resume .resume-arrow{margin-left:auto}.detail-head,.reader-head{position:absolute;top:51px;left:12px;right:12px;height:54px;display:flex;align-items:center;justify-content:space-between;gap:4px;z-index:4}.detail-head>span{font-size:17px;font-weight:500}.detail-scroll{inset:109px 0 128px;padding-bottom:24px}.detail-book{display:grid;grid-template-columns:112px minmax(0,1fr);gap:20px;align-items:center;padding:8px 0 26px}.detail-book h1{font:28px/1.18 Georgia,serif;font-weight:400;letter-spacing:-.6px;margin:0 0 14px}.genre{font-size:14px;color:var(--muted)}.detail-scroll h2{font-size:18px;font-weight:500;letter-spacing:-.25px;margin:24px 0 12px}.detail-scroll p{font-size:16px;line-height:1.75;margin:0 0 14px}.role{padding:18px 20px;background:var(--surface);border-radius:16px}.role h2{margin:0 0 8px}.role p{margin:0;color:var(--muted)}.feature-line{display:flex;gap:12px;align-items:flex-start;margin:18px 0;color:var(--muted);font-size:15px;line-height:1.65}.feature-line svg{color:var(--primary);margin-top:2px;width:20px;height:20px}.detail-footer{position:absolute;bottom:26px;left:0;right:0;padding:14px 24px 16px;background:white;border-top:1px solid var(--line)}.saved{color:var(--primary);background:var(--selected)}
/* Reading uses its own appearance tokens; browse pages stay in the app theme. */
.device[data-reading=true]{background:var(--paper);color:var(--r-ink)}.device[data-theme=warm]{--paper:#f3ead7;--r-surface:#e9dfc9;--r-line:#d8cdb8;--r-ink:#3e382d;--r-muted:#746957;--r-accent:#443a2e}.device[data-theme=night]{--paper:#202124;--r-surface:#2c2e32;--r-line:#41444a;--r-ink:#e8e6e2;--r-muted:#a6a9ad;--r-accent:#9fbbdd;--r-action:#aac2dd;--r-on-action:#172331}.reader-head{right:16px;left:12px;color:var(--r-ink);background:var(--paper)}.reader-head .reader-book{font:15px/1.3 Georgia,serif;max-width:235px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-head:after{content:'';position:absolute;top:100%;left:-12px;right:-16px;height:18px;background:linear-gradient(var(--paper),transparent);pointer-events:none}.reader-scroll{position:absolute;inset:115px 0 30px;overflow:auto;overscroll-behavior:contain;scrollbar-width:none;padding:12px 28px 48px}.chapter-label{font:13px 'Helvetica Neue',sans-serif;color:var(--r-muted);margin:0 0 14px}.reader-scroll h1{font:29px/1.24 Georgia,serif;font-weight:400;letter-spacing:-.6px;margin:0 0 28px;text-wrap:balance}.prose{font:var(--read-size)/1.7 Georgia,serif;color:var(--r-ink)}.prose p{margin:0 0 18px}.reader-next{margin-top:28px}.reader-next .primary,.reader-scroll .primary,.interaction .primary{background:var(--r-action);color:var(--r-on-action)}.reader-scroll .primary:disabled{background:var(--r-line);color:var(--r-muted)}.reader-scroll .primary.busy:disabled{background:var(--r-action);color:var(--r-on-action)}.reader-scroll .text-btn{color:var(--r-accent)}.reader-rule{border:0;border-top:1px solid var(--r-line);margin:32px 0}.stop-heading{display:flex;align-items:center;gap:9px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--r-accent)}.stop-heading svg{width:18px;height:18px}.choice-prompt{font:23px/1.4 Georgia,serif;font-weight:400;margin:0 0 22px}.choice-option{display:flex;gap:13px;align-items:center;width:100%;min-height:86px;border:1px solid var(--r-line);border-radius:12px;padding:15px;text-align:left;margin:12px 0;background:transparent;color:var(--r-ink);font-size:16px;line-height:1.55}.choice-letter{flex-shrink:0;width:29px;height:29px;border:1px solid var(--r-line);border-radius:50%;display:grid;place-items:center;font-size:13px}.choice-option[aria-checked=true]{border-color:var(--r-accent);background:var(--r-surface)}.choice-option[aria-checked=true] .choice-letter{border-color:var(--r-accent);background:var(--r-accent);color:var(--paper)}.choice-confirm{margin-top:22px}.scene-card{background:var(--r-surface);border:1px solid var(--r-line);border-radius:18px;padding:20px;margin-top:26px}.scene-card .stop-heading{margin-bottom:12px}.scene-card h2{font:23px/1.4 Georgia,serif;font-weight:400;margin:0 0 20px;letter-spacing:-.3px}.scene-card .text-btn{width:100%;margin-top:5px;font-size:14px}.scene-card .primary{min-height:50px}.end-mark{font-size:11px;letter-spacing:1.8px;color:var(--r-muted);text-align:center;margin:32px 0 15px}.ending-heading{text-align:center}.ending-actions{border-top:1px solid var(--r-line);padding-top:22px;margin-top:28px}.ending-actions .text-btn{width:100%;margin-top:8px}.inline-status{font:14px/1.6 'Helvetica Neue',sans-serif;color:var(--r-muted);margin:10px 0 16px;display:flex;gap:10px;align-items:center}.spinner{display:inline-block;width:18px;height:18px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .85s linear infinite;flex-shrink:0}.inline-status[role=alert]{display:block}.inline-status .text-btn{min-height:34px}.controls-hidden .reader-head{visibility:hidden}.controls-hidden .reader-scroll{top:58px}.reader-hint{position:absolute;bottom:29px;left:0;right:0;text-align:center;font-size:11px;color:var(--r-muted);pointer-events:none}
/* Optional scene participation expands above the page, preserving the article. */
.overlay{position:absolute;inset:51px 0 24px;background:#0c1c2e30;z-index:12;display:flex;flex-direction:column;justify-content:flex-end}.interaction{background:var(--paper);color:var(--r-ink);height:100%;display:flex;flex-direction:column;position:relative}.interaction-head{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--r-line);gap:10px;flex-shrink:0}.interaction-title{flex:1}.interaction-title strong{font-size:16px;font-weight:500;display:block}.interaction-title span{font-size:12px;color:var(--r-muted)}.interaction .text-btn{color:var(--r-accent)}.interaction-head .text-btn{color:var(--r-accent);padding:0 6px;font-size:14px}.dialogue-scroll{overflow:auto;overscroll-behavior:contain;scrollbar-width:none;padding:24px 24px 20px;flex:1;min-height:0}.context-line{color:var(--r-muted);font:16px/1.65 Georgia,serif;margin:0 0 24px;padding-bottom:22px;border-bottom:1px solid var(--r-line)}.dialogue-scroll .prose{font-size:18px}.player-turn{background:var(--r-surface);border-radius:12px;padding:14px 16px;font-size:16px;line-height:1.65;margin:16px 0 22px;white-space:pre-wrap;overflow-wrap:anywhere}.dialogue-byline{font-size:12px;color:var(--r-muted);display:flex;align-items:center;gap:7px;margin:0 0 12px}.draft-panel{border-top:1px solid var(--r-line);padding:14px 20px 12px;background:var(--paper);flex-shrink:0}.suggestions-title{font-size:12px;color:var(--r-muted);margin:0 0 7px}.suggestions{display:flex;flex-direction:column;align-items:flex-start;gap:5px;margin-bottom:13px}.suggestions button{border:1px solid var(--r-line);border-radius:10px;background:none;color:var(--r-ink);font-size:14px;line-height:1.45;min-height:44px;text-align:left;padding:9px 12px}.composer{border:1px solid var(--r-line);border-radius:15px;display:flex;align-items:flex-end;padding:9px 9px 9px 13px;gap:8px}.composer:focus-within{border-color:var(--r-accent)}.composer textarea{resize:none;border:0;outline:0!important;background:none;color:var(--r-ink);width:100%;height:51px;max-height:110px;line-height:1.5;font-size:16px;padding:3px 0}.composer textarea::placeholder{color:var(--r-muted)}.send-btn{width:36px;min-width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:50%;color:var(--r-on-action);background:var(--r-action)}.send-btn svg{width:20px;height:20px}.send-btn:disabled{background:var(--r-line);color:var(--r-muted)}.send-btn.busy{background:var(--r-action);color:var(--r-on-action)}.composer-note{font-size:11px;color:var(--r-muted);display:flex;justify-content:space-between;gap:8px;padding:7px 2px 0}.draft-panel .inline-status{margin:0 0 10px}.sheet{background:var(--paper);color:var(--r-ink);border-radius:24px 24px 0 0;padding:10px 24px 24px;max-height:90%;overflow:auto}.sheet-handle{height:4px;width:34px;border-radius:4px;background:var(--r-line);margin:0 auto 8px}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:8px}.sheet-head h2{font-size:20px;font-weight:500;margin:0}.sheet h3{font-size:15px;font-weight:500;margin:24px 0 14px}.theme-options{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.theme-options button{border:1px solid var(--r-line);border-radius:12px;min-height:60px;font-size:14px}.theme-options button[aria-pressed=true]{outline:2px solid var(--r-accent);outline-offset:2px}.theme-options button[data-theme=paper]{background:#fff;color:#25282b}.theme-options button[data-theme=warm]{background:#f3ead7;color:#3e382d}.theme-options button[data-theme=night]{background:#202124;color:#e8e6e2}.font-control{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--r-line);border-radius:12px;padding:4px 8px}.font-control button{border:0;background:none;color:inherit;width:64px;min-height:44px;font-family:Georgia,serif}.font-control button:last-child{font-size:23px}.font-control output{font-size:14px;color:var(--r-muted)}.sheet p{font-size:15px;line-height:1.7;color:var(--r-muted)}.journal-row{border-top:1px solid var(--r-line);padding:16px 0}.journal-row>span{font-size:12px;color:var(--r-muted)}.journal-row p{margin:8px 0 0;color:var(--r-ink)}.sheet-link{width:100%;display:flex;align-items:center;justify-content:space-between;min-height:54px;border:0;border-top:1px solid var(--r-line);background:none;color:inherit;font-size:16px;padding:12px 0;text-align:left}.sheet .primary{background:var(--r-action);color:var(--r-on-action)}.search-field{width:100%;height:50px;border:0;background:var(--surface);border-radius:12px;padding:12px 16px;margin-bottom:24px;color:var(--ink)}.empty-note{color:var(--muted);line-height:1.8;margin:20px 0}.shelf-tabs{display:flex;border-bottom:1px solid var(--line);gap:24px;margin-bottom:24px}.shelf-tabs span{font-size:16px;padding:12px 0}.shelf-tabs span:last-child{border-bottom:2px solid var(--primary);font-weight:500}.shelf-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.shelf-grid .book-card{width:100%}.shelf-grid .book-card>strong{font-size:15px}.shelf-grid .cover-title{font-size:15px;left:7px;right:7px}.toast{position:absolute;bottom:105px;left:24px;right:24px;z-index:25;background:var(--primary);color:#fff;border-radius:12px;padding:12px 16px;font-size:14px;text-align:center;box-shadow:0 4px 20px #0002}.reader-only-toast{bottom:50px}
@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}@media(max-width:1100px) and (min-width:761px){.desk-head,main{padding-left:24px;padding-right:24px}.board{gap:20px}.preview-controls{gap:0}.preview-controls button{padding:6px 8px}.specimen-title>a{font-size:10px}.specimen-title h2{font-size:14px;gap:8px}.state-controls{gap:8px}}
body.focus .board{display:block;max-width:414px;margin:auto}body.focus .specimen{display:none}body.focus .specimen.is-focused{display:block}body.focus .design-notes{max-width:900px;margin:36px auto 0}body.focus .desk-title{max-width:900px;margin:auto}body.focus .mobile-pages{display:flex}body.focus .specimen-title>a{display:none}
@media(max-width:760px){.desk-head,main{padding-left:20px;padding-right:20px}.desk-head{height:70px;gap:16px}.desk-head>span{font-size:10px}.overview-link{font-size:11px}.desk-brand{font-size:23px}.desk-title{display:block;padding:24px 0 16px}.desk-title h1{font-size:26px;margin-bottom:6px}.desk-title p{font-size:11px}.board{display:block;max-width:414px;margin:auto}.specimen{display:none}.specimen.is-focused{display:block}.specimen-title>a{display:none}.mobile-pages{display:flex}.design-notes,body.focus .design-notes{grid-template-columns:1fr;gap:22px}.desk-foot{line-height:1.9}.phone{border-radius:30px}.state-controls{font-size:12px;gap:16px}.state-controls button{min-height:40px}}
.mobile-pages{gap:8px;justify-content:center;margin:0 auto 24px}.mobile-pages a{font-size:13px;padding:10px 18px;min-height:40px;border-radius:10px;color:var(--muted)}.mobile-pages a[aria-current=page]{background:#e0e6ec;color:var(--primary)}
