.console-su-shell {
  --su-panel: rgba(255,255,255,.68); --su-card: rgba(255,255,255,.58); --su-border: rgba(255,255,255,.88);
  --su-border-subtle: rgba(0,0,0,.06); --su-text: #1d1d1f; --su-muted: #48484a; --su-faint: #86868b;
  --su-accent: #0071e3; --su-terminal: rgba(18,22,32,.96); --su-terminal-head: rgba(28,33,46,.98);
  display: grid; gap: 18px; min-width: 0; color: var(--su-text);
  /* BUGFIX: .console-content 被 min-height 撑满视口后，这层 grid 的 auto 行会跟着
     按比例拉伸（align-content 默认 normal = stretch），导致步骤条和提醒卡下方
     多出大片空白。锁成 start，行高回到内容本身的高度。 */
  align-content: start;
}
html.portal-theme-dark .console-su-shell, html.dark .console-su-shell, html[data-theme="dark"] .console-su-shell {
  --su-panel: rgba(24,28,40,.72); --su-card: rgba(22,26,38,.60); --su-border: rgba(255,255,255,.12);
  --su-border-subtle: rgba(255,255,255,.06); --su-text: #f5f5f7; --su-muted: #c7c7cc; --su-faint: #8e8e93; --su-accent: #2997ff;
}
.console-su-steps { display:flex; align-items:center; justify-content:center; gap:12px; padding:12px 16px; border:1px solid var(--su-border); border-radius:16px; background:var(--su-panel); backdrop-filter:blur(32px) saturate(190%); }
.console-su-steps div { display:inline-flex; align-items:center; gap:8px; color:var(--su-muted); font-size:13px; font-weight:650; white-space:nowrap; }
.console-su-steps div span, .console-su-group-head b { display:grid; place-items:center; width:24px; height:24px; border-radius:50%; color:var(--su-accent); background:color-mix(in srgb, var(--su-accent) 12%, transparent); font-size:12px; }
.console-su-steps > .material-symbols-outlined { color:var(--su-faint); font-size:18px; }
.console-su-notice { border:1px solid rgba(245,158,11,.32); border-left:4px solid #f59e0b; border-radius:16px; padding:18px 20px; background:color-mix(in srgb, #f59e0b 8%, var(--su-panel)); overflow:hidden; }
.console-su-notice-main { display:flex; align-items:flex-start; gap:14px; }
.console-su-notice-icon { display:grid; flex:0 0 40px; width:40px; height:40px; place-items:center; border:1px solid rgba(245,158,11,.3); border-radius:12px; color:#f59e0b; background:rgba(245,158,11,.1); }
.console-su-notice-title { display:flex; align-items:center; gap:9px; }.console-su-notice-title strong { color:var(--su-text); font-size:15px; }.console-su-notice-title em { border-radius:999px; padding:3px 8px; color:#b45309; background:rgba(245,158,11,.14); font-size:11px; font-style:normal; font-weight:700; }
.console-su-notice-main p { margin:7px 0 5px; color:var(--su-muted); font-size:12px; line-height:1.65; }
.console-su-notice-toggle { display:inline-flex; align-items:center; gap:5px; padding:0; border:0; color:var(--su-accent); background:transparent; font:inherit; font-size:12px; font-weight:700; cursor:pointer; }
.console-su-notice-toggle .material-symbols-outlined { transition:transform 180ms ease; }
.console-su-notice-toggle[aria-expanded="true"] .material-symbols-outlined:last-child { transform:rotate(180deg); }
.console-su-notice-toggle[aria-expanded="true"] .material-symbols-outlined { transform:rotate(180deg); }
.console-su-notice-body { margin-top:12px; padding:12px 0 0 54px; border-top:1px solid var(--su-border-subtle); color:var(--su-muted); font-size:12px; line-height:1.7; }
.console-su-notice-body ul { display:grid; gap:6px; margin:0; padding:0; list-style:none; }
.console-su-notice-body li { position:relative; padding-left:14px; }
.console-su-notice-body li::before { position:absolute; left:0; content:"•"; color:var(--su-faint); }
.console-su-notice-body strong { color:var(--su-text); font-weight:650; }
.console-su-notice-body code { border-radius:4px; padding:1px 5px; color:var(--su-text); background:rgba(120,120,128,.14); font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace; font-size:11.5px; word-break:break-all; }
.console-su-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:28px; align-items:start; }
.console-su-panel { display:grid; gap:22px; padding:24px; border:1px solid var(--su-border); border-radius:16px; background:var(--su-panel); box-shadow:0 16px 36px -8px rgba(15,23,42,.08); backdrop-filter:blur(32px) saturate(190%); }
.console-su-panel-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.console-su-panel-head h2 { margin:4px 0 0; color:var(--su-text); font-size:20px; line-height:1.25; }
.console-su-eyebrow { color:var(--su-accent); font-size:11px; font-weight:750; }
.console-su-current { flex:0 0 auto; white-space:nowrap; color:var(--su-faint); font-size:11px; line-height:1.4; text-align:right; }
.console-su-group { display:grid; gap:10px; }
.console-su-group-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.console-su-group-head > span { display:flex; align-items:center; gap:9px; color:var(--su-text); font-size:14px; }
.console-su-group-head b { width:22px; height:22px; font-weight:750; }
.console-su-val-pill { border-radius:999px; padding:3px 8px; color:var(--su-faint); background:color-mix(in srgb, var(--su-muted) 8%, transparent); font-size:11px; font-style:normal; white-space:nowrap; }
.console-su-client, .console-su-lines { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.console-su-client button:not(.pangu-btn), .console-su-lines button:not(.pangu-btn), .console-su-tabs button:not(.pangu-btn){ min-height:56px; display:flex; align-items:center; justify-content:flex-start; gap:9px; padding:9px 12px; border:1px solid var(--su-border-subtle); border-radius:12px; color:var(--su-muted); background:var(--su-card); font:inherit; cursor:pointer; text-align:left; transition:background 180ms ease, box-shadow 180ms ease, color 180ms ease; }
.console-su-client button:hover, .console-su-lines button:hover, .console-su-tabs button:hover { background:var(--su-panel); }
.console-su-client button.is-active, .console-su-lines button.is-active, .console-su-tabs button.is-active { color:var(--su-accent); background:var(--su-panel); box-shadow:0 0 0 1.5px var(--su-accent), 0 0 18px color-mix(in srgb, var(--su-accent) 20%, transparent); }
.console-su-client button > span:last-child, .console-su-lines button > span:last-child { display:grid; gap:2px; }
.console-su-client strong, .console-su-lines strong { font-size:13px; }
.console-su-client small, .console-su-lines small { color:var(--su-faint); font-size:11px; }
.console-su-lines button i { width:10px; height:10px; flex:0 0 10px; border:2px solid var(--su-faint); border-radius:50%; }
.console-su-lines button.is-active i { border-color:var(--su-accent); box-shadow:inset 0 0 0 2px var(--su-panel), 0 0 0 2px var(--su-accent); background:var(--su-accent); }
.console-su-field { position:relative; display:block; min-height:62px; }
.console-su-field select { appearance:none; width:100%; min-height:62px; padding:0 44px 0 52px; border:1px solid var(--su-border-subtle); border-radius:14px; color:var(--su-text); background:var(--su-card); font:inherit; font-size:13px; font-weight:650; cursor:pointer; }
.console-su-field select:not(.is-invalid):focus { outline:none; border-color:var(--su-accent); box-shadow:0 0 0 3px color-mix(in srgb, var(--su-accent) 18%, transparent); }
.console-su-field > .material-symbols-outlined { position:absolute; top:50%; right:14px; color:var(--su-faint); pointer-events:none; transform:translateY(-50%); }.console-su-field-icon { left:16px; right:auto !important; color:var(--su-accent) !important; }
.console-su-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.console-su-tabs button:not(.pangu-btn){ min-height:44px; justify-content:center; padding:7px 8px; font-size:12px; }
.console-su-terminal-col { position:sticky; top:96px; min-width:0; }
.console-su-terminal { overflow:hidden; border:1px solid rgba(255,255,255,.12); border-radius:16px; color:#f5f5f7; background:var(--su-terminal); box-shadow:0 24px 60px -12px rgba(15,23,42,.25); }
.console-su-terminal-head { display:flex; align-items:center; gap:8px; min-height:42px; padding:0 14px; color:#c7c7cc; background:var(--su-terminal-head); font-family:var(--font-mono); font-size:11px; }
.console-su-file-pill { display:inline-flex; align-items:center; gap:6px; margin-left:8px; border-radius:999px; padding:5px 10px; color:#c7c7cc; background:rgba(255,255,255,.09); font-size:11px; }.console-su-file-pill .material-symbols-outlined { font-size:13px; }
.console-su-window-lights { display:flex; gap:5px; margin-right:5px; }.console-su-window-lights i { width:8px; height:8px; border-radius:50%; background:#ff5f57; }.console-su-window-lights i:nth-child(2){background:#febc2e}.console-su-window-lights i:nth-child(3){background:#28c840}
.console-su-terminal-head em { margin-left:auto; color:#8e8e93; font-style:normal; }
.console-su-terminal-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:18px 18px 14px; }
.console-su-terminal-toolbar strong { display:flex; align-items:center; gap:5px; font-size:16px; }.console-su-terminal-toolbar strong .material-symbols-outlined { color:#2997ff; font-size:15px; }.console-su-terminal-toolbar small { display:block; margin-top:3px; color:#8e8e93; font-size:11px; }
.console-su-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }.console-su-actions button:not(.pangu-btn){ min-height:36px; }
.console-su-change-alert { display:flex; align-items:center; gap:8px; margin:0 18px 12px; padding:9px 10px; border:1px solid rgba(245,158,11,.3); border-radius:9px; color:#fbbf24; background:rgba(245,158,11,.12); font-size:12px; }.console-su-change-alert button { margin-left:auto; border:0; color:inherit; background:transparent; font:inherit; font-weight:700; cursor:pointer; }
.console-su-code { min-height:260px; max-height:560px; margin:0; padding:18px; overflow:auto; color:#d8dee9; background:rgba(10,13,20,.72); font-family:var(--font-mono); font-size:12px; line-height:1.65; white-space:pre-wrap; overflow-wrap:anywhere; }
@media (max-width:1024px) { .console-su-layout { grid-template-columns:1fr; }.console-su-terminal-col { position:static; } }
@media (max-width:600px) { .console-su-steps { justify-content:flex-start; overflow-x:auto; }.console-su-steps > .material-symbols-outlined { display:none; }.console-su-panel { padding:18px 14px; }.console-su-panel-head { flex-direction:column; }.console-su-current { white-space:normal; text-align:left; }.console-su-terminal-toolbar { align-items:flex-start; flex-direction:column; }.console-su-actions { width:100%; justify-content:stretch; }.console-su-actions button { flex:1 1 0; } }
@media (prefers-reduced-motion:reduce) { .console-su-client button,.console-su-lines button,.console-su-tabs button,.console-su-notice-toggle .material-symbols-outlined { transition:none; } }

/* ==========================================================================
   终端语法高亮（VS Code Dark+ 取色）
   ---------------------------------------------------------------------------
   由 app.js 的 highlightSetupScript() 分词后输出 .su-* 的 span。
   没有引第三方高亮库 —— 全站没有构建步骤，为一个代码块拉 highlight.js 不划算。
   ========================================================================== */
.console-su-code .su-cm   { color:#6a9955; font-style:italic; }   /* 注释 */
.console-su-code .su-str  { color:#ce9178; }                       /* 字符串 */
.console-su-code .su-var  { color:#9cdcfe; }                       /* 变量 */
.console-su-code .su-kw   { color:#c586c0; }                       /* 关键字 */
.console-su-code .su-fn   { color:#dcdcaa; }                       /* 命令 / cmdlet */
.console-su-code .su-flag { color:#569cd6; }                       /* 参数开关 */
.console-su-code .su-num  { color:#b5cea8; }                       /* 数字 */
.console-su-code .su-type { color:#4ec9b0; }                       /* 类型 / .NET 命名空间 */
