/* AiOVerse Archive Console — fonts: local/system fallbacks (no Google CDN) */

:root {
    --cy: #3ff2d4; --cy-2: #a8fff1; --cy-dim: rgba(63, 242, 212, 0.45);
    --line: rgba(63, 242, 212, 0.15); --line-2: rgba(63, 242, 212, 0.32);
    --text: #dcfff8; --soft: #b4dcd5; --muted: #6a9f98; --faint: #36605b;
    --ok: #7dffb2; --red: #ff4d6d;
    --mono: ui-monospace, "Cascadia Mono", "SF Mono", "Share Tech Mono", Menlo, Consolas, monospace;
    --disp: "Segoe UI", "Helvetica Neue", Orbitron, Rajdhani, "PingFang SC", "Microsoft YaHei", sans-serif;
    --ui: "Segoe UI", Rajdhani, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
    --body: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Segoe UI", Rajdhani, sans-serif;
    --glow: 0 0 14px rgba(63, 242, 212, 0.35);
    --brk:
        linear-gradient(#3ff2d4, #3ff2d4) 0 0 / 14px 1px no-repeat, linear-gradient(#3ff2d4, #3ff2d4) 0 0 / 1px 14px no-repeat,
        linear-gradient(#3ff2d4, #3ff2d4) 100% 0 / 14px 1px no-repeat, linear-gradient(#3ff2d4, #3ff2d4) 100% 0 / 1px 14px no-repeat,
        linear-gradient(#3ff2d4, #3ff2d4) 0 100% / 14px 1px no-repeat, linear-gradient(#3ff2d4, #3ff2d4) 0 100% / 1px 14px no-repeat,
        linear-gradient(#3ff2d4, #3ff2d4) 100% 100% / 14px 1px no-repeat, linear-gradient(#3ff2d4, #3ff2d4) 100% 100% / 1px 14px no-repeat;
    --cut: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 8px 100%, 0 calc(100% - 8px));
    color-scheme: dark;
}
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body.editor, body.console-login {
    color: var(--text); font-family: var(--body); -webkit-font-smoothing: antialiased;
    background:
        radial-gradient(1000px 600px at 70% -10%, rgba(30, 120, 112, 0.22), transparent 70%),
        radial-gradient(circle, rgba(63, 242, 212, 0.07) 1px, transparent 1.4px) 0 0 / 24px 24px,
        #01080b;
}
.ed-bg {
    position: fixed; inset: 0; z-index: -1; pointer-events: none;
    background: repeating-linear-gradient(to bottom, rgba(63, 242, 212, 0.03) 0 1px, transparent 1px 3px), radial-gradient(ellipse at center, transparent 55%, rgba(0, 0, 0, 0.5));
}
* { scrollbar-width: thin; scrollbar-color: rgba(63, 242, 212, 0.35) transparent; }
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-thumb { background: rgba(63, 242, 212, 0.3); }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes pulse { 50% { opacity: 0.35; } }
@keyframes cardIn { from { opacity: 0; transform: translateY(6px); } }

/* layout */
body.editor { display: grid; grid-template-columns: 236px minmax(0, 1fr); grid-template-rows: 64px auto 1fr; min-height: 100vh; }
.editor .topbar {
    grid-column: 1 / -1; position: sticky; top: 0; z-index: 20; display: flex; align-items: center; justify-content: space-between; gap: 16px;
    height: 64px; padding: 0 22px; background: linear-gradient(180deg, rgba(2, 14, 18, 0.95), rgba(2, 12, 16, 0.8));
    border-bottom: 1px solid var(--line-2); backdrop-filter: blur(14px);
}
.editor .topbar::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; box-shadow: 0 0 10px var(--cy);
    background: linear-gradient(90deg, transparent, var(--cy) 20%, transparent 45%, transparent 70%, var(--cy) 88%, transparent);
}
.editor .brand { display: flex; align-items: center; gap: 14px; }
.editor .brand::before {
    content: ""; width: 22px; height: 22px; border: 1px solid var(--cy); transform: rotate(45deg);
    background: radial-gradient(circle, var(--cy) 0 3px, transparent 3.5px); box-shadow: 0 0 14px rgba(63, 242, 212, 0.4);
}
.editor .brand strong { font: 800 17px/1 var(--disp); letter-spacing: 0.3em; color: #eafffb; text-shadow: var(--glow); }
.editor .brand span { padding-left: 14px; border-left: 1px solid var(--line-2); font: 12px/1 var(--mono); letter-spacing: 0.32em; color: var(--muted); }
.editor .top-meta { display: flex; align-items: center; gap: 10px; }
.editor .top-meta a {
    padding: 9px 14px; border: 1px solid var(--line-2); color: var(--soft); text-decoration: none;
    font: 14px/1 var(--mono); letter-spacing: 0.16em; clip-path: var(--cut); transition: 0.2s;
}
.editor .top-meta a:hover { color: var(--cy); background: rgba(63, 242, 212, 0.08); }
#status { font: 13px/1 var(--mono); letter-spacing: 0.24em; color: var(--ok); }
#status:not(:empty)::before { content: "● "; animation: pulse 1.2s infinite; }

.editor .steps {
    grid-column: 1; grid-row: 2 / 4; position: sticky; top: 64px; align-self: start; height: calc(100vh - 64px); overflow: auto;
    display: flex; flex-direction: column; gap: 6px; padding: 22px 14px;
    border-right: 1px solid var(--line); background: rgba(2, 12, 16, 0.78);
}
.editor .steps::before { content: "// CONTROL MODULES"; margin: 0 4px 10px; font: 12px/1 var(--mono); letter-spacing: 0.3em; color: var(--cy); }
.editor .steps button {
    display: flex; align-items: center; gap: 12px; width: 100%; padding: 12px 14px; text-align: left; cursor: pointer;
    border: 1px solid var(--line); background: rgba(3, 18, 23, 0.6); color: var(--muted);
    font: 600 17px/1.2 var(--ui); letter-spacing: 0.08em; transition: 0.2s;
    clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 0 100%);
}
.editor .steps button b { padding: 3px 5px; font: 13px/1 var(--mono); letter-spacing: 0.1em; color: var(--cy); border: 1px solid var(--line-2); }
.editor .steps button:hover { color: var(--text); border-color: var(--line-2); background: rgba(63, 242, 212, 0.07); }
.editor .steps button.on { color: #021014; border-color: var(--cy); background: linear-gradient(90deg, var(--cy), #27c9b3); }
.editor .steps button.on b { color: #021014; border-color: rgba(2, 16, 20, 0.4); }

.editor .langbar { grid-column: 2; grid-row: 2; display: flex; align-items: center; padding: 22px 30px 0; position: relative; z-index: 5; pointer-events: auto; }
.editor .langbar::before { content: "LOCALE"; margin-right: 12px; font: 12px/1 var(--mono); letter-spacing: 0.3em; color: var(--muted); }
.editor .langbar a,
.editor .langbar button {
    display: inline-flex; align-items: center; justify-content: center;
    padding: 8px 18px; border: 1px solid var(--line-2); background: rgba(3, 18, 23, 0.6); color: var(--muted);
    font: 14px/1 var(--mono); letter-spacing: 0.2em; cursor: pointer; text-decoration: none;
    pointer-events: auto; position: relative; z-index: 6; user-select: none;
}
.editor .langbar a + a,
.editor .langbar button + button,
.editor .langbar a + button,
.editor .langbar button + a { border-left: 0; }
.editor .langbar a.on,
.editor .langbar button.on,
.editor .langbar a.active { background: var(--cy); color: #021014; border-color: var(--cy); box-shadow: 0 0 16px rgba(63, 242, 212, 0.35); }
.editor .langbar a:hover,
.editor .langbar button:hover { color: var(--cy-2); border-color: var(--cy-dim); }
.editor .workspace { grid-column: 2; grid-row: 3; max-width: 1120px; margin: 16px 30px 56px; }

/* buttons */
.editor .ghost, .editor .soft, .editor .primary, .admin-login button {
    padding: 10px 18px; border: 1px solid var(--line-2); background: transparent; color: var(--soft);
    font: 14px/1 var(--mono); letter-spacing: 0.18em; text-transform: uppercase; cursor: pointer; clip-path: var(--cut); transition: 0.2s;
}
.editor .ghost:hover { color: var(--cy); background: rgba(63, 242, 212, 0.08); }
.editor .soft { border-color: var(--cy-dim); color: var(--cy-2); background: rgba(63, 242, 212, 0.08); }
.editor .soft:hover { background: rgba(63, 242, 212, 0.18); }
.editor .primary, .admin-login button { border-color: var(--cy); background: var(--cy); color: #021014; font-weight: 700; }
.editor .primary:hover, .admin-login button:hover { background: #8cffec; }

/* cards */
.wizard-card { display: none; position: relative; padding: 26px 28px; border: 1px solid var(--line-2); background: var(--brk), rgba(3, 18, 23, 0.82); }
.wizard-card.on { display: block; animation: cardIn 0.3s ease-out; }
.wizard-card::before { content: ""; position: absolute; left: 28px; top: -1px; width: 90px; height: 2px; background: var(--cy); box-shadow: var(--glow); }
.wizard-card .kicker { display: flex; align-items: center; gap: 8px; margin: 0; font: 13px/1 var(--mono); letter-spacing: 0.34em; color: var(--cy); text-transform: uppercase; }
.wizard-card .kicker::before { content: ""; width: 6px; height: 6px; background: var(--cy); box-shadow: 0 0 8px var(--cy); }
.wizard-card h2 { margin: 12px 0 6px; font: 700 26px/1.3 var(--disp); letter-spacing: 0.08em; color: #eafffb; text-shadow: var(--glow); }
.wizard-card .lead { margin: 0 0 22px; padding-bottom: 16px; border-bottom: 1px dashed var(--line); color: var(--muted); font-size: 16px; }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 18px; }
.wizard-card label { display: block; margin: 0 0 14px; }
.wizard-card label > span { display: block; margin-bottom: 6px; font: 13px/1 var(--mono); letter-spacing: 0.22em; text-transform: uppercase; color: var(--muted); }
.wizard-card label > span::before { content: "▸ "; color: var(--cy); }

.wizard-card input:not([type="checkbox"]):not([type="file"]), .wizard-card textarea, .admin-login input {
    width: 100%; padding: 10px 12px; border: 1px solid var(--line-2); border-radius: 0; background: rgba(1, 10, 13, 0.9);
    color: var(--text); font: 16px/1.4 var(--body); outline: none; transition: 0.2s;
}
.wizard-card input:not([type="checkbox"]):not([type="file"]):focus, .wizard-card textarea:focus, .admin-login input:focus {
    border-color: var(--cy); background: rgba(2, 18, 22, 0.95); box-shadow: 0 0 0 1px rgba(63, 242, 212, 0.25), 0 0 16px rgba(63, 242, 212, 0.2);
}
.wizard-card input[type="checkbox"] {
    appearance: none; -webkit-appearance: none; flex: none; width: 18px; height: 18px; margin: 0; cursor: pointer;
    border: 1px solid var(--cy-dim); background: rgba(1, 10, 13, 0.9);
}
.wizard-card input[type="checkbox"]:checked { background: var(--cy); box-shadow: inset 0 0 0 3px #021014, 0 0 10px rgba(63, 242, 212, 0.5); }
.wizard-card label.chk { display: flex; align-items: center; gap: 8px; padding-bottom: 10px; font: 14px/1 var(--mono); letter-spacing: 0.16em; color: var(--soft); }
.wizard-card input[type="file"] { width: 100%; padding: 6px; border: 1px dashed var(--line-2); background: rgba(1, 10, 13, 0.6); color: var(--muted); font: 13px/1.4 var(--mono); }
.wizard-card input[type="file"]::file-selector-button {
    margin-right: 10px; padding: 6px 10px; border: 1px solid var(--cy-dim); background: rgba(63, 242, 212, 0.1);
    color: var(--cy-2); font: 13px/1 var(--mono); letter-spacing: 0.14em; cursor: pointer;
}
.wizard-card label small { display: block; margin-top: 5px; font: 12px/1.4 var(--mono); color: var(--muted); word-break: break-all; }

.sheet { width: 100%; margin: 6px 0 20px; border-collapse: collapse; table-layout: fixed; border: 1px solid var(--line); background: rgba(1, 10, 13, 0.5); }
.sheet th { padding: 10px; text-align: left; font: 12px/1 var(--mono); letter-spacing: 0.24em; text-transform: uppercase; color: var(--cy); background: rgba(63, 242, 212, 0.07); border-bottom: 1px solid var(--line-2); }
.sheet td { padding: 6px 8px; vertical-align: middle; border-bottom: 1px solid rgba(63, 242, 212, 0.07); }
.sheet tr:hover td { background: rgba(63, 242, 212, 0.04); }
.wizard-card .sheet td input:not([type="checkbox"]):not([type="file"]) { padding: 8px 10px; font-size: 15px; }

.wizard-card .visual {
    min-height: 320px; max-height: 62vh; overflow: auto; padding: 18px 20px; outline: none;
    border: 1px solid var(--line-2); background: var(--brk), rgba(1, 10, 13, 0.9); color: var(--soft); line-height: 1.8;
}
.wizard-card .visual:focus { border-color: var(--cy); box-shadow: 0 0 18px rgba(63, 242, 212, 0.18); }
.visual table { width: 100%; margin: 10px 0; border-collapse: collapse; }
.visual th, .visual td { padding: 6px 8px; text-align: left; vertical-align: top; border: 1px solid var(--line); }
.visual th { color: var(--cy); }
.visual h4 { color: var(--cy-2); }
.visual a { color: var(--cy); }
.visual .callout { padding: 8px 12px; border-left: 3px solid var(--cy); background: rgba(63, 242, 212, 0.06); }

.page-split { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 22px; }
.page-nav { display: flex; flex-direction: column; gap: 4px; max-height: 72vh; overflow: auto; padding-right: 8px; border-right: 1px dashed var(--line); }
.page-nav button {
    width: 100%; padding: 8px 10px; text-align: left; cursor: pointer; transition: 0.15s;
    border: 0; border-left: 2px solid var(--line); background: transparent; color: var(--muted); font: 500 16px/1.35 var(--ui);
}
.page-nav button:hover { color: var(--text); background: rgba(63, 242, 212, 0.06); border-left-color: var(--cy-dim); }
.page-nav button.on { color: #eafffb; background: linear-gradient(90deg, rgba(63, 242, 212, 0.2), transparent); border-left-color: var(--cy); }
.page-nav #new-slug { margin-top: 12px; }
.page-nav .soft { margin-top: 4px; text-align: center; border: 1px solid var(--cy-dim); color: var(--cy-2); }

.system-block { position: relative; margin: 0 0 22px; padding: 20px 18px 8px; border: 1px solid var(--line); background: var(--brk), rgba(1, 10, 13, 0.5); }
.system-block::before { content: "SYSTEM NODE"; position: absolute; top: -8px; left: 16px; padding: 0 8px; background: #031217; font: 12px/16px var(--mono); letter-spacing: 0.3em; color: var(--cy); }
.planet-row { display: grid; grid-template-columns: 100px minmax(160px, 1fr) minmax(160px, 1fr) 90px; gap: 12px; align-items: end; margin-top: 4px; padding-top: 12px; border-top: 1px dashed var(--line); }
.planet-row label { margin-bottom: 10px; }
.system-block{border-left:3px solid var(--sc,#3ff2d4);padding-left:14px;margin-bottom:26px}
.system-head,.planet-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 10px}
.system-head b{font-size:18px;color:var(--sc)}
.planet-head b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--sc);color:#000}
.spacer{flex:1}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media (max-width:900px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.planet-card{border:1px solid rgba(127,127,127,.25);border-radius:8px;padding:10px 12px;margin:10px 0}
.field{display:flex;flex-direction:column;gap:4px}
.color-opt{display:flex;gap:6px;align-items:center}
input[type=color]{width:100%;height:34px;padding:2px;cursor:pointer}
label.wide{display:block;margin-top:8px}
label.wide textarea{width:100%;box-sizing:border-box}
.img-field{display:flex;align-items:end;gap:8px;flex-wrap:wrap;margin-top:8px}
button.link{background:none;border:0;color:#ff7a8a;cursor:pointer;padding:0 4px}
.dup{outline:2px solid #ff5470 !important}

.actions { display: flex; justify-content: space-between; gap: 8px; margin-top: 26px; padding-top: 18px; border-top: 1px dashed var(--line); }
.row-actions { display: flex; gap: 8px; }

/* login */
body.console-login { display: grid; place-items: center; min-height: 100vh; padding: 20px; }
.admin-login {
    position: relative; width: min(420px, 100%); padding: 38px 32px 26px; border: 1px solid var(--line-2);
    background: var(--brk), rgba(2, 14, 18, 0.9); backdrop-filter: blur(10px);
    box-shadow: 0 0 60px rgba(63, 242, 212, 0.12), inset 0 0 40px rgba(63, 242, 212, 0.04);
}
.admin-login::before { content: "SECURE CHANNEL"; position: absolute; top: -9px; left: 18px; padding: 0 8px; background: #01090c; font: 12px/18px var(--mono); letter-spacing: 0.32em; color: var(--cy); }
.login-emblem { position: relative; width: 64px; height: 64px; margin: 0 auto 18px; border: 1px dashed var(--cy-dim); border-radius: 50%; animation: spin 10s linear infinite; }
.login-emblem::before { content: ""; position: absolute; inset: 9px; border-radius: 50%; border: 2px solid transparent; border-top-color: var(--cy); border-bottom-color: var(--cy); animation: spin 2s linear infinite reverse; }
.login-emblem i { position: absolute; inset: 25px; border-radius: 50%; background: var(--cy); box-shadow: 0 0 18px var(--cy); animation: pulse 1.4s infinite; }
.login-kicker { margin: 0; text-align: center; font: 12px/1 var(--mono); letter-spacing: 0.34em; color: var(--cy); }
.admin-login h1 { margin: 10px 0 4px; text-align: center; font: 800 24px/1.2 var(--disp); letter-spacing: 0.18em; text-transform: uppercase; color: #eafffb; text-shadow: var(--glow); }
.login-sub { margin: 0 0 24px; text-align: center; font: 13px/1.4 var(--mono); letter-spacing: 0.18em; color: var(--muted); }
.admin-login label { display: block; margin-bottom: 16px; }
.admin-login label span { display: block; margin-bottom: 6px; font: 12px/1 var(--mono); letter-spacing: 0.26em; text-transform: uppercase; color: var(--muted); }
.admin-login label span::before { content: "▸ "; color: var(--cy); }
.admin-login button { width: 100%; margin-top: 6px; padding: 13px; font-size: 15px; letter-spacing: 0.3em; }
.err { padding: 8px 12px; border: 1px solid rgba(255, 77, 109, 0.4); border-left: 3px solid var(--red); background: rgba(255, 77, 109, 0.08); color: #ff9aac; font: 14px/1.4 var(--mono); letter-spacing: 0.08em; }
.login-foot { margin: 20px 0 0; text-align: center; font: 11px/1 var(--mono); letter-spacing: 0.3em; color: var(--faint); }

@media (max-width: 900px) {
    body.editor { grid-template-columns: 1fr; grid-template-rows: auto auto auto 1fr; }
    .editor .topbar { height: auto; flex-wrap: wrap; padding: 12px 14px; }
    .editor .brand span { display: none; }
    .editor .steps { grid-column: 1; grid-row: 2; position: static; height: auto; flex-direction: row; overflow-x: auto; padding: 12px; border-right: 0; border-bottom: 1px solid var(--line); }
    .editor .steps::before { display: none; }
    .editor .steps button { width: auto; flex: none; white-space: nowrap; }
    .editor .langbar { grid-column: 1; grid-row: 3; padding: 14px 14px 0; }
    .editor .workspace { grid-column: 1; grid-row: 4; margin: 14px; }
    .grid2, .planet-row, .page-split { grid-template-columns: 1fr; }
    .page-nav { max-height: 220px; border-right: 0; border-bottom: 1px dashed var(--line); padding-bottom: 10px; }
    .wizard-card { padding: 20px 16px; }
}

/* ===== 左侧分类树 ===== */
.page-nav.tree { display: flex; flex-direction: column; gap: 4px; }
.tree-group { display: flex; flex-direction: column; }
.tree-head { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; font-weight: 600; }
.tree-head .caret {
  width: 0; height: 0; flex: none; opacity: .7;
  border-left: 5px solid currentColor; border-top: 4px solid transparent; border-bottom: 4px solid transparent;
  transition: transform .15s;
}
.tree-group.open > .tree-head .caret { transform: rotate(90deg); }
.tree-head .dot { width: 8px; height: 8px; flex: none; border-radius: 50%; background: var(--sc, #3ff2d4); box-shadow: 0 0 6px var(--sc, #3ff2d4); }
.tree-head span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tree-head em { font-style: normal; font-size: 14px; opacity: .55; }
.tree-head small { font-size: 13px; opacity: .5; border: 1px solid currentColor; padding: 0 4px; }
.tree-kids { display: flex; flex-direction: column; gap: 2px; margin: 2px 0 6px 10px; padding-left: 10px; border-left: 1px solid rgba(63, 242, 212, .18); }
.tree-kids button { font-size: 16px; text-align: left; }
.tree-item b { display: inline-block; min-width: 1.2em; opacity: .6; }
.tree-item.off { opacity: .45; }
.tree-item.on { color: #021014; background: linear-gradient(90deg, var(--cy), #27c9b3); border: 1px solid var(--cy); }
.tree-item.on b { opacity: 1; color: #021014; }
.tree-head.err, .tree-item.err { color: #ff6b6b !important; }
.tree-add { opacity: .65; font-size: 15px !important; }
.tree-add:hover { opacity: 1; }
.pane-hide { display: none !important; }
@keyframes rowFlash { 0%, 100% { background: transparent; } 30%, 70% { background: rgba(63, 242, 212, 0.22); } }
tr.flash { animation: rowFlash 1.6s ease; }
.crumb { font-size: 15px; opacity: .65; margin: 0 0 10px; }
/* ===== 富文本正文编辑器（V2.7） ===== */
.rich-wrap .rich-editor { border: 1px solid var(--line); background: rgba(1, 10, 13, 0.55); }
.rich-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; padding: 5px 6px; border-bottom: 1px solid var(--line); background: rgba(63, 242, 212, 0.06); }
.rich-bar button, .rich-bar select { appearance: none; border: 1px solid transparent; background: transparent; color: var(--cy); font: 700 14px/1.4 var(--mono); letter-spacing: 0.04em; padding: 4px 7px; cursor: pointer; min-height: 22px; }
.rich-bar button:hover { border-color: var(--cy-2); background: rgba(63, 242, 212, 0.14); }
.rich-bar select { background: #031217; border-color: var(--line); font: 400 13px/1 var(--mono); }
.rich-body { min-height: 220px; max-height: 460px; overflow: auto; padding: 12px 14px; color: #eafffb; font: 400 16px/1.8 "Noto Sans SC", sans-serif; outline: none; }
.rich-body:empty::before { content: "开始撰写正文…（支持加粗 / 标题 / 链接 / 图片 / 视频 / 表格；右下角 ⟨/⟩ 切换代码视图插入 Steam 等自定义 HTML）"; color: var(--muted); }
.rich-body img { max-width: 100%; height: auto; border: 1px solid var(--line); }
.rich-body a { color: var(--cy); }
.rich-body blockquote { border-left: 2px solid var(--cy-2); margin: 8px 0; padding: 4px 12px; color: var(--soft); }
.rich-body pre { background: #021014; border: 1px solid var(--line); padding: 10px 12px; overflow: auto; font: 400 14px/1.6 var(--mono); color: #9fe8dd; }
.rich-body h2, .rich-body h3, .rich-body h4, .rich-body h5, .rich-body h6 { color: #eafffb; margin: 14px 0 6px; letter-spacing: 0.04em; }
.rich-body table { border-collapse: collapse; width: 100%; margin: 8px 0; }
.rich-body td, .rich-body th { border: 1px solid var(--line); padding: 5px 9px; font-size: 15px; }
.rich-embed { position: relative; width: 100%; aspect-ratio: 16 / 9; margin: 10px 0; background: #021014; }
.rich-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.rich-code { display: none; width: 100%; box-sizing: border-box; min-height: 220px; max-height: 460px; padding: 12px 14px; background: #02080a; color: #9fe8dd; border: 0; outline: none; font: 400 14px/1.7 var(--mono); resize: vertical; tab-size: 2; }
.rich-editor.rich-code-on .rich-body { display: none; }
.rich-editor.rich-code-on .rich-code { display: block; }
.rich-value { display: none; }
.rich-body.rich-dragover { outline: 2px dashed var(--cy); background: rgba(63, 242, 212, 0.08); }

/* V2.8：富文本编辑器 UI 美化（对齐站点全息风格） */
.rich-bar { gap: 4px; padding: 6px 8px; background: linear-gradient(180deg, rgba(63, 242, 212, 0.10), rgba(63, 242, 212, 0.03)); border-bottom: 1px solid rgba(63, 242, 212, 0.35); }
.rich-bar button, .rich-bar select { border: 1px solid var(--line); background: rgba(1, 10, 13, 0.6); color: var(--cy); padding: 5px 9px; min-width: 28px; }
.rich-bar button i { font-size: 15px; }
.rich-bar button:hover { border-color: var(--cy); background: var(--cy); color: #021014; box-shadow: 0 0 10px rgba(63, 242, 212, 0.5); }
.rich-bar button + button { border-left: 1px solid transparent; }
.rich-bar .rich-block { min-width: 76px; padding: 5px 20px 5px 8px; background: #031217 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%233ff2d4'/></svg>") no-repeat right 7px center; appearance: auto; }
.rich-editor { border: 1px solid rgba(63, 242, 212, 0.4); box-shadow: 0 0 0 1px rgba(1, 10, 13, 0.8), 0 8px 30px rgba(0, 0, 0, 0.45); }
.rich-body { background: linear-gradient(180deg, rgba(63, 242, 212, 0.03), rgba(1, 10, 13, 0.75)); }
.rich-body:focus { outline: 1px solid rgba(63, 242, 212, 0.5); }
.rich-code { background: #02080a; border-top: 1px solid var(--line); }

/* 自定义弹窗（替换浏览器原生 prompt） */
.rich-modal { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; background: rgba(1, 8, 11, 0.82); backdrop-filter: blur(2px); }
.rich-modal-box { width: min(460px, 92vw); border: 1px solid rgba(63, 242, 212, 0.45); background: linear-gradient(180deg, #031720, #021014); padding: 18px 20px; box-shadow: 0 0 30px rgba(63, 242, 212, 0.18), inset 0 0 0 1px rgba(63, 242, 212, 0.06); }
.rich-modal-box b { display: block; font: 700 14px/1 var(--mono); letter-spacing: 0.24em; color: #eafffb; margin-bottom: 14px; }
.rich-modal-box input, .rich-modal-box textarea { width: 100%; box-sizing: border-box; background: #02090c; border: 1px solid var(--line); color: #9fe8dd; padding: 9px 11px; font: 400 14px/1.6 var(--mono); outline: none; }
.rich-modal-box input:focus, .rich-modal-box textarea:focus { border-color: var(--cy); box-shadow: 0 0 10px rgba(63, 242, 212, 0.35); }
.rich-modal-box textarea { resize: vertical; }
.rich-modal-btns { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; }
.rich-modal-btns button { appearance: none; border: 1px solid var(--line); background: transparent; color: var(--cy); padding: 7px 18px; font: 700 13px/1 var(--mono); letter-spacing: 0.18em; cursor: pointer; }
.rich-modal-btns button:hover { border-color: var(--cy); background: rgba(63, 242, 212, 0.14); }
.rich-modal-btns .rich-ok { border-color: var(--cy); background: var(--cy); color: #021014; }
.rich-modal-btns .rich-ok:hover { box-shadow: 0 0 12px rgba(63, 242, 212, 0.6); }

/* V2.11：Code View 弹窗代码区 */
.rich-modal textarea.rich-code-area { font: 14.5px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; color: #b8ffea; background: #021014; border: 1px solid #1c4b45; resize: vertical; }


/* V2.16：后台侧栏底部版本号（白色，常驻） */
.editor .version { margin: auto 2px 2px; padding: 12px 4px 0; font: 12px/1.4 var(--mono); letter-spacing: 0.18em; color: #ffffff; border-top: 1px solid var(--line); white-space: nowrap; }
@media (max-width: 760px) { .editor .version { display: none; } }


/* ===== Life-Sim Archive Console supplements (keep CRUD markup readable) ===== */
.editor .workspace .wizard-card.on { display:block; }
.editor .flash-ok { margin:0 0 14px; padding:8px 12px; border:1px solid rgba(125,255,178,.35); border-left:3px solid var(--ok); background:rgba(125,255,178,.08); color:var(--ok); font:14px/1.4 var(--mono); letter-spacing:.08em; }
.editor .flash-err, .editor .err { margin:0 0 14px; padding:8px 12px; border:1px solid rgba(255,77,109,.4); border-left:3px solid var(--red); background:rgba(255,77,109,.08); color:#ff9aac; font:14px/1.4 var(--mono); letter-spacing:.08em; }
.editor .muted { color:var(--muted); }
.editor .badge { display:inline-block; margin:0 4px 0 0; padding:2px 6px; border:1px solid var(--line-2); font:11px/1.4 var(--mono); letter-spacing:.12em; color:var(--cy); }
.editor .badge-on { border-color:rgba(125,255,178,.45); color:var(--ok); }
.editor .badge-off { border-color:rgba(255,77,109,.4); color:#ff9aac; }
.editor .badge-major { border-color:var(--cy); color:var(--cy-2); }
.editor .badge-rare { border-color:#ffc857; color:#ffc857; }
.editor .sheet td .actions, .editor .row-actions { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.editor .sheet td form { display:inline; margin:0; }
.editor .btn, .editor a.btn {
  display:inline-flex; align-items:center; justify-content:center; padding:8px 14px;
  border:1px solid var(--line-2); background:transparent; color:var(--soft);
  font:14px/1 var(--mono); letter-spacing:.16em; text-transform:uppercase; text-decoration:none;
  cursor:pointer; clip-path:var(--cut); transition:.2s;
}
.editor .btn:hover, .editor a.btn:hover { color:var(--cy); background:rgba(63,242,212,.08); }
.editor .btn-primary, .editor a.btn-primary { border-color:var(--cy); background:var(--cy); color:#021014; font-weight:700; }
.editor .btn-primary:hover, .editor a.btn-primary:hover { background:#8cffec; }
.editor .btn-ghost { border-color:var(--cy-dim); color:var(--cy-2); background:rgba(63,242,212,.08); }
.editor .btn-danger { border-color:rgba(255,77,109,.5); color:#ff9aac; }
.editor .btn-sm { padding:6px 10px; font-size:12px; letter-spacing:.12em; }
.editor .toolbar {
  display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end; margin:0 0 16px;
}
.editor .toolbar .field { display:flex; flex-direction:column; gap:6px; min-width:120px; flex:1 1 140px; }
.editor .toolbar .field label, .editor .field-label {
  font:12px/1 var(--mono); letter-spacing:.22em; text-transform:uppercase; color:var(--muted);
}
.editor .toolbar .field label::before, .editor .field-label::before { content:"▸ "; color:var(--cy); }
.editor .toolbar input, .editor .toolbar select,
.editor .system-block input:not([type=checkbox]):not([type=file]),
.editor .system-block textarea, .editor .system-block select,
.editor .wizard-card select {
  width:100%; padding:10px 12px; border:1px solid var(--line-2); border-radius:0;
  background:rgba(1,10,13,.9); color:var(--text); font:16px/1.4 var(--body); outline:none;
}
.editor .toolbar input:focus, .editor .toolbar select:focus,
.editor .system-block input:focus, .editor .system-block textarea:focus, .editor .system-block select:focus,
.editor .wizard-card select:focus {
  border-color:var(--cy); box-shadow:0 0 0 1px rgba(63,242,212,.25), 0 0 16px rgba(63,242,212,.2);
}
.editor .form-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px 18px; }
.editor .form-grid > .full { grid-column:1 / -1; }
.editor .form-grid label, .editor .system-block > label, .editor .choice-card label {
  display:block; margin:0 0 14px;
}
.editor .form-grid label > span, .editor .form-grid > div > label,
.editor .choice-card label, .editor .system-block .field-label {
  display:block; margin-bottom:6px; font:13px/1 var(--mono); letter-spacing:.22em; text-transform:uppercase; color:var(--muted);
}
.editor .form-grid > div > label::before, .editor .choice-card label::before { content:"▸ "; color:var(--cy); }
.editor .check-row { display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center; padding:4px 0 10px; }
.editor .check-row label { display:flex !important; align-items:center; gap:8px; margin:0 !important; font:14px/1 var(--mono); letter-spacing:.12em; color:var(--soft); text-transform:none; }
.editor .check-row label::before { content:none !important; }
.editor .choice-card {
  position:relative; margin:0 0 14px; padding:16px 14px 6px; border:1px solid var(--line);
  background:var(--brk), rgba(1,10,13,.45);
}
.editor .choice-head { margin:0 0 10px; font:13px/1 var(--mono); letter-spacing:.28em; color:var(--cy); text-transform:uppercase; }
.editor .name-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.editor .name-card {
  position:relative; padding:18px 14px 10px; border:1px solid var(--line);
  background:var(--brk), rgba(1,10,13,.5);
}
.editor .name-card::before {
  content:attr(data-node); position:absolute; top:-8px; left:12px; padding:0 8px;
  background:#031217; font:12px/16px var(--mono); letter-spacing:.24em; color:var(--cy);
}
.editor .name-card textarea { min-height:120px; }
.editor .stat-cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:0 0 20px; }
.editor .stat-card {
  position:relative; padding:16px 14px; border:1px solid var(--line-2);
  background:var(--brk), rgba(3,18,23,.82);
}
.editor .stat-card .k { font:12px/1 var(--mono); letter-spacing:.24em; color:var(--muted); text-transform:uppercase; }
.editor .stat-card .v { margin-top:10px; font:700 30px/1 var(--disp); color:#eafffb; text-shadow:var(--glow); letter-spacing:.06em; }
.editor .steps a.step-link {
  display:flex; align-items:center; gap:12px; width:100%; padding:12px 14px; text-align:left; text-decoration:none;
  border:1px solid var(--line); background:rgba(3,18,23,.6); color:var(--muted);
  font:600 17px/1.2 var(--ui); letter-spacing:.08em; transition:.2s;
  clip-path:polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 0 100%);
}
.editor .steps a.step-link b { padding:3px 5px; font:13px/1 var(--mono); letter-spacing:.1em; color:var(--cy); border:1px solid var(--line-2); }
.editor .steps a.step-link:hover { color:var(--text); border-color:var(--line-2); background:rgba(63,242,212,.07); }
.editor .steps a.step-link.on { color:#021014; border-color:var(--cy); background:linear-gradient(90deg, var(--cy), #27c9b3); }
.editor .steps a.step-link.on b { color:#021014; border-color:rgba(2,16,20,.4); }
.editor details.adv { margin-top:12px; border:1px dashed var(--line); padding:10px 12px; }
.editor details.adv summary { cursor:pointer; font:12px/1 var(--mono); letter-spacing:.14em; color:var(--muted); }
@media (max-width:900px) {
  .editor .form-grid, .editor .name-grid, .editor .stat-cards { grid-template-columns:1fr; }
}
