@import url('/static/vendor/css/fonts.css?v=2026.05.22.1');

/* ===== Theme variables · 曜黑鎏金 Obsidian & Champagne ===== */
:root {
    --ease:cubic-bezier(.4,0,.2,1);
    --page:#f6f4ee;
    --grid:rgba(160,150,120,.14);
    --panel:rgba(255,255,255,.94);
    --panel-solid:#ffffff;
    --card:rgba(255,255,255,.98);
    --card-solid:#ffffff;
    --soft:#f2f1ee;
    --soft-2:#e8e7e3;
    --line:#e4e3df;
    --line-2:#cfcdc6;
    --text:#1a1917;
    --muted:#6b675f;
    --faint:#98948a;
    --shadow:rgba(12,10,6,.08);
    --shadow-strong:rgba(12,10,6,.16);
    --strong:#1a1917;
    --strong-text:#f7f5f0;
    --accent:#8f6f2e;
    --accent-soft:#f3eddd;
    --accent-line:#d9c9a0;
    --success:#35855a;
    --danger:#b3372f;
    --danger-soft:#f9efec;
    /* 惊蛰生态色：金是雷光、绿是新芽、粉是桃花、褐是春泥（新增 token 一律走 var()，不加 !important） */
    --sprout:#35855a; --sprout-soft:rgba(53,133,90,.12);
    --peach:#c96a84; --peach-soft:rgba(201,106,132,.12);
    --soil:#7d6a55; --soil-soft:rgba(125,106,85,.14);
    --font-ui:"Inter","PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
    --font-display:"Space Grotesk","Inter","PingFang SC","Microsoft YaHei",sans-serif;
    --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Consolas,monospace;
    --r-sm:3px; --r-md:6px; --r-lg:10px; --r-pill:999px;
    --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px;
    --shadow-1:0 1px 2px rgba(12,10,6,.05), 0 4px 14px rgba(12,10,6,.08);
    --shadow-2:0 6px 16px rgba(12,10,6,.10), 0 18px 44px rgba(12,10,6,.16);
    --motion-fast:.2s; --motion-base:.3s; --motion-slow:.45s;
    --ease-out:cubic-bezier(.19,1,.22,1);
}
.theme-dark {
    --page:#0b0b0d;
    --grid:rgba(212,181,122,.09);
    --panel:rgba(19,19,22,.92);
    --panel-solid:#131316;
    --card:rgba(26,26,30,.98);
    --card-solid:#1a1a1e;
    --soft:#202024;
    --soft-2:#28282e;
    --line:#2c2c33;
    --line-2:#45454e;
    --text:#f2efe8;
    --muted:#a8a294;
    --faint:#6f6a5e;
    --shadow:rgba(0,0,0,.44);
    --shadow-strong:rgba(0,0,0,.6);
    --strong:#d8b878;
    --strong-text:#191510;
    --accent:#d4b57a;
    --accent-soft:rgba(212,181,122,.12);
    --accent-line:rgba(212,181,122,.30);
    --success:#7fbf8e;
    --danger:#e07856;
    --danger-soft:rgba(224,120,86,.14);
    /* 惊蛰生态色（暗色：夜·静候惊雷） */
    --sprout:#8fce8f; --sprout-soft:rgba(143,206,143,.14);
    --peach:#e8a0b4; --peach-soft:rgba(232,160,180,.14);
    --soil:#a08b72; --soil-soft:rgba(160,139,114,.16);
}

* { box-sizing:border-box; }
body { margin:0; height:100vh; overflow:hidden; background:var(--page); color:var(--text); font-family:var(--font-ui,"Avenir Next","Helvetica Neue","Segoe UI","PingFang SC","Microsoft YaHei",sans-serif); -webkit-font-smoothing:antialiased; }

/* ===== Workspace shell (two pane) ===== */
.workspace { position:relative; display:flex; height:100vh; overflow:hidden; }
html[data-studio-scale="off"].studio-scale-managed .workspace {
    /* 标准化 zoom 下百分比宽度已按 zoom 换算，不能再除以 scale（会宽出 1/scale 倍、右侧被裁）；
       vh 单位不受 zoom 影响，高度仍需除以 scale 补偿 */
    width: 100%;
    height: calc(100vh / var(--studio-ui-scale, 1));
    zoom: var(--studio-ui-scale, 1);
}

/* ===== LEFT sidebar ===== */
.ws-sidebar { flex:0 0 272px; width:272px; display:flex; flex-direction:column; background:var(--panel); border-right:1px solid var(--line); border-left:0; backdrop-filter:blur(14px); box-shadow:none; }
.ws-side-head { display:flex; align-items:center; justify-content:space-between; padding:18px 16px 12px; }
.ws-side-title { font-size:15px; font-weight:850; letter-spacing:0; color:var(--text); }
.ws-side-add { width:32px; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--muted); background:var(--panel-solid); border:1px solid var(--line); transition:all .15s var(--ease); cursor:pointer; }
.ws-side-add:hover { color:var(--text); border-color:var(--line-2); background:var(--soft); box-shadow:0 6px 14px var(--shadow); }
    .ws-side-add:focus-visible,.ws-icon-btn:focus-visible,.ws-primary-btn:focus-visible,.ws-paste-btn:focus-visible,.ws-trash-act:focus-visible,.ws-pop-item:focus-visible,.ws-side-nav-link:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }

.ws-newproj-row { display:none; align-items:center; gap:4px; margin:0 12px 8px; padding:4px; border:1px solid var(--line); border-radius:8px; background:var(--card-solid); box-shadow:0 8px 18px var(--shadow); }
.ws-newproj-row.active { display:flex; }
.ws-newproj-input { flex:1; min-width:0; height:30px; border:0; background:transparent; padding:0 8px; outline:none; color:var(--text); font-size:13px; font-weight:600; }
.ws-mini-btn { width:30px; height:30px; flex:0 0 auto; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--muted); background:var(--soft); border:1px solid var(--line); cursor:pointer; transition:all .14s var(--ease); }
.ws-mini-btn:hover { color:var(--text); border-color:var(--line-2); }
.ws-mini-btn.primary { background:var(--strong); color:var(--strong-text); border-color:var(--strong); }

