@import url('/reading.css');
:root{color-scheme:dark;--bg:#1b2225;--sidebar:#172024;--panel:#222c30;--panel-soft:#263237;--line:#344044;--text:#e9e5db;--muted:#94a2a4;--dim:#6e8085;--gold:#d6b58c;--gold-soft:#c5a57f;--green:#a8c1ac;--danger:#dda4a0;--reader-size:17px;font-family:"Microsoft YaHei UI","PingFang SC","Noto Sans SC",sans-serif;font-size:14px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.48}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}a{color:var(--gold);text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:4px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--gold)!important}svg{flex:none;vertical-align:middle}h1,h2,h3,h4,p{margin:0}button{border:0;color:inherit;background:none}img{display:block;max-width:100%}input,textarea,select{color:var(--text);background:#1c262a;border:1px solid var(--line);border-radius:9px;padding:11px 13px;width:100%}textarea{resize:vertical;line-height:1.7}input::placeholder,textarea::placeholder{color:#7c8d91}select{appearance:auto}label{display:block;color:#c4cfce;font-size:13px;margin-bottom:8px}small{color:var(--muted)}
.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100dvh}.sidebar{position:fixed;inset:0 auto 0 0;width:220px;background:var(--sidebar);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:32px 21px 24px;z-index:20}.brand{display:flex;align-items:center;gap:11px;margin:0 0 43px 5px}.brand img{width:37px;height:37px}.brand strong{font-size:20px;letter-spacing:3px;font-family:"Songti SC",SimSun,serif;font-weight:600}.brand small{display:block;font-size:9px;letter-spacing:2px;margin-top:5px;color:#a8a396}.nav{display:flex;flex-direction:column;gap:7px}.nav-button{display:flex;align-items:center;gap:14px;height:48px;padding:0 14px;border-radius:9px;color:#a0b1b4;text-align:left}.nav-button svg{color:#8ca0a5}.nav-button.active{background:#303a39;color:#e8ceb0}.nav-button.active svg{color:var(--gold)}.nav-button:hover{background:#273236}.nav-label{font-size:10px;letter-spacing:2px;color:var(--dim);margin:27px 14px 13px}.recent-side{display:flex;flex-direction:column;gap:4px;overflow:hidden;max-height:230px}.recent-link{display:flex;gap:9px;align-items:center;color:#98a9ac;padding:11px 13px;white-space:nowrap;overflow:hidden}.recent-link span:last-child{overflow:hidden;text-overflow:ellipsis}.recent-link:before{content:'';width:5px;height:5px;background:#859b8c;border-radius:50%;flex:none}.sidebar-bottom{margin-top:auto;padding-top:25px}.sidebar-note{border-top:1px solid var(--line);padding:19px 8px 0;margin-top:17px;font-size:11px;line-height:1.9;color:#758a8f}.sidebar-note a{color:#98a9ac}.workspace{grid-column:2;min-width:0}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 38px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#1b2225ed;backdrop-filter:blur(12px);z-index:12}.breadcrumb{display:flex;align-items:center;gap:10px;color:#b4c0bf;font-size:13px}.breadcrumb svg{color:var(--dim)}.top-actions{display:flex;align-items:center;gap:17px}.connection{display:flex;gap:8px;align-items:center;font-size:11px;color:var(--muted)}.dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px #a8c1ac10}.dot.off{background:#c39b77;box-shadow:none}.mobile-brand{display:none}.main{padding:32px 38px 60px;max-width:1600px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px;gap:20px}.eyebrow{font-size:10px;letter-spacing:2.8px;color:var(--gold);text-transform:uppercase}.page-heading h1{font-size:30px;letter-spacing:2px;font-family:"Songti SC",SimSun,serif;font-weight:500;margin:12px 0 10px}.page-heading p{font-size:13px;color:var(--muted);line-height:1.8}.actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.button{border:1px solid #455052;border-radius:8px;padding:10px 15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:12px;min-height:40px;transition:background .16s,color .16s}.button:hover{background:#303c3e;border-color:#68716a}.button.primary{background:var(--gold);color:#252c2c;border-color:var(--gold);font-weight:600}.button.primary:hover{background:#e2c39e}.button.quiet{border-color:transparent;color:var(--muted)}.button.quiet:hover{color:var(--text);background:var(--panel)}.button.danger{color:var(--danger)}.icon-button{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;color:var(--muted);flex:none}.icon-button:hover{color:var(--text);background:#303d40}.button.small{min-height:32px;padding:6px 10px;font-size:11px}.hero{position:relative;isolation:isolate;overflow:hidden;border-radius:13px;min-height:310px;margin-bottom:31px;border:1px solid #3e4947;background:#263030;display:flex;align-items:center}.hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:70% 26%;z-index:-2}.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#172225f5 0%,#172225db 24%,#17222555 59%,#17222510 83%);z-index:-1}.hero-copy{padding:35px 40px;width:57%}.hero-kicker{display:flex;align-items:center;gap:10px;color:#d6b996;font-size:10px;letter-spacing:2px}.hero-kicker span{border:1px solid #d6b99660;padding:4px 7px;border-radius:4px;letter-spacing:1px}.hero h2{font-family:"Songti SC",SimSun,serif;font-size:40px;font-weight:500;letter-spacing:5px;margin:18px 0 12px;color:#f2e5d0}.hero p{line-height:1.9;font-size:13px;max-width:340px;color:#d0d5cc}.hero .button{margin-top:24px}.hero-side{position:absolute;right:22px;bottom:18px;font-size:10px;color:#eee6d299;letter-spacing:2px}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:12px}.section-title h2{font-size:16px;letter-spacing:1px;font-weight:500}.section-title h2 small{font-size:11px;font-weight:400;margin-left:10px;letter-spacing:0}.section-title>small{font-size:11px;color:var(--dim)}.filters{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.filter-tabs{display:flex;gap:7px;flex-wrap:wrap}.filter{padding:8px 12px;border-radius:7px;font-size:12px;color:#96a9ad}.filter.active{background:#36403d;color:#e1c8a5}.filter:hover{background:#29373b}.search{display:flex;align-items:center;gap:10px;min-width:220px;border-bottom:1px solid #415056;padding:5px 0;color:var(--dim)}.search input{border:0;background:none;padding:5px 0;border-radius:0;font-size:12px}.search input:focus{outline:none}.world-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px}.world-card{overflow:hidden;border:1px solid var(--line);border-radius:11px;background:#222c30;text-align:left;padding:0;display:block;width:100%;transition:transform .2s,border-color .2s}.world-card:hover{transform:translateY(-3px);border-color:#817962}.world-image{position:relative;aspect-ratio:1.65;overflow:hidden;background:#2c383b}.world-image>img{width:100%;height:100%;object-fit:cover;object-position:70% 22%;transition:transform .4s}.world-card:hover img{transform:scale(1.035)}.world-image:after{content:'';position:absolute;inset:55% 0 0;background:linear-gradient(transparent,#1a252490)}.genre{position:absolute;left:13px;top:13px;font-size:10px;background:#172024c9;color:#e6e1d5;padding:5px 8px;border:1px solid #b8bfa22b;border-radius:4px;backdrop-filter:blur(6px)}.world-number{position:absolute;right:13px;bottom:12px;color:#eee7d3a6;font:italic 13px Georgia,serif;z-index:1}.world-copy{padding:18px 18px 17px}.world-copy-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.world-copy h3{font-size:19px;font-family:"Songti SC",SimSun,serif;letter-spacing:2px;font-weight:500}.world-copy svg{color:var(--dim)}.world-copy p{color:#a3b2b4;font-size:11px;line-height:1.7;height:38px}.tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}.tag{font-size:10px;color:#a6b6b6;padding:3px 6px;border:1px solid #38484b;border-radius:4px;line-height:1.4}.tag.soft{background:#2e3b3f;border:0}.library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.character-card{background:var(--panel);border:1px solid var(--line);border-radius:11px;overflow:hidden;position:relative}.character-cover{width:100%;height:205px;object-fit:cover;object-position:75% 21%}.character-body{padding:20px}.character-body h3{font:500 23px "Songti SC",SimSun,serif;letter-spacing:2px;margin-bottom:7px}.character-body .title{font-size:12px;color:var(--gold);margin-bottom:12px}.character-body .desc{color:var(--muted);font-size:12px;line-height:1.9;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:67px}.character-body .actions{margin-top:18px}.book-card{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:24px;position:relative}.book-card:before{content:'';position:absolute;left:0;top:26px;bottom:26px;width:3px;background:var(--book-accent,var(--gold));border-radius:4px}.book-mark{display:inline-flex;align-items:center;justify-content:center;width:43px;height:50px;background:#303b3b;border:1px solid #535e54;border-radius:3px 8px 8px 3px;color:var(--gold);margin-bottom:19px}.book-card h3{font:500 20px "Songti SC",SimSun,serif;letter-spacing:1px;margin:0 0 12px}.book-card p{line-height:1.9;color:var(--muted);font-size:12px;min-height:70px}.book-stats{font-size:11px;color:#bbcbbe;margin:17px 0;display:flex;gap:14px}.story-list{display:grid;gap:14px}.story-row{display:flex;gap:20px;align-items:center;border:1px solid var(--line);background:var(--panel);border-radius:11px;padding:17px 20px}.story-thumb{width:104px;height:77px;object-fit:cover;object-position:75% 20%;border-radius:6px;flex:none}.story-info{flex:1;min-width:0}.story-info h3{font-size:15px;letter-spacing:.5px;font-weight:500;margin-bottom:10px}.story-info p{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:9px}.story-info small{font-size:10px;color:var(--dim)}.empty{min-height:270px;border:1px dashed #465459;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px;text-align:center;color:var(--muted);gap:15px}.empty svg{color:var(--gold);width:32px;height:32px}.empty h3{font-size:17px;font-weight:400;color:var(--text)}.empty p{font-size:12px;line-height:1.9;max-width:370px}.page-footer{margin-top:37px;font-size:11px;color:#71868b;display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:21px}.page-footer a{color:#9fb0b2}.bottom-nav{display:none}.modal-overlay{position:fixed;inset:0;z-index:100;background:#11191bd4;backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:25px}.modal{background:#222d31;border:1px solid #4c595a;border-radius:14px;max-height:90dvh;width:760px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 25px 100px #10191c80;animation:rise .18s ease-out}.modal.wide{width:1000px}.modal.narrow{width:550px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:21px 26px;border-bottom:1px solid var(--line);gap:16px}.modal-head h2{font-size:18px;letter-spacing:1px;font-weight:500}.modal-body{padding:25px 27px;overflow-y:auto;min-height:0}.modal-footer{padding:17px 26px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end;background:#202b2f;flex-wrap:wrap}.field{margin-bottom:19px}.field small{display:block;line-height:1.8;margin-top:7px;font-size:11px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:17px}.dialog-cover{height:205px;margin:-25px -27px 24px;position:relative;overflow:hidden}.dialog-cover img{height:100%;width:100%;object-fit:cover;object-position:72% 20%}.dialog-cover:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent,#222d31)}.dialog-cover .caption{position:absolute;bottom:17px;left:27px;z-index:1;font:500 28px "Songti SC",SimSun,serif;letter-spacing:3px}.intro{font-size:13px;line-height:1.95;color:#b6c4c5;margin-bottom:24px}.role-choices{display:flex;gap:10px;flex-wrap:wrap}.role-choice{border:1px solid var(--line);padding:10px 13px;border-radius:8px;display:flex;align-items:center;gap:11px;min-width:145px}.role-choice:has(input:checked){border-color:#b89d76;background:#343b35}.role-choice input{width:14px;accent-color:var(--gold);margin:0}.role-choice label{margin:0;cursor:pointer}.role-choice small{display:block;margin-top:4px;font-size:10px}.portrait{width:37px;height:37px;border-radius:50%;background-color:#485759;background-size:420% auto;background-position:76% 0;flex:none;border:1px solid #9ba79745}.hint{padding:13px 15px;border-radius:8px;background:#2b383b;border:1px solid #405354;color:#abbcbd;font-size:12px;line-height:1.9}.hint strong{color:var(--gold);font-weight:400}.divider{height:1px;background:var(--line);margin:23px 0}.details summary{cursor:pointer;color:var(--gold);font-size:12px;padding:5px 0 14px}.details{margin:18px 0 0}.details[open] summary{margin-bottom:8px}.form-error{color:var(--danger);line-height:1.8;font-size:12px;min-height:20px}.status-box{background:#1c292c;border:1px solid var(--line);border-radius:8px;padding:12px 15px;font-size:12px;line-height:1.8;margin-top:17px}.mono{font-family:Consolas,monospace;font-size:12px;line-height:1.8}.book-editor{display:grid;grid-template-columns:225px minmax(0,1fr);gap:24px}.entry-list{display:flex;flex-direction:column;gap:6px;max-height:520px;overflow-y:auto;padding-right:6px}.entry-choice{text-align:left;padding:11px 12px;border:1px solid transparent;border-radius:7px;display:flex;align-items:center;justify-content:space-between;font-size:12px;gap:9px}.entry-choice span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entry-choice.active{background:#35433f;border-color:#647369;color:var(--gold)}.entry-choice:hover{background:#2c3b3f}.entry-choice.disabled{opacity:.5}.entry-dot{width:5px;height:5px;background:var(--gold);border-radius:50%;flex:none}.inline-check{display:flex;gap:10px;align-items:center;font-size:12px;margin:10px 0;color:var(--muted)}.inline-check input{width:15px;accent-color:var(--gold)}.toasts{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);z-index:150;background:#34443f;border:1px solid #667a66;border-radius:9px;color:#d9e1d6;padding:12px 20px;font-size:12px;max-width:85vw;box-shadow:0 12px 40px #131d2450}.toasts.error{background:#453330;border-color:#86605a;color:#eac3b9}.initial-loading{min-height:100dvh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px}.initial-loading img{width:56px}.initial-loading p{font:26px "Songti SC",SimSun,serif;letter-spacing:5px}.initial-loading span{font-size:12px;color:var(--muted)}.no-scroll{overflow:hidden}.offline-banner{padding:9px 20px;text-align:center;background:#514332;color:#dfcaa8;font-size:12px}.section-spacer{margin-top:33px}.hidden{display:none!important}@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1800px){.main{padding:38px 55px 60px}.world-grid{gap:25px}.hero{min-height:360px}.hero h2{font-size:46px}.hero-copy{padding:40px 48px}.world-copy p{font-size:12px}}
@media(max-width:1250px){.shell{grid-template-columns:185px minmax(0,1fr)}.sidebar{width:185px;padding:27px 15px}.brand{gap:9px}.brand strong{font-size:18px;letter-spacing:1px}.brand small{letter-spacing:1px;font-size:8px}.topbar{padding:0 26px}.main{padding:27px 26px 50px}.hero-copy{width:64%;padding:28px 30px}.world-grid,.library-grid{gap:16px}.character-cover{height:165px}.book-card{padding:21px}.world-copy{padding:15px}.world-copy h3{font-size:17px}}
@media(max-width:1000px){.world-grid,.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero{min-height:285px}.hero-copy{width:69%}.hero h2{font-size:34px}.page-heading h1{font-size:27px}.search{min-width:160px;max-width:200px}.top-actions{gap:9px}.book-card p{min-height:45px}}
@media(max-width:720px){:root{--reader-size:16px}.shell{display:block}.sidebar{display:none}.workspace{display:block}.topbar{height:60px;padding:0 17px}.breadcrumb{display:none}.mobile-brand{display:flex;align-items:center;gap:8px;font:500 18px "Songti SC",SimSun,serif;letter-spacing:2px}.mobile-brand img{width:27px;height:27px}.top-actions{gap:7px}.connection{font-size:10px;max-width:135px;white-space:nowrap;overflow:hidden}.top-actions>.button{min-height:34px;padding:7px 10px}.top-actions>.button .desktop-only{display:none}.main{padding:23px 17px 96px}.page-heading{margin-bottom:23px;gap:13px}.page-heading h1{font-size:27px;letter-spacing:1px;margin:9px 0}.page-heading p{font-size:11px;line-height:1.9}.eyebrow{font-size:9px;letter-spacing:2px}.page-heading .actions{gap:5px;margin-top:4px}.page-heading .button{padding:8px 10px;font-size:11px;min-height:34px}.page-heading .button svg{width:16px;height:16px}.hero{min-height:278px;margin-bottom:26px;border-radius:10px}.hero:after{background:linear-gradient(90deg,#172225ef,#172225bf 36%,#17222525 100%)}.hero>img{object-position:71% 24%}.hero-copy{width:82%;padding:26px 22px}.hero h2{font-size:34px;letter-spacing:3px;margin:17px 0 13px}.hero-kicker{font-size:9px;letter-spacing:1px;gap:8px}.hero p{font-size:12px;max-width:228px;text-shadow:0 1px 6px #1b2327}.hero .button{margin-top:20px;font-size:11px;padding:8px 13px;min-height:36px}.hero-side{font-size:8px;right:12px;bottom:12px}.filters{display:block;margin-bottom:18px}.filter-tabs{gap:4px;flex-wrap:nowrap;overflow:auto;margin-bottom:14px}.filter{padding:7px 10px;white-space:nowrap;font-size:11px}.search{max-width:none;width:100%;padding:6px 0}.world-grid{gap:13px}.world-image{aspect-ratio:1.28}.world-copy{padding:13px 12px}.world-copy h3{font-size:17px;letter-spacing:1px}.world-copy p{font-size:10px;height:34px;line-height:1.7}.world-copy-top{margin-bottom:7px}.world-copy-top svg{width:15px}.world-copy .tags{gap:4px;margin-top:9px}.world-copy .tag:nth-child(n+3){display:none}.tag{font-size:9px;padding:3px 4px}.genre{left:8px;top:8px;font-size:9px;padding:4px 6px}.world-number{font-size:10px;right:9px;bottom:9px}.section-title h2{font-size:14px}.section-title>small{display:none}.section-title h2 small{font-size:10px;margin-left:6px}.bottom-nav{position:fixed;inset:auto 0 0;z-index:30;display:flex;height:calc(66px + env(safe-area-inset-bottom));padding:7px 8px calc(7px + env(safe-area-inset-bottom));background:#1a2428f5;backdrop-filter:blur(14px);border-top:1px solid #3a484c}.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:10px;color:#8fa3a9;border-radius:8px}.bottom-nav button.active{color:var(--gold);background:#323d3760}.bottom-nav button svg{width:20px;height:20px}.page-footer{margin-top:28px;padding-top:17px;line-height:1.9;font-size:10px;display:block}.page-footer span{display:block}.library-grid{gap:13px}.character-cover{height:158px;object-position:74% 18%}.character-body{padding:15px 12px}.character-body h3{font-size:22px}.character-body .title{font-size:10px;line-height:1.7;min-height:32px}.character-body .desc{font-size:10px;min-height:56px}.character-body .actions{gap:5px;margin-top:13px}.character-body .button{font-size:10px;padding:6px 8px;min-height:30px}.character-body .button svg{width:13px}.book-card{padding:19px 14px}.book-mark{width:34px;height:40px;margin-bottom:16px}.book-card h3{font-size:17px;line-height:1.6}.book-card p{font-size:10px;line-height:1.9;min-height:75px}.book-stats{gap:7px;font-size:10px;flex-wrap:wrap}.book-card .button{padding:7px 9px;font-size:10px}.story-row{padding:14px 12px;gap:12px;flex-wrap:wrap}.story-thumb{width:77px;height:70px}.story-info{min-width:170px}.story-info h3{font-size:13px}.story-info p{font-size:10px}.story-row>.actions{width:100%;justify-content:flex-end;border-top:1px solid var(--line);padding-top:10px}.modal-overlay{padding:12px}.modal{max-height:94dvh;width:100%;border-radius:12px}.modal-head{padding:17px 18px}.modal-head h2{font-size:16px}.modal-body{padding:20px 18px}.modal-footer{padding:14px 18px;gap:8px}.dialog-cover{margin:-20px -18px 21px;height:175px}.dialog-cover .caption{left:18px;font-size:25px}.intro{font-size:12px}.field-row{gap:12px}.field{margin-bottom:16px}.field label{font-size:12px}.field input,.field textarea,.field select{font-size:16px;padding:10px 11px}.field small{font-size:10px}.role-choice{min-width:140px;padding:9px 10px}.book-editor{grid-template-columns:1fr;gap:18px}.entry-list{max-height:130px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid var(--line);padding-bottom:14px}.entry-choice{font-size:11px;padding:8px 9px}.toasts{bottom:86px;font-size:11px}.hide-mobile{display:none!important}}
@media(max-width:370px){.connection{display:none}.hero-copy{width:92%}.world-copy h3{font-size:15px}.world-grid,.library-grid{gap:10px}.field-row{grid-template-columns:1fr}.character-body .actions{display:block}.character-body .button{margin:3px 0}.story-info{min-width:140px}}
.brand small{white-space:nowrap;font-size:8px;letter-spacing:1.2px}
.main.chat-mode{max-width:none;margin:0;padding:0}
.icon-button.mobile-back,.icon-button.dossier-open{display:none}
@media(max-width:1000px){.icon-button.dossier-open{display:inline-flex}}
@media(max-width:720px){.icon-button.mobile-back{display:inline-flex}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
