@import"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700&family=Inter:wght@400;500;600&display=swap";.text-tool{display:flex;align-items:center;gap:7px;border:1px solid #dedbd4;background:#fff;border-radius:6px;padding:8px 10px;font-size:11px}.text-tool:hover{background:#f4f2ed}.text-tool:disabled{opacity:.4;cursor:not-allowed}.studio-modal{width:min(1080px,92vw);height:min(760px,88vh);display:grid;grid-template-columns:180px 1fr;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 22px 70px #17151150}.studio-modal>aside{background:#272f2c;color:#fff;padding:22px 11px}.studio-modal>aside>div{padding:2px 10px 22px}.studio-modal>aside b,.studio-modal>aside small{display:block}.studio-modal>aside b{font-family:"Noto Serif SC";font-size:16px}.studio-modal>aside small{color:#9eada7;font-size:10px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.studio-modal>aside button{width:100%;display:flex;justify-content:space-between;border:0;border-radius:5px;background:transparent;color:#b9c2be;padding:10px;text-align:left;font-size:12px;margin:2px 0}.studio-modal>aside button:hover,.studio-modal>aside button.active{background:#3a4541;color:#fff}.studio-modal>aside button span{font-size:9px;background:#52605b;padding:2px 5px;border-radius:8px}.studio-content{min-width:0;overflow:auto;padding:24px 28px;background:#fbfaf8}.studio-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #e5e1da;padding-bottom:16px;margin-bottom:20px}.studio-head h2{font-family:"Noto Serif SC";font-size:20px;margin:0}.studio-head p{font-size:11px;color:#8e887f;margin:5px 0 0}.studio-form{max-width:760px}.studio-form label{display:block;font-size:11px;font-weight:600;color:#69645d;margin:12px 0}.studio-form input,.studio-form select,.studio-form textarea{display:block;width:100%;margin-top:6px;border:1px solid #d7d2ca;background:#fff;border-radius:5px;padding:9px;font-size:12px;outline:none}.studio-form textarea{height:80px;resize:vertical;line-height:1.6}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.studio-split{display:grid;grid-template-columns:290px 1fr;gap:22px;min-height:560px}.resource-list{border-right:1px solid #e5e1da;padding-right:16px}.resource-list>button{position:relative;width:100%;display:block;border:1px solid transparent;background:transparent;text-align:left;border-radius:5px;padding:10px;margin-bottom:5px}.resource-list>button:hover{border-color:#dad6ce;background:#fff}.resource-list b,.resource-list small{display:block}.resource-list b{font-size:12px}.resource-list small{font-size:10px;color:#88827a;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resource-list i{font-style:normal;font-size:9px;color:#39715e;background:#dfebe5;padding:2px 5px;border-radius:3px;margin-right:6px}.resource-list>button>span{position:absolute;right:7px;top:8px;color:#9b655b;display:none}.resource-list>button:hover>span{display:block}.resource-list>p,.history-list>p{font-size:12px;color:#99938b;text-align:center;padding:40px 10px}.studio-form.compact textarea{height:64px}.history-list article{background:#fff;border:1px solid #e0dcd5;border-radius:6px;margin-bottom:10px;padding:13px}.history-list article header{display:flex;justify-content:space-between;font-size:11px;color:#7d776f}.history-list article p{font-size:12px}.history-list pre{white-space:pre-wrap;max-height:180px;overflow:auto;background:#f5f3ef;padding:10px;border-radius:4px;font-family:"Noto Serif SC";font-size:11px;line-height:1.7;margin-bottom:0}.model-picker{display:grid;grid-template-columns:1fr 36px;gap:7px;margin-top:7px}.model-picker select{margin-top:0!important;height:36px}.model-picker .icon-btn{width:36px;height:36px}.provider-list button{position:relative}.provider-list button>svg{vertical-align:middle;margin-left:5px;color:#34705a}.model-actions{display:grid;grid-template-columns:auto 1fr;gap:8px;margin-top:17px}.model-actions .full{margin-top:0}.danger-button{display:flex;align-items:center;justify-content:center;width:40px;border:1px solid #d8b8b2;border-radius:6px;background:#fff;color:#9a4439}.danger-button:hover{background:#f9ebe8}.danger-button:disabled{opacity:.45;cursor:not-allowed}.bootstrap-options{border-top:1px solid #ebe7e0;border-bottom:1px solid #ebe7e0;padding:4px 0 10px;margin-top:14px}.bootstrap-options label{margin:11px 0!important}.bootstrap-options label:not(.check) select{display:block;width:100%;margin-top:6px;border:1px solid #d5d1c9;border-radius:5px;background:#fff;padding:9px;font-size:12px}.history-list article header{align-items:center;gap:8px}.history-list article header>b{margin-right:auto}.history-list article header>button{display:grid;place-items:center;border:0;background:transparent;color:#9b6259;padding:4px}.history-state{padding:3px 6px;border-radius:4px;background:#e9e7e2;color:#6f6a63}.status-completed .history-state{background:#e1eee7;color:#34705a}.status-running .history-state{background:#e8edf2;color:#49677c}.status-failed .history-state{background:#f5e5e2;color:#995349}.history-running{display:flex;align-items:center;gap:8px;background:#f1f4f5;color:#60727d;border-radius:4px;padding:12px;font-size:11px}.history-error{color:#8d453d!important;background:#f9ece9!important;max-height:110px!important}.studio-actions{display:flex;align-items:center;gap:8px;margin-top:16px}.studio-actions .primary{margin:0}.bootstrap-retry{display:flex;align-items:center;gap:7px;border:1px solid #b8ccc4;background:#edf4f0;color:#315e4f;border-radius:6px;padding:9px 13px;font-size:12px;font-weight:600}.bootstrap-retry:hover{background:#e2eee8}.bootstrap-retry:disabled{opacity:.45;cursor:not-allowed}.novel-row{position:relative;border-radius:6px}.novel-row .novel{padding-right:34px}.novel-row:hover,.novel-row.active,.novel-row.active .novel{background:#fff}.novel-delete{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:none;place-items:center;width:27px;height:27px;border:0;border-radius:4px;background:transparent;color:#986158}.novel-row:hover .novel-delete{display:grid}.novel-delete:hover{background:#f7e7e4;color:#8c3f35}.chapter-title-display{min-height:59px;cursor:text;margin-top:0;margin-bottom:0;letter-spacing:0}.chapter-title-display:hover{color:#315b4d}.quick-library{grid-template-columns:repeat(3,minmax(0,1fr));max-height:170px;overflow:auto;padding-right:3px}.quick-library button{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quick-library button.selected{border-color:#73998b;background:#e4eee9;color:#284e41}.quick-library::-webkit-scrollbar{width:5px}.quick-library::-webkit-scrollbar-thumb{background:#c8c3bb;border-radius:3px}.serial-modal{width:650px}.serial-form{padding-bottom:18px;border-bottom:1px solid #e5e1da}.serial-form label{display:block;font-size:11px;font-weight:600;margin:10px 0}.serial-form input,.serial-form select,.serial-form textarea{display:block;width:100%;margin-top:6px;border:1px solid #d5d1c9;border-radius:5px;background:#fff;padding:9px;font-size:12px}.serial-form textarea{height:72px;resize:vertical;line-height:1.6}.job-list{margin-top:16px;max-height:270px;overflow:auto}.job-list article{border:1px solid #dfdbd4;border-radius:6px;padding:12px;margin-bottom:8px}.job-head{display:flex;justify-content:space-between;align-items:center}.job-head b,.job-head small{display:block}.job-head b{font-size:12px}.job-head small{font-size:10px;color:#8c867e;margin-top:4px}.job-controls{display:flex;gap:4px}.job-controls button{display:grid;place-items:center;width:29px;height:29px;border:1px solid #dad5cd;border-radius:5px;background:#fff}.job-progress{height:5px;background:#ebe8e2;border-radius:3px;margin-top:11px;overflow:hidden}.job-progress span{display:block;height:100%;background:#3e7863;transition:width .3s}.job-error{font-size:10px;color:#984c42;background:#f8eae7;padding:7px;border-radius:4px}.refresh-work{margin-top:9px;border:0;background:transparent;color:#346b58;font-size:11px;font-weight:600}.no-jobs{text-align:center;color:#969087;font-size:11px;padding:22px}.serial-modal .modal-head{margin-bottom:12px}:root{font-family:Inter,Microsoft YaHei,sans-serif;color:#23211e;background:#f6f5f2;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:1080px}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}.shell{display:grid;grid-template:60px calc(100vh - 60px) /248px minmax(520px,1fr) 310px;height:100vh;background:#f6f5f2}header{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid #dedbd4;background:#fff;z-index:2}.brand,.head-actions,.pane-title span,.primary,.ai-title{display:flex;align-items:center;gap:9px}.brand strong{font-family:"Noto Serif SC";font-size:19px}.brandmark{display:grid;place-items:center;width:34px;height:34px;background:#213a32;color:#fff;border-radius:6px}.tag{font-size:12px;color:#77716a;border-left:1px solid #ddd8d0;padding-left:10px}.head-actions{gap:8px}.notice{font-size:12px;color:#507467;margin-right:7px}.icon-btn{display:grid;place-items:center;width:36px;height:36px;border:1px solid #dedbd4;background:#fff;border-radius:6px}.icon-btn:hover{background:#f2f0eb}.icon-btn.small{width:27px;height:27px;border:0;background:transparent}.primary{justify-content:center;border:0;border-radius:6px;background:#213a32;color:#fff;font-weight:600;padding:9px 15px}.primary:disabled,.generate:disabled{opacity:.45;cursor:not-allowed}.library-pane,.ai-pane{background:#eeece7;overflow:auto}.library-pane{border-right:1px solid #dcd8d0}.pane-title{height:48px;padding:0 14px;display:flex;align-items:center;justify-content:space-between;color:#625d56;font-size:12px;font-weight:600;text-transform:uppercase}.novels{padding:0 9px 14px}.novel{width:100%;display:flex;align-items:center;gap:10px;text-align:left;border:0;background:transparent;padding:8px;border-radius:6px}.novel:hover,.novel.active{background:#fff}.novel>span:last-child{min-width:0}.novel b,.novel small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.novel b{font-size:13px;margin-bottom:4px}.novel small{font-size:11px;color:#88827a}.cover{display:grid;place-items:center;width:34px;height:43px;flex:0 0 auto;border-radius:3px;background:#9d6b4d;color:#fff;font-family:"Noto Serif SC";font-weight:700}.chapters{border-top:1px solid #dcd8d0;padding:0 9px}.chapters>.pane-title{padding:0 5px}.chapters>button{width:100%;border:0;background:transparent;border-radius:5px;text-align:left;padding:9px 10px;font-size:12px;color:#615c55}.chapters>button span{color:#a09a91;margin-right:9px}.chapters>button:hover,.chapters>button.active{background:#dedbd4;color:#202d28}.empty{text-align:center;color:#8b857c;padding:34px 10px}.empty svg{opacity:.45}.empty p{font-size:13px}.empty button{border:0;background:transparent;color:#315d4e;font-size:12px}.editor{display:flex;flex-direction:column;min-width:0;background:#fff}.editor-meta{display:flex;gap:8px;padding:28px max(48px,8vw) 10px;font-size:11px;color:#938d84}.chapter-title{margin:0 max(48px,8vw);border:0;border-bottom:1px solid #eeeae4;background:transparent;font-family:"Noto Serif SC";font-size:25px;font-weight:700;padding:8px 0 18px;outline:none;letter-spacing:0}.editor>textarea{flex:1;resize:none;border:0;outline:none;padding:26px max(48px,8vw);font-family:"Noto Serif SC";font-size:16px;line-height:2.05;letter-spacing:0;background:#fff}.editor footer{display:flex;justify-content:space-between;padding:12px 22px;border-top:1px solid #eeeae4;color:#99938b;font-size:11px}.blank{margin:auto;text-align:center;color:#89837a}.blank h2{font-family:"Noto Serif SC";color:#35312d}.blank p{font-size:13px;margin-bottom:22px}.blank svg{opacity:.4}.ai-pane{border-left:1px solid #dcd8d0;padding:20px 18px}.ai-title{padding-bottom:18px;border-bottom:1px solid #d8d4cc;margin-bottom:20px}.ai-title b,.ai-title small{display:block}.ai-title b{font-size:13px}.ai-title small{font-size:10px;color:#8e887f;margin-top:3px}.spark{display:grid;place-items:center;width:33px;height:33px;border-radius:6px;background:#d9e4dc;color:#315b4d}.ai-pane label{display:block;margin:15px 0 7px;font-size:11px;font-weight:600;color:#6a655d}.select-wrap{position:relative}.select-wrap select,.modal input,.modal select,.modal textarea{width:100%;border:1px solid #d5d1c9;border-radius:5px;background:#fff;padding:10px;outline:none}.select-wrap select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:30px;font-size:12px}.select-wrap svg{position:absolute;right:10px;top:11px;pointer-events:none}.prompt{width:100%;height:125px;resize:none;border:1px solid #d5d1c9;background:#fff;border-radius:5px;padding:11px;font-size:12px;line-height:1.7;outline:none}.temperature{display:flex;justify-content:space-between;margin-top:16px;font-size:11px;color:#6a655d}.ai-pane input[type=range]{width:100%;accent-color:#315b4d}.generate{width:100%;display:flex;justify-content:center;align-items:center;gap:8px;margin-top:18px;padding:11px;border:0;border-radius:6px;background:#213a32;color:#fff;font-weight:600}.quick{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:20px}.quick label{grid-column:1/-1}.quick button{border:1px solid #d5d1c9;border-radius:5px;background:#f8f7f4;padding:8px;font-size:11px}.quick button:hover{background:#fff}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;background:#1f1d1a6b;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{width:420px;max-height:88vh;overflow:auto;background:#fff;border-radius:8px;padding:22px;box-shadow:0 20px 60px #1c191540}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}.modal h2{font-family:"Noto Serif SC";font-size:19px;margin:3px 0}.modal-head p{font-size:11px;color:#8b857d;margin:4px 0}.modal label{display:block;font-size:11px;font-weight:600;margin:13px 0}.modal label input,.modal label select,.modal label textarea{display:block;margin-top:7px;font-size:12px;font-weight:400}.modal textarea{height:80px;resize:none}.full{width:100%;margin-top:17px}.check{display:flex!important;align-items:center;gap:8px}.check input{width:auto!important;margin:0!important}.provider-list{display:flex;gap:6px;overflow:auto;padding-bottom:5px}.provider-list button{border:1px solid #ddd8d0;background:#f7f6f3;border-radius:5px;white-space:nowrap;padding:8px;font-size:11px}.provider-list small{display:block;color:#928b82;margin:4px 0 0 15px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#aaa;margin-right:6px}.dot.on{background:#3f8b69}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1180px){.shell{grid-template-columns:210px minmax(500px,1fr) 280px}.editor-meta,.editor>textarea{padding-left:45px;padding-right:45px}.chapter-title{margin-left:45px;margin-right:45px}}.auth-page{min-height:100vh;display:grid;grid-template-columns:minmax(430px,1.1fr) minmax(430px,.9fr);background:#fff}.auth-brand{position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:58px;background:#1f3931;color:#fff;overflow:hidden}.auth-brand:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(145deg,transparent 0 55%,rgba(255,255,255,.035) 55% 72%,transparent 72%)}.brand-lockup,.auth-brand blockquote{position:relative;z-index:1}.brandmark.large{width:48px;height:48px;margin-bottom:18px;background:#f0eee8;color:#1f3931}.brand-lockup h1{font-family:"Noto Serif SC";font-size:42px;margin:0;letter-spacing:0}.brand-lockup p{color:#b9c7c1;margin-top:9px}.auth-brand blockquote{max-width:420px;font-family:"Noto Serif SC";font-size:18px;line-height:1.9;color:#dbe3df;margin:0}.auth-panel{display:grid;place-items:center;padding:48px}.auth-form{width:100%;max-width:390px}.auth-form h2{font-family:"Noto Serif SC";font-size:27px;margin:0 0 8px}.auth-form>div>p{font-size:13px;color:#8a847c;margin:0 0 30px}.auth-form label{display:block;font-size:12px;font-weight:600;margin:17px 0}.auth-form input{display:block;width:100%;margin-top:8px;padding:12px;border:1px solid #d8d4cc;border-radius:5px;outline:none}.auth-form input:focus{border-color:#496b60;box-shadow:0 0 0 3px #dce7e240}.auth-submit{height:43px}.auth-error{padding:9px 11px;background:#f9e8e5;color:#9a3f34;border-radius:5px;font-size:12px}.auth-switch{text-align:center;font-size:12px;color:#858078}.auth-switch button{border:0;background:transparent;color:#315d4e;font-weight:600}.user-chip{display:flex;align-items:center;gap:7px;margin:0 3px 0 7px}.user-chip>span{display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:#e2e8e4;color:#315b4d}.user-chip b,.user-chip small{display:block}.user-chip b{font-size:11px}.user-chip small{font-size:9px;color:#938d85;margin-top:2px}.chapter-row{display:flex;align-items:center;border-radius:5px}.chapter-row>button:first-child{flex:1;min-width:0;border:0;background:transparent;text-align:left;padding:9px 10px;font-size:12px;color:#615c55}.chapter-row>button:first-child span{color:#a09a91;margin-right:9px}.chapter-row:hover,.chapter-row.active{background:#dedbd4}.chapter-delete{display:none;border:0;background:transparent;color:#8e655c;padding:7px}.chapter-row:hover .chapter-delete{display:block}.admin-modal{width:720px;padding-bottom:26px}.admin-summary{display:flex;align-items:center;gap:9px;background:#eef3f0;color:#39584e;padding:12px;border-radius:5px;font-size:12px}.admin-summary b{margin-left:auto}.admin-modal table{width:100%;border-collapse:collapse;margin-top:16px}.admin-modal th{text-align:left;padding:9px;border-bottom:1px solid #dedbd4;color:#847e76;font-size:10px;text-transform:uppercase}.admin-modal td{padding:11px 9px;border-bottom:1px solid #eeeae4;font-size:12px}.admin-modal td:first-child{width:55%}.admin-modal td b,.admin-modal td small{display:block}.admin-modal td small{color:#918b83;margin-top:4px}.admin-modal select{padding:6px;border:1px solid #d5d1c9;border-radius:4px;background:#fff;font-size:11px}.switch input{display:none}.switch span{display:block;width:34px;height:19px;border-radius:10px;background:#bbb;position:relative;transition:.2s}.switch span:after{content:"";position:absolute;width:15px;height:15px;left:2px;top:2px;border-radius:50%;background:#fff;transition:.2s}.switch input:checked+span{background:#3d725f}.switch input:checked+span:after{transform:translate(15px)}.switch input:disabled+span{opacity:.45}.modal-head>button{border:1px solid #dedbd4}