.ws-project-list { flex:1; min-height:0; overflow:auto; padding:4px 10px 10px; display:flex; flex-direction:column; gap:4px; }
.ws-project-row { position:relative; display:flex; align-items:center; gap:9px; min-height:40px; padding:8px 10px; border-radius:8px; cursor:pointer; border:0; background:var(--card-solid); box-shadow:inset 0 0 0 1px var(--line), 0 1px 2px var(--shadow); transition:background .14s var(--ease), box-shadow .14s var(--ease), transform .14s var(--ease); }
.ws-project-row:hover { background:var(--soft); transform:translateY(-1px); box-shadow:inset 0 0 0 1px var(--line-2), 0 4px 10px var(--shadow); }
.ws-project-row.active { background:var(--accent-soft); box-shadow:inset 0 0 0 1px var(--accent-line); transform:none; }
.ws-project-row.active::before { content:''; position:absolute; left:0; top:7px; bottom:7px; width:3px; border-radius:2px; background:var(--accent); }
.ws-project-row.active .ws-project-name { color:var(--strong); }
.ws-project-row.active .ws-project-icon { color:var(--accent); opacity:1; }
.ws-project-icon { flex:0 0 auto; width:18px; height:18px; display:flex; align-items:center; justify-content:center; color:var(--faint); }
.ws-project-name { flex:1; min-width:0; font-size:13px; font-weight:700; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ws-project-name-input { flex:1; min-width:0; font-size:13px; font-weight:700; color:var(--text); background:var(--card-solid); border:1px solid var(--line-2); border-radius:7px; padding:3px 6px; outline:none; }
.ws-project-count { flex:0 0 auto; min-width:20px; height:20px; padding:0 6px; border-radius:999px; display:inline-flex; align-items:center; justify-content:center; background:var(--soft-2); color:var(--muted); font-size:10px; font-weight:800; }
.ws-project-row.active .ws-project-count { background:var(--accent); color:var(--strong-text); }
.ws-project-actions { display:none; align-items:center; gap:2px; flex:0 0 auto; }
.ws-project-row:hover .ws-project-actions { display:flex; }
.ws-project-row:hover .ws-project-count { display:none; }
.ws-proj-act { width:22px; height:22px; border-radius:7px; display:flex; align-items:center; justify-content:center; color:var(--faint); background:transparent; border:none; cursor:pointer; transition:all .13s var(--ease); }
.ws-proj-act:hover { color:var(--text); background:var(--soft-2); }
.ws-project-row.active .ws-proj-act { color:var(--muted); background:transparent; }
.ws-project-row.active .ws-proj-act:hover { color:var(--text); background:var(--soft-2); }
.ws-proj-act.del:hover { color:#dc2626; background:#fee2e2; }
.theme-dark .ws-proj-act.del:hover { color:#fca5a5; background:rgba(220,38,38,.22); }
.ws-project-row.active .ws-proj-act.del:hover { color:#fecaca; background:rgba(248,113,113,.22); }

/* delete-confirm inline */
.ws-project-confirm { display:flex; flex-direction:column; gap:7px; padding:10px; margin:2px 0; border-radius:8px; background:var(--strong); box-shadow:0 10px 24px var(--shadow); }
.ws-project-confirm-title { color:var(--strong-text); font-size:11px; font-weight:800; line-height:1.4; }
.ws-project-confirm-actions { display:flex; gap:6px; }
.ws-confirm-btn,.ws-cancel-btn { flex:1; height:26px; border-radius:999px; font-size:11px; font-weight:800; cursor:pointer; border:none; }
.ws-confirm-btn { background:#dc2626; color:#fff; }
.ws-confirm-btn:hover { background:#b91c1c; }
.ws-cancel-btn { background:var(--soft); color:var(--text); border:1px solid var(--line); }

.ws-side-foot { padding:10px 12px; border-top:1px solid var(--line); background:linear-gradient(180deg, transparent, rgba(100,116,139,.04)); }
.ws-trash-entry { width:100%; display:flex; align-items:center; gap:9px; min-height:40px; padding:8px 10px; border-radius:8px; color:var(--muted); background:var(--card-solid); border:1px solid var(--line); box-shadow:var(--shadow-1); cursor:pointer; transition:all .14s var(--ease); font-size:13px; font-weight:750; }
.ws-trash-entry:hover { color:var(--text); background:var(--soft); border-color:var(--line-2); box-shadow:var(--shadow-2); transform:translateY(-1px); }
.ws-trash-entry.active { color:var(--text); background:var(--danger-soft); border-color:rgba(220,38,38,.22); }
.ws-trash-label { flex:1; text-align:left; }
.ws-trash-badge { min-width:18px; height:18px; padding:0 6px; border-radius:999px; display:none; align-items:center; justify-content:center; background:#475569; color:#fff; font-size:10px; font-weight:800; }
.ws-trash-badge.visible { display:inline-flex; }

/* ===== RIGHT main / board ===== */
.ws-main { position:relative; flex:1; min-width:0; display:flex; flex-direction:column; overflow:hidden; }
.ws-topbar { position:relative; z-index:6; display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:60px; padding:11px 18px; background:var(--panel); border-bottom:1px solid var(--line); backdrop-filter:blur(14px); }
.ws-topbar-left { display:flex; align-items:center; gap:10px; min-width:0; }
.ws-brand-mark { width:22px; height:22px; border-radius:6px; flex-shrink:0; content:url("/static/images/logo-mark-small-light.svg"); }
html.studio-theme-dark .ws-brand-mark { content:url("/static/images/logo-mark-small-dark.svg"); }
.ws-board-name { font-family:var(--font-display); font-size:21px; font-weight:800; letter-spacing:.01em; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:40vw; }
.ws-board-count { min-width:20px; height:20px; padding:0 8px; border-radius:999px; display:inline-flex; align-items:center; justify-content:center; background:var(--accent-soft); color:var(--accent); border:1px solid var(--accent-line); font-size:11px; font-weight:800; }
.ws-topbar-right { display:flex; align-items:center; gap:8px; flex:0 0 auto; }
.ws-icon-btn { width:36px; height:36px; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--muted); background:var(--card-solid); border:1px solid var(--line); cursor:pointer; transition:all .15s var(--ease); }
a.ws-icon-btn { text-decoration:none; color:var(--muted); }
.ws-icon-btn:hover, a.ws-icon-btn:hover { color:var(--text); border-color:var(--line-2); background:var(--soft); box-shadow:0 6px 14px var(--shadow); }
.ws-primary-btn { height:36px; padding:0 14px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; gap:7px; background:var(--strong); color:var(--strong-text); border:none; cursor:pointer; font-size:12px; font-weight:850; box-shadow:0 8px 18px var(--shadow); }
.ws-primary-btn:hover { transform:translateY(-1px); box-shadow:0 12px 24px var(--shadow-strong); }
/* 粘贴到此项目：剪切后才出现的强调按钮，固定高对比色避免主题变量冲淡文字。 */
.ws-paste-btn { height:36px; padding:0 13px; border-radius:6px; display:inline-flex; align-items:center; justify-content:center; gap:7px; background:#1a1917; color:#f7f5f0; border:1px solid rgba(212,181,122,.35); cursor:pointer; font-size:12px; font-weight:700; box-shadow:0 10px 26px rgba(12,10,6,.24); }
.ws-paste-btn:hover { background:#262421; box-shadow:0 14px 32px rgba(12,10,6,.3); }
.ws-paste-btn span { color:inherit; }
.ws-paste-btn i,.ws-paste-btn svg { width:16px; height:16px; color:inherit; stroke:currentColor; }
.theme-dark .ws-paste-btn { background:#d8b878; color:#191510; border-color:rgba(25,21,16,.4); box-shadow:0 12px 30px rgba(0,0,0,.5); }
.theme-dark .ws-paste-btn:hover { background:#e3c68c; }

.ws-board { position:relative; flex:1; min-height:300px; overflow:hidden; background:var(--page); background-image:linear-gradient(rgba(100,116,139,.045) 1px, transparent 1px), linear-gradient(90deg, rgba(100,116,139,.045) 1px, transparent 1px), radial-gradient(var(--grid) 1px, transparent 1px); background-size:120px 120px, 120px 120px, 24px 24px; cursor:grab; user-select:none; }
.ws-board.panning { cursor:grabbing; }
.ws-board-world { position:absolute; left:0; top:0; transform-origin:0 0; will-change:transform; }

.ws-board-empty { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); display:flex; flex-direction:column; align-items:center; gap:12px; width:min(320px, calc(100% - 48px)); color:var(--faint); }
.ws-board-empty.hidden { display:none; }
.ws-board-empty-icon { width:58px; height:58px; border-radius:16px; display:flex; align-items:center; justify-content:center; background:var(--sprout-soft); border:1px solid color-mix(in srgb, var(--sprout) 38%, transparent); color:var(--sprout); box-shadow:0 12px 28px var(--shadow); }
.ws-board-empty-text { font-size:15px; font-weight:850; color:var(--text); }
.ws-board-empty-sub { margin-top:-6px; font-size:12px; font-weight:650; color:var(--muted); text-align:center; }
.ws-board-empty-actions { display:flex; align-items:center; gap:8px; }

/* ===== Board card ===== */
.ws-card {
    position:absolute;
    width:248px;
    height:150px;
    border-radius:8px;
    background:var(--card-solid);
    border:1px solid var(--line);
    box-shadow:0 6px 18px rgba(15,23,42,.06);
    padding:14px;
    display:flex;
    flex-direction:column;
    gap:12px;
    cursor:pointer;
    overflow:hidden;
    transition:box-shadow .16s var(--ease), border-color .16s var(--ease), transform .16s var(--ease), background .16s var(--ease);
}
.ws-card::before { display:none; }
.ws-card:hover { border-color:var(--accent-line); box-shadow:0 16px 36px var(--shadow-strong); transform:translateY(-3px); }
.ws-card.dragging { box-shadow:0 20px 48px var(--shadow-strong); border-color:var(--line-2); transform:none; z-index:50; cursor:grabbing; transition:none; }
.ws-card.cc-marked { border-color:var(--line-2); }
.ws-card.cut { opacity:.56; border-style:dashed; }
.ws-card-top { display:flex; align-items:center; gap:8px; min-height:28px; flex:0 0 auto; min-width:0; white-space:nowrap; overflow:hidden; }
.ws-card-icon { width:30px; height:30px; flex:0 0 auto; border-radius:9px; display:flex; align-items:center; justify-content:center; background:var(--soft); color:var(--muted); border:1px solid var(--line); font-size:16px; transition:all .16s var(--ease); }
.ws-card:hover .ws-card-icon { border-color:var(--accent-line); color:var(--accent); }
.ws-card-icon.icon-has-color { background:var(--accent); color:#fff; border-color:transparent; }
.ws-card-kind { display:inline-flex; align-items:center; justify-content:center; flex:0 1 auto; min-width:0; max-width:calc(100% - 36px); height:22px; padding:0 8px; border-radius:6px; font-size:10px; font-weight:850; letter-spacing:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ws-card-kind.smart { background:#f5f3ff; color:#6d28d9; border:1px solid #ddd6fe; }
.ws-card-kind.classic { background:var(--soft-2); color:var(--muted); border:1px solid var(--line); }
.ws-card-menu { margin-left:auto; width:28px; height:28px; flex:0 0 28px; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--faint); background:transparent; border:1px solid transparent; cursor:pointer; opacity:.58; transition:all .14s var(--ease); }
.ws-card:hover .ws-card-menu,.ws-card:focus-within .ws-card-menu { opacity:1; }
.ws-card-menu:hover { color:var(--text); background:var(--soft); border-color:var(--line); }
.ws-card-title { font-size:15px; line-height:1.35; font-weight:800; letter-spacing:0; color:var(--text); overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; word-break:break-word; }
.ws-card-title-input { font-size:15px; line-height:1.35; font-weight:800; color:var(--text); background:var(--card-solid); border:1px solid var(--line-2); border-radius:8px; padding:5px 7px; outline:none; width:100%; }
.ws-card-meta { margin-top:auto; display:flex; align-items:center; gap:6px; align-self:stretch; min-width:0; padding:9px 10px; border-radius:8px; background:var(--soft); border:1px solid var(--line); }
.ws-card-meta-dot { width:4px; height:4px; flex:0 0 auto; border-radius:50%; background:var(--faint); opacity:.7; }
.ws-card-time { min-width:0; font-size:11px; font-weight:650; color:var(--muted); letter-spacing:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ws-card-nodes { font-size:11px; font-weight:750; color:var(--muted); white-space:nowrap; }
.ws-card-actions { display:flex; gap:7px; margin-top:auto; }
.ws-card-delete-confirm { display:none; flex-direction:column; gap:8px; margin-top:auto; padding:8px; border-radius:8px; background:var(--danger-soft); border:1px solid rgba(220,38,38,.2); }
.ws-card.confirming-delete .ws-card-title,
.ws-card.confirming-delete .ws-card-meta { display:none; }
.ws-card.confirming-delete .ws-card-delete-confirm { display:flex; }
.ws-card-delete-title { font-size:12px; line-height:1.45; font-weight:800; color:var(--text); }
.ws-card-delete-actions { display:flex; gap:7px; }
.ws-card-delete-actions button { flex:1; height:30px; border-radius:8px; border:1px solid var(--line); cursor:pointer; font-size:12px; font-weight:800; }
.ws-card-delete-yes { background:var(--danger); color:#fff; border-color:var(--danger) !important; }
.ws-card-delete-no { background:var(--card-solid); color:var(--muted); }

/* ===== Card context menu ===== */
.ws-card-pop { position:fixed; left:0; top:0; z-index:200; width:214px; padding:6px; border-radius:8px; border:1px solid var(--line); background:var(--card-solid); color:var(--text); box-shadow:0 22px 54px var(--shadow-strong); display:flex; flex-direction:column; gap:1px; }
.ws-pop-item { display:flex; align-items:center; gap:9px; width:100%; padding:8px 10px; border-radius:8px; background:transparent; border:none; cursor:pointer; color:var(--text); font-size:12.5px; font-weight:700; text-align:left; transition:background .12s var(--ease); }
.ws-pop-item:hover { background:var(--soft); }
.ws-pop-item.danger { color:var(--danger); }
.ws-pop-item.danger:hover { background:var(--danger-soft); }
.ws-pop-sep { height:1px; margin:3px 4px; background:var(--line); }
.ws-pop-sub-title { padding:6px 10px 2px; font-size:9px; font-weight:800; letter-spacing:0; text-transform:uppercase; color:var(--faint); }
.ws-pop-proj { display:flex; align-items:center; gap:8px; width:100%; padding:7px 10px; border-radius:9px; background:transparent; border:none; cursor:pointer; color:var(--text); font-size:12px; font-weight:700; text-align:left; transition:background .12s var(--ease); }
.ws-pop-proj:hover { background:var(--soft); }
.ws-pop-proj.current { color:var(--faint); cursor:default; }
.ws-pop-proj.current:hover { background:transparent; }
.ws-pop-scroll { max-height:200px; overflow:auto; }

/* ===== Inline card create flow (on board) ===== */
/* 一键直建：新建画布弹窗已移除（quickCreateCanvas 直建后直接进编辑器） */
.ws-create-title { font-size:12px; font-weight:850; color:var(--text); }
.ws-create-input { width:100%; height:34px; border-radius:8px; border:1px solid var(--line); background:var(--soft); color:var(--text); font-size:13px; font-weight:600; padding:0 10px; outline:none; }
.ws-create-input:focus { border-color:var(--line-2); background:var(--card-solid); }
.ws-create-toggle { display:flex; gap:4px; padding:4px; border-radius:8px; background:var(--soft-2); border:1px solid var(--line-2); }
.ws-create-toggle-btn { flex:1; height:30px; border-radius:8px; font-size:11px; font-weight:800; color:var(--muted); background:transparent; border:none; cursor:pointer; transition:all .13s var(--ease); }
.ws-create-toggle-btn.active { background:var(--strong); color:var(--strong-text); box-shadow:0 6px 14px var(--shadow); }
.ws-create-actions { display:flex; gap:6px; }
.ws-create-confirm,.ws-create-cancel { flex:1; height:32px; border-radius:8px; font-size:12px; font-weight:800; cursor:pointer; border:none; }
.ws-create-confirm { background:var(--strong); color:var(--strong-text); }
.ws-create-cancel { background:var(--soft); color:var(--muted); border:1px solid var(--line); }

/* ===== Trash panel ===== */
.ws-trash-panel { position:absolute; inset:0; z-index:20; display:none; flex-direction:column; background:var(--page); }
.ws-trash-panel.active { display:flex; }
.ws-trash-head { display:flex; align-items:center; justify-content:space-between; min-height:60px; padding:11px 18px; border-bottom:1px solid var(--line); background:var(--panel); backdrop-filter:blur(14px); }
.ws-trash-head-title { display:flex; align-items:center; gap:8px; font-size:15px; font-weight:850; color:var(--text); }
.ws-trash-note { display:flex; align-items:center; gap:7px; margin:14px 18px 0; padding:10px 12px; border-radius:8px; background:var(--accent-soft); color:var(--accent); border:1px solid var(--accent-line); font-size:12px; font-weight:700; }
.ws-trash-list { flex:1; min-height:0; overflow:auto; padding:16px 18px 24px; display:grid; grid-template-columns:repeat(auto-fill, minmax(248px, 1fr)); gap:14px; align-content:start; }
.ws-trash-empty { grid-column:1/-1; min-height:280px; display:flex; align-items:center; justify-content:center; text-align:center; color:var(--faint); font-size:14px; font-weight:750; }
.ws-trash-card { position:relative; border-radius:8px; background:var(--card-solid); border:1px solid var(--line); padding:14px; display:flex; flex-direction:column; gap:12px; min-height:150px; box-shadow:0 6px 18px rgba(15,23,42,.06); overflow:hidden; }
.ws-trash-card::before { display:none; }
.ws-trash-card .ws-card-actions { display:flex; gap:6px; margin-top:auto; }
.ws-trash-act { flex:1; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center; gap:5px; font-size:11.5px; font-weight:800; cursor:pointer; border:1px solid var(--line); background:var(--soft); color:var(--muted); transition:all .14s var(--ease); }
.ws-trash-act.restore:hover { color:var(--success); background:#ecfdf5; border-color:#a7f3d0; }
.ws-trash-act.purge:hover { color:var(--danger); background:var(--danger-soft); border-color:#fecaca; }
.ws-trash-card.confirming .ws-card-actions { display:none; }
.ws-trash-confirm { display:none; flex-direction:column; gap:8px; margin-top:auto; padding:8px; border-radius:8px; background:var(--danger-soft); border:1px solid rgba(220,38,38,.2); }
.ws-trash-card.confirming .ws-trash-confirm { display:flex; }
.ws-trash-confirm-title { font-size:11px; font-weight:800; color:var(--text); }
.ws-trash-confirm-actions { display:flex; gap:6px; }
.ws-trash-confirm-actions button { flex:1; height:30px; border-radius:8px; font-size:11px; font-weight:800; cursor:pointer; border:none; }
.ws-trash-confirm-yes { background:var(--danger); color:#fff; }
.ws-trash-confirm-no { background:var(--soft); color:var(--muted); border:1px solid var(--line); }

/* ===== Status toast ===== */
.ws-status { position:absolute; left:50%; bottom:18px; transform:translateX(-50%); z-index:30; padding:8px 16px; border-radius:999px; background:var(--strong); color:var(--strong-text); font-size:12px; font-weight:700; box-shadow:0 10px 30px var(--shadow); opacity:0; pointer-events:none; transition:opacity .2s var(--ease); }
.ws-status.show { opacity:1; }

/* ===== Dark theme adjustments ===== */
.theme-dark .ws-trash-note { background:var(--accent-soft); color:var(--accent); border-color:var(--accent-line); }
.theme-dark .ws-primary-btn { background:var(--strong); color:var(--strong-text); }
.theme-dark .ws-project-row.active .ws-project-name { color:#191510; }
.theme-dark .ws-project-row.active .ws-project-icon { color:#191510; }
.theme-dark .ws-project-row.active .ws-project-count { background:rgba(25,21,16,.20); color:#191510; }
.theme-dark .ws-project-row.active .ws-proj-act { color:#191510; background:transparent; }
.theme-dark .ws-project-row.active .ws-proj-act:hover { color:#191510; background:rgba(25,21,16,.16); }
.theme-dark .ws-project-row.active .ws-proj-act.del:hover { color:#4a1508; background:rgba(122,32,16,.28); }
.theme-dark .ws-mini-btn.primary { background:var(--strong); color:var(--strong-text); border-color:var(--strong); }
.theme-dark .ws-card-kind.smart { background:rgba(139,92,246,.18); color:#c4b5fd; border-color:rgba(139,92,246,.3); }
.theme-dark .ws-create-confirm { background:var(--strong); color:var(--strong-text); }
.theme-dark .ws-create-toggle-btn.active { background:var(--strong); color:var(--strong-text); }
.theme-dark .ws-trash-act.restore:hover { color:#6ee7b7; background:rgba(5,150,105,.15); border-color:rgba(110,231,183,.35); }
.theme-dark .ws-trash-act.purge:hover { color:#fecaca; background:rgba(220,38,38,.18); border-color:rgba(248,113,113,.35); }
.theme-dark .ws-pop-item.danger:hover { background:rgba(220,38,38,.18); }
.theme-dark .ws-card-delete-no { background:var(--soft); }

/* ===== Workbench overview band (wb-) ===== */
.wb-overview { position:relative; z-index:5; padding:12px 18px 0; background:var(--panel); border-bottom:1px solid var(--line); backdrop-filter:blur(14px); }
.wb-overview-head { display:flex; align-items:center; gap:12px; margin-bottom:10px; }
.wb-overview-title { display:flex; align-items:center; gap:7px; font-size:12px; font-weight:800; letter-spacing:.04em; color:var(--muted); }
.wb-overview-title svg { color:var(--accent); }
.wb-quick-row { display:flex; align-items:center; gap:8px; margin-left:auto; }
.wb-quick-btn { display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 12px; border-radius:var(--r-pill); background:var(--card-solid); border:1px solid var(--line); color:var(--text); font-size:12px; font-weight:750; cursor:pointer; text-decoration:none; white-space:nowrap; transition:all .18s var(--ease); }
.wb-quick-btn:hover { border-color:var(--accent-line); color:var(--accent); background:var(--accent-soft); transform:translateY(-1px); box-shadow:0 6px 14px var(--shadow); }
.wb-collapse-btn { width:28px; height:28px; flex:0 0 auto; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--muted); background:var(--card-solid); border:1px solid var(--line); cursor:pointer; transition:all .18s var(--ease); }
.wb-collapse-btn:hover { color:var(--text); border-color:var(--line-2); background:var(--soft); }
.wb-collapse-btn svg { transition:transform .2s var(--ease); }
.wb-overview.collapsed .wb-collapse-btn svg { transform:rotate(180deg); }
.wb-overview.collapsed .wb-overview-body { display:none; }
.wb-overview.collapsed { padding-bottom:12px; }
.wb-overview:not(.collapsed) .wb-overview-body { max-height:48vh; overflow-y:auto; }
.wb-overview-body .wb-template-section { grid-column:1 / -1; margin-top:2px; }

.wb-overview-body { display:grid; grid-template-columns:minmax(270px,1.15fr) 1.35fr 1.1fr 1.1fr; gap:12px; padding-bottom:12px; }
.wb-overview-body > * { min-width:0; animation:wb-in .3s var(--ease-out) backwards; }
.wb-overview-body > *:nth-child(1) { animation-delay:.02s; }
.wb-overview-body > *:nth-child(2) { animation-delay:.07s; }
.wb-overview-body > *:nth-child(3) { animation-delay:.12s; }
.wb-overview-body > *:nth-child(4) { animation-delay:.17s; }
@keyframes wb-in { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }

/* stats */
.wb-stats { display:grid; grid-template-columns:1fr 1fr; grid-auto-rows:1fr; gap:8px; }
.wb-stat-card { position:relative; padding:11px 13px; border-radius:var(--r-md); background:var(--card-solid); border:1px solid var(--line); box-shadow:var(--shadow-1); overflow:hidden; transition:transform .18s var(--ease), box-shadow .18s var(--ease), border-color .18s var(--ease); }
.wb-stat-card::before { content:''; position:absolute; left:0; right:0; top:0; height:2px; background:var(--accent); opacity:.5; }
.wb-stat-card:hover { transform:translateY(-2px); border-color:var(--accent-line); box-shadow:var(--shadow-2); }
.wb-stat-top { display:flex; align-items:flex-start; justify-content:space-between; gap:6px; }
.wb-stat-num { font-family:var(--font-display); font-size:25px; line-height:1.1; font-weight:800; color:var(--text); font-variant-numeric:tabular-nums; }
.wb-stat-icon { width:16px; height:16px; color:var(--accent); opacity:.75; }
.wb-stat-label { margin-top:3px; font-size:11px; font-weight:700; color:var(--muted); }

/* generic card head */
.wb-chart-card, .wb-list-card { padding:12px 14px; border-radius:var(--r-md); background:var(--card-solid); border:1px solid var(--line); box-shadow:var(--shadow-1); transition:border-color .18s var(--ease), box-shadow .18s var(--ease); }
.wb-chart-card:hover, .wb-list-card:hover { border-color:var(--line-2); box-shadow:var(--shadow-2); }
.wb-card-head { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin-bottom:8px; }
.wb-card-title { font-size:12.5px; font-weight:800; color:var(--text); }
.wb-card-sub { font-size:11px; font-weight:700; color:var(--faint); }

/* chart */
.wb-chart { width:100%; }
.wb-chart svg { display:block; width:100%; height:96px; overflow:visible; }
.wb-chart-bar { fill:var(--accent); opacity:.85; transform-box:fill-box; transform-origin:bottom; animation:wb-bar-in .28s var(--ease-out) backwards; cursor:default; }
.wb-chart-bar:hover { opacity:1; }
.wb-chart-axis { stroke:var(--line-2); stroke-width:1; }
.wb-chart-label { font-size:9px; font-weight:700; fill:var(--faint); }
@keyframes wb-bar-in { from { transform:scaleY(0); } to { transform:scaleY(1); } }
.wb-tip { position:fixed; z-index:400; padding:5px 9px; border-radius:8px; background:var(--strong); color:var(--strong-text); font-size:11px; font-weight:700; white-space:nowrap; pointer-events:none; opacity:0; transform:translate(-50%,-10px); transition:opacity .12s var(--ease); box-shadow:var(--shadow-2); }
.wb-tip.show { opacity:1; }

/* recent list */
.wb-recent-list { display:flex; flex-direction:column; min-height:0; }
.wb-recent-item { display:flex; align-items:center; gap:9px; width:100%; padding:6px 6px; border:0; border-radius:8px; background:transparent; text-align:left; cursor:pointer; transition:background .15s var(--ease); }
.wb-recent-item:hover { background:var(--soft); }
.wb-recent-icon { flex:0 0 auto; width:26px; height:26px; border-radius:8px; display:flex; align-items:center; justify-content:center; background:var(--soft); border:1px solid var(--line); color:var(--muted); font-size:13px; overflow:hidden; }
.wb-recent-title { flex:1; min-width:0; font-size:12.5px; font-weight:700; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wb-recent-time { flex:0 0 auto; font-size:10.5px; font-weight:650; color:var(--faint); }
.wb-recent-empty { padding:16px 0; text-align:center; font-size:12px; font-weight:700; color:var(--faint); }

/* todo */
.wb-todo-input-row { display:flex; gap:6px; margin-bottom:6px; }
.wb-todo-input { flex:1; min-width:0; height:32px; border-radius:8px; border:1px solid var(--line); background:var(--soft); color:var(--text); font-size:12.5px; font-weight:600; padding:0 10px; outline:none; transition:border-color .15s var(--ease), background .15s var(--ease); }
.wb-todo-input:focus { border-color:var(--accent-line); background:var(--card-solid); }
.wb-todo-input::placeholder { color:var(--faint); }
.wb-todo-add { flex:0 0 auto; width:32px; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center; background:var(--strong); color:var(--strong-text); border:none; cursor:pointer; transition:all .15s var(--ease); }
.wb-todo-add:hover { transform:translateY(-1px); box-shadow:0 6px 14px var(--shadow); }
.wb-todo-list { display:flex; flex-direction:column; gap:2px; max-height:148px; overflow:auto; }
.wb-todo-item { display:flex; align-items:flex-start; gap:8px; padding:5px 4px; border-radius:8px; transition:background .14s var(--ease); }
.wb-todo-item:hover { background:var(--soft); }
.wb-todo-check { flex:0 0 auto; width:16px; height:16px; margin-top:2px; padding:0; border-radius:5px; border:1.5px solid var(--line-2); background:var(--card-solid); color:transparent; display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:900; line-height:1; cursor:pointer; transition:all .18s var(--ease); }
.wb-todo-check:hover { border-color:var(--accent); }
.wb-todo-item.done .wb-todo-check { background:var(--accent); border-color:var(--accent); color:var(--strong-text); }
.wb-todo-text { flex:1; min-width:0; font-size:12.5px; font-weight:650; color:var(--text); word-break:break-word; transition:color .2s var(--ease), opacity .2s var(--ease); }
.wb-todo-item.done .wb-todo-text { color:var(--faint); text-decoration:line-through; opacity:.85; }
.wb-todo-del { flex:0 0 auto; width:22px; height:22px; border:none; border-radius:6px; background:transparent; color:var(--faint); display:flex; align-items:center; justify-content:center; cursor:pointer; opacity:0; transition:all .14s var(--ease); }
.wb-todo-item:hover .wb-todo-del { opacity:1; }
.wb-todo-del:hover { color:var(--danger); background:var(--danger-soft); }
.wb-todo-empty { padding:12px 0; text-align:center; font-size:12px; font-weight:700; color:var(--faint); }

@media (prefers-reduced-motion: reduce) {
    .wb-overview-body > *, .wb-chart-bar { animation:none !important; }
    .wb-overview-body > * { opacity:1; }
}

/* ===== Workbench responsive (<768px) ===== */
@media (max-width:768px) {
    .wb-overview { padding:10px 12px 0; }
    .wb-overview-head { flex-wrap:wrap; gap:8px; margin-bottom:8px; }
    .wb-quick-row { order:3; margin-left:0; width:100%; overflow-x:auto; padding-bottom:2px; }
    .wb-overview-body { grid-template-columns:1fr 1fr; gap:8px; padding-bottom:10px; }
    .wb-stats { grid-column:1 / -1; grid-template-columns:1fr 1fr; }
    .wb-chart-card { grid-column:1 / -1; }
    .wb-todo-list { max-height:120px; }
}

/* ===== Responsive ===== */
@media (max-width:760px) {
    .workspace { flex-direction:column; }
    .ws-sidebar { flex:0 0 auto; width:100%; max-height:42vh; border-right:none; border-bottom:1px solid var(--line); }
    .ws-side-head { padding:12px 12px 8px; }
    .ws-project-list { padding:4px 8px 8px; }
    .ws-main { min-height:0; }
    .ws-topbar { align-items:flex-start; gap:10px; padding:10px 12px; }
    .ws-topbar-left { min-width:0; flex:1; }
    .ws-topbar-right { gap:6px; flex-wrap:wrap; justify-content:flex-end; }
    .ws-board-name { max-width:46vw; font-size:15px; }
    .ws-board-count { height:18px; min-width:18px; font-size:10px; }
    .ws-primary-btn span { display:none; }
    .ws-board-empty .ws-primary-btn span { display:inline; }
    .ws-primary-btn { padding:0 12px; }
    .ws-paste-btn span { display:none; }
    .ws-card { width:230px; height:146px; padding:12px; gap:10px; }
    .ws-card-top { gap:6px; min-height:26px; }
    .ws-card-kind { height:20px; max-width:calc(100% - 32px); padding:0 7px; font-size:9.5px; }
    .ws-card-menu { width:26px; height:26px; flex-basis:26px; opacity:1; }
    .ws-card-title { font-size:14px; }
    .ws-card-meta { padding:8px; gap:5px; }
    .ws-trash-list { grid-template-columns:1fr; padding:12px; }
    .ws-trash-note { margin:12px 12px 0; }
}
html[data-studio-scale="off"].studio-scale-managed .ws-primary-btn span {
    display:inline;
}
html[data-studio-scale="off"].studio-scale-managed .workspace {
    flex-direction:row;
}
html[data-studio-scale="off"].studio-scale-managed .ws-sidebar {
    flex:0 0 272px;
    width:272px;
    max-height:none;
    border-right:1px solid var(--line);
    border-bottom:none;
}
html[data-studio-scale="off"].studio-scale-managed .ws-main {
    min-width:0;
    min-height:0;
}
html[data-studio-scale="off"].studio-scale-managed .ws-topbar {
    align-items:center;
    gap:12px;
    padding:11px 18px;
}
html[data-studio-scale="off"].studio-scale-managed .ws-topbar-left {
    flex:1 1 auto;
    min-width:0;
}
html[data-studio-scale="off"].studio-scale-managed .ws-board-name {
    max-width:none;
}
html[data-studio-scale="off"].studio-scale-managed .ws-topbar-right {
    flex:0 0 auto;
    flex-wrap:nowrap;
    justify-content:flex-end;
}
html[data-studio-scale="off"].studio-scale-managed .ws-paste-btn span {
    display:inline;
}
@media (max-width:1320px), (max-height:860px) {
    /* 按钮保持在顶栏行内：.workspace 有 zoom 缩放，fixed/absolute 在 zoom 子树里定位不可靠，会被推出屏幕外 */
    html[data-studio-scale="off"].studio-scale-managed .ws-topbar-left {
        flex:1 1 auto;
        min-width:0;
    }
    html[data-studio-scale="off"].studio-scale-managed .ws-topbar-right {
        position:static;
        display:flex;
        align-items:center;
        gap:8px;
        flex:0 0 auto;
        flex-wrap:nowrap;
    }
    html[data-studio-scale="off"].studio-scale-managed .ws-topbar-right .ws-icon-btn,
    html[data-studio-scale="off"].studio-scale-managed .ws-topbar-right .ws-primary-btn {
        display:inline-flex;
        visibility:visible;
        opacity:1;
    }
}

/* ===== Sidebar workspace nav（画布 / GPT Image Playground / 技能库 独立板块） =====
   约束：不得使用 flex:1 —— .ws-project-list 依赖 flex:1 占据剩余滚动空间；
   移动端侧栏总高 max-height:42vh，导航必须保持紧凑固定高度。 */
.ws-side-nav { flex:0 0 auto; display:flex; flex-direction:column; gap:4px; padding:2px 12px 12px; border-bottom:1px solid var(--line); }
.ws-side-nav-title { padding:0 10px 2px; font-size:11px; font-weight:800; color:var(--faint); }
.ws-side-nav-link { display:flex; align-items:center; gap:9px; min-height:38px; padding:8px 10px; border-radius:8px; text-decoration:none; color:var(--muted); background:transparent; border:1px solid transparent; font-size:13px; font-weight:700; transition:background .14s var(--ease), color .14s var(--ease), border-color .14s var(--ease); }
.ws-side-nav-link i,.ws-side-nav-link svg { flex:0 0 auto; width:16px; height:16px; color:currentColor; stroke:currentColor; }
.ws-side-nav-link span { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:left; }
.ws-side-nav-link:hover { color:var(--text); background:var(--soft); }
.ws-side-nav-link.is-active { color:var(--strong); background:var(--accent-soft); border-color:var(--accent-line); }
.ws-side-nav-link.is-active i,.ws-side-nav-link.is-active svg { color:var(--accent); }
@media (max-width:760px) {
    .ws-side-nav { gap:3px; padding:0 8px 8px; }
    .ws-side-nav-link { min-height:34px; padding:6px 8px; }
}

/* ============================================================
   曜黑鎏金 · Obsidian & Champagne 覆盖区（2026-09-01 重设计）
   设计系统见项目根 DESIGN.md。旧暖纸×松墨视为反参考。
   ============================================================ */

/* ---- 午夜导轨：侧栏在明暗两主题下恒为曜黑，金色 active ---- */
.ws-sidebar { background:#0e0e10; border-right-color:#26262b; }
.ws-side-title { color:#f2efe8; letter-spacing:.02em; }
.ws-side-add { color:#a8a294; background:#1a1a1e; border-color:#2c2c33; border-radius:var(--r-md); }
.ws-side-add:hover { color:#f2efe8; background:#202024; border-color:#45454e; }
.ws-side-nav { border-bottom-color:#26262b; }
.ws-side-nav-title { color:#8f897b; text-transform:uppercase; letter-spacing:.18em; font-size:9.5px; font-weight:700; font-family:var(--font-display); }
.ws-side-nav-link { color:#a8a294; border-radius:var(--r-md); }
.ws-side-nav-link i,.ws-side-nav-link svg { color:inherit; }
.ws-side-nav-link:hover { color:#f2efe8; background:#1a1a1e; }
.ws-side-nav-link.is-active { color:#191510; background:#d8b878; border-color:#d8b878; }
.ws-side-nav-link.is-active i,.ws-side-nav-link.is-active svg { color:#191510; }
.ws-newproj-row { background:#131316; border-color:#2c2c33; }
.ws-newproj-input { color:#f2efe8; }
.ws-mini-btn { background:#1a1a1e; border-color:#2c2c33; color:#a8a294; }
.ws-mini-btn:hover { color:#f2efe8; border-color:#45454e; }
.ws-mini-btn.primary { background:#d8b878; border-color:#d8b878; color:#191510; }
.ws-project-list { scrollbar-color:#3a3a42 transparent; }
.ws-project-row { background:#131316; box-shadow:inset 0 0 0 1px #232328; border-radius:var(--r-md); }
.ws-project-row:hover { background:#1a1a1e; box-shadow:inset 0 0 0 1px #323238; }
.ws-project-row.active { background:#d8b878; box-shadow:none; }
.ws-project-row.active::before { background:#191510; }
.ws-project-row.active .ws-project-name { color:#191510; }
.ws-project-row.active .ws-project-icon { color:#191510; }
.ws-project-name { color:#e6e2d8; }
.ws-project-name-input { background:#131316; color:#f2efe8; border-color:#45454e; }
.ws-project-count { background:#202024; color:#a8a294; font-family:var(--font-mono); }
.ws-project-row.active .ws-project-count { background:rgba(25,21,16,.20); color:#191510; }
.ws-proj-act { color:#8f897b; }
.ws-proj-act:hover { color:#f2efe8; background:#202024; }
.ws-project-row.active .ws-proj-act { color:#191510; background:transparent; }
.ws-project-row.active .ws-proj-act:hover { color:#191510; background:rgba(25,21,16,.16); }
.ws-project-confirm { background:#1a1a1e; }
.ws-project-confirm-title { color:#f2efe8; }
.ws-cancel-btn { background:#131316; color:#f2efe8; border-color:#2c2c33; }
.ws-side-foot { border-top-color:#26262b; background:transparent; }
.ws-trash-entry { background:#131316; border-color:#2c2c33; color:#a8a294; border-radius:var(--r-md); }
.ws-trash-entry:hover { background:#1a1a1e; color:#f2efe8; border-color:#45454e; }
.ws-trash-entry.active { color:#e07856; background:rgba(224,120,86,.10); border-color:rgba(224,120,86,.30); }
.ws-trash-badge { background:#4a4740; font-family:var(--font-mono); }
.theme-dark .ws-proj-act.del:hover { color:#f19984; background:rgba(224,96,64,.20); }
.ws-project-row.active .ws-proj-act.del:hover { color:#4a1508; background:rgba(122,32,16,.28); }

/* ---- 顶栏与画布板 ---- */
.ws-topbar { backdrop-filter:blur(20px); }
.ws-board-name { font-family:var(--font-display); font-weight:700; letter-spacing:-0.02em; }
.ws-board-count { font-family:var(--font-mono); }
.ws-primary-btn { border-radius:var(--r-md); font-weight:700; letter-spacing:.01em; }
.ws-icon-btn { border-radius:var(--r-md); }
.ws-paste-btn { background:#1a1917; color:#f7f5f0; border:1px solid var(--accent-line); box-shadow:0 10px 26px rgba(12,10,6,.24); }
.ws-paste-btn:hover { background:#262421; box-shadow:0 14px 32px rgba(12,10,6,.3); }
.theme-dark .ws-paste-btn { background:#d8b878; color:#191510; border-color:rgba(25,21,16,.4); box-shadow:0 12px 30px rgba(0,0,0,.5); }
.theme-dark .ws-paste-btn:hover { background:#e3c68c; }
.ws-board { background-image:linear-gradient(rgba(160,150,120,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(160,150,120,.05) 1px, transparent 1px), radial-gradient(var(--grid) 1px, transparent 1px); }

/* ---- 卡片与概览带 ---- */
.ws-card { border-radius:var(--r-lg); }
.wb-stat-num { font-family:var(--font-mono); letter-spacing:-0.02em; }
.wb-overview-title span,.wb-card-title { letter-spacing:.01em; }
.wb-quick-btn { border-radius:var(--r-md); }

/* ---- 滚动条与选中文本 ---- */
.ws-main ::selection { background:rgba(212,181,122,.28); }
.ws-sidebar ::selection { background:rgba(212,181,122,.30); }


/* ---- 生成历史面板（侧边栏入口 + 板区覆盖层，交互模式同回收站）---- */
#historyEntry { cursor:pointer; width:100%; font-family:inherit; }
.ws-history-head-actions { display:flex; align-items:center; gap:8px; }
.ws-history-sub { margin-left:10px; font-size:11.5px; font-weight:650; color:var(--muted); }
.ws-history-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:14px 18px 0; }
.ws-history-filters { display:flex; gap:6px; flex-wrap:wrap; }
.ws-history-filters button { padding:4px 12px; border-radius:999px; border:1px solid var(--line); background:var(--card-solid); color:var(--muted); font-size:12px; font-weight:750; cursor:pointer; font-family:inherit; transition:all .14s var(--ease); }
.ws-history-filters button:hover { color:var(--text); border-color:var(--line-2); }
.ws-history-filters button.active { background:var(--accent); border-color:var(--accent); color:var(--strong-text); }
.ws-history-stats { display:flex; gap:12px; font-size:11px; font-weight:700; color:var(--muted); }
.ws-history-stats .bad { color:var(--danger); }
.ws-history-list { flex:1; min-height:0; overflow:auto; padding:14px 18px 24px; display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:12px; align-content:start; }
.ws-history-row { padding:12px 14px; border-radius:12px; background:var(--panel); border:1px solid var(--line); box-shadow:var(--shadow-1); display:flex; flex-direction:column; gap:8px; min-width:0; }
.ws-history-row-top { display:flex; align-items:center; gap:8px; min-width:0; }
.ws-history-kind { flex:0 0 auto; padding:2px 8px; border-radius:6px; font-size:10.5px; font-weight:800; background:var(--soft); color:var(--muted); }
.ws-history-kind.k-image { background:var(--accent-soft); color:var(--accent); }
.ws-history-kind.k-video { background:rgba(217,119,6,.14); color:#b45309; }
.ws-history-kind.k-llm { background:rgba(99,102,241,.12); color:#6366f1; }
.ws-history-model { flex:1; min-width:0; font-size:12.5px; font-weight:750; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ws-history-status { flex:0 0 auto; font-size:10.5px; font-weight:800; }
.ws-history-status.s-done { color:var(--success); }
.ws-history-status.s-failed { color:var(--danger); }
.ws-history-status.s-running { color:var(--accent); animation:ws-history-pulse 1.4s infinite; }
@keyframes ws-history-pulse { 0%,100% { opacity:1; } 50% { opacity:.45; } }
.ws-history-prompt { font-size:12px; color:var(--muted); overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.ws-history-thumbs { display:flex; flex-wrap:wrap; gap:8px; }
.ws-history-thumb { width:72px; height:72px; border-radius:10px; overflow:hidden; border:1px solid var(--line); background:var(--soft); cursor:pointer; padding:0; }
.ws-history-thumb img, .ws-history-thumb video { width:100%; height:100%; object-fit:cover; display:block; }
.ws-history-foot { display:flex; align-items:center; gap:12px; font-size:11px; font-weight:600; color:var(--faint); flex-wrap:wrap; }
.ws-history-mini { padding:3px 10px; border-radius:7px; border:1px solid var(--line); background:var(--card-solid); color:var(--muted); font-size:11px; font-weight:750; cursor:pointer; font-family:inherit; }
.ws-history-mini:hover { color:var(--accent); border-color:var(--accent-line); }
.ws-history-mini.primary { background:var(--accent); border-color:var(--accent); color:var(--strong-text); }
.ws-history-mini:disabled { opacity:.5; cursor:default; }
.ws-history-error { padding:6px 9px; border-radius:8px; background:var(--danger-soft); color:var(--danger); font-size:11px; font-weight:650; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ws-history-empty { grid-column:1/-1; padding:56px 16px; text-align:center; color:var(--faint); font-size:13px; font-weight:650; }

/* ---- 板区布局切换（网格/自由）+ 卡片缩略图条 ---- */
.ws-layout-switch { display:flex; overflow:hidden; border:1px solid var(--line); border-radius:10px; background:var(--card-solid); }
.ws-layout-switch button { width:34px; height:36px; display:flex; align-items:center; justify-content:center; border:0; background:transparent; color:var(--muted); cursor:pointer; transition:all .14s var(--ease); }
.ws-layout-switch button + button { border-left:1px solid var(--line); }
.ws-layout-switch button:hover { color:var(--text); }
.ws-layout-switch button.active { background:var(--accent-soft); color:var(--accent); }
.ws-card-thumb { display:grid; grid-template-columns:repeat(3, 1fr); gap:4px; height:64px; margin-bottom:8px; border-radius:10px; overflow:hidden; background:var(--soft); border:1px solid var(--line); }
.ws-card-thumb.single { grid-template-columns:1fr; }
.ws-card-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.ws-card-thumb.empty { display:flex; align-items:center; justify-content:center; color:var(--faint); }

/* ---- 板区去画布化：普通滚动网格（非无限画布）+ 春泥点纹理 ---- */
.ws-board { overflow-y:auto; overflow-x:hidden; cursor:default; background:var(--page); background-image:radial-gradient(color-mix(in srgb, var(--soil) 20%, transparent) 1px, transparent 1.6px) !important; background-size:26px 26px; }
.ws-board.panning { cursor:default; }
.ws-board-world { position:static; width:auto; height:auto; min-height:64%; display:grid; grid-template-columns:repeat(auto-fill, minmax(252px, 1fr)); gap:18px; align-content:start; padding:24px 28px 56px; transform:none !important; }
.ws-card { position:static; width:auto; height:auto; }
.ws-card-thumb { height:76px; }
/* 一键直建：旧弹窗 position:fixed 规则一并移除 */
.ws-board-empty { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); }

/* ===== 画布卡片 v2：作品集封面式（覆盖旧卡片规则） ===== */
.ws-card { padding:0; border-radius:16px; height:auto; display:flex; flex-direction:column; border:1px solid var(--line); }
.ws-card:hover { border-color:var(--accent-line); transform:translateY(-3px); box-shadow:0 18px 44px var(--shadow-strong); }

/* 封面（仅作用域 .ws-card，避免污染回收站旧卡片结构） */
.ws-card .ws-card-cover { position:relative; aspect-ratio:16/9; min-height:132px; overflow:hidden; background:var(--soft); }
.ws-card .ws-card-cover-media, .ws-card .ws-card-cover-media img { position:absolute; inset:0; width:100%; height:100%; }
.ws-card .ws-card-cover-media img { object-fit:cover; transition:transform .38s var(--ease); }
.ws-card:hover .ws-card-cover-media img { transform:scale(1.05); }
.ws-card .ws-card-cover-media.many { display:grid; grid-template-columns:2fr 1fr; grid-auto-rows:1fr; gap:2px; }
.ws-card .ws-card-cover-media.many img { position:static; }
.ws-card .ws-card-cover-media.many img:first-child { grid-row:span 2; }
/* 无图：按画布 ID 色相生成的专属渐变 + 点阵纹理 */
.ws-card .ws-card-cover-empty { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:rgba(255,255,255,.85);
    background:linear-gradient(140deg, hsl(var(--card-h, 210) 62% 52%), hsl(calc(var(--card-h, 210) + 48) 68% 34%)); }
.ws-card .ws-card-cover-empty::after { content:""; position:absolute; inset:0; opacity:.16;
    background-image:radial-gradient(rgba(255,255,255,.9) 1px, transparent 1px); background-size:14px 14px; }
.ws-card .ws-card-cover-empty i, .ws-card .ws-card-cover-empty svg { filter:drop-shadow(0 4px 10px rgba(0,0,0,.28)); }
.ws-card .ws-card-cover-scrim { position:absolute; inset:0; background:linear-gradient(180deg, rgba(10,10,16,.30), transparent 34%, transparent 46%, rgba(8,8,14,.66)); pointer-events:none; }

/* 封面上的元素 */
.ws-card .ws-card-kind { position:absolute; top:9px; left:9px; z-index:2; display:inline-flex; align-items:center; gap:4px; height:22px; padding:0 9px; border-radius:999px;
    font-size:10px; font-weight:850; letter-spacing:.02em; color:#fff; background:rgba(16,16,22,.34); border:1px solid rgba(255,255,255,.28);
    backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); max-width:calc(100% - 52px); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ws-card .ws-card-kind.classic { background:rgba(16,16,22,.34); color:#fff; border:1px solid rgba(255,255,255,.28); }
.ws-card .ws-card-kind.smart { background:linear-gradient(120deg, var(--accent, #d4b57a), #a78bfa); color:#1c1408; border-color:rgba(255,255,255,.42); }
.theme-dark .ws-card .ws-card-kind.classic { background:rgba(16,16,22,.34); color:#fff; }
.ws-card .ws-card-kind i, .ws-card .ws-card-kind svg { width:12px; height:12px; }
.ws-card .ws-card-menu { position:absolute; top:8px; right:8px; z-index:3; margin-left:0; width:28px; height:28px; flex:0 0 28px; border-radius:50%;
    color:#fff; background:rgba(16,16,22,.34); border:1px solid rgba(255,255,255,.26); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
    opacity:.82; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:all .14s var(--ease); }
.ws-card .ws-card-menu:hover { opacity:1; background:rgba(16,16,22,.55); }
.ws-card .ws-card-title { position:absolute; left:12px; right:12px; bottom:10px; z-index:2; font-family:var(--font-display); font-size:14.5px; line-height:1.3;
    font-weight:850; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-shadow:0 1px 6px rgba(0,0,0,.45); }
.ws-card .ws-card-title-input, .theme-dark .ws-card .ws-card-title-input { font-family:var(--font-display); font-size:14px; font-weight:800; color:#fff;
    background:rgba(16,16,22,.55); border:1px solid rgba(255,255,255,.55); border-radius:8px; padding:5px 8px; outline:none; width:100%;
    backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.ws-card .ws-card-title-input::placeholder { color:rgba(255,255,255,.6); }

/* 底部信息条 */
.ws-card .ws-card-meta { margin-top:0; display:flex; align-items:center; gap:8px; padding:9px 12px; border-radius:0; background:transparent; border:none; }
.ws-card .ws-card-nodes { display:inline-flex; align-items:center; gap:4px; font-size:11px; font-weight:750; color:var(--muted); white-space:nowrap; }
.ws-card .ws-card-nodes i, .ws-card .ws-card-nodes svg { width:12px; height:12px; color:var(--faint); }
.ws-card .ws-card-time { margin-left:auto; min-width:0; font-size:11px; font-weight:650; color:var(--faint); white-space:nowrap; }
.ws-card .ws-card-open { display:inline-flex; align-items:center; gap:3px; font-size:11px; font-weight:800; color:var(--accent); opacity:0; transform:translateX(-4px); transition:all .18s var(--ease); white-space:nowrap; }
.ws-card .ws-card-open i, .ws-card .ws-card-open svg { width:12px; height:12px; }
.ws-card:hover .ws-card-open { opacity:1; transform:translateX(0); }
.ws-card:hover .ws-card-time { opacity:0; }

/* 删除确认：整卡覆盖层 */
.ws-card .ws-card-delete-confirm { display:none; position:absolute; inset:0; z-index:5; flex-direction:column; align-items:center; justify-content:center; gap:10px;
    border-radius:15px; background:rgba(14,12,18,.60); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); padding:14px; }
.ws-card.confirming-delete .ws-card-title,
.ws-card.confirming-delete .ws-card-meta { display:flex; }
.ws-card.confirming-delete .ws-card-delete-confirm { display:flex; }
.ws-card .ws-card-delete-title { font-size:12.5px; font-weight:850; color:#fff; text-shadow:0 1px 4px rgba(0,0,0,.4); }
.ws-card .ws-card-delete-actions { display:flex; gap:8px; width:100%; max-width:190px; }
.ws-card .ws-card-delete-actions button { flex:1; height:30px; border-radius:9px; font-size:12px; font-weight:800; cursor:pointer; border:none; }
.ws-card .ws-card-delete-yes { background:var(--danger); color:#fff; }
.ws-card .ws-card-delete-no, .theme-dark .ws-card .ws-card-delete-no { background:rgba(255,255,255,.18); color:#fff; border:1px solid rgba(255,255,255,.32) !important; }

/* ===== Home content layer ===== */
.wb-home { position:relative; z-index:4; flex:0 0 auto; padding:20px 28px 16px; background:var(--page); border-bottom:1px solid var(--line); }
.wb-home-head { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; max-width:1400px; margin:0 auto 14px; }
.wb-kicker { margin:0 0 7px; color:var(--accent); font-family:var(--font-display); font-size:10px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.wb-home h1,.wb-home h2 { margin:0; color:var(--text); font-family:var(--font-display); letter-spacing:0; }
.wb-home h1 { font-size:26px; line-height:1.12; font-weight:850; }
.wb-home h2 { font-size:17px; line-height:1.25; font-weight:800; }
.wb-home-sub { margin:9px 0 0; color:var(--muted); font-size:13px; font-weight:600; }
.wb-icon-action { width:36px; height:36px; flex:0 0 auto; display:flex; align-items:center; justify-content:center; border:1px solid var(--line); border-radius:var(--r-md); color:var(--muted); background:var(--card-solid); cursor:pointer; transition:all .15s var(--ease); }
.wb-icon-action:hover { color:var(--text); border-color:var(--accent-line); background:var(--accent-soft); }
.wb-icon-action:disabled { opacity:.55; cursor:wait; }
.wb-intent-grid { display:grid; grid-template-columns:repeat(6, minmax(145px, 1fr)); gap:10px; max-width:1400px; margin:0 auto 14px; }
.wb-intent-card { min-width:0; min-height:92px; display:flex; flex-direction:column; align-items:flex-start; gap:9px; padding:12px 13px; border:1px solid var(--line); border-radius:var(--r-lg); color:var(--text); background:var(--card-solid); text-align:left; cursor:pointer; box-shadow:var(--shadow-1); transition:transform .18s var(--ease), border-color .18s var(--ease), box-shadow .18s var(--ease); }
.wb-intent-card:hover { transform:translateY(-3px); border-color:var(--accent-line); box-shadow:var(--shadow-2); }
.wb-intent-icon { width:34px; height:34px; display:flex; align-items:center; justify-content:center; border-radius:10px; color:var(--accent); background:var(--accent-soft); }
.wb-intent-copy { display:flex; flex-direction:column; gap:4px; min-width:0; }
.wb-intent-copy strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; font-weight:800; }
.wb-intent-copy small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); font-size:11px; font-weight:650; }
.wb-intent-arrow { width:15px; height:15px; align-self:flex-end; margin-top:auto; color:var(--faint); }
.wb-intent-card.tone-peach .wb-intent-icon { color:var(--peach); background:var(--peach-soft); }
.wb-intent-card.tone-sprout .wb-intent-icon { color:var(--sprout); background:var(--sprout-soft); }
.wb-intent-card.tone-soil .wb-intent-icon { color:var(--soil); background:var(--soil-soft); }
.wb-intent-card.tone-blue .wb-intent-icon { color:#477aa9; background:rgba(71,122,169,.12); }
.wb-intent-card.tone-violet .wb-intent-icon { color:#7663a8; background:rgba(118,99,168,.12); }
.wb-home-grid { display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.08fr); gap:20px; max-width:1400px; margin:0 auto; }
.wb-home-section { min-width:0; }
.wb-section-head { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin-bottom:10px; }
.wb-section-head .wb-kicker { margin-bottom:5px; }
.wb-section-meta { flex:0 0 auto; color:var(--faint); font-size:11px; font-weight:700; }
.wb-continue-list,.wb-output-list,.wb-template-list { min-width:0; }
.wb-continue-list { display:flex; flex-direction:column; gap:5px; max-height:196px; overflow-y:auto; }
.wb-continue-item { width:100%; min-width:0; display:flex; align-items:center; gap:11px; padding:10px 11px; border:1px solid var(--line); border-radius:var(--r-md); background:var(--card-solid); color:var(--text); text-align:left; cursor:pointer; transition:all .15s var(--ease); }
.wb-continue-item:hover,.wb-template-item:hover { border-color:var(--accent-line); background:var(--accent-soft); }
.wb-continue-thumb,.wb-template-mark { width:32px; height:32px; flex:0 0 auto; display:flex; align-items:center; justify-content:center; border-radius:9px; color:var(--accent); background:var(--accent-soft); }
.wb-continue-copy { flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.wb-continue-copy strong,.wb-template-item strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12.5px; font-weight:800; }
.wb-continue-copy small,.wb-template-item small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); font-size:11px; font-weight:650; }
.wb-item-arrow { width:15px; height:15px; flex:0 0 auto; color:var(--faint); }
.wb-output-list { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px; max-height:232px; overflow-y:auto; }
.wb-output-item { min-width:0; overflow:hidden; border:1px solid var(--line); border-radius:var(--r-md); background:var(--card-solid); }
.wb-output-preview { display:block; width:100%; aspect-ratio:1.2; padding:0; overflow:hidden; border:0; background:var(--soft); cursor:pointer; }
.wb-output-preview img,.wb-output-preview video { display:block; width:100%; height:100%; object-fit:cover; transition:transform .25s var(--ease); }
.wb-output-preview:hover img,.wb-output-preview:hover video { transform:scale(1.04); }
.wb-output-foot { display:flex; align-items:center; justify-content:space-between; gap:5px; min-width:0; padding:7px 8px; color:var(--faint); font-size:10px; font-weight:700; }
.wb-output-foot > span:first-child { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wb-output-actions { display:flex; gap:2px; flex:0 0 auto; }
.wb-output-actions button { width:24px; height:24px; display:flex; align-items:center; justify-content:center; padding:0; border:0; border-radius:6px; color:var(--muted); background:transparent; cursor:pointer; }
.wb-output-actions button:hover { color:var(--accent); background:var(--accent-soft); }
.wb-output-actions svg { width:13px; height:13px; }
.wb-content-empty { min-height:105px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; padding:16px; border:1px dashed var(--line-2); border-radius:var(--r-md); color:var(--faint); font-size:12px; font-weight:650; text-align:center; }
.wb-content-empty svg { width:19px; height:19px; color:var(--accent); }
.wb-content-empty button { height:27px; padding:0 11px; border:1px solid var(--line); border-radius:var(--r-md); color:var(--muted); background:var(--card-solid); font:inherit; cursor:pointer; }
.wb-content-empty button:hover { color:var(--accent); border-color:var(--accent-line); }
.wb-template-list { display:grid; grid-template-columns:repeat(6, minmax(0, 1fr)); gap:8px; }
.wb-template-item { min-width:0; display:flex; align-items:center; gap:8px; padding:10px; border:1px solid var(--line); border-radius:var(--r-md); color:var(--text); background:var(--card-solid); text-align:left; cursor:pointer; transition:all .15s var(--ease); }
.wb-template-item > span:nth-child(2) { min-width:0; flex:1; display:flex; flex-direction:column; gap:3px; }
.wb-template-mark { width:27px; height:27px; border-radius:8px; }
.wb-template-mark svg { width:14px; height:14px; }
.wb-secondary { background:var(--panel); }
@media (max-width:1100px) {
    .wb-intent-grid { grid-template-columns:repeat(3, minmax(145px, 1fr)); }
    .wb-template-list { grid-template-columns:repeat(3, minmax(0, 1fr)); }
}
@media (max-width:760px) {
    .wb-home { padding:16px 12px 14px; }
    .wb-home-head { margin-bottom:12px; }
    .wb-home h1 { font-size:22px; }
    .wb-home-sub { max-width:290px; font-size:12px; line-height:1.5; }
    .wb-intent-grid { display:flex; overflow-x:auto; gap:8px; margin:0 -12px 12px; padding:0 12px 4px; scrollbar-width:none; }
    .wb-intent-grid::-webkit-scrollbar { display:none; }
    .wb-intent-card { width:150px; flex:0 0 150px; min-height:92px; padding:11px 12px; }
    .wb-home-grid { grid-template-columns:1fr; gap:14px; }
    .wb-continue-list { max-height:168px; }
    .wb-output-list { grid-template-columns:repeat(3, minmax(0, 1fr)); gap:6px; max-height:200px; }
    .wb-output-foot { padding:5px; }
    .wb-output-actions button { width:22px; height:22px; }
    .ws-board { min-height:240px; }
    .ws-board-empty { top:36%; }
    .wb-template-list { grid-template-columns:1fr 1fr; }
    .wb-template-item { padding:9px 8px; }
}
@media (max-height:820px) and (min-width:761px) {
    .ws-board { min-height:260px; }
    .wb-continue-list { max-height:168px; }
    .wb-output-list { max-height:190px; }
}

/* ===== 工作台单页双视图：创作空间 / 画布（同页切换） ===== */
.ws-view { display:none; }
.ws-view.active { display:block; flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; }
/* 创作空间视图：创作区紧凑置顶，概览数据跟随其后，整体随视图滚动 */
#viewCreation.active { display:block; }
/* 画布视图：纵向弹性容器，画布板区撑满剩余空间 */
#viewCanvases.active { display:flex; flex-direction:column; }
#viewCanvases .ws-board { flex:1; min-height:300px; }
/* 创作空间视图下概览数据不限制内滚高度（视图自身滚动） */
#viewCreation .wb-overview:not(.collapsed) .wb-overview-body { max-height:none; overflow-y:visible; }

/* ===== 开场动画 v2：一声春雷，万物开画 ===== */
.jingzhe-splash { position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; background:#08080a; cursor:pointer; overflow:hidden; animation:jsSplashAutoHide 12s steps(1,end) forwards; }
/* 纯 CSS 死人开关：即使脚本全挂，12 秒后开场层强制消失，绝不困住用户 */
@keyframes jsSplashAutoHide { to { opacity:0; visibility:hidden; pointer-events:none; } }
html.splash-lock, html.splash-lock body { overflow:hidden; }
.jingzhe-splash::before { content:''; position:absolute; inset:0; background:radial-gradient(ellipse 70% 45% at 50% 108%, rgba(212,181,122,.16), transparent 70%), radial-gradient(ellipse 55% 38% at 50% -12%, rgba(212,181,122,.10), transparent 70%); }
.js-dust { position:absolute; inset:0; pointer-events:none; }
.js-dust::after { content:''; position:absolute; width:3px; height:3px; border-radius:50%; box-shadow:12vw 22vh 0 0 rgba(232,205,150,.9), 28vw 64vh 0 -1px rgba(232,205,150,.55), 41vw 18vh 0 0 rgba(245,225,180,.8), 55vw 74vh 0 -1px rgba(232,205,150,.5), 63vw 30vh 0 0 rgba(245,225,180,.85), 74vw 58vh 0 -1px rgba(232,205,150,.6), 86vw 24vh 0 0 rgba(245,225,180,.75), 92vw 66vh 0 -1px rgba(232,205,150,.5), 8vw 48vh 0 0 rgba(245,225,180,.7), 18vw 82vh 0 -1px rgba(232,205,150,.55), 48vw 46vh 0 0 rgba(245,225,180,.9), 80vw 84vh 0 0 rgba(232,205,150,.45); animation:jsDust 3.2s ease-in-out infinite alternate; filter:blur(.4px); }
@keyframes jsDust { from { opacity:.25; transform:translateY(0); } to { opacity:.95; transform:translateY(-14px); } }
.js-strike { position:absolute; left:50%; top:-12%; width:3px; height:46%; transform:translateX(-50%) scaleY(.2); transform-origin:top; background:linear-gradient(to bottom, rgba(255,244,214,0), #ffeec8 35%, #e8c878 80%, rgba(232,200,120,0)); box-shadow:0 0 26px 8px rgba(232,200,120,.55); opacity:0; }
.jingzhe-splash.js-striking .js-strike { animation:jsStrike .4s cubic-bezier(.2,.9,.3,1) forwards; }
@keyframes jsStrike { 0% { opacity:0; transform:translateX(-50%) scaleY(.15); } 25% { opacity:1; transform:translateX(-50%) scaleY(1); } 60% { opacity:.85; } 100% { opacity:0; } }
.jingzhe-splash.js-striking::after { content:''; position:absolute; inset:0; background:rgba(240,220,170,.13); animation:jsFlash .36s ease-out forwards; pointer-events:none; }
@keyframes jsFlash { 0% { opacity:0; } 18% { opacity:1; } 100% { opacity:0; } }
.js-inner { position:relative; display:flex; flex-direction:column; align-items:center; gap:16px; text-align:center; padding:0 24px; }
.js-logo img { width:104px; height:104px; display:block; filter:drop-shadow(0 16px 48px rgba(212,181,122,.42)); opacity:0; transform:scale(.55) rotate(-6deg); }
.jingzhe-splash.js-striking .js-logo img { animation:jsLogo .75s cubic-bezier(.2,1.4,.3,1) .12s forwards; }
@keyframes jsLogo { to { opacity:1; transform:none; } }
.js-wordmark { font-family:var(--font-display); font-size:80px; line-height:1.08; font-weight:800; letter-spacing:.2em; text-indent:.2em; color:#f5f1e6; opacity:0; text-shadow:0 0 52px rgba(212,181,122,.5); }
.jingzhe-splash.js-striking .js-wordmark { animation:jsWord .85s var(--ease-out) .5s forwards; }
@keyframes jsWord { 0% { opacity:0; letter-spacing:.62em; text-indent:.62em; filter:blur(8px); transform:translateY(6px); } 60% { filter:blur(0); } 100% { opacity:1; letter-spacing:.2em; text-indent:.2em; filter:none; transform:none; } }
.js-tagline { font-size:13px; font-weight:800; letter-spacing:.52em; text-indent:.52em; color:var(--accent); opacity:0; }
.jingzhe-splash.js-striking .js-tagline { animation:jsRise .6s ease-out 1.15s forwards; }
.js-slogan { margin-top:10px; font-size:19px; font-weight:700; letter-spacing:.36em; text-indent:.36em; color:#e2d7ba; opacity:0; position:relative; }
.jingzhe-splash.js-striking .js-slogan { animation:jsRise .8s ease-out 1.7s forwards; }
.js-slogan::before, .js-slogan::after { content:''; position:absolute; top:50%; width:34px; height:1px; background:linear-gradient(90deg, transparent, rgba(212,181,122,.7)); opacity:0; }
.js-slogan::before { left:-48px; }
.js-slogan::after { right:-48px; transform:scaleX(-1); }
.jingzhe-splash.js-striking .js-slogan::before, .jingzhe-splash.js-striking .js-slogan::after { animation:jsLine .7s ease-out 2s forwards; }
@keyframes jsLine { from { opacity:0; width:0; } to { opacity:1; width:34px; } }
@keyframes jsRise { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:none; } }
.js-bolt { position:absolute; inset:-20%; pointer-events:none; background:linear-gradient(115deg, transparent 40%, rgba(226,203,150,.22) 50%, transparent 60%); transform:translateX(-130%); opacity:0; }
.jingzhe-splash.js-striking .js-bolt { animation:jsBolt .6s ease-out 2.35s forwards; }
@keyframes jsBolt { 0% { opacity:0; transform:translateX(-130%); } 15% { opacity:1; } 100% { opacity:0; transform:translateX(130%); } }
.js-skip { position:fixed; right:22px; bottom:18px; color:rgba(216,205,178,.4); font-size:11px; letter-spacing:.12em; }
.jingzhe-splash.js-out { opacity:0; transform:scale(1.06); filter:blur(5px); transition:opacity .65s ease, transform .65s ease, filter .65s ease; }
#workspace.ws-enter { animation:wsEnter .8s var(--ease-out) both; }
@keyframes wsEnter { from { opacity:.25; transform:translateY(16px) scale(.988); } to { opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce) {
    .js-logo img, .js-wordmark, .js-tagline { animation-duration:.2s; }
    .js-slogan, .js-slogan::before, .js-slogan::after { animation-duration:.3s; }
    .js-strike, .js-bolt, .js-dust::after { animation:none; opacity:.4; }
    #workspace.ws-enter { animation:none; }
}

/* ===== 快速生图 / 技能库视图适配（并入工作台同页切换） ===== */
.ws-view-pad { position:relative; width:min(1380px, calc(100% - 48px)); margin:0 auto; padding:22px 0 48px; }
#viewPlayground.active, #viewSkills.active { display:block; overflow-y:auto; }
#viewPlayground .playground-layout { display:grid; grid-template-columns:minmax(330px,420px) minmax(0,1fr); gap:18px; padding-top:0; }
#viewPlayground .image-lightbox { position:fixed; }
#viewSkills .skill-page, #viewSkills main { width:auto; max-width:none; margin:0; padding:0; }
#viewSkills .skill-header { border-bottom:1px solid var(--line); margin-bottom:18px; }
@media (max-width:900px) {
    #viewPlayground .playground-layout { grid-template-columns:1fr; }
    .ws-view-pad { width:calc(100% - 24px); }
}

/* ===== 生成历史视图（同页切换，替代旧全屏覆盖面板） ===== */
#historyPanel.active { display:block; overflow-y:auto; }
#historyPanel .ws-view-pad { width:min(1180px, calc(100% - 48px)); padding:22px 24px 48px; }
.ws-history-view-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }
.ws-history-view-title { display:flex; align-items:center; gap:9px; font-size:20px; font-weight:800; color:var(--text); font-family:var(--font-display); }
.ws-history-view-title svg { color:var(--accent); }
.ws-history-sub { font-size:12px; font-weight:650; color:var(--muted); margin-left:6px; }
.ws-history-head-actions { display:flex; gap:8px; }
.ws-history-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:16px; flex-wrap:wrap; }
.ws-history-filters { display:flex; gap:8px; }
