/* ============================================================
   艾诺 / AINLL — AI 编辑器（editor.html）
   依赖 common.css 的设计令牌，本文件不再重复定义 :root / body / 按钮基类
   主题：暗金（默认） / 晨光
   ============================================================ */

/* ============ 页面骨架（共享页头 + 三栏工作区） ============ */
.ed-page{overflow:hidden}
.ed-body{flex:1;min-height:0;display:flex;overflow:hidden;background:var(--bg)}

/* 顶部提示条动画 */
@keyframes edFadeIn{
  from{opacity:0;transform:translateX(-50%) translateY(-8px)}
  to{opacity:1;transform:translateX(-50%) translateY(0)}
}

/* ============ 左侧章节栏 ============ */
.left-pane{
  width:260px;min-width:260px;background:var(--sidebar);
  border-right:1px solid var(--border);display:flex;flex-direction:column;
  transition:background .25s var(--ease),border-color .25s var(--ease);
}
.book-head{
  padding:16px 16px 14px;border-bottom:1px solid var(--border);
}
.book-back{
  display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-mute);
  cursor:pointer;margin-bottom:12px;transition:color .15s;
}
.book-back:hover{color:var(--accent2)}
.book-title{display:flex;align-items:center;gap:10px}
.book-cover-mini{
  width:38px;height:50px;border-radius:7px;flex-shrink:0;
  background:var(--cover-gradient);
  border:1px solid var(--border-strong);
  display:grid;place-items:center;font-size:20px;
}
.book-title h1{font-size:15px;font-weight:700}
.book-title .sub{font-size:11px;color:var(--text-mute);margin-top:2px}

.chapter-search{padding:12px 16px;border-bottom:1px solid var(--border)}
.chapter-search input{
  width:100%;background:var(--card);border:1px solid var(--border);border-radius:9px;
  padding:8px 12px;color:var(--text);font-size:12px;outline:none;
}
.chapter-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

.chapter-tree{flex:1;overflow-y:auto;padding:8px}
.vol-group{margin-bottom:6px}
.vol-title{
  display:flex;align-items:center;gap:7px;padding:8px 10px;font-size:11.5px;
  color:var(--text-dim);font-weight:600;cursor:pointer;user-select:none;
  border-radius:8px;transition:background .15s;
}
.vol-title:hover{background:var(--card)}
.vol-title .vt-ico{font-size:10px;transition:transform .18s;color:var(--text-mute)}
.vol-title .vt-ico.open{transform:rotate(90deg)}
.vol-title .vt-count{margin-left:auto;font-size:10px;color:var(--text-mute);font-weight:400}
.vol-chapters{overflow:hidden}
.ch-item{
  display:flex;align-items:center;gap:8px;padding:7px 10px 7px 26px;
  font-size:12px;color:var(--text-dim);border-radius:8px;cursor:pointer;
  margin:1px 0;transition:all .15s;position:relative;
}
.ch-item:hover{background:var(--card);color:var(--text)}
.ch-item.active{background:linear-gradient(90deg,var(--accent-soft),transparent);color:var(--text);font-weight:600}
.ch-item.active::before{
  content:"";position:absolute;left:12px;top:8px;bottom:8px;width:3px;border-radius:2px;
  background:var(--accent);box-shadow:0 0 8px var(--accent-glow);
}
.ch-item .ch-num{color:var(--text-mute);font-size:10.5px;min-width:28px}
.ch-item.active .ch-num{color:var(--accent2)}
.ch-item .ch-status{margin-left:auto;font-size:10px}
.ch-status.ai{color:var(--accent2)}
.ch-status.done{color:var(--green)}
.ch-status.draft{color:var(--text-mute)}

.left-footer{padding:12px 16px;border-top:1px solid var(--border)}
.btn-new-ch{
  width:100%;padding:10px;border-radius:10px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:var(--on-accent);
  border:none;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .18s var(--ease);
  display:flex;align-items:center;justify-content:center;gap:6px;
  box-shadow:0 4px 16px var(--accent-glow);
}
.btn-new-ch:hover{filter:brightness(1.08);transform:translateY(-1px)}

/* ============ 主编辑区 ============ */
.editor-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}

