@import "https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,500;0,8..60,600;0,8..60,700;1,8..60,400&family=Inter:wght@400;500;600;700&family=Noto+Serif+SC:wght@400;500;600;700&display=swap";*{box-sizing:border-box;margin:0;padding:0}html{touch-action:manipulation}:root{--bg:#fff;--bg-card:#fff;--bg-input:#f9f9f9;--bg-hover:#00000008;--bg-surface:#fafafa;--border:#f2f2f2;--border-subtle:#f7f7f7;--text:#242424;--text-dim:#6b6b6b;--text-muted:#0000005c;--accent:#1a8917;--accent-hover:#156d12;--accent-bg:#1a89170f;--accent-border:#1a891733;--green:#1a8917;--green-bg:#1a89170f;--green-border:#1a891733;--yellow:#bf8700;--yellow-bg:#bf87000f;--yellow-border:#bf870033;--red:#c94a4a;--red-bg:#c94a4a0f;--red-border:#c94a4a33;--blue:#2272c4;--blue-bg:#2272c40f;--blue-border:#2272c433;--purple:#7b61a6;--purple-bg:#7b61a60f;--radius:4px;--radius-lg:8px;--radius-xl:12px;--shadow:0 4px 16px #00000014;--shadow-sm:0 1px 4px #0000000f;--font:sohne, "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;--font-serif:"Source Serif 4", "Noto Serif SC", Georgia, Cambria, "Times New Roman", serif;--font-cn:"Noto Serif SC", "Songti SC", Georgia, serif;--font-mono:"SF Mono", "Fira Code", "Cascadia Code", Menlo, monospace;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:40px;--space-2xl:64px;--h-xs:24px;--h-sm:32px;--h-md:36px;--h-lg:44px;--nav-h:57px;--sidebar-w:240px;--right-panel-w:320px;--content-max-w:1192px;--app-pad-x:var(--space-xl);--app-pad-y:var(--space-lg)}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;min-height:100vh;line-height:1.6}::selection{color:var(--text);background:#7dffb3}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#00000026;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#00000040}#nav{height:var(--nav-h);background:var(--bg);border-bottom:1px solid var(--border);z-index:100;align-items:center;gap:16px;padding:0 24px;display:flex;position:sticky;top:0}.nav-brand{color:var(--text);cursor:pointer;letter-spacing:-.5px;font-size:22px;font-weight:700;font-family:var(--font-serif);white-space:nowrap}.brand-rip{color:var(--text-dim);letter-spacing:3px;text-transform:uppercase;vertical-align:baseline;margin-left:2px;font-size:.6em;font-weight:300}#nav-breadcrumb{color:var(--text-dim);flex-wrap:wrap;flex:1;align-items:center;gap:8px;min-width:0;font-size:14px;display:flex;overflow:hidden}#nav-breadcrumb a{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;max-width:300px;text-decoration:none;transition:color .15s;overflow:hidden}#nav-breadcrumb a:last-of-type{white-space:normal;word-break:break-all;max-width:none}#nav-breadcrumb a:hover{color:var(--text)}#nav-breadcrumb .sep{opacity:.3;flex-shrink:0}.nav-actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}#app{padding:var(--app-pad-y) var(--app-pad-x);max-width:var(--content-max-w);margin:0 auto}.page-header{margin-bottom:var(--space-lg);justify-content:space-between;align-items:flex-start;gap:var(--space-md);display:flex}.page-header h1{letter-spacing:-.41px;margin-bottom:var(--space-xs);font-size:28px;font-weight:700;font-family:var(--font-serif)}.grid{gap:var(--space-lg);display:grid}.grid-2{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.grid-3{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);transition:box-shadow .2s ease-out}.card-clickable{cursor:pointer;-webkit-tap-highlight-color:transparent}.card-clickable:hover{box-shadow:0 2px 12px #00000014}.card-clickable:active{box-shadow:var(--shadow-sm);transition-duration:80ms}.card h3{color:var(--text);font-size:18px;font-weight:700;font-family:var(--font-serif);letter-spacing:-.38px;margin-bottom:8px}.card p{color:var(--text-dim);margin-bottom:4px;font-size:14px;line-height:1.5}.card-meta{gap:var(--space-md);margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--border-subtle);color:var(--text-muted);font-size:13px;display:flex}.card-accent{border-top:2px solid var(--accent)}.card-narrow{max-width:640px}hr{border:none;border-top:1px solid var(--border);margin:var(--space-md) 0}.btn{min-height:var(--h-md);cursor:pointer;font-size:14px;font-weight:400;font-family:var(--font);white-space:nowrap;-webkit-tap-highlight-color:transparent;border:none;border-radius:99em;justify-content:center;align-items:center;gap:6px;padding:8px 16px;transition:background .15s ease-out,border-color .15s ease-out,box-shadow .15s ease-out;display:inline-flex}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:active:not(:disabled){transition-duration:80ms;transform:scale(.97)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{color:var(--text);background:0 0;border:1px solid #0000001a}.btn-secondary:hover{background:var(--bg-hover);border-color:#0003}.btn-danger{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border)}.btn-danger:hover{background:#c94a4a1f}.btn-success{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}.btn-success:hover{background:#1a89171f}.btn-icon{color:var(--text-dim);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:50%;padding:4px 8px;font-size:18px;transition:color .15s ease-out,background .15s ease-out}.btn-icon:hover{color:var(--text);background:var(--bg-hover)}.btn-icon:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-sm{min-height:var(--h-sm);padding:4px 12px;font-size:13px}.btn-group{flex-wrap:wrap;gap:8px;display:flex}.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.form-group{margin-bottom:20px}.form-group label{color:var(--text);margin-bottom:var(--space-sm);letter-spacing:-.1px;font-size:14px;font-weight:500;display:block}.form-group:last-child{margin-bottom:0}input[type=text],input[type=number],input[type=password],textarea,select{width:100%;min-height:var(--h-md);background:var(--bg);border-radius:var(--radius);color:var(--text);font-size:14px;font-family:var(--font);-webkit-appearance:none;border:1px solid #0000001a;padding:8px 14px;transition:border-color .2s ease-out,box-shadow .2s ease-out}input:focus,textarea:focus,select:focus{border-color:var(--text);box-shadow:none;outline:none}input::placeholder,textarea::placeholder{color:var(--text-muted);opacity:1}textarea{resize:vertical;min-height:80px}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}small{color:var(--text-dim);margin-top:4px;font-size:13px;display:block}.tag{height:var(--h-sm);letter-spacing:0;border-radius:99em;align-items:center;padding:0 12px;font-size:12px;font-weight:500;display:inline-flex}.tag-blue{background:var(--blue-bg);color:var(--blue)}.tag-green{background:var(--green-bg);color:var(--green)}.tag-yellow{background:var(--yellow-bg);color:var(--yellow)}.tag-red{background:var(--red-bg);color:var(--red)}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:200;background:#0006;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-overlay.hidden{display:none}.modal{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;max-width:640px;max-height:85vh;overflow-y:auto;box-shadow:0 16px 48px #0000001f}.modal-header{padding:var(--space-lg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.modal-header h3{font-size:18px;font-weight:700;font-family:var(--font-serif);letter-spacing:-.2px}#modal-body,.modal-body{padding:var(--space-lg)}.modal-footer{justify-content:flex-end;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border);display:flex}.three-panel{grid-template-columns:var(--sidebar-w) 1fr var(--right-panel-w);margin:calc(-1 * var(--app-pad-y)) calc(-1 * var(--app-pad-x));min-height:calc(100vh - var(--nav-h));max-width:none;width:calc(100% + var(--app-pad-x) * 2);gap:0;display:grid;position:relative}.three-panel.right-collapsed{grid-template-columns:var(--sidebar-w) 1fr}.panel-sidebar{background:var(--bg-surface);height:calc(100vh - var(--nav-h));top:var(--nav-h);position:sticky;overflow-y:auto}.panel-left{border-right:1px solid var(--border)}.panel-right{border-left:1px solid var(--border);background:var(--bg-surface);transition:transform .2s,opacity .2s}.panel-right.collapsed{display:none}.toggle-right-btn{right:16px;top:calc(var(--nav-h) + 12px);z-index:20;background:var(--bg);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:99em;padding:8px 14px;font-size:13px;font-weight:400;transition:all .15s;position:fixed}.toggle-right-btn:hover{background:var(--bg-hover);color:var(--text)}.panel-sidebar .sidebar-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.panel-sidebar .sidebar-header h3{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;font-size:12px;font-weight:600}.chapter-list-item{border-bottom:1px solid var(--border-subtle);cursor:pointer;padding:12px 20px;transition:background .1s}.chapter-list-item:hover{background:var(--bg-hover)}.chapter-list-item.active{background:var(--accent-bg);border-left:3px solid var(--accent)}.chapter-list-item .ch-position{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:flex}.chapter-list-item .ch-title{margin-top:3px;font-size:14px;font-weight:500;line-height:1.4}.ch-draft-dot{color:var(--yellow);vertical-align:middle;font-size:9px}.chapter-list-item .ch-meta{color:var(--text-muted);margin-top:4px;font-size:12px}.panel-content{height:calc(100vh - var(--nav-h));min-width:0;max-width:680px;margin:0 auto;padding:48px 56px;overflow:hidden auto}.panel-content h1{font-size:32px;font-weight:700;font-family:var(--font-serif);letter-spacing:-.5px;margin-bottom:8px;line-height:1.25}.context-tabs{border-bottom:1px solid var(--border);display:flex}.ctx-tab{color:var(--text-muted);cursor:pointer;letter-spacing:0;font-size:13px;font-weight:500;font-family:var(--font);-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px 8px;transition:color .15s ease-out,background .15s ease-out,border-color .15s ease-out}.ctx-tab:hover{color:var(--text-dim);background:var(--bg-hover)}.ctx-tab.active{color:var(--text);border-bottom-color:var(--text)}.ctx-panel{padding:0}.ctx-section{border-bottom:1px solid var(--border-subtle)}.ctx-section-title{color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;align-items:center;gap:4px;padding:10px 16px;font-size:13px;font-weight:500;transition:background .15s ease-out,color .15s ease-out;display:flex}.ctx-section-title:hover{background:var(--bg-hover);color:var(--text)}.ctx-section.collapsed .ctx-section-body{display:none}.ctx-section-body{padding:0 16px 10px}.ctx-item{border-bottom:1px solid var(--border-subtle);padding:8px 0}.ctx-item:last-child{border-bottom:none}.ctx-item-title{color:var(--text);margin-bottom:3px;font-size:14px;font-weight:500}.ctx-item-desc{color:var(--text-dim);font-size:13px;line-height:1.5}.ctx-kv{color:var(--text-dim);gap:6px;font-size:13px;line-height:1.7;display:flex}.ctx-k{color:var(--text);flex-shrink:0;min-width:32px;font-weight:500}.ctx-k:after{content:":"}.chapter-outline{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);margin-bottom:32px;padding:16px 20px;font-size:14px;line-height:1.7}.chapter-outline strong{color:var(--text);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-size:12px;display:block}.chapter-outline-edit{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;padding:16px 20px}.chapter-outline-edit strong{color:var(--text);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:12px;display:block}.chapter-text{font-family:var(--font-serif);white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;color:var(--text);letter-spacing:-.003em;margin-bottom:32px;font-size:20px;line-height:1.58}.chapter-actions{gap:var(--space-sm);margin-bottom:var(--space-lg);padding:12px var(--space-md);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-wrap:wrap;display:flex}.chapter-actions-bottom{margin-top:var(--space-xl);border-top:1px solid var(--border);margin-bottom:0}.extraction-section{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--border)}.extraction-section h3{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:16px;font-size:12px;font-weight:600}.tabs{border-bottom:1px solid var(--border);margin-bottom:var(--space-lg);gap:0;display:flex}.tab{color:var(--text-dim);cursor:pointer;font-size:14px;font-family:var(--font);-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 20px;transition:color .15s ease-out,border-color .15s ease-out}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--text);font-weight:500}.novel-nav{margin-bottom:var(--space-xl);border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch;gap:0;display:flex;overflow-x:auto}.novel-nav-item{color:var(--text-dim);cursor:pointer;font-size:14px;font-family:var(--font);white-space:nowrap;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 20px;font-weight:400;transition:color .15s ease-out}.novel-nav-item:hover{color:var(--text)}.novel-nav-item.active{color:var(--text);border-bottom-color:var(--text);font-weight:500}.table-wrap{border:1px solid var(--border);border-radius:var(--radius-lg);overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:12px 16px;font-size:14px}th{color:var(--text-dim);background:var(--bg-surface);border-bottom:1px solid var(--border);font-size:13px;font-weight:500}td{border-bottom:1px solid var(--border-subtle)}tr:last-child td{border-bottom:none}tr:hover td{background:var(--bg-hover)}.timeline{padding-left:24px;position:relative}.timeline:before{content:"";background:linear-gradient(to bottom, var(--border), var(--border-subtle));width:2px;position:absolute;top:4px;bottom:4px;left:6px}.timeline-item{margin-bottom:20px;padding-bottom:4px;position:relative}.timeline-item:before{content:"";background:var(--accent);border:2px solid var(--bg);width:10px;height:10px;box-shadow:0 0 0 2px var(--accent-border);border-radius:50%;position:absolute;top:6px;left:-21px}.timeline-item .tl-chapter{color:var(--text-muted);margin-bottom:4px;font-size:12px;font-weight:500}.timeline-item .tl-content{font-size:14px;line-height:1.6}#toast-container{z-index:300;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:var(--radius-lg);max-width:360px;box-shadow:var(--shadow);cursor:pointer;padding:12px 20px;font-size:14px;font-weight:400;animation:.3s cubic-bezier(.16,1,.3,1) toastIn,.3s ease-in 2.7s forwards toastOut}.toast-success{color:var(--green);border:1px solid var(--green-border);background:#fff}.toast-error{color:var(--red);border:1px solid var(--red-border);background:#fff}.toast-info{color:var(--blue);border:1px solid var(--blue-border);background:#fff}@keyframes toastIn{0%{opacity:0;transform:translate(100%)scale(.95)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes toastOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.loading{color:var(--text-muted);justify-content:center;align-items:center;gap:12px;padding:40px;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:var(--space-2xl) var(--space-lg);color:var(--text-muted)}.empty-state .empty-icon{margin-bottom:var(--space-md);opacity:.3;filter:grayscale();font-size:48px}.empty-state p{margin-bottom:var(--space-md);max-width:360px;margin-left:auto;margin-right:auto;font-size:15px;line-height:1.6}.detail-grid{grid-template-columns:100px 1fr;gap:8px 16px;font-size:14px;display:grid}.detail-grid dt{color:var(--text-dim);font-size:13px;font-weight:500}.detail-grid dd{color:var(--text)}.content-edit-area{background:var(--bg);border-radius:var(--radius);width:100%;min-height:400px;color:var(--text);font-size:16px;line-height:1.7;font-family:var(--font-serif);resize:vertical;border:1px solid #0000001a;padding:16px}.text-dim{color:var(--text-dim)}.text-muted{color:var(--text-muted)}.text-accent{color:var(--accent)}.text-sm{font-size:13px}.text-center{text-align:center}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.flex{display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-between+.table-wrap{margin-top:var(--space-md)}.gap-8{gap:8px}.gap-16{gap:16px}.mt-4{margin-top:4px}.ml-6{margin-left:6px}.p-12{padding:12px}.p-16{padding:16px}.p-20{padding:20px}.w-full{width:100%}.cursor-pointer{cursor:pointer}.text-red{color:var(--red)}.whitespace-pre-wrap{white-space:pre-wrap}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.spinner-sm{vertical-align:middle;border-width:2px;width:14px;height:14px;margin-right:4px;display:inline-block}.spinner-md{vertical-align:middle;border-width:2px;width:16px;height:16px;display:inline-block}.block-accent{border-left:2px solid var(--accent);padding-left:8px}.link-plain{color:var(--text);font-weight:500;text-decoration:none}.loading-page{padding:60px 0}.container-md{max-width:900px;margin:0 auto}.modal-stack{flex-direction:column;gap:16px;padding:12px 0;display:flex}.char-ws-block{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;font-size:12px}.ws-detail-block{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:20px;padding:16px}.style-chat-card{flex-direction:column;height:100%;padding:0;display:flex;overflow:hidden}.card-section-header{border-bottom:1px solid var(--border);padding:16px 20px}.card-section-footer{border-top:1px solid var(--border);padding:10px 16px}.quick-chars{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.chip{height:var(--h-xs);background:var(--bg-surface);border:1px solid var(--border);color:var(--text);cursor:pointer;font-size:12px;font-family:var(--font);border-radius:99em;align-items:center;padding:0 10px;transition:border-color .15s,background .15s;display:inline-flex}.chip:hover{border-color:var(--accent-border);background:var(--accent-bg)}.pre-block{background:var(--bg-surface);border-radius:var(--radius);white-space:pre-wrap;max-height:300px;color:var(--text-dim);margin-top:8px;padding:12px;font-size:13px;line-height:1.6;overflow:auto}.callout{border-radius:var(--radius);padding:12px 16px;font-size:14px}.callout-success{background:var(--green-bg);border:1px solid var(--green-border);color:var(--green)}.callout-error{background:var(--red-bg);border:1px solid var(--red-border);color:var(--red)}.callout strong{margin-bottom:4px;display:block}summary{cursor:pointer;color:var(--accent);font-size:13px}a.link-accent{color:var(--accent);text-decoration:none}a.link-accent:hover{text-decoration:underline}@media (width<=1024px){:root{--sidebar-w:220px;--right-panel-w:280px}.panel-content{padding:32px 28px}.grid-2{grid-template-columns:1fr}}@media (width<=768px){:root{--nav-h:48px}#nav{gap:8px;padding:0 16px}.nav-brand{font-size:18px}#nav-breadcrumb{min-width:0;font-size:13px}#app{--app-pad-x:var(--space-md);--app-pad-y:var(--space-md)}.page-header{align-items:flex-start;gap:var(--space-sm);flex-direction:column}.page-header h1{font-size:22px}.three-panel{flex-direction:column;min-height:auto;display:flex}.three-panel .panel-sidebar{height:auto;max-height:none;position:relative;top:auto;overflow:visible}.three-panel .panel-left{border-right:none;border-bottom:1px solid var(--border)}.three-panel .panel-left .chapter-list-item{border-bottom:none;border-right:1px solid var(--border-subtle);flex-direction:column;padding:8px 12px;display:inline-flex}.three-panel .panel-left{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;display:flex;overflow-x:auto}.three-panel .panel-left .sidebar-header{display:none}.three-panel .panel-left .chapter-list-item .ch-position{white-space:nowrap}.three-panel .panel-left .chapter-list-item .ch-title{white-space:nowrap;font-size:12px}.three-panel .panel-left .chapter-list-item .ch-meta{display:none}.panel-content{max-width:none;height:auto;padding:20px 16px;overflow:visible}.panel-content h1{font-size:24px}.chapter-text{font-size:17px;line-height:1.7}.three-panel .panel-right{border-left:none;border-top:1px solid var(--border);height:auto;position:relative;top:auto}.three-panel.right-collapsed .panel-right{display:none}.toggle-right-btn{text-align:center;border-bottom:none;border-left:none;border-right:none;border-radius:0;width:100%;padding:12px;font-size:14px;display:block;position:sticky;top:auto;bottom:0;right:auto}.grid-2,.grid-3,.form-row{grid-template-columns:1fr}th,td{padding:8px 10px;font-size:13px}.modal{border-radius:var(--radius-lg);max-width:100%;max-height:90vh}.modal-header,#modal-body,.modal-body{padding:16px}.novel-nav{gap:0}.novel-nav-item{padding:8px 14px;font-size:13px}.chapter-actions{flex-wrap:wrap}.chapter-actions .btn{flex:1;min-width:0}#toast-container{bottom:12px;left:12px;right:12px}.toast{max-width:100%}.detail-grid{grid-template-columns:1fr;gap:4px 0}.detail-grid dt{margin-top:8px}.detail-grid dt:first-child{margin-top:0}}@media (width<=480px){.page-header h1{font-size:20px}.btn{padding:7px 14px;font-size:13px}.card{padding:16px}}.progress-track{background:var(--bg-surface);border:1px solid var(--border);border-radius:99px;height:6px;margin-bottom:8px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:99px;height:100%;transition:width .5s}.progress-fill.complete{background:var(--accent)}.ai-create-container{margin:calc(-1 * var(--app-pad-y)) calc(-1 * var(--app-pad-x));width:calc(100% + var(--app-pad-x) * 2);height:calc(100vh - var(--nav-h));grid-template-columns:1fr 340px;gap:0;display:grid}.ai-chat-panel{height:calc(100vh - var(--nav-h));background:var(--bg);flex-direction:column;min-width:0;display:flex}.ai-chat-header{border-bottom:1px solid var(--border);padding:24px 32px 20px}.ai-chat-header h2{font-size:22px;font-weight:700;font-family:var(--font-serif);letter-spacing:-.3px;margin-bottom:4px}.ai-chat-messages{flex-direction:column;flex:1;gap:16px;padding:24px 32px;display:flex;overflow-y:auto}.ai-chat-bubble{gap:10px;max-width:85%;animation:.25s bubbleIn;display:flex}@keyframes bubbleIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.ai-bubble-user{flex-direction:row-reverse;align-self:flex-end}.ai-bubble-assistant{align-self:flex-start}.ai-bubble-avatar{width:var(--h-sm);height:var(--h-sm);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.ai-bubble-user .ai-bubble-avatar{background:var(--accent-bg);color:var(--accent)}.ai-bubble-assistant .ai-bubble-avatar{background:var(--purple-bg);color:var(--purple)}.ai-bubble-content{overflow-wrap:break-word;border-radius:16px;min-width:0;padding:12px 16px;font-size:15px;line-height:1.6}.ai-bubble-user .ai-bubble-content{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.ai-bubble-assistant .ai-bubble-content{background:var(--bg-surface);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px}.ai-chat-choices{flex-wrap:wrap;gap:8px;min-height:0;padding:0 32px;display:flex}.ai-chat-choices:not(:empty){padding-top:4px;padding-bottom:12px}.ai-choice-btn{cursor:pointer;font-size:14px;font-weight:400;font-family:var(--font);background:var(--bg);color:var(--text);white-space:nowrap;border:1px solid #0000001a;border-radius:99em;padding:8px 16px;transition:all .15s}.ai-choice-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.ai-choice-btn:disabled{cursor:not-allowed}.ai-choice-skip{color:var(--text-muted);border-style:dashed}.ai-choice-confirm{background:var(--green-bg);color:var(--green);border-color:var(--green-border);font-weight:500}.ai-choice-confirm:hover{background:#1a89171f}.ai-chat-input-area{border-top:1px solid var(--border);padding:16px 32px 20px}.ai-chat-input-row{align-items:flex-end;gap:8px;display:flex}.ai-chat-input-row textarea{resize:none;border-radius:99em;flex:1;min-height:40px;max-height:120px;padding:10px 16px;font-size:14px;line-height:1.4}.ai-chat-input-row .btn{border-radius:99em;height:40px;padding:10px 20px}.ai-preview-panel{background:var(--bg-surface);border-left:1px solid var(--border);height:calc(100vh - var(--nav-h));flex-direction:column;display:flex;overflow-y:auto}.ai-preview-header{border-bottom:1px solid var(--border);padding:20px}.ai-preview-header h3{text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);font-size:13px;font-weight:500}.ai-preview-content{flex:1;padding:0;overflow-y:auto}.ai-preview-section{border-bottom:1px solid var(--border-subtle);padding:16px 20px}.ai-preview-label{text-transform:uppercase;letter-spacing:.5px;color:var(--accent);margin-bottom:6px;font-size:12px;font-weight:500}.ai-preview-value{color:var(--text);line-height:1.6}.ai-preview-char{border-bottom:1px solid var(--border-subtle);padding:6px 0}.ai-preview-char:last-child{border-bottom:none}.ai-preview-rel{color:var(--text-dim);padding:4px 0;font-size:14px}.style-layout{grid-template-columns:1fr 1fr;gap:16px;min-height:500px;display:grid}.style-chat-col{flex-direction:column;min-height:500px;display:flex}.style-chat-messages{flex-direction:column;flex:1;gap:12px;max-height:400px;padding:16px;display:flex;overflow-y:auto}.style-preview-col{flex-direction:column;gap:16px;display:flex}.style-prompt-box{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);white-space:pre-wrap;min-height:80px;color:var(--text);padding:14px;line-height:1.7}.style-preview-content{max-height:400px;overflow-y:auto}@media (width<=768px){.style-layout{grid-template-columns:1fr}.style-chat-col{min-height:350px}.style-chat-messages{max-height:300px}}.ai-preview-actions{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:8px;padding:16px 20px;display:flex}@media (width<=768px){.ai-create-container{height:auto;min-height:calc(100vh - var(--nav-h));grid-template-columns:1fr}.ai-chat-panel{height:calc(100vh - var(--nav-h))}.ai-preview-panel{display:none}.ai-chat-bubble{max-width:92%}.ai-chat-choices{padding:0 16px}.ai-chat-choices:not(:empty){padding-bottom:10px}.ai-choice-btn{white-space:normal;text-align:left;padding:7px 14px;font-size:13px}.ai-chat-input-area{padding:10px 16px 12px}.ai-chat-messages,.ai-chat-header{padding:16px}}@media (width<=1024px) and (width>=769px){.ai-create-container{grid-template-columns:1fr 280px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.card-clickable:hover,.card-clickable:active,.btn:active:not(:disabled){transform:none}.progress-fill{transition:none}}.nav-brand:focus-visible,.novel-nav-item:focus-visible,.tab:focus-visible,.ctx-tab:focus-visible,.chapter-list-item:focus-visible,.toggle-right-btn:focus-visible,.ai-choice-btn:focus-visible,.ctx-section-title:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:4px}a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.modal-overlay:not(.hidden){animation:.2s ease-out overlayIn}.modal-overlay:not(.hidden) .modal{animation:.25s cubic-bezier(.16,1,.3,1) modalIn}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:scale(.96)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.chapter-list-item,.ai-choice-btn{-webkit-tap-highlight-color:transparent}@media (width<=768px){.btn{min-height:var(--h-lg)}.btn-sm{min-height:var(--h-md)}.btn-icon{min-width:var(--h-lg);min-height:var(--h-lg)}.novel-nav-item{min-height:var(--h-lg);align-items:center;display:inline-flex}.tab,.ctx-tab,.chapter-list-item,.ai-choice-btn,.toggle-right-btn{min-height:var(--h-lg)}}.panel-sidebar,.panel-content,.ai-chat-messages,.ai-preview-content,.style-chat-messages,.modal{scrollbar-gutter:stable}.btn.loading{color:#0000;pointer-events:none;padding:initial;display:inline-flex;position:relative}.btn.loading:after{content:"";opacity:.7;border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin;position:absolute}.login-page{min-height:100vh;padding:var(--space-lg);background:var(--bg);justify-content:center;align-items:center;display:flex}.login-card{text-align:center;width:100%;max-width:400px;padding:var(--space-2xl) var(--space-xl)}.login-brand{font-family:var(--font-serif);color:var(--text);margin-bottom:var(--space-xs);letter-spacing:-1px;font-size:48px;font-weight:700}.login-brand .brand-rip{letter-spacing:6px;vertical-align:baseline;text-align:center;color:var(--text-dim);margin-top:-4px;font-size:.45em;font-weight:300;display:block}.login-subtitle{color:var(--text-dim);margin-bottom:var(--space-xl);font-size:16px;line-height:1.5}.login-google-wrap{margin-bottom:var(--space-lg);justify-content:center;display:flex}.login-hint{color:var(--text-muted);font-size:13px}.nav-user{align-items:center;gap:8px;margin-left:12px;display:flex}.nav-avatar{width:var(--h-sm);height:var(--h-sm);object-fit:cover;border-radius:50%}.nav-avatar-placeholder{width:var(--h-sm);height:var(--h-sm);background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:500;display:flex}.nav-username{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:100px;font-size:14px;overflow:hidden}.nav-actions .btn{min-height:var(--h-sm);height:var(--h-sm);padding:0 12px;font-size:13px}.btn-ghost{color:var(--text-dim);background:0 0;border:1px solid #0000001a}.btn-ghost:hover{background:var(--bg-hover);color:var(--text)}
