:root{--paper: #f4efe6;--paper-2: #ece5d8;--paper-3: #e3dccc;--ink: #2b2622;--ink-soft: #5c5347;--ink-faint: #8a8072;--rule: #d6cdba;--accent: #9c4a2f;--accent-soft: #c98a6b;--hl: #e8c97a;--hl-strong: #dcb24e;--serif: "Noto Serif SC", "Songti SC", "STSong", Georgia, serif;--sans: "Inter", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}button{font-family:var(--sans);cursor:pointer}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar{display:flex;align-items:center;gap:20px;padding:12px 22px;background:var(--paper-2);border-bottom:1px solid var(--rule)}.brand{font-family:var(--serif);font-size:21px;letter-spacing:.04em;color:var(--ink);font-weight:600}.brand .mark{color:var(--accent)}.brand .sub{font-family:var(--sans);font-size:11px;color:var(--ink-faint);letter-spacing:.12em;margin-left:8px;text-transform:uppercase}.topbar .spacer{flex:1}.medium-switch{display:inline-flex;border:1px solid var(--rule);border-radius:6px;overflow:hidden;background:var(--paper)}.medium-switch button{border:none;background:transparent;padding:6px 14px;font-size:13px;color:var(--ink-soft);border-right:1px solid var(--rule)}.medium-switch button:last-child{border-right:none}.medium-switch button.active{background:var(--accent);color:#f7f2ea}.btn{border:1px solid var(--rule);background:var(--paper);color:var(--ink-soft);padding:6px 12px;border-radius:6px;font-size:13px}.btn:hover{border-color:var(--accent-soft);color:var(--ink)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#f7f2ea}.btn.primary:hover{background:#883e26}.btn-group{display:inline-flex;gap:6px}.main{flex:1;display:flex;min-height:0}.split{flex:1;display:flex;min-width:0}.pane{flex:1;min-width:0;overflow-y:auto;padding:20px 24px 60px}.pane.left{border-right:1px solid var(--rule);background:var(--paper)}.pane.right{background:var(--paper-2)}.pane-title{font-family:var(--serif);font-size:15px;color:var(--ink-soft);letter-spacing:.08em;margin:0 0 14px;padding-bottom:8px;border-bottom:1px solid var(--rule)}.chapter{margin-bottom:26px}.chapter h3{font-family:var(--serif);font-size:16px;font-weight:600;color:var(--ink);margin:0 0 8px}.chapter .body{font-family:var(--serif);font-size:15px;line-height:2;color:var(--ink);white-space:pre-wrap;text-align:justify}.src-seg{cursor:pointer;border-radius:2px;transition:background-color .18s ease}.src-seg:hover{background:#9c4a2f1f}.src-seg.hl{background:var(--hl);box-shadow:0 0 0 1px var(--hl-strong) inset}.scene{margin-bottom:22px;background:var(--paper);border:1px solid var(--rule);border-radius:8px;padding:14px 16px}.scene-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}.scene-slug{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--accent);text-transform:uppercase}.scene-id{font-size:11px;color:var(--ink-faint);font-variant-numeric:tabular-nums}.scene-synopsis{font-size:12.5px;color:var(--ink-faint);font-style:italic;margin:2px 0 12px}.scene-regen{margin-left:auto}.regen-panel{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 12px;padding:10px;background:var(--paper-2);border:1px dashed var(--rule);border-radius:6px}.regen-input{flex:1;min-width:180px;font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:6px;padding:6px 10px}.regen-input:focus{outline:none;border-color:var(--accent-soft)}.regen-confirm{white-space:nowrap}.btn:disabled,.scene-regen:disabled,.regen-confirm:disabled{opacity:.6;cursor:not-allowed}.regen-error{flex-basis:100%;display:flex;align-items:center;gap:10px;font-size:12px;color:var(--accent)}.regen-retry{padding:3px 10px;font-size:12px}.el{cursor:pointer;border-radius:5px;padding:6px 8px;margin:2px -8px;transition:background-color .18s ease,box-shadow .18s ease}.el:hover{background:#9c4a2f0f}.el.hl{background:var(--hl);box-shadow:0 0 0 1px var(--hl-strong) inset}.el-action{font-family:var(--serif);font-size:14.5px;color:var(--ink);line-height:1.85}.el-dialogue .char{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--ink-soft);text-transform:uppercase}.el-dialogue .paren{font-size:12px;color:var(--ink-faint);font-style:italic}.el-dialogue .line{font-family:var(--serif);font-size:15px;color:var(--ink);padding-left:14px;border-left:2px solid var(--rule);margin-top:2px}.el-transition{text-align:right;font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.12em;color:var(--ink-soft)}.adapt-tag{display:inline-block;margin-left:8px;font-family:var(--sans);font-size:10.5px;letter-spacing:.04em;color:var(--accent);background:#9c4a2f1a;border:1px solid rgba(156,74,47,.3);border-radius:10px;padding:1px 8px;vertical-align:middle;white-space:nowrap}.flag{margin-top:8px;font-size:11.5px;padding:4px 8px;border-radius:5px;border-left:3px solid var(--ink-faint);background:#00000008;color:var(--ink-soft)}.flag.warn{border-left-color:#b8862b}.flag.error{border-left-color:var(--accent)}.aside{width:290px;flex:0 0 290px;border-left:1px solid var(--rule);background:var(--paper-3);overflow-y:auto;padding:18px 16px 60px}.panel{margin-bottom:22px}.panel h4{font-family:var(--serif);font-size:14px;color:var(--ink);margin:0 0 10px;letter-spacing:.06em}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px}.metric{background:var(--paper);border:1px solid var(--rule);border-radius:6px;padding:8px 10px}.metric .v{font-family:var(--serif);font-size:20px;font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums}.metric .k{font-size:11px;color:var(--ink-faint);margin-top:2px}.char-card{border-bottom:1px solid var(--rule);padding:8px 0}.char-card:last-child{border-bottom:none}.char-card .nm{font-family:var(--serif);font-weight:600;color:var(--ink)}.char-card .alias{font-size:11px;color:var(--ink-faint);margin-left:6px}.char-card .traits{margin-top:3px}.chip{display:inline-block;font-size:11px;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--rule);border-radius:10px;padding:0 8px;margin:2px 4px 0 0}.lst{list-style:none;margin:0;padding:0}.lst li{font-size:12.5px;color:var(--ink-soft);padding:3px 0;border-bottom:1px dashed var(--rule)}.lst li:last-child{border-bottom:none}.lst .ord{display:inline-block;width:18px;color:var(--accent);font-variant-numeric:tabular-nums}.intake{margin:auto;max-width:560px;text-align:center;padding:40px 20px}.intake h2{font-family:var(--serif);font-size:24px;color:var(--ink);margin-bottom:6px}.intake p{color:var(--ink-faint);margin-bottom:20px}.intake textarea{width:100%;height:180px;resize:vertical;font-family:var(--serif);font-size:14px;line-height:1.8;color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:8px;padding:12px 14px;margin-bottom:14px}.intake textarea:focus{outline:none;border-color:var(--accent-soft)}.intake-actions{display:flex;gap:10px;justify-content:center}.progress{margin:30px auto 0;max-width:460px;text-align:left}.progress .bar{height:6px;background:var(--paper-3);border-radius:3px;overflow:hidden;margin-bottom:8px}.progress .bar>i{display:block;height:100%;background:var(--accent);transition:width .3s ease}.progress .step{font-size:12.5px;color:var(--ink-soft)}.pane::-webkit-scrollbar,.aside::-webkit-scrollbar{width:9px}.pane::-webkit-scrollbar-thumb,.aside::-webkit-scrollbar-thumb{background:var(--paper-3);border-radius:5px}@media (max-width: 900px){.app{height:auto;min-height:100vh;overflow:visible}.topbar{flex-wrap:wrap;gap:10px;padding:10px 14px}.topbar .spacer{flex-basis:100%;height:0}.btn-group{flex-wrap:wrap}.main{flex-direction:column;min-height:0}.split{flex-direction:column;min-width:0}.pane,.aside{flex:none;width:100%;min-width:0;overflow-y:visible;height:auto}.pane.left{border-right:none;border-bottom:1px solid var(--rule)}.pane.right{border-bottom:1px solid var(--rule)}.aside{border-left:none;border-top:1px solid var(--rule)}}