/* 编辑器顶部栏（可换行：窄屏下自动折行，控件始终可达） */
.editor-topbar{
  min-height:var(--toolbar-h);
  display:flex;align-items:center;flex-wrap:wrap;gap:10px;row-gap:6px;padding:6px 16px;
  border-bottom:1px solid var(--border);background:var(--topbar-bg);backdrop-filter:blur(12px);
  transition:background .25s var(--ease),border-color .25s var(--ease);
}
/* 顶栏按钮与文字块禁止压缩，避免窄屏时文字竖排 */
.editor-topbar > *{flex-shrink:0}
.ch-path{
  font-size:11.5px;color:var(--text-mute);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;
}
.ch-path b{color:var(--accent2)}
.ch-title-input{
  font-size:15px;font-weight:700;background:transparent;border:none;color:var(--text);
  outline:none;min-width:130px;flex-shrink:1;
}
.editor-topbar .spacer{flex:1 1 auto;min-width:8px}
.auto-save{font-size:11px;color:var(--text-mute);display:flex;align-items:center;gap:5px;white-space:nowrap}
.auto-save .dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex-shrink:0}
.word-count{
  font-size:11px;color:var(--text-mute);padding:0 10px;white-space:nowrap;
  border-right:1px solid var(--border);border-left:1px solid var(--border);
}
.word-count b{color:var(--accent2)}

