/* ============================================================
 * world-wizard.css — 顶部"🐶 向导"按钮打开的创造/探索浮层
 * ============================================================ */

/* --- 变量定义 --- */
:root {
  --ww-bg-base: #F8FAFC;
  --ww-panel-gradient: linear-gradient(145deg, rgba(255, 255, 255, 0.95), rgba(248, 250, 252, 0.95));
  --ww-card-bg: #FFFFFF;
  --ww-card-hover: #F1F5F9;
  --ww-border: rgba(0, 0, 0, 0.08);
  --ww-border-focus: rgba(124, 58, 237, 0.5);
  
  --ww-text-main: #1E293B;
  --ww-text-dim: #64748B;
  
  --ww-accent-primary: #7C3AED;
  --ww-accent-primary-hover: #6D28D9;
  --ww-accent-gradient: linear-gradient(135deg, #8B5CF6 0%, #EC4899 100%);
  --ww-accent-gradient-hover: linear-gradient(135deg, #7C3AED 0%, #DB2777 100%);
  --ww-accent-secondary: #059669;
  
  --ww-good: #059669;
  --ww-bad: #DC2626;
  
  --ww-shadow-card: 0 4px 20px rgba(0, 0, 0, 0.05);
  --ww-shadow-glow: 0 0 15px rgba(124, 58, 237, 0.2);
  
  --ww-radius-sm: 8px;
  --ww-radius-md: 14px;
  --ww-radius-lg: 20px;
  --ww-radius-xl: 28px;
  
  --ww-transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* --- 全局与重置 --- */
#ww-overlay {
  position: fixed; inset: 0; z-index: 20000;
  display: none;
  justify-content: center;
  background: var(--ww-bg-base);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
  animation: fadeIn 0.3s ease;
}
#ww-overlay.ww-show { display: flex; }

.ww-app {
  width: 100%; max-width: 460px;
  height: 100%;
  background: var(--ww-bg-base);
  color: var(--ww-text-main);
  display: flex; flex-direction: column; position: relative; overflow: hidden;
  box-shadow: 0 0 40px rgba(0,0,0,0.1);
}
@media (min-width: 461px) {
  .ww-app {
    border-radius: var(--ww-radius-xl); /* 桌面端呈现为圆角卡片 */
    height: 95vh;
    margin: auto 0;
    border: 1px solid var(--ww-border);
  }
}

.ww-app * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

/* 滚动条美化 */
.ww-app ::-webkit-scrollbar { width: 6px; }
.ww-app ::-webkit-scrollbar-track { background: transparent; }
.ww-app ::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 10px; }
.ww-app ::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.25); }

/* --- 动画关键帧 --- */
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes popIn { 0% { opacity: 0; transform: scale(0.95); } 100% { opacity: 1; transform: scale(1); } }

/* --- 顶部栏 --- */
.ww-topbar {
  min-height: 44px; 
  padding: 6px 16px; 
  background: rgba(255, 255, 255, 0.8);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--ww-border); 
  display: flex; align-items: center; justify-content: space-between; gap: 8px; 
  position: relative;
  z-index: 10;
}
.ww-back-btn { 
  font-size: 15px; color: var(--ww-text-main); background: none; border: none; padding: 4px 8px 4px 0; 
  display: flex; align-items: center; gap: 4px; flex-shrink: 0; 
  transition: var(--ww-transition); font-weight: 500; cursor: pointer;
}
.ww-back-btn:hover { color: var(--ww-accent-primary-hover); transform: translateX(-2px); }

.ww-topbar .ww-title { 
  font-size: 17px; font-weight: 700; color: transparent; 
  background: var(--ww-accent-gradient); -webkit-background-clip: text; background-clip: text;
  flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; 
  border: none; padding: 0; cursor: pointer;
}

.ww-topbar .ww-right { display: flex; gap: 8px; align-items: center; flex-shrink: 0; }
.ww-icon-btn { 
  font-size: 13px; font-weight: 500; color: var(--ww-text-dim); 
  background: var(--ww-card-bg); border: 1px solid var(--ww-border); 
  border-radius: var(--ww-radius-md); padding: 7px 10px; 
  white-space: nowrap; transition: var(--ww-transition); cursor: pointer;
}
.ww-icon-btn:hover { background: var(--ww-card-hover); color: var(--ww-accent-primary); transform: translateY(-1px); }
/* "🗂️ 世界"按钮上的红点：当前世界的基础设定还没填全时亮起 */
.ww-icon-btn { position: relative; }
.ww-icon-btn.ww-attn::after {
  content: ''; position: absolute; top: -3px; right: -3px; width: 10px; height: 10px;
  border-radius: 50%; background: var(--ww-bad); box-shadow: 0 0 0 2px var(--ww-bg-base);
}

/* --- 主容器 --- */
.ww-screen { flex: 1; display: none; flex-direction: column; min-height: 0; background: var(--ww-bg-base); }
.ww-screen.ww-active { display: flex; animation: slideUp 0.3s ease; }

/* 创造世界面板 */
#ww-screen-create { overflow: hidden; padding: 0; } /* 内部分成三个子页签，各子页自己滚动（探索页的聊天区需要撑满剩余高度） */
#ww-worldInfoBody { flex: none; } /* 创造页主页面内容容器（id 沿用旧名），不让 flex 容器把它压缩 */
.ww-card { 
  background: var(--ww-panel-gradient); border: 1px solid var(--ww-border); 
  border-radius: var(--ww-radius-lg); padding: 16px; margin-bottom: 16px; 
  font-size: 14px; box-shadow: var(--ww-shadow-card); transition: var(--ww-transition);
}
.ww-card:hover { border-color: rgba(255,255,255,0.2); }

/* 基础表单标签 */
.ww-card label, .ww-field-label { 
  font-size: 12px; font-weight: 600; color: var(--ww-text-dim); margin-bottom: 6px; display: block; letter-spacing: 0.5px; 
}
.ww-card input.ww-edit-field, .ww-card textarea, .ww-card .ww-edit-field,
.ww-entry-edit input.ww-edit-field, .ww-entry-edit textarea, .ww-entry-edit .ww-edit-field,
#ww-customParams input, #ww-customParams textarea,
#ww-newEntryCard input.ww-edit-field, #ww-newEntryCard textarea, #ww-newEntryCard .ww-edit-field,
.ww-card select.ww-edit-field, .ww-entry-edit select.ww-edit-field, #ww-newEntryCard select.ww-edit-field { 
  width: 100%; background: #F1F5F9; border: 1px solid var(--ww-border); 
  color: var(--ww-text-main); font-size: 14px; border-radius: var(--ww-radius-md); 
  padding: 10px 14px; margin-top: 0; resize: vertical; min-height: 44px; transition: var(--ww-transition);
}
.ww-card select.ww-edit-field, .ww-entry-edit select.ww-edit-field, #ww-newEntryCard select.ww-edit-field {
  appearance: none;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23A0AEC0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 16px;
  padding-right: 36px;
}
.ww-card input.ww-edit-field:focus, .ww-card textarea:focus,
.ww-entry-edit input.ww-edit-field:focus, .ww-entry-edit textarea:focus,
#ww-customParams input:focus, #ww-customParams textarea:focus,
#ww-newEntryCard input.ww-edit-field:focus, #ww-newEntryCard textarea:focus,
.ww-card select.ww-edit-field:focus, .ww-entry-edit select.ww-edit-field:focus, #ww-newEntryCard select.ww-edit-field:focus {
  border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); outline: none; background: #FFFFFF;
}

.ww-relations-block { margin-top: 16px; }
.ww-relation-row { display: flex; gap: 8px; margin-bottom: 8px; align-items: center; }
.ww-relation-row select.ww-rel-target { flex: 1.5; }
.ww-relation-row input.ww-rel-label { flex: 2; }
.ww-relation-row .ww-rel-remove { background: none; border: none; color: var(--ww-text-dim); font-size: 18px; cursor: pointer; padding: 4px; border-radius: 4px; transition: var(--ww-transition); display: flex; align-items: center; justify-content: center; }
.ww-relation-row .ww-rel-remove:hover { color: var(--ww-bad); background: rgba(239, 68, 68, 0.15); }

.ww-canon-group-title { font-size: 13px; font-weight: 600; color: var(--ww-text-main); margin: 0 0 12px; display:flex; justify-content:space-between; align-items:center; }
.ww-link-btn { color: var(--ww-accent-primary-hover); font-size: 13px; font-weight: 500; background: none; border: none; padding: 4px 6px; cursor: pointer; transition: var(--ww-transition); }
.ww-link-btn:hover { filter: brightness(1.2); text-decoration: underline; }

/* 主要按钮样式 */
.ww-btn-primary { 
  width: 100%; background: var(--ww-accent-gradient); color: #FFF; 
  border: none; padding: 14px 0; border-radius: var(--ww-radius-md); 
  font-size: 15px; font-weight: 600; cursor: pointer; 
  box-shadow: 0 4px 15px rgba(236, 72, 153, 0.3); transition: var(--ww-transition);
  letter-spacing: 0.5px;
}
.ww-btn-primary:hover:not(:disabled) { 
  background: var(--ww-accent-gradient-hover); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(236, 72, 153, 0.5); 
}
.ww-btn-primary:disabled { opacity: 0.5; cursor: not-allowed; filter: grayscale(1); box-shadow: none; }