/* ============ AI 写作条（替代原格式工具栏） ============ */
.ai-bar{
  min-height:46px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;row-gap:6px;
  padding:7px 14px;border-bottom:1px solid var(--border);background:var(--sidebar);
  transition:background .25s var(--ease),border-color .25s var(--ease);
}
.ai-bar > *{flex-shrink:0}
.ai-bar .spacer{flex:1 1 auto;min-width:8px}
.ai-pill{
  display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 13px;
  border-radius:999px;cursor:pointer;font-family:inherit;font-size:12.5px;font-weight:600;
  border:1px solid var(--border);background:var(--card);color:var(--text-dim);
  white-space:nowrap;outline:none;
  transition:all var(--dur) var(--ease);
}
.ai-pill:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
.ai-pill:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}
.ai-pill.solid{
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  border-color:transparent;color:var(--on-accent);padding:0 15px;
  box-shadow:0 2px 10px var(--accent-glow);
}
.ai-pill.solid:hover{filter:brightness(1.06);color:var(--on-accent);box-shadow:0 3px 14px var(--accent-glow)}
/* 生成中：仅降低不透明度，保留可点击（一键生成全文需能点击停止） */
.ai-pill.busy{opacity:.72}
.ai-pill kbd{
  font-size:9.5px;font-family:inherit;padding:1px 5px;border-radius:4px;
  background:var(--bg-soft);border:1px solid var(--border);color:var(--text-mute);
}
.ai-pill.solid kbd{background:rgba(0,0,0,.16);border-color:transparent;color:inherit}
.ab-sep{width:1px;height:18px;background:var(--border)}
.ab-target{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-mute);white-space:nowrap}
.ab-target input{
  width:58px;background:var(--card);border:1px solid var(--border);color:var(--text);
  border-radius:7px;padding:5px 7px;font-size:11.5px;font-family:inherit;outline:none;
}
.ab-target input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.ab-progress{display:flex;align-items:center;gap:8px;min-width:150px}
.ab-track{
  flex:1;height:5px;border-radius:3px;background:var(--border);overflow:hidden;min-width:70px;
}
.ab-track i{
  display:block;height:100%;width:0;border-radius:3px;
  background:linear-gradient(90deg,var(--accent-deep),var(--accent));
  transition:width .3s var(--ease);
}
.ab-text{font-size:10.5px;color:var(--text-mute);white-space:nowrap}
.ai-context{font-size:10.5px;color:var(--text-mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
.ai-context b{color:var(--accent2)}

/* 编辑画布：写作纸铺满整个中栏，不留四周空白 */
.editor-canvas{flex:1;min-height:0;overflow-y:auto;padding:0;background:var(--editor-bg)}
.paper{
  width:100%;min-height:100%;margin:0;box-sizing:border-box;
  background:var(--editor-bg);
  border:none;border-radius:0;box-shadow:none;
  padding:40px clamp(24px,5vw,110px) 88px;
}
.paper-meta{text-align:center;color:var(--text-mute);font-size:12px;margin-bottom:8px;letter-spacing:1px}
.paper-title{
  text-align:center;font-size:26px;font-weight:800;margin-bottom:6px;
  background:var(--title-gradient);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.paper-sub{text-align:center;color:var(--text-mute);font-size:12px;margin-bottom:32px}
.paper-sub span{margin:0 8px}
.paper-content{
  font-size:15.5px;line-height:2.1;color:var(--paper-text);outline:none;
  font-family:"Songti SC","SimSun","Noto Serif SC",serif;
  min-height:52vh;                       /* 铺满后点击下方空白也能把光标落到正文 */
}
.paper-content p{margin-bottom:1.2em;text-indent:2em}
.paper-content p:focus{outline:none}
.paper-content:empty:before{content:attr(data-placeholder);color:var(--text-mute);font-style:italic;pointer-events:none}
/* AI 生成的段落：不加底色（原来金色高亮很晃眼），只留一条极淡的灰色竖线做标记 */
.paper-content .ai-gen{
  background:none;cursor:pointer;position:relative;
  padding-left:12px;
}
.paper-content .ai-gen::before{
  content:"";position:absolute;left:0;top:.45em;bottom:.45em;width:2px;
  border-radius:2px;background:var(--border);transition:background .18s var(--ease);
}
.paper-content .ai-gen:hover::before{background:var(--text-mute)}
.sel-hint{font-size:11px;color:var(--text-mute);text-align:center;margin-top:24px;font-style:italic}

/* ============ 右侧 AI 助手面板 ============ */
.right-pane{
  width:320px;min-width:320px;background:var(--sidebar);
  border-left:1px solid var(--border);display:flex;flex-direction:column;
  transition:background .25s var(--ease),border-color .25s var(--ease);
}
.right-head{
  padding:14px 16px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.rh-title{font-size:13.5px;font-weight:700}
.rh-sub{font-size:10.5px;color:var(--text-mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.right-body{flex:1;overflow-y:auto;padding:16px}

/* AI 生成中占位 */
.gen-loading{
  display:flex;align-items:center;gap:9px;padding:12px 14px;
  border:1px dashed var(--accent-glow);border-radius:11px;
  font-size:11.5px;color:var(--accent2);background:var(--accent-soft);
}
.gen-loading .dots{display:flex;gap:3px}
.gen-loading .dots i{
  width:5px;height:5px;border-radius:50%;background:var(--accent);animation:blink 1.2s infinite;
}
.gen-loading .dots i:nth-child(2){animation-delay:.2s}
.gen-loading .dots i:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,60%,100%{opacity:.3}30%{opacity:1}}

/* AI 操作卡片 */
.ai-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:18px}
.ai-action{
  background:var(--card);border:1px solid var(--border);border-radius:11px;
  padding:13px 10px;text-align:center;cursor:pointer;transition:all .18s var(--ease);
}
.ai-action:hover{border-color:var(--accent);transform:translateY(-2px);background:var(--card-hover);box-shadow:var(--shadow-sm)}
.ai-action .aa-ico{font-size:20px;margin-bottom:5px}
.ai-action .aa-label{font-size:11px;font-weight:600}
.ai-action .aa-desc{font-size:9.5px;color:var(--text-mute);margin-top:2px;line-height:1.3}

/* 提示词输入 */
.prompt-box{
  background:var(--card);border:1px solid var(--border);border-radius:12px;
  padding:14px;margin-bottom:18px;
}
.prompt-box label{font-size:11px;color:var(--text-dim);font-weight:600;display:block;margin-bottom:8px}
.prompt-box textarea{
  width:100%;background:var(--bg-soft);border:1px solid var(--border);border-radius:9px;
  padding:10px;color:var(--text);font-size:12.5px;line-height:1.6;resize:vertical;min-height:70px;outline:none;
  font-family:inherit;
}
.prompt-box textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.prompt-params{display:flex;gap:8px;margin-top:10px}
.param-mini{
  flex:1;background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;
  padding:7px;text-align:center;font-size:10.5px;color:var(--text-dim);cursor:pointer;transition:all .15s;
}
.param-mini:hover{border-color:var(--accent)}
.param-mini.active{border-color:var(--accent);color:var(--accent2);background:var(--accent-soft)}
.param-mini .pm-val{font-size:13px;font-weight:700;color:var(--text);display:block;margin-top:2px}
.prompt-box .btn-primary{width:100%;margin-top:12px;padding:10px}

/* 生成历史/建议 */
.panel-title{font-size:12px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:7px}
.panel-title .pt-ico{font-size:14px}
.gen-item{
  background:var(--card);border:1px solid var(--border);border-radius:10px;
  padding:12px;margin-bottom:10px;transition:all .15s;cursor:pointer;position:relative;
}
.gen-item:hover{border-color:var(--accent)}
.gen-item .gi-tag{
  position:absolute;top:12px;right:12px;font-size:9.5px;padding:2px 7px;border-radius:5px;font-weight:600;
}
.gi-tag.plot{background:var(--orange-soft);color:var(--orange)}
.gi-tag.dialog{background:var(--green-soft);color:var(--green)}
.gi-tag.desc{background:var(--blue-soft);color:var(--blue)}
.gen-item h4{font-size:12px;margin-bottom:5px;padding-right:40px}
.gen-item p{font-size:11px;color:var(--text-mute);line-height:1.55}
.gen-item .gi-actions{display:flex;gap:8px;margin-top:10px}
.gi-btn{
  flex:1;font-size:10.5px;padding:6px;text-align:center;border-radius:6px;cursor:pointer;
  border:1px solid var(--border);color:var(--text-dim);transition:all .15s;background:var(--bg-soft);
}
.gi-btn:hover{border-color:var(--accent);color:var(--accent2)}
.gi-btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}

/* 底部状态栏 */
.statusbar{
  height:30px;min-height:30px;display:flex;align-items:center;gap:16px;
  padding:0 20px;font-size:10.5px;color:var(--text-mute);border-top:1px solid var(--border);
  background:var(--sidebar);
}
.statusbar .sb-item{display:flex;align-items:center;gap:5px}
.statusbar .spacer{flex:1}
.sb-item .indicator{width:6px;height:6px;border-radius:50%;background:var(--green)}

/* ============ 左栏：作品切换 / 标签页 / 设定 ============ */
.book-select{
  width:100%;margin-top:11px;height:34px;border-radius:9px;cursor:pointer;
  background-color:var(--card);border:1px solid var(--border);color:var(--text);
  font-size:12px;font-family:inherit;padding:0 30px 0 11px;outline:none;
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23a08a5f' d='M6 8.5L1.5 4h9z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;
  transition:border-color var(--dur) var(--ease);
}
.book-select:hover,.book-select:focus{border-color:var(--accent)}

.left-tabs{display:flex;padding:0 8px;border-bottom:1px solid var(--border)}
.ltab{
  flex:1;text-align:center;padding:10px 4px;font-size:11.5px;color:var(--text-mute);
  cursor:pointer;border-bottom:2px solid transparent;transition:all var(--dur) var(--ease);
}
.ltab:hover{color:var(--text-dim)}
.ltab.on{color:var(--accent2);border-bottom-color:var(--accent);font-weight:700}

.left-body{flex:1;min-height:0;display:flex;flex-direction:column}
.left-body.hidden{display:none}
.left-footer{padding:10px 12px;border-top:1px solid var(--border)}
.btn-new-ch{
  width:100%;height:38px;border-radius:10px;cursor:pointer;font-family:inherit;
  font-size:12.5px;font-weight:600;
  background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--on-accent);
  border:none;box-shadow:0 4px 14px var(--accent-glow);
  transition:all var(--dur) var(--ease);
}
.btn-new-ch:hover{filter:brightness(1.08);transform:translateY(-1px)}

/* AI 生成后续章节 */
.ch-gen-bar{
  display:flex;gap:8px;align-items:center;
  padding:10px 12px;border-bottom:1px solid var(--border);
}
.ch-gen-num{
  width:52px;flex-shrink:0;height:32px;border-radius:8px;text-align:center;
  border:1px solid var(--border);background:var(--card);color:var(--text);
  font-size:12px;outline:none;font-family:inherit;
}
.ch-gen-num:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.ch-gen-btn{
  flex:1;min-width:0;height:32px;border-radius:8px;cursor:pointer;font-family:inherit;
  font-size:12px;font-weight:600;white-space:nowrap;
  border:1px solid var(--border);background:var(--card);color:var(--text-dim);
  transition:all .18s var(--ease);
}
.ch-gen-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent2)}
.ch-gen-btn:disabled{opacity:.6;cursor:not-allowed}

/* 设定卡（角色 / 世界观，与角色图谱、世界观页同源） */
.set-list{flex:1;overflow-y:auto;padding:10px 12px 20px}
.set-group{
  margin:8px 4px 8px;font-size:10.5px;font-weight:700;
  letter-spacing:.08em;color:var(--text-mute);
  display:flex;align-items:center;justify-content:space-between;
}
.set-card{
  display:flex;gap:9px;padding:9px 10px;margin-bottom:7px;cursor:pointer;
  border:1px solid var(--border);border-radius:11px;background:var(--card);
  transition:all var(--dur) var(--ease);
}
.set-card:hover{border-color:var(--accent);transform:translateX(2px)}
.set-card .sc-ico{
  width:30px;height:30px;border-radius:50%;flex-shrink:0;
  display:grid;place-items:center;font-size:15px;
  background:var(--accent-soft);border:1px solid var(--border-strong);
}
.set-card .sc-info{min-width:0;flex:1}
.set-card .sc-name{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.set-card .sc-desc{
  font-size:10.5px;color:var(--text-mute);margin-top:3px;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.set-card.open .sc-desc{display:block;-webkit-line-clamp:unset;overflow:visible}
.set-card .sc-tag{
  display:inline-block;margin-top:5px;font-size:9.5px;padding:1px 7px;border-radius:999px;
  background:var(--accent-soft);color:var(--accent2);border:1px solid var(--border);
}

/* ============ 写作纸：空状态 / AI 内联提示 ============ */
.paper-empty{text-align:center;color:var(--text-mute);padding:14vh 20px 64px}
.paper-empty .pe-ico{font-size:48px;margin-bottom:16px;opacity:.6}
.paper-empty .pe-title{font-size:16px;font-weight:600;color:var(--text-dim);margin-bottom:8px}
.paper-empty .pe-desc{font-size:12px;margin-bottom:14px}
.paper-empty .pe-tips{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;font-size:11px;margin-bottom:24px}
kbd{
  font-family:inherit;font-size:10.5px;padding:1px 6px;border-radius:5px;
  background:var(--bg-soft);border:1px solid var(--border);color:var(--text-mute);
}
.paper-content .ai-loading{
  display:inline-flex;align-items:center;gap:7px;
  font-size:13px;font-style:italic;color:var(--accent2);
  background:var(--accent-soft);border-radius:6px;padding:1px 9px;
}
.paper-content .ai-loading::after{
  content:"";width:11px;height:11px;border-radius:50%;
  border:2px solid var(--accent);border-top-color:transparent;animation:aiSpin .7s linear infinite;
}
@keyframes aiSpin{to{transform:rotate(360deg)}}

/* ============ 右栏：生成结果 ============ */
.gen-title{
  display:flex;align-items:center;justify-content:space-between;
  font-size:12px;font-weight:700;margin:4px 0 10px;
}
.gt-clear{font-size:10.5px;color:var(--text-mute);cursor:pointer;font-weight:400}
.gt-clear:hover{color:var(--accent2)}
.gen-list{display:flex;flex-direction:column;gap:10px}
.gen-empty{
  font-size:11px;color:var(--text-mute);line-height:1.7;text-align:center;
  padding:18px 12px;border:1px dashed var(--border);border-radius:11px;
}
.gen-card{border:1px solid var(--border);border-radius:11px;background:var(--card);padding:11px 12px}
.gen-card .gc-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}
.gen-card .gc-tag{
  font-size:9.5px;font-weight:600;padding:2px 8px;border-radius:999px;
  background:var(--accent-soft);color:var(--accent2);
}
.gen-card .gc-time{font-size:9.5px;color:var(--text-mute)}
.gen-card .gc-body{
  font-size:11.5px;line-height:1.75;color:var(--text-dim);
  max-height:230px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;
}
.gen-card .gc-actions{display:flex;gap:8px;margin-top:10px}
.gc-btn{
  flex:1;font-size:10.5px;padding:6px;text-align:center;border-radius:7px;cursor:pointer;
  border:1px solid var(--border);background:var(--bg-soft);color:var(--text-dim);
  transition:all var(--dur) var(--ease);
}
.gc-btn:hover{border-color:var(--accent);color:var(--accent2)}
.gc-btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}

/* 响应式 */
@media (max-width:1400px){
  .left-pane{width:236px;min-width:236px}
  .right-pane{width:290px;min-width:290px}
}
@media (max-width:1180px){
  .left-pane{width:220px;min-width:220px}
  .right-pane{width:260px;min-width:260px}
  .paper{padding:32px 28px 72px}
  .ai-context{display:none}
}
@media (max-width:980px){
  .right-pane{display:none}
}
@media (max-width:760px){
  .left-pane{display:none}
}