.ww-save, button.ww-accept, button.ww-save {
  background: rgba(16, 185, 129, 0.15) !important; border: 1px solid var(--ww-good) !important; color: var(--ww-good) !important; font-weight: 600;
}
.ww-save:hover, button.ww-accept:hover, button.ww-save:hover { background: var(--ww-good) !important; color: #000 !important; }

button.ww-discard, button.ww-delete { background: rgba(239, 68, 68, 0.15) !important; border: 1px solid var(--ww-bad) !important; color: var(--ww-bad) !important; font-weight: 600; }
button.ww-discard:hover, button.ww-delete:hover { background: var(--ww-bad) !important; color: #FFF !important; }

.ww-mode-banner { 
  margin: 10px 20px 0; font-size: 12.5px; font-weight: 500; color: var(--ww-accent-primary-hover); 
  background: rgba(139, 92, 246, 0.1); border: 1px solid rgba(139, 92, 246, 0.2); 
  border-radius: var(--ww-radius-md); padding: 4px 12px; text-align: center; 
}

/* --- 聊天对话区 (探索 & AI) --- */
.ww-chat { flex: 1; overflow-y: auto; padding: 16px 20px; display: flex; flex-direction: column; gap: 14px; }
.ww-msg { max-width: 85%; padding: 12px 16px; border-radius: 18px; font-size: 14.5px; line-height: 1.6; animation: popIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.ww-msg.ww-user { 
  margin-left: auto; background: var(--ww-accent-gradient); color: #FFF; 
  border-bottom-right-radius: 4px; white-space: pre-wrap; box-shadow: 0 4px 15px rgba(236, 72, 153, 0.2);
}
.ww-msg.ww-ai { 
  background: var(--ww-panel-gradient); border: 1px solid var(--ww-border); 
  border-bottom-left-radius: 4px; color: var(--ww-text-main); box-shadow: 0 2px 10px rgba(0,0,0,0.2);
}
.ww-msg.ww-sys { color: var(--ww-text-dim); font-size: 12.5px; text-align: center; max-width: 100%; font-weight: 500; background: none; border: none; box-shadow: none; margin: 4px 0; }

/* Markdown 渲染优化 */
.ww-md p { margin: 0 0 10px; } .ww-md p:last-child { margin-bottom: 0; }
.ww-md ul, .ww-md ol { margin: 6px 0 10px; padding-left: 22px; }
.ww-md li { margin-bottom: 4px; }
.ww-md strong { color: var(--ww-accent-primary-hover); font-weight: 600; }
.ww-md h1, .ww-md h2, .ww-md h3 { font-size: 16px; margin: 12px 0 8px; color: var(--ww-accent-primary-hover); }
.ww-md code { background: rgba(255,255,255,0.1); padding: 2px 6px; border-radius: 4px; font-size: 13px; font-family: monospace; }
.ww-wikilink { color: var(--ww-accent-primary-hover); border-bottom: 1px dashed var(--ww-accent-primary-hover); cursor: pointer; padding: 0 2px; transition: var(--ww-transition); }
.ww-wikilink:hover { background: rgba(139, 92, 246, 0.15); border-radius: 3px; }

/* 输入区 (Composer) */
.ww-composer { 
  display: flex; padding: 12px 20px; padding-bottom: max(16px, env(safe-area-inset-bottom)); 
  border-top: 1px solid var(--ww-border); gap: 10px; background: rgba(255, 255, 255, 0.9);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.ww-composer input { 
  flex: 1; background: var(--ww-card-bg) !important; border: 1px solid var(--ww-border); 
  color: var(--ww-text-main) !important; padding: 12px 18px; border-radius: 24px; font-size: 14.5px; 
  transition: var(--ww-transition); color-scheme: light;
}
.ww-composer input:focus { border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); outline: none; background: var(--ww-card-bg) !important; color: var(--ww-text-main) !important; }
.ww-composer button { 
  background: var(--ww-accent-gradient); border: none; color: #FFF; width: 46px; height: 46px; 
  border-radius: 50%; font-size: 18px; cursor: pointer; transition: var(--ww-transition); 
  display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 15px rgba(236, 72, 153, 0.3);
}
.ww-composer button:hover { transform: scale(1.05) translateY(-2px); box-shadow: 0 6px 20px rgba(236, 72, 153, 0.5); }
.ww-composer button:active { transform: scale(0.95); }

/* --- 抽屉 (Drawers) --- */
.ww-drawer-mask { position: absolute; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(4px); display: none; z-index: 5; opacity: 0; transition: opacity 0.3s ease; }
.ww-drawer-mask.ww-show { display: block; opacity: 1; }
.ww-drawer { 
  position: absolute; left: 0; right: 0; bottom: 0; 
  background: var(--ww-panel-gradient); border-top: 1px solid var(--ww-border);
  border-top-left-radius: 24px; border-top-right-radius: 24px; max-height: 85%; 
  transform: translateY(100%); transition: transform 0.4s cubic-bezier(0.3, 1, 0.4, 1); 
  z-index: 6; display: flex; flex-direction: column; box-shadow: 0 -4px 20px rgba(0,0,0,0.08);
}
.ww-drawer.ww-show { transform: translateY(0); }
.ww-drawer-handle { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px 12px; color: var(--ww-text-main); font-size: 15px; font-weight: 700; border-bottom: 1px solid rgba(255,255,255,0.05); }
.ww-drawer-body { overflow-y: auto; padding: 16px 20px 24px; }

/* 抽屉内的条目卡片 */
.ww-entry-card { background: var(--ww-card-bg); border: 1px solid var(--ww-border); border-radius: var(--ww-radius-lg); margin-bottom: 10px; overflow: hidden; transition: var(--ww-transition); }
.ww-entry-card:hover { border-color: rgba(255,255,255,0.2); }
.ww-entry-card.ww-focus { border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); }
.ww-entry-collapsed { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; cursor: pointer; }
.ww-entry-name { font-size: 14.5px; font-weight: 600; }
.ww-entry-preview { font-size: 12px; color: var(--ww-text-dim); margin-top: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ww-expand-arrow { font-size: 12px; color: var(--ww-text-dim); background: rgba(0,0,0,0.05); border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border: none; flex-shrink: 0; transition: var(--ww-transition); }
.ww-entry-collapsed:hover .ww-expand-arrow { background: rgba(0,0,0,0.1); color: var(--ww-text-main); }
.ww-entry-edit { padding: 0 16px 16px; border-top: 1px solid var(--ww-border); margin-top: 8px; padding-top: 12px; }
.ww-entry-rendered { font-size: 13px; color: var(--ww-text-main); background: #F1F5F9; border-radius: var(--ww-radius-md); padding: 12px; margin-top: 10px; line-height: 1.6; }

/* 卡片按钮 */
.ww-card .ww-actions, .ww-entry-edit .ww-actions, #ww-newEntryCard .ww-actions { display: flex; gap: 8px; margin-top: 14px; }
.ww-card button, .ww-entry-edit button, #ww-newEntryCard button.ww-delete, #ww-newEntryCard button.ww-save { flex:1; font-size: 13px; font-weight: 500; padding: 4px 0; border-radius: var(--ww-radius-sm); border: 1px solid var(--ww-border); background: var(--ww-card-bg); color: var(--ww-text-main); cursor: pointer; transition: var(--ww-transition); }
.ww-card button:hover, .ww-entry-edit button:hover, #ww-newEntryCard button.ww-delete:hover, #ww-newEntryCard button.ww-save:hover { background: var(--ww-card-hover); border-color: rgba(255,255,255,0.2); }
.ww-card.ww-accepted { opacity: 0.6; filter: grayscale(0.5); }

/* 类型选择 Chip */
.ww-type-section-title { font-size: 14px; font-weight: 700; color: var(--ww-text-main); margin: 16px 0 10px; padding-bottom: 6px; border-bottom: 1px solid rgba(255,255,255,0.05); }
.ww-type-section-title .ww-count { color: var(--ww-text-dim); font-weight: 500; font-size: 12px; margin-left: 6px; }
.ww-type-picker { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.ww-type-chip { font-size: 12px; font-weight: 500; padding: 6px 14px; border-radius: 20px; border: 1px solid var(--ww-border); background: var(--ww-card-bg); color: var(--ww-text-dim); cursor: pointer; transition: var(--ww-transition); }
.ww-type-chip:hover { border-color: rgba(255,255,255,0.3); color: var(--ww-text-main); }
.ww-type-chip.ww-active { border-color: var(--ww-accent-primary); color: var(--ww-accent-primary-hover); background: rgba(124, 58, 237, 0.1); box-shadow: 0 2px 10px rgba(139, 92, 246, 0.2); }

/* 风格选择列表 */
.ww-style-option { display: block; width: 100%; text-align: left; background: var(--ww-card-bg); border: 1px solid var(--ww-border); border-radius: var(--ww-radius-lg); padding: 14px 16px; margin-bottom: 10px; color: var(--ww-text-main); cursor: pointer; transition: var(--ww-transition); }
.ww-style-option:hover { background: var(--ww-card-hover); transform: translateX(2px); }
.ww-style-option .ww-style-name { font-size: 15px; font-weight: 600; margin-bottom: 4px; }
.ww-style-option .ww-style-desc { font-size: 12.5px; color: var(--ww-text-dim); }
.ww-style-option.ww-active { border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); background: rgba(139, 92, 246, 0.05); }
.ww-style-option.ww-active .ww-style-name { color: var(--ww-accent-primary-hover); }

/* 世界列表项 */
.ww-world-item { display:flex; align-items:center; justify-content:space-between; background: var(--ww-card-bg); border:1px solid var(--ww-border); border-radius: var(--ww-radius-lg); padding: 14px 16px; margin-bottom: 10px; transition: var(--ww-transition); }
.ww-world-item:hover { border-color: rgba(255,255,255,0.2); background: var(--ww-card-hover); }
.ww-world-item .ww-info { flex:1; overflow:hidden; }
.ww-world-item .ww-name { font-size: 15px; font-weight: 600; margin-bottom: 4px; }
.ww-world-item .ww-status { font-size: 12px; color: var(--ww-text-dim); }
.ww-world-item .ww-ops { display:flex; gap:8px; }
.ww-world-item button { font-size: 13px; font-weight: 500; padding: 6px 14px; border-radius: var(--ww-radius-sm); border: 1px solid var(--ww-border); background: rgba(0,0,0,0.05); color: var(--ww-text-main); cursor: pointer; transition: var(--ww-transition); }
.ww-world-item button:hover { background: rgba(0,0,0,0.1); }
.ww-world-item button.ww-enter { border-color: var(--ww-accent-primary); color: var(--ww-accent-primary-hover); background: rgba(139, 92, 246, 0.1); }
.ww-world-item button.ww-enter:hover { background: var(--ww-accent-primary); color: #FFF; box-shadow: var(--ww-shadow-glow); }
.ww-world-item button.ww-del { border-color: rgba(239, 68, 68, 0.4); color: var(--ww-bad); }
.ww-world-item button.ww-del:hover { background: var(--ww-bad); color: #FFF; }
.ww-world-item .ww-ops button { padding: 6px 10px; } /* 现在每行有三个按钮（编辑/进入/删除），收紧内边距避免窄屏换行 */
.ww-world-item button.ww-edit { border-color: rgba(0, 0, 0, 0.1); }

/* 世界列表里的标记：当前 / 待完善（基础设定没填全），以及正在编辑中的条目高亮 */
.ww-tag { display: inline-block; font-size: 11px; font-weight: 600; padding: 1px 8px; border-radius: 10px; margin: 0 6px 2px 0; }
.ww-tag-cur { color: var(--ww-accent-primary-hover); background: rgba(139, 92, 246, 0.15); border: 1px solid rgba(139, 92, 246, 0.4); }
.ww-tag-warn { color: #F59E0B; background: rgba(245, 158, 11, 0.12); border: 1px solid rgba(245, 158, 11, 0.4); }
.ww-world-block.ww-editing > .ww-world-item { border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); }
.ww-world-block .ww-world-edit { margin: -2px 0 12px; }

/* --- 底部 Tabbar --- */
.ww-tabbar { 
  display: flex; border-top: 1px solid var(--ww-border); 
  background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  padding-bottom: max(10px, env(safe-area-inset-bottom)); 
}
.ww-tabbar .ww-tab { 
  flex: 1; text-align: center; padding: 6px 0 4px; font-size: 12px; font-weight: 600; 
  color: var(--ww-text-dim); position: relative; cursor: pointer; transition: var(--ww-transition); 
}
.ww-tabbar .ww-tab .ww-icon { font-size: 18px; display: block; margin-bottom: 2px; transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); }
.ww-tabbar .ww-tab:hover { color: var(--ww-text-main); }
.ww-tabbar .ww-tab:hover .ww-icon { transform: scale(1.15) translateY(-2px); }
.ww-tabbar .ww-tab.ww-active { color: var(--ww-accent-primary-hover); background: linear-gradient(to top, rgba(124, 58, 237, 0.1) 0%, transparent 100%); }
.ww-tabbar .ww-tab.ww-active::before { content: ''; position: absolute; top: 0; left: 15%; right: 15%; height: 3px; background: var(--ww-accent-primary-hover); box-shadow: 0 0 10px var(--ww-accent-primary-hover); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; }
.ww-tabbar .ww-tab.ww-active .ww-icon { filter: drop-shadow(0 0 12px rgba(139, 92, 246, 0.9)); transform: scale(1.2) translateY(-2px); }
.ww-tabbar .ww-tab.ww-locked::after { 
  content: '🔒'; position: absolute; top: 8px; right: 28%; font-size: 10px; 
  background: rgba(0,0,0,0.5); border-radius: 50%; padding: 2px;
}

/* --- 其他细微控制 --- */
.ww-custom-row { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; }
.ww-custom-row input.ww-cf-key { flex: 1; }
.ww-custom-row input.ww-cf-value { flex: 2; }
.ww-custom-row button.ww-cf-remove { flex: 0 0 auto; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-color: rgba(239, 68, 68, 0.4); color: var(--ww-bad); border-radius: var(--ww-radius-sm); border: 1px solid; background: rgba(239, 68, 68, 0.1); font-size: 16px; cursor: pointer; transition: var(--ww-transition); }
.ww-custom-row button.ww-cf-remove:hover { background: var(--ww-bad); color: #FFF; }

.ww-relation-row { display: flex; gap: 8px; margin-bottom: 10px; }
.ww-relation-row select.ww-rel-target { flex: 2; background: #F1F5F9; border: 1px solid var(--ww-border); color: var(--ww-text-main); border-radius: var(--ww-radius-md); padding: 10px; outline: none; }
.ww-relation-row input.ww-rel-label { flex: 1.5; }
.ww-relation-row button.ww-rel-remove { flex: 0 0 auto; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-color: rgba(239, 68, 68, 0.4); color: var(--ww-bad); border-radius: var(--ww-radius-sm); border: 1px solid; background: rgba(239, 68, 68, 0.1); font-size: 16px; cursor: pointer; }
.ww-relation-row button.ww-rel-remove:hover { background: var(--ww-bad); color: #FFF; }

.ww-relations-display { font-size: 12.5px; color: var(--ww-text-dim); margin-top: 8px; line-height: 1.8; background: rgba(0,0,0,0.15); padding: 10px 12px; border-radius: var(--ww-radius-md); }
.ww-relations-display .ww-wikilink { color: var(--ww-accent-primary-hover); font-weight: 500; }
.ww-rel-count { font-size: 11px; color: var(--ww-accent-primary); margin-left: 6px; font-weight: 600; background: rgba(139, 92, 246, 0.15); padding: 2px 6px; border-radius: 10px; }

/* 素材库卡片 */
.ww-lib-bar { display: flex; gap: 8px; flex-wrap: wrap; margin: 12px 0 4px; }
.ww-lib-bar button { font-size: 13px; font-weight: 500; padding: 6px 14px; border-radius: 20px; border: 1px solid var(--ww-accent-primary); background: rgba(139, 92, 246, 0.1); color: var(--ww-accent-primary-hover); cursor: pointer; transition: var(--ww-transition); }
.ww-lib-bar button:hover { background: var(--ww-accent-primary); color: #FFF; box-shadow: var(--ww-shadow-glow); }
.ww-lib-hint { color: var(--ww-text-dim); font-size: 12.5px; padding: 8px 2px; line-height: 1.6; }
.ww-pack-title { font-size: 15px; font-weight: 600; color: var(--ww-text-main); }
.ww-pack-off { font-size: 11px; color: var(--ww-bad); border: 1px solid var(--ww-bad); border-radius: 4px; padding: 1px 6px; margin-left: 6px; font-weight: 500; background: rgba(239, 68, 68, 0.1); }
.ww-pack-meta { font-size: 12px; color: var(--ww-text-dim); margin-top: 4px; }
.ww-pack-desc { font-size: 13.5px; margin-top: 8px; line-height: 1.6; color: var(--ww-text-main); }
.ww-pack-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.ww-pack-tags span { font-size: 11px; color: var(--ww-accent-secondary); border: 1px solid rgba(5, 150, 105, 0.3); border-radius: 12px; padding: 3px 10px; background: rgba(5, 150, 105, 0.1); }
.ww-pack-license { font-size: 12px; color: var(--ww-text-dim); margin-top: 12px; padding: 10px 12px; background: #F1F5F9; border-radius: var(--ww-radius-md); line-height: 1.6; border: 1px solid var(--ww-border); }
.ww-pack-entry-text { font-size: 13px; line-height: 1.7; margin-top: 6px; color: var(--ww-text-main); }
.ww-pick-row { display: flex; align-items: center; gap: 10px; padding: 10px 6px; font-size: 14px; border-bottom: 1px solid rgba(255,255,255,0.05); }
.ww-pick-row input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--ww-accent-primary); cursor: pointer; }
.ww-pick-row .ww-pick-type { color: var(--ww-accent-primary-hover); font-size: 12px; font-weight: 500; background: rgba(139, 92, 246, 0.1); padding: 2px 6px; border-radius: 4px; }

/* 勾选框区域点击 */
.ww-pick-card { display: flex; gap: 12px; align-items: flex-start; cursor: pointer; padding: 6px; border-radius: var(--ww-radius-sm); transition: var(--ww-transition); }
.ww-pick-card:hover { background: rgba(255,255,255,0.03); }
.ww-pick-card > input[type=checkbox] { flex: none; margin: 4px 0 0; width: 18px; height: 18px; accent-color: var(--ww-accent-primary); pointer-events: none; }
.ww-pick-card .ww-pick-body { flex: 1; min-width: 0; }

/* 禁用状态 */
.ww-actions .ww-save:disabled { opacity: 0.5; cursor: not-allowed; }
.ww-manage-card { cursor: default; align-items: center; }
.ww-manage-card button.ww-manage-remove { flex: 0 0 auto; width: auto; padding: 8px 14px; font-size: 13px; font-weight: 600; }

/* --- 探索页：对话对象切换条（向导 / 世界里的人物）与发言人标签 --- */
.ww-target-bar { display: flex; gap: 8px; align-items: center; padding: 12px 20px 0; overflow-x: auto; flex-shrink: 0; scrollbar-width: none; }
.ww-target-bar::-webkit-scrollbar { display: none; }
.ww-target-chip { flex: none; font-size: 13px; font-weight: 500; padding: 7px 16px; border-radius: 20px; border: 1px solid var(--ww-border); background: var(--ww-card-bg); color: var(--ww-text-dim); cursor: pointer; transition: var(--ww-transition); white-space: nowrap; }
.ww-target-chip:hover { border-color: rgba(255,255,255,0.3); color: var(--ww-text-main); }
.ww-target-chip.ww-active { border-color: var(--ww-accent-primary); color: var(--ww-accent-primary-hover); background: rgba(124, 58, 237, 0.1); box-shadow: 0 2px 10px rgba(139, 92, 246, 0.2); }
.ww-target-hint { flex: 1; min-width: 0; font-size: 12px; color: var(--ww-text-dim); line-height: 1.5; }
.ww-speaker { font-size: 11.5px; font-weight: 600; color: var(--ww-accent-primary-hover); margin-bottom: 4px; letter-spacing: 0.3px; }
#ww-exploreBanner .ww-link-btn { margin-left: 6px; padding: 0 4px; }

/* --- 创造页：自定义参数卡片（收起时是参数名小标签，展开是编辑器） --- */
.ww-params-head { cursor: pointer; margin: 0 0 10px; }
.ww-params-toggle { font-size: 12px; font-weight: 500; color: var(--ww-accent-primary-hover); }
.ww-param-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ww-param-chip { font-size: 12px; color: var(--ww-text-main); border: 1px solid rgba(139, 92, 246, 0.35); background: rgba(139, 92, 246, 0.1); border-radius: 12px; padding: 3px 10px; line-height: 1.5; }
.ww-param-chip b { font-weight: 600; color: var(--ww-accent-primary-hover); }

/* --- 创造页内部子页签：设定大纲 / 自定义参数 / 探索我的世界 --- */
.ww-subtabs { display: flex; gap: 6px; padding: 10px 16px; flex-shrink: 0; border-bottom: 1px solid var(--ww-border); background: rgba(255, 255, 255, 0.6); }
.ww-subtab { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; padding: 8px 4px; border-radius: var(--ww-radius-md); border: 1px solid var(--ww-border); background: var(--ww-card-bg); color: var(--ww-text-dim); cursor: pointer; transition: var(--ww-transition); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ww-subtab:hover { color: var(--ww-text-main); }
.ww-subtab.ww-active { border-color: var(--ww-accent-primary); color: var(--ww-accent-primary-hover); background: rgba(124, 58, 237, 0.1); box-shadow: 0 2px 10px rgba(139, 92, 246, 0.2); }
.ww-subtab.ww-locked { opacity: 0.55; }
.ww-subtab.ww-locked::after { content: ' \1F512'; font-size: 10px; }
.ww-subpane { display: none; flex: 1; min-height: 0; flex-direction: column; }
.ww-subpane.ww-active { display: flex; }
#ww-pane-outline, #ww-pane-params { overflow-y: auto; padding: 16px 20px 24px; }
#ww-pane-outline > *, #ww-pane-params > * { flex: none; }
@media (max-width: 400px) { .ww-subtab { font-size: 12px; padding: 8px 2px; } }

/* 世界列表：按钮变多（公开/编辑/复制/进入/删除）时允许换行，名称区保留最小宽度 */
.ww-world-item { flex-wrap: wrap; gap: 8px 12px; }
.ww-world-item .ww-info { flex: 1 1 140px; min-width: 0; }
.ww-world-item .ww-ops { flex-wrap: wrap; justify-content: flex-end; }
.ww-world-item button.ww-copy { border-color: rgba(5, 150, 105, 0.4); color: var(--ww-accent-secondary); }
.ww-world-item button.ww-copy:hover { background: var(--ww-accent-secondary); color: #FFF; }

/* --- Dropdown Menu --- */
.ww-dropdown-menu {
  display: none;
  position: absolute;
  top: calc(100% + 4px);
  right: 0;
  background: var(--ww-bg-base);
  border: 1px solid var(--ww-border);
  border-radius: var(--ww-radius-md);
  padding: 6px;
  min-width: 140px;
  flex-direction: column;
  gap: 4px;
  z-index: 100;
  box-shadow: var(--ww-shadow-card);
  animation: slideDown 0.2s ease;
}
.ww-dropdown-menu.ww-show { display: flex; }
.ww-menu-item {
  background: transparent;
  border: none;
  color: var(--ww-text-main);
  padding: 10px 12px;
  text-align: left;
  border-radius: var(--ww-radius-sm);
  cursor: pointer;
  font-size: 14px;
  transition: var(--ww-transition);
}
.ww-menu-item:hover {
  background: var(--ww-card-hover);
}


/* Tree View Styles */
.ww-tree-section { margin-bottom: 24px; }
.ww-tree-section-title { font-size: 16px; font-weight: 600; color: var(--ww-text-main); margin-bottom: 8px; display: flex; align-items: center; gap: 8px; }
.ww-tree-row { padding: 4px 12px; cursor: pointer; border-radius: 8px; transition: background 0.15s; margin-bottom: 2px; }
.ww-tree-row:hover { background: rgba(0, 0, 0, 0.04); }
.ww-tree-row-content { display: flex; align-items: center; gap: 8px; }
.ww-tree-type { font-size: 12px; color: var(--ww-text-dim); }
.ww-tree-name { font-size: 14px; font-weight: 500; color: var(--ww-text-main); }
.ww-tree-core { color: var(--ww-accent-primary); font-weight: 600; }
.ww-tree-badges { display: flex; gap: 6px; margin-left: auto; }
.ww-badge { font-size: 11px; padding: 2px 6px; border-radius: 4px; background: rgba(0,0,0,0.05); color: var(--ww-text-dim); }
.ww-badge-child { background: rgba(59, 130, 246, 0.1); color: #3b82f6; }
.ww-badge-rel { background: rgba(16, 185, 129, 0.1); color: #10b981; }
.ww-badge-warn { background: rgba(239, 68, 68, 0.1); color: #ef4444; }
@keyframes ww-fade-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }

/* NEW OUTLINE BG */
#ww-worldInfoBody {
    background: rgba(0,0,0,0.015);
    border: 1px solid var(--ww-border);
    border-radius: 8px;
    padding: 16px;
    margin-top: 0;
}
.ww-suggestion-chip:hover {
    background: rgba(0,0,0,0.05);
}

#ww-libMenuDropdown button:hover { background: rgba(0,0,0,0.05) !important; filter: none !important; text-decoration: none !important; color: var(--ww-accent-primary) !important; }

/* --- 弹窗与移动端适配 --- */
.ww-modal-overlay {
  position: fixed; top: 0; left: 0; width: 100%; height: 100%;
  background: rgba(0,0,0,0.5); z-index: 30000;
  display: flex; align-items: center; justify-content: center;
  padding: 20px; box-sizing: border-box; overflow-y: auto;
}
.ww-detail-view {
  width: 100%; max-width: 420px; max-height: 85vh; overflow-y: auto;
  background: var(--ww-bg-base); border-radius: 12px; padding: 20px;
  box-shadow: 0 10px 30px rgba(0,0,0,0.2); animation: ww-fade-in 0.2s ease-out;
  position: relative; box-sizing: border-box;
}
.ww-dialog {
  background: var(--ww-card-bg, #fff); color: var(--ww-text-main, #333);
  border-radius: 12px; width: 90%; max-width: 500px; max-height: 85vh; overflow-y: auto;
  box-shadow: 0 10px 40px rgba(0,0,0,0.2); display: flex; flex-direction: column;
  box-sizing: border-box;
}
.ww-dialog.ww-large { max-width: 600px; }

@media (max-width: 600px) {
  .ww-modal-overlay { padding: 4px; }
  .ww-detail-view { padding: 12px; border-radius: 8px; max-height: 98vh; }
  .ww-dialog { width: 98%; padding: 12px; border-radius: 8px; }
  .ww-field-label { font-size: 13px; margin-bottom: 4px; }
  .ww-edit-field, .ww-card textarea { font-size: 14px; padding: 6px; width: 100%; box-sizing: border-box; }
  .ww-entry-card { padding: 10px; margin-bottom: 10px; }
  .ww-actions button { padding: 6px 10px; font-size: 13px; margin-bottom: 4px; }
  .ww-canon-group-title { margin-bottom: 8px; font-size: 14px; }
  .ww-btn, .ww-save { padding: 8px; font-size: 14px; }
  /* Make sure flex layouts wrap correctly on mobile */
  .ww-actions { flex-wrap: wrap; }
}

/* ===== v2.4 封面图标（emoji）：世界 / 设定 / 参数 ===== */
.ww-cover { display: inline-block; margin-right: 4px; font-style: normal; }
.ww-tree-name .ww-cover, .ww-param-chip .ww-cover, .ww-target-chip .ww-cover { margin-right: 3px; }
/* 覆盖 .ww-card button / .ww-entry-edit button 的 flex:1，否则图标按钮会被拉宽 */
.ww-cover-btn, .ww-card .ww-cover-btn, .ww-entry-edit .ww-cover-btn {
  flex: 0 0 auto; width: auto; min-width: 44px; height: 44px; padding: 0 10px; margin: 0;
  font-size: 22px; line-height: 1; cursor: pointer; border-radius: 10px;
  border: 1px solid var(--ww-border, rgba(0,0,0,0.15)); background: var(--ww-card-bg, #fff);
}
.ww-cover-btn.ww-empty { font-size: 12px; color: var(--ww-text-dim, #888); border-style: dashed; }
.ww-custom-row .ww-cover-btn { height: auto; align-self: stretch; min-width: 40px; }
.ww-cover-picker-mask {
  position: fixed; inset: 0; z-index: 100000; background: rgba(0,0,0,0.45);
  display: flex; align-items: center; justify-content: center; padding: 16px;
}
.ww-cover-picker {
  width: min(360px, 94vw); max-height: 80vh; overflow-y: auto; padding: 16px; border-radius: 14px;
  background: var(--ww-card-bg, #fff); color: var(--ww-text-main, #222); box-shadow: 0 10px 40px rgba(0,0,0,0.3);
}
.ww-cover-picker-title { font-weight: 700; margin-bottom: 10px; }
.ww-cover-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(40px, 1fr)); gap: 6px; }
.ww-cover-grid .ww-cover-opt { flex: none; height: 40px; padding: 0; font-size: 22px; line-height: 1; cursor: pointer; border-radius: 8px; border: 1px solid transparent; background: rgba(0,0,0,0.04); }
.ww-cover-grid .ww-cover-opt:hover { border-color: var(--ww-accent-primary, #6C3EE8); }
.ww-cover-custom { display: flex; gap: 8px; margin-top: 12px; }
.ww-cover-custom input { flex: 1; min-width: 0; padding: 8px; font-size: 16px; border: 1px solid var(--ww-border, rgba(0,0,0,0.2)); border-radius: 8px; background: transparent; color: inherit; }
.ww-cover-custom button, .ww-cover-ops button { padding: 8px 14px; cursor: pointer; border-radius: 8px; border: 1px solid var(--ww-border, rgba(0,0,0,0.2)); background: transparent; color: inherit; }
.ww-cover-ops { display: flex; justify-content: space-between; margin-top: 12px; }

/* ===== v2.5 上传图片封面（列表用 96px 缩略图，详情预览用原图版） ===== */
.ww-cover-img { width: 1.35em; height: 1.35em; object-fit: cover; border-radius: 4px; vertical-align: -0.3em; margin-right: 4px; background: rgba(0,0,0,0.05); }
.ww-cover-btn .ww-cover-img { width: 32px; height: 32px; margin: 0; display: block; vertical-align: top; border-radius: 6px; }
.ww-cover-btn:has(.ww-cover-img) { padding: 4px; min-width: 40px; }
.ww-cover-full { max-width: 100%; max-height: 220px; border-radius: 10px; object-fit: contain; background: rgba(0,0,0,0.03); }
.ww-cover-upload { margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px dashed var(--ww-border, rgba(0,0,0,0.15)); }
.ww-cover-upload #ww-cover-upload-btn { width: 100%; padding: 10px; font-size: 15px; font-weight: 600; cursor: pointer; border-radius: 10px; border: 1px solid var(--ww-accent-primary, #6C3EE8); background: transparent; color: var(--ww-accent-primary, #6C3EE8); }
.ww-cover-upload #ww-cover-upload-btn:disabled { opacity: 0.5; cursor: default; }
.ww-cover-hint { margin-top: 6px; font-size: 12px; color: var(--ww-text-dim, #888); line-height: 1.5; }
.ww-cover-status { margin-top: 6px; font-size: 13px; min-height: 1em; }

/* ===================================================================
 * v2.6 层次系统（只追加，不改上面的旧规则；回退 = 删掉本段 + index.html 版本号退回 2.5）
 * 根因：1) 旧规则里残留大量深色主题时代的值（白色半透明边框/分隔线、黑色 0.2 阴影），在浅色底上等于没写；
 *       2) 画布 #F8FAFC 与卡片 #FFF 几乎同色，边框只有 8% 透明度，卡片/输入框/按钮之间没有"海拔差"；
 *       3) `.ww-card button` 让卡片里所有按钮长得一模一样；保存=绿色淡底、取消/删除=红色淡底，轻重相同。
 * 层级：L0 画布 → L1 卡片（白 + 阴影）→ L2 卡片内的内嵌区（浅灰）→ L3 输入框（描边明显）→ L4 弹窗/下拉（大阴影）。
 * 按钮：主(实心品牌色) / 次(白底描边) / 文字(无框) / 危险(红字，悬停才染色)。主按钮换色只改 --ww-btn-primary-*。
 * =================================================================== */
:root {
  --ww-bg-base: #F1F5F9;
  --ww-surface: #FFFFFF;
  --ww-surface-2: #F6F8FB;
  --ww-field-bg: #F8FAFC;
  --ww-border: rgba(15, 23, 42, 0.12);
  --ww-border-strong: rgba(15, 23, 42, 0.22);
  --ww-field-border: rgba(15, 23, 42, 0.28);
  --ww-shadow-card: 0 1px 2px rgba(15, 23, 42, 0.06), 0 4px 14px rgba(15, 23, 42, 0.06);
  --ww-shadow-pop: 0 12px 36px rgba(15, 23, 42, 0.22);
  --ww-shadow-glow: 0 0 0 3px rgba(124, 58, 237, 0.18);
  --ww-btn-primary-bg: var(--ww-accent-gradient);
  --ww-btn-primary-bg-hover: var(--ww-accent-gradient-hover);
  --ww-btn-primary-shadow: 0 2px 8px rgba(124, 58, 237, 0.30);
  --ww-danger-border: rgba(220, 38, 38, 0.45);
}

/* --- L0 画布 / 顶底栏 --- */
#ww-overlay { background: #DCE3EC; }
.ww-app { box-shadow: 0 8px 40px rgba(15, 23, 42, 0.18); }
.ww-topbar { background: var(--ww-surface); border-bottom: 1px solid var(--ww-border-strong); box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05); }
.ww-tabbar { background: var(--ww-surface); border-top: 1px solid var(--ww-border-strong); box-shadow: 0 -1px 4px rgba(15, 23, 42, 0.05); }
.ww-composer { background: var(--ww-surface); border-top: 1px solid var(--ww-border-strong); }
.ww-icon-btn { background: var(--ww-surface-2); border-color: var(--ww-border-strong); color: var(--ww-text-main); }
.ww-icon-btn:hover { background: #E8EDF4; color: var(--ww-accent-primary); }
#ww-overlay button:focus-visible { outline: 2px solid var(--ww-accent-primary); outline-offset: 2px; }

/* --- L1 卡片 --- */
.ww-card, .ww-entry-card, .ww-world-item, .ww-style-option, #ww-worldInfoBody {
  background: var(--ww-surface); border: 1px solid var(--ww-border); box-shadow: var(--ww-shadow-card);
}
#ww-worldInfoBody { border-radius: var(--ww-radius-lg); }
.ww-card:hover, .ww-entry-card:hover, .ww-world-item:hover { border-color: var(--ww-border-strong); }
.ww-entry-card.ww-focus, .ww-entry-card.ww-focus:hover { border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); }
.ww-style-option.ww-active { border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); background: #F5F3FF; }
.ww-world-block.ww-editing > .ww-world-item { border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); }

/* --- L2 内嵌区：卡片里再套的块降一级，不再用同样的白底+阴影叠起来 --- */
#ww-worldInfoBody .ww-card { background: var(--ww-surface-2); box-shadow: none; }
.ww-entry-rendered, .ww-relations-display, .ww-pack-license { background: var(--ww-surface-2); border: 1px solid var(--ww-border); }
.ww-md code { background: rgba(15, 23, 42, 0.07); }
.ww-badge { background: #EEF2F7; }
.ww-tag:not(.ww-tag-cur):not(.ww-tag-warn) { color: #475569; background: #EEF2F7; border: 1px solid var(--ww-border-strong); }

/* --- 分隔线（原来是白色 5% 透明，浅色底上看不见） --- */
.ww-drawer-handle, .ww-type-section-title, .ww-pick-row { border-bottom-color: var(--ww-border); }
.ww-tree-section-title { padding-bottom: 6px; border-bottom: 1px solid var(--ww-border); }
.ww-tree-row:hover { background: rgba(124, 58, 237, 0.06); }
.ww-pick-card:hover { background: rgba(15, 23, 42, 0.04); }

/* --- 抽屉：底色用画布，里面的白卡片才浮得起来；标题栏单独一层 --- */
.ww-drawer { background: var(--ww-bg-base); border-top: 1px solid var(--ww-border-strong); box-shadow: 0 -8px 32px rgba(15, 23, 42, 0.18); }
.ww-drawer-handle { background: var(--ww-surface); border-top-left-radius: 24px; border-top-right-radius: 24px; font-size: 16px; }
.ww-drawer-mask { background: rgba(15, 23, 42, 0.45); }

/* --- L4 弹窗 / 下拉 --- */
.ww-modal-overlay { background: rgba(15, 23, 42, 0.55); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.ww-detail-view, .ww-dialog { background: var(--ww-surface); border: 1px solid var(--ww-border); border-radius: 16px; box-shadow: var(--ww-shadow-pop); }
@media (max-width: 600px) { .ww-detail-view, .ww-dialog { border-radius: 12px; } }
.ww-dropdown-menu { background: var(--ww-surface); border-color: var(--ww-border-strong); box-shadow: var(--ww-shadow-pop); }
.ww-menu-item:hover { background: #EEF2F7; }
.ww-cover-picker { box-shadow: var(--ww-shadow-pop); }
.ww-cover-custom button, .ww-cover-ops button { border-color: var(--ww-border-strong); background: var(--ww-surface); }

/* --- L3 输入框：描边加深 + 轻微内凹，聚焦用 3px 光环 --- */
#ww-overlay input.ww-edit-field, #ww-overlay textarea.ww-edit-field, #ww-overlay select.ww-edit-field,
.ww-card input.ww-edit-field, .ww-card textarea, .ww-card select.ww-edit-field,
.ww-entry-edit input.ww-edit-field, .ww-entry-edit textarea, .ww-entry-edit select.ww-edit-field,
.ww-detail-view input.ww-edit-field, .ww-detail-view textarea.ww-edit-field, .ww-detail-view select.ww-edit-field,
#ww-customParams input, #ww-customParams textarea,
#ww-newEntryCard input.ww-edit-field, #ww-newEntryCard textarea.ww-edit-field, #ww-newEntryCard select.ww-edit-field {
  background-color: var(--ww-field-bg); border: 1px solid var(--ww-field-border); box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.05);
}
#ww-overlay input.ww-edit-field:focus, #ww-overlay textarea.ww-edit-field:focus, #ww-overlay select.ww-edit-field:focus,
.ww-card input.ww-edit-field:focus, .ww-card textarea:focus, .ww-card select.ww-edit-field:focus,
.ww-entry-edit input.ww-edit-field:focus, .ww-entry-edit textarea:focus, .ww-entry-edit select.ww-edit-field:focus,
.ww-detail-view input.ww-edit-field:focus, .ww-detail-view textarea.ww-edit-field:focus, .ww-detail-view select.ww-edit-field:focus,
#ww-customParams input:focus, #ww-customParams textarea:focus,
#ww-newEntryCard input.ww-edit-field:focus, #ww-newEntryCard textarea.ww-edit-field:focus, #ww-newEntryCard select.ww-edit-field:focus {
  background-color: #FFFFFF; border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); outline: none;
}
.ww-edit-field::placeholder, #ww-customParams input::placeholder, #ww-customParams textarea::placeholder { color: #94A3B8; }
.ww-composer input { background: var(--ww-field-bg) !important; border-color: var(--ww-field-border); }
.ww-composer input:disabled { background: var(--ww-surface-2) !important; opacity: 0.7; cursor: not-allowed; }
.ww-composer button:disabled { opacity: 0.45; filter: grayscale(0.6); box-shadow: none; transform: none; cursor: not-allowed; }

/* --- 按钮：次级（卡片里的默认按钮：白底 + 明显描边，不再和卡片同色） --- */
.ww-card button, .ww-entry-edit button {
  min-height: 36px; padding: 6px 14px; background: var(--ww-surface); color: var(--ww-text-main);
  border: 1px solid var(--ww-border-strong); box-shadow: 0 1px 1px rgba(15, 23, 42, 0.05);
}
.ww-card button:hover, .ww-entry-edit button:hover { background: var(--ww-card-hover); border-color: rgba(15, 23, 42, 0.32); }
/* 文字按钮（"+ 添加"之类）：不要被上面的规则拉成带框的大按钮 */
.ww-card button.ww-link-btn, .ww-entry-edit button.ww-link-btn {
  flex: 0 0 auto; min-height: 0; padding: 4px 8px; background: transparent; border-color: transparent; box-shadow: none; color: var(--ww-accent-primary-hover);
}
.ww-card button.ww-link-btn:hover, .ww-entry-edit button.ww-link-btn:hover { background: rgba(124, 58, 237, 0.08); border-color: transparent; text-decoration: none; filter: none; }

/* --- 按钮：主（保存 / 接受）= 实心品牌色。内联 style 里的绿色淡底也被 !important 盖掉 --- */
#ww-overlay .ww-save, #ww-overlay button.ww-accept, .ww-detail-view .ww-save, .ww-dialog .ww-save, #ww-newEntryCard .ww-save {
  background: var(--ww-btn-primary-bg) !important; color: #FFFFFF !important; border: 1px solid transparent !important;
  font-weight: 600; box-shadow: var(--ww-btn-primary-shadow);
}
#ww-overlay .ww-save:hover:not(:disabled), #ww-overlay button.ww-accept:hover:not(:disabled), .ww-detail-view .ww-save:hover:not(:disabled),
.ww-dialog .ww-save:hover:not(:disabled), #ww-newEntryCard .ww-save:hover:not(:disabled) {
  background: var(--ww-btn-primary-bg-hover) !important; color: #FFFFFF !important; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(124, 58, 237, 0.4);
}
#ww-overlay .ww-save:disabled, #ww-overlay .ww-save:disabled:hover, .ww-detail-view .ww-save:disabled, #ww-newEntryCard .ww-save:disabled {
  background: var(--ww-btn-primary-bg) !important; color: #FFFFFF !important; opacity: 0.5; box-shadow: none; transform: none; cursor: not-allowed;
}

/* --- 按钮：次（放弃 / 取消）= 白底描边。注意：新建条目的"取消"原来复用了 ww-delete（红色），这里单独压回中性 --- */
#ww-overlay button.ww-discard, .ww-detail-view button.ww-discard, #ww-overlay #ww-newEntryCancelBtn, #ww-newEntryCard #ww-newEntryCancelBtn {
  background: var(--ww-surface) !important; color: var(--ww-text-main) !important; border: 1px solid var(--ww-border-strong) !important; font-weight: 500;
}
#ww-overlay button.ww-discard:hover, .ww-detail-view button.ww-discard:hover, #ww-overlay #ww-newEntryCancelBtn:hover, #ww-newEntryCard #ww-newEntryCancelBtn:hover {
  background: var(--ww-card-hover) !important; color: var(--ww-text-main) !important; border-color: rgba(15, 23, 42, 0.32) !important;
}

/* --- 按钮：危险（删除）= 红字白底，悬停才整块变红 --- */
#ww-overlay button.ww-delete, .ww-detail-view button.ww-delete, .ww-dialog button.ww-delete {
  background: var(--ww-surface) !important; color: var(--ww-bad) !important; border: 1px solid var(--ww-danger-border) !important; font-weight: 600;
}
#ww-overlay button.ww-delete:hover, .ww-detail-view button.ww-delete:hover, .ww-dialog button.ww-delete:hover {
  background: var(--ww-bad) !important; color: #FFFFFF !important; border-color: var(--ww-bad) !important;
}

/* --- 世界列表的五个按钮：进入=主；编辑/复制/公开=次；删除=红字无框 --- */
.ww-world-item button, .ww-world-item button.ww-edit, .ww-world-item button.ww-pub, .ww-world-item button.ww-copy {
  background: var(--ww-surface); border: 1px solid var(--ww-border-strong); color: var(--ww-text-main);
}
.ww-world-item button:hover, .ww-world-item button.ww-copy:hover { background: var(--ww-card-hover); color: var(--ww-text-main); }
.ww-world-item button.ww-enter { background: var(--ww-btn-primary-bg); border-color: transparent; color: #FFFFFF; font-weight: 600; box-shadow: var(--ww-btn-primary-shadow); }
.ww-world-item button.ww-enter:hover { background: var(--ww-btn-primary-bg-hover); color: #FFFFFF; box-shadow: 0 4px 12px rgba(124, 58, 237, 0.4); }
.ww-world-item button.ww-del { background: transparent; border-color: transparent; color: var(--ww-bad); }
.ww-world-item button.ww-del:hover { background: rgba(220, 38, 38, 0.1); border-color: var(--ww-danger-border); color: var(--ww-bad); }

/* --- 选择类：标签 chip / 子页签 --- */
.ww-type-chip, .ww-target-chip { background: var(--ww-surface); border-color: var(--ww-border-strong); color: #475569; }
.ww-type-chip:hover, .ww-target-chip:hover { background: #F5F3FF; border-color: var(--ww-accent-primary); color: var(--ww-accent-primary-hover); }
.ww-type-chip.ww-active, .ww-target-chip.ww-active {
  background: var(--ww-accent-primary); border-color: var(--ww-accent-primary); color: #FFFFFF; font-weight: 600; box-shadow: 0 2px 8px rgba(124, 58, 237, 0.30);
}
/* 子页签改成"分段控件"：灰色轨道 + 选中的是一块浮起的白片，和下面的按钮、卡片一眼分开 */
.ww-subtabs { margin: 10px 16px 4px; padding: 4px; gap: 4px; background: #E2E8F0; border: none; border-radius: 12px; }
.ww-subtab { border: none; background: transparent; color: #475569; border-radius: 9px; box-shadow: none; }
.ww-subtab:hover { background: rgba(255, 255, 255, 0.55); color: var(--ww-text-main); }
.ww-subtab.ww-active { background: var(--ww-surface); color: var(--ww-accent-primary-hover); box-shadow: 0 1px 3px rgba(15, 23, 42, 0.18); }

/* --- 聊天气泡：AI 气泡原来是 20% 黑色阴影（深色主题遗留），改成白底描边 --- */
.ww-msg.ww-ai { background: var(--ww-surface); border: 1px solid var(--ww-border-strong); box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08); }

/* ===== v2.7 顶栏标题带 ▾（可点提示） + 「探索我的世界」未解锁时的补全卡片 ===== */
.ww-topbar .ww-title { display: flex; align-items: center; gap: 4px; min-width: 0; }
.ww-topbar .ww-title:hover { filter: brightness(0.88); }
.ww-title-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ww-title-caret { flex: none; font-size: 12px; }
#ww-exploreGate { display: flex; flex: 1; align-items: center; justify-content: center; padding: 24px 20px; }
.ww-gate-card { width: 100%; max-width: 360px; padding: 24px 20px; text-align: center; background: var(--ww-surface); border: 1px solid var(--ww-border); border-radius: var(--ww-radius-lg); box-shadow: var(--ww-shadow-card); }
.ww-gate-title { font-size: 16px; font-weight: 700; color: var(--ww-text-main); }
.ww-gate-desc { margin-top: 6px; font-size: 13px; color: var(--ww-text-dim); line-height: 1.6; }
.ww-gate-progress { height: 6px; margin: 16px 0 8px; background: #E2E8F0; border-radius: 3px; overflow: hidden; }
.ww-gate-progress > i { display: block; height: 100%; background: var(--ww-btn-primary-bg); border-radius: 3px; }
.ww-gate-missing { font-size: 12.5px; color: var(--ww-text-dim); }
.ww-gate-btn { width: 100%; margin-top: 16px; padding: 12px; font-size: 15px; border-radius: var(--ww-radius-md); cursor: pointer; }
/* 未解锁：页签里除了补全卡片之外的东西（横幅/对话对象条/聊天区/输入框/建议条）全部隐藏 */
.ww-subpane.ww-gated > *:not(#ww-exploreGate) { display: none !important; }

/* ===== v2.8 编辑页近全屏（顶部返回条 / 底部保存栏固定，只有中间滚动） + 公开世界卡片 + 统一对话框 + 空状态 ===== */
/* 适用：条目详情页（#ww-detailModalOverlay）和世界编辑/新建表单（#ww-world-form-modal）。手机上铺满屏幕，桌面上是居中的高卡片。
   原来返回按钮在滚动内容里（内联 max-height:65vh），滚下去就看不见了；现在整块容器不滚动，只有中间的编辑区滚动。 */
#ww-detailModalOverlay, #ww-world-form-modal { display: flex !important; align-items: center; justify-content: center; padding: 0 !important; }
#ww-detailModalOverlay .ww-detail-view, #ww-world-form-modal .ww-detail-view {
  display: flex; flex-direction: column; overflow: hidden !important; padding: 0 !important; margin: 0 !important;
  width: 100vw !important; max-width: 100vw !important; height: 100vh !important; height: 100dvh !important; max-height: none !important;
  border-radius: 0 !important; border: none;
}
@media (min-width: 601px) {
  #ww-detailModalOverlay .ww-detail-view, #ww-world-form-modal .ww-detail-view {
    width: min(640px, 94vw) !important; max-width: 94vw !important; height: min(92vh, 860px) !important; height: min(92dvh, 860px) !important;
    border-radius: 16px !important; border: 1px solid var(--ww-border);
  }
}
#ww-detailModalOverlay .ww-detail-view > div:first-child, #ww-world-form-modal .ww-detail-view > div:first-child {
  flex: none; margin: 0 !important; padding: calc(10px + env(safe-area-inset-top, 0px)) 14px 10px !important;
  background: var(--ww-surface); border-bottom: 1px solid var(--ww-border);
}
#ww-detailModalOverlay .ww-breadcrumb { flex: none; margin: 10px 14px 0 !important; }
#ww-detailModalOverlay .ww-detail-view > .ww-entry-edit, #ww-world-form-modal .ww-detail-view > .ww-entry-edit {
  flex: 1 1 auto; min-height: 0; overflow-y: auto !important; -webkit-overflow-scrolling: touch; overscroll-behavior: contain;
  padding: 14px 16px 0 !important;
}
#ww-detailModalOverlay .ww-entry-edit > .ww-actions, #ww-world-form-modal .ww-entry-edit > .ww-actions {
  position: sticky; bottom: 0; z-index: 3; margin: 16px -16px 0 !important; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)) !important;
  background: var(--ww-surface); border-top: 1px solid var(--ww-border); box-shadow: 0 -6px 14px rgba(15, 23, 42, 0.06);
}
#ww-detailSaveBtn { width: 100% !important; max-width: none !important; }

/* 公开世界卡片（选择要探索的世界抽屉） */
.ww-pw-card { display: flex; align-items: center; gap: 12px; padding: 12px 14px; margin-bottom: 10px; cursor: pointer; background: var(--ww-surface); border: 1px solid var(--ww-border); border-radius: var(--ww-radius-lg); box-shadow: var(--ww-shadow-card); transition: border-color .15s, box-shadow .15s, transform .1s; }
.ww-pw-card:hover { border-color: var(--ww-accent-primary); }
.ww-pw-card:active { transform: scale(0.995); }
.ww-pw-card.ww-current { border-color: var(--ww-accent-primary); box-shadow: var(--ww-shadow-glow); background: #F5F3FF; }
.ww-pw-cover { flex: none; width: 52px; height: 52px; display: flex; align-items: center; justify-content: center; overflow: hidden; background: var(--ww-surface-2); border: 1px solid var(--ww-border); border-radius: 14px; }
.ww-pw-cover .ww-cover { margin: 0; font-size: 28px; line-height: 1; }
.ww-pw-cover .ww-cover-img { width: 100%; height: 100%; margin: 0; object-fit: cover; border-radius: 0; }
.ww-pw-main { flex: 1; min-width: 0; }
.ww-pw-name { display: flex; align-items: center; gap: 6px; font-size: 15px; font-weight: 700; color: var(--ww-text-main); }
.ww-pw-tagline { margin-top: 3px; font-size: 13px; line-height: 1.5; color: var(--ww-text-main); opacity: 0.82; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ww-pw-meta { margin-top: 4px; font-size: 12px; color: var(--ww-text-dim); }
.ww-pw-go { flex: none; display: flex; align-items: center; gap: 2px; font-size: 13px; font-weight: 600; color: var(--ww-accent-primary-hover); }
.ww-pw-go span { font-size: 18px; line-height: 1; }

/* 空状态（还没选公开世界时的聊天区） */
.ww-empty-state { margin: auto; max-width: 300px; padding: 32px 20px; text-align: center; }
.ww-empty-emoji { font-size: 40px; }
.ww-empty-title { margin-top: 10px; font-size: 16px; font-weight: 700; color: var(--ww-text-main); }
.ww-empty-desc { margin-top: 6px; font-size: 13px; line-height: 1.6; color: var(--ww-text-dim); }
.ww-empty-btn { margin-top: 16px; padding: 11px 22px; font-size: 15px; border-radius: var(--ww-radius-md); cursor: pointer; }
.ww-target-bar:empty { display: none; }

/* 统一对话框（wwDialog / wwConfirm / wwAlert / wwPrompt） */
.ww-dlg-mask { position: fixed; inset: 0; z-index: 300030; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(15, 23, 42, 0.55); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.ww-dlg { display: block; width: min(420px, 100%); max-width: 100%; max-height: 86vh; overflow: auto; padding: 0; }
.ww-dlg-title { padding: 20px 22px 0; font-size: 17px; font-weight: 700; color: var(--ww-text-main); }
.ww-dlg-body { padding: 10px 22px 4px; font-size: 14.5px; line-height: 1.75; color: var(--ww-text-main); word-break: break-word; }
.ww-dlg-input { display: block; width: 100%; box-sizing: border-box; margin-top: 12px; padding: 10px 12px; font-size: 14px; border-radius: 10px; }
.ww-dlg-actions { display: flex; justify-content: flex-end; gap: 10px; padding: 16px 22px 20px; }
.ww-dlg-btn { min-height: 40px; padding: 0 18px; font-size: 14.5px; border-radius: 10px; cursor: pointer; }
.ww-dlg-cancel { background: var(--ww-surface); color: var(--ww-text-main); border: 1px solid var(--ww-border-strong); }
.ww-dlg-cancel:hover { background: var(--ww-card-hover); }

/* ===== v2.9 SVG 图标 + 新建条目底部抽屉 + 解锁卡片内联表单 + 横幅复制按钮 + 聊天复制/停止图标 ===== */
/* 导航图标：统一用内联 SVG（描边风格，跟随文字颜色），不再用 emoji，避免不同系统渲染不一致。用户封面仍然是 emoji。 */
.ww-ico { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ww-icon-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.ww-icon-btn .ww-ico { display: block; }
.ww-subtab { display: inline-flex; align-items: center; justify-content: center; gap: 5px; }
.ww-subtab .ww-ico { width: 16px; height: 16px; }
.ww-tab .ww-ico { display: block; width: 22px; height: 22px; margin: 0 auto 2px; }

/* 新建条目弹窗：手机上是底部抽屉（内容短，不需要铺满全屏），底部「取消/保存」固定；桌面上居中 */
#ww-newEntryModalOverlay { display: flex !important; align-items: flex-end; justify-content: center; padding: 0 !important; }
#ww-newEntryCard {
  width: 100vw !important; max-width: 100vw !important; margin: 0 !important; padding: 16px 16px 0 !important;
  max-height: 92vh !important; max-height: 92dvh !important; overflow-y: auto !important; -webkit-overflow-scrolling: touch; overscroll-behavior: contain;
  border-radius: 20px 20px 0 0 !important;
}
@media (min-width: 601px) {
  #ww-newEntryModalOverlay { align-items: center; }
  #ww-newEntryCard { width: min(560px, 94vw) !important; max-width: 94vw !important; border-radius: 16px !important; }
}
#ww-newEntryCard .ww-actions {
  position: sticky; bottom: 0; z-index: 3; margin: 16px -16px 0 !important; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)) !important;
  background: var(--ww-surface); border-top: 1px solid var(--ww-border); box-shadow: 0 -6px 14px rgba(15, 23, 42, 0.06);
}

/* 「探索我的世界」解锁卡片：内联表单。键盘弹出时卡片较高，容器自己滚动，卡片用 margin:auto 在空间够时居中、不够时从顶部开始 */
#ww-exploreGate { align-items: flex-start; overflow-y: auto; }
.ww-gate-card { margin: auto; }
.ww-gate-field { margin-top: 12px; text-align: left; }
.ww-gate-field .ww-field-label { margin-bottom: 4px; font-size: 13px; color: var(--ww-text-dim); }
.ww-gate-more { display: block; width: 100%; margin-top: 8px; padding: 8px; font-size: 12.5px; color: var(--ww-text-dim); background: transparent; border: none; cursor: pointer; }

/* 「探索其他世界」横幅：文字 + 「复制到我的世界」 */
#ww-exploreOthersBanner { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ww-banner-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ww-banner-btn { flex: none; white-space: nowrap; padding: 4px 10px; font-size: 12.5px; font-weight: 600; color: var(--ww-accent-primary-hover); background: var(--ww-surface); border: 1px solid var(--ww-border-strong); border-radius: 14px; cursor: pointer; }
.ww-banner-btn:hover { background: #F5F3FF; border-color: var(--ww-accent-primary); }
.ww-banner-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* 聊天：AI 回复的「复制」按钮 + 生成中的方形停止图标（原来是文字字符 ◾，辞识度低） */
.ww-msg-copy { display: block; margin: 8px 0 0 auto; padding: 2px 8px; font-size: 12px; color: var(--ww-text-dim); background: transparent; border: 1px solid transparent; border-radius: 10px; cursor: pointer; opacity: 0.7; }
.ww-msg-copy:hover { opacity: 1; background: #EEF2F7; }
#ww-exploreSendBtn[data-state="stop"], #ww-exploreOthersSendBtn[data-state="stop"] { position: relative; font-size: 0; }
#ww-exploreSendBtn[data-state="stop"]::after, #ww-exploreOthersSendBtn[data-state="stop"]::after { content: ''; position: absolute; left: 50%; top: 50%; width: 14px; height: 14px; margin: -7px 0 0 -7px; background: #FFFFFF; border-radius: 3px; }

/* 引导第 3 步的聊天框原来写的是 var(--ww-bg, #1A1A1A)，--ww-bg 没有定义，在浅色界面里变成黑框。里面的气泡都自带底色、提示文字有浅色备用值，改成浅底不会看不清 */
#ww-ob-chat-history { background: var(--ww-surface-2) !important; border: 1px solid var(--ww-border); }

/* ===== v3.0 市场（素材库 / 选择世界）+ 底部弹层（设定体检）+ 固定操作条 ===== */
/* 两个内容多的抽屉（素材库 / 选择世界）换成更高的抽屉，让列表有足够的显示空间 */
#ww-libraryDrawer, #ww-publicWorldDrawer { max-height: 92% !important; height: 92%; }

/* 工具条：搜索框 + 标签/基调 chip + 排序 + 结果计数，吴动列表时固定在顶部 */
.ww-market-bar { position: sticky; top: 0; z-index: 4; padding: 10px 0 8px; background: var(--ww-bg-base); }
.ww-market-search { width: 100%; box-sizing: border-box; padding: 10px 12px; font-size: 14px; border-radius: 12px; }
.ww-market-row { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.ww-market-chips { flex: 1; min-width: 0; display: flex; gap: 6px; overflow-x: auto; padding: 2px 0; scrollbar-width: none; }
.ww-market-chips::-webkit-scrollbar { display: none; }
.ww-market-chip { flex: none; padding: 5px 11px; font-size: 12.5px; color: #475569; white-space: nowrap; background: var(--ww-surface); border: 1px solid var(--ww-border-strong); border-radius: 999px; cursor: pointer; }
.ww-market-chip i { margin-left: 4px; font-style: normal; opacity: 0.6; }
.ww-market-chip:hover { color: var(--ww-accent-primary-hover); border-color: var(--ww-accent-primary); }
.ww-market-chip.ww-active { color: #FFFFFF; font-weight: 600; background: var(--ww-accent-primary); border-color: var(--ww-accent-primary); }
.ww-market-sort { flex: none; width: auto; padding: 6px 28px 6px 10px; font-size: 13px; border-radius: 10px; }
.ww-market-count { margin-top: 6px; font-size: 12px; color: var(--ww-text-dim); }
.ww-more-btn { padding: 9px 22px; font-size: 13.5px; color: var(--ww-accent-primary-hover); background: var(--ww-surface); border: 1px solid var(--ww-border-strong); border-radius: 999px; cursor: pointer; }
.ww-more-btn:hover { border-color: var(--ww-accent-primary); }
.ww-more-btn:disabled { opacity: 0.55; cursor: wait; }

/* 素材包卡片：简介最多三行，标签一眼能分开 */
.ww-pack-desc { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* 底部固定操作条（素材包预览的「导入选中的 N 条」、发布表单的「发布到素材库」）。必须是抽屉滚动区的直接子元素才能贴底 */
.ww-sticky-bar { position: sticky; bottom: 0; z-index: 4; margin: 12px 0 0; padding: 12px 0 calc(12px + env(safe-area-inset-bottom, 0px)); background: var(--ww-bg-base); border-top: 1px solid var(--ww-border); }
.ww-sticky-bar .ww-save { width: 100%; padding: 12px; font-size: 15px; border-radius: var(--ww-radius-md); cursor: pointer; }
.ww-sticky-bar .ww-save:disabled { opacity: 0.5; cursor: not-allowed; }

/* 底部弹层（设定体检结果）：手机上从底部升起，桌面居中。头、筛选条、底部按钮固定，只有中间列表滚动 */
.ww-sheet-mask { position: fixed; inset: 0; z-index: 300009; display: flex; align-items: flex-end; justify-content: center; background: rgba(15, 23, 42, 0.55); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.ww-sheet { display: flex; flex-direction: column; width: 100%; max-height: 88vh; max-height: 88dvh; overflow: hidden; background: var(--ww-surface); border-radius: 20px 20px 0 0; box-shadow: var(--ww-shadow-pop); }
@media (min-width: 601px) {
  .ww-sheet-mask { align-items: center; }
  .ww-sheet { width: min(560px, 94vw); border-radius: 16px; }
}
.ww-sheet-head { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 16px 18px 12px; font-size: 17px; font-weight: 700; color: var(--ww-text-main); border-bottom: 1px solid var(--ww-border); }
.ww-sheet-sub { margin-left: 8px; font-size: 12.5px; font-weight: 500; color: var(--ww-text-dim); }
.ww-sheet-x { flex: none; width: 32px; height: 32px; font-size: 15px; color: var(--ww-text-dim); background: var(--ww-surface-2); border: 1px solid var(--ww-border); border-radius: 50%; cursor: pointer; }
.ww-sheet-filter { flex: none; display: flex; gap: 6px; overflow-x: auto; padding: 10px 18px; border-bottom: 1px solid var(--ww-border); scrollbar-width: none; }
.ww-sheet-filter::-webkit-scrollbar { display: none; }
.ww-sheet-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
.ww-sheet-foot { flex: none; display: flex; justify-content: flex-end; padding: 12px 18px calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--ww-border); }
.ww-sheet-foot .ww-save { min-width: 96px; padding: 10px 20px; font-size: 14.5px; border-radius: 10px; cursor: pointer; }

/* 体检结果列表：左侧色条 = 严重程度（红 需修复 / 橙 建议处理 / 蓝 提示） */
.ww-lint-row { display: flex; align-items: center; gap: 10px; padding: 12px 18px; border-bottom: 1px solid var(--ww-border); border-left: 3px solid transparent; }
.ww-lint-row.ww-sev-err { border-left-color: #DC2626; }
.ww-lint-row.ww-sev-warn { border-left-color: #D97706; }
.ww-lint-row.ww-sev-info { border-left-color: #3B82F6; }
.ww-lint-main { flex: 1; min-width: 0; }
.ww-lint-name { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: 14.5px; font-weight: 600; color: var(--ww-text-main); }
.ww-lint-tag { padding: 1px 8px; font-size: 11.5px; font-weight: 600; border-radius: 999px; }
.ww-sev-err .ww-lint-tag { color: #B91C1C; background: rgba(220, 38, 38, 0.1); }
.ww-sev-warn .ww-lint-tag { color: #B45309; background: rgba(217, 119, 6, 0.12); }
.ww-sev-info .ww-lint-tag { color: #1D4ED8; background: rgba(59, 130, 246, 0.12); }
.ww-lint-desc { margin-top: 3px; font-size: 13px; line-height: 1.5; color: var(--ww-text-dim); }
.ww-lint-go { flex: none; padding: 6px 12px; font-size: 13px; color: var(--ww-accent-primary-hover); background: var(--ww-surface); border: 1px solid var(--ww-accent-primary); border-radius: 999px; cursor: pointer; }
.ww-lint-go:hover { background: #F5F3FF; }

/* ===== v3.1 举报按钮、纵向选项对话框（举报原因） ===== */
.ww-dlg-actions.ww-stack { flex-direction: column; }
.ww-dlg-actions.ww-stack .ww-dlg-btn { width: 100%; text-align: left; padding: 0 16px; }
.ww-banner-ghost { color: var(--ww-text-dim); background: transparent; border-color: transparent; font-weight: 500; }
.ww-banner-ghost:hover { color: #B91C1C; background: rgba(220, 38, 38, 0.08); border-color: transparent; }

/* ===== v3.2 修：编辑页内容不满一屏时，底部按钮条要贴在底部 =====
   sticky 只在内容超出、需要滚动时才把条子钟住；内容不足一屏时它会紧跟在最后一项下面，下方留一大片空白（用 Playwright 截图发现的）。
   做法：滚动区改成纵向 flex，条子 margin-top:auto，内容短时被推到底、内容长时仍然是 sticky。 */
#ww-detailModalOverlay .ww-detail-view > .ww-entry-edit, #ww-world-form-modal .ww-detail-view > .ww-entry-edit { display: flex !important; flex-direction: column; }
#ww-detailModalOverlay .ww-detail-view > .ww-entry-edit > *, #ww-world-form-modal .ww-detail-view > .ww-entry-edit > * { flex: none; }
#ww-detailModalOverlay .ww-entry-edit > .ww-actions, #ww-world-form-modal .ww-entry-edit > .ww-actions { margin-top: auto !important; }

/* ===== v3.3 修：屏幕底部那块灰色模糊阴影 =====
   所有抽屉平时是 translateY(100%) 藏在应用底边下面，但它们的 box-shadow（向上扩散 32px）会渗进可见区域，多个抽屉叠在一起就是截图里底部的灰影。
   我在 v2.6 把抽屉阴影加深后才明显。做法：只在抽屉真正打开（.ww-show）时才有阴影。 */
.ww-drawer { box-shadow: none; }
.ww-drawer.ww-show { box-shadow: 0 -8px 32px rgba(15, 23, 42, 0.18); }

/* ===== v3.4 新手引导弹窗：输入框 / 按钮改成圆角，和其它地方一致（引导的样式大都是内联 style，没有圆角） ===== */
#ww-onboarding-modal .ww-edit-field { border-radius: 12px; padding: 10px 12px; }
#ww-onboarding-modal .ww-save { border-radius: 12px; }
#ww-onboarding-modal button[id^="ww-ob-"] { border-radius: 12px; }

/* ===== v3.5 收尾：「探索我的世界」解锁卡片里的输入框原来是直角（截图 gate.png 发现），和编辑世界表单的圆角输入框不一致。回退 = 删掉本段 ===== */
.ww-gate-field input, .ww-gate-field textarea { box-sizing: border-box; width: 100%; padding: 10px 12px; font-size: 14px; border-radius: 12px; }

/* ===== v3.6 收尾：新手引导弹窗的输入框在宽屏（用户真实浏览器截图）只有卡片宽度的一半、占位文字被截断。推断：原来的 width:100% 只在手机宽度的媒体查询里生效。回退 = 删掉本段 ===== */
#ww-onboarding-modal .ww-edit-field { box-sizing: border-box; width: 100%; }
