/*
 * PLP Portal Shell CSS（puze-admin-portal.css）
 * ------------------------------------------------------------------
 * 从 admin-sso SCM 门户外壳抽取的全局层：确认稿版式的门户骨架
 * （平铺双栏 / 可折叠侧栏与二级子菜单 / 顶栏页签·搜索·用户区 / 折叠浮出菜单）、
 * 内容页通用样式、内容归一层（旧内页统一排版）与字号还原层。
 * 依赖顺序：puze-admin-design.css → puze-admin-app.css → 本文件。
 * 类名以 .scm-* 为当前实现载体；其他门户按同构 DOM 复用（后续统一更名为 .puze-portal-*）。
 */
:root {
      color-scheme: light;
      --ink:var(--puze-color-ink,#172033);
      --muted:var(--puze-color-muted,#667085);
      --line:var(--puze-color-line,#dbe3ef);
      --paper:var(--puze-color-paper,#f4f7fb);
      --panel:var(--puze-color-panel,#fff);
      --brand-primary:var(--puze-color-primary,#1f418f);
      --brand-accent:var(--puze-color-accent,#169e9c);
      --brand-soft:var(--puze-color-soft-blue,#edf4ff);
      --sidebar:var(--puze-color-sidebar,#eef3fb);
      --sidebar-strong:var(--puze-color-sidebar-strong,#dfe8f6);
    }
    * { box-sizing:border-box; }
    body { margin:0; min-height:100vh; background:#fff; color:var(--ink); font-family:var(--puze-font-base); }
    body::before { display:none; }
    a { color:inherit; }
    button,input,select,textarea { font:inherit; }
    h1,h2,h3,p { margin-top:0; }

    /* ===== 确认稿外壳：平铺双栏 ===== */
    .scm-shell { display:flex; min-height:100vh; align-items:stretch; }
    .scm-aside {
      position:sticky; top:0; height:100vh; overflow-y:auto; overflow-x:hidden;
      width:256px; flex:none;
      background:var(--sidebar); border-right:1px solid var(--line);
      display:flex; flex-direction:column; transition:width .18s ease;
    }
    .scm-aside::-webkit-scrollbar { width:0; }
    .scm-aside.collapsed { width:64px; }
    .scm-brand { position:relative; overflow:hidden; display:flex; align-items:center; gap:12px; padding:18px 18px 16px; border-bottom:1px solid var(--line); }
    .scm-aside.collapsed .scm-brand { justify-content:center; padding:16px 0; }
    .scm-brand__aux { position:absolute; right:-42px; top:-20px; width:158px; opacity:.55; pointer-events:none; transition:transform .2s ease; }
    .scm-aside:hover .scm-brand__aux { transform:translateY(3px); }
    .scm-brand__logo { position:relative; width:40px; height:40px; flex:none; padding:5px; border:1px solid #dce5f1; border-radius:10px; background:#fff; object-fit:contain; }
    .scm-brand__copy { min-width:0; }
    .scm-brand__co { font-size:10px; font-weight:600; letter-spacing:.18em; color:#98a2b3; white-space:nowrap; }
    .scm-brand__title { font-size:18px; font-weight:700; letter-spacing:.01em; color:var(--ink); white-space:nowrap; margin-top:4px; }
    .scm-brand__row { display:flex; align-items:center; gap:7px; margin-top:6px; }
    .scm-brand__chip { font-size:10.5px; font-weight:600; letter-spacing:.12em; font-family:var(--puze-font-mono); color:var(--brand-primary); background:#e3ecfb; border-radius:4px; padding:2px 7px; }
    .scm-nav { padding:10px; display:flex; flex-direction:column; gap:2px; }
    .scm-aside.collapsed .scm-nav { padding:10px 8px; }
    .scm-nav__group { font-size:10px; letter-spacing:.14em; color:#98a2b3; padding:12px 12px 4px; }
    .scm-nav__item {
      display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:8px;
      font-size:14px; font-weight:500; cursor:pointer; white-space:nowrap; color:var(--ink); text-decoration:none;
    }
    .scm-nav__item svg { flex:none; }
    .scm-nav__item:hover { background:var(--sidebar-strong); }
    .scm-nav__item.active { background:var(--sidebar-strong); color:var(--brand-primary); font-weight:600; }
    .scm-aside.collapsed .scm-nav__group,
    .scm-aside.collapsed .scm-lbl { display:none; }
    .scm-aside.collapsed .scm-nav__item { justify-content:center; padding:9px 0; }
    .scm-nav__parent { user-select:none; }
    .scm-nav__chev { margin-left:auto; color:#98a2b3; transition:transform .15s ease; }
    .scm-nav__parent[aria-expanded="false"] .scm-nav__chev { transform:rotate(-90deg); }
    .scm-nav__sub { display:flex; flex-direction:column; gap:2px; margin:2px 0 4px; }
    .scm-nav__sub[hidden] { display:none; }
    .scm-nav__subitem {
      display:flex; align-items:center; padding:7px 12px 7px 39px; border-radius:8px;
      font-size:13px; color:var(--muted); text-decoration:none; white-space:nowrap; cursor:pointer;
    }
    .scm-nav__subitem:hover { background:var(--sidebar-strong); color:var(--ink); }
    .scm-nav__subitem.active { background:var(--sidebar-strong); color:var(--brand-primary); font-weight:600; }
    /* 折叠态：点击父项弹出浮动子菜单 */
    .scm-flyout {
      position:fixed; z-index:90; min-width:168px; padding:6px;
      background:#fff; border:1px solid var(--line); border-radius:8px;
      box-shadow:0 10px 28px rgba(31,65,143,.14); display:flex; flex-direction:column; gap:2px;
    }
    .scm-flyout__title { font-size:11px; color:#98a2b3; padding:6px 10px 4px; letter-spacing:.06em; }
    .scm-flyout a {
      display:flex; align-items:center; padding:8px 12px; border-radius:6px;
      font-size:13px; color:var(--ink); text-decoration:none; white-space:nowrap;
    }
    .scm-flyout a:hover { background:var(--sidebar-strong); }
    .scm-aside__foot { margin-top:auto; padding:12px 10px; border-top:1px solid var(--line); display:flex; flex-direction:column; gap:2px; }
    .scm-aside.collapsed .scm-aside__foot { padding:12px 8px; }
    .scm-collapse {
      display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:8px; border:none; background:transparent;
      font-size:12.5px; color:var(--muted); cursor:pointer; white-space:nowrap; text-decoration:none; width:100%; text-align:left;
    }
    .scm-collapse:hover { background:var(--sidebar-strong); color:var(--ink); }
    .scm-aside.collapsed .scm-collapse { justify-content:center; padding:9px 0; }
    .scm-edge {
      position:absolute; right:3px; top:50%; transform:translateY(-50%); z-index:5;
      width:4px; height:44px; padding:0; border:none; border-radius:999px; background:#c9d6e8; cursor:pointer;
      transition:background .15s ease, height .15s ease;
    }
    .scm-edge:hover { background:#9fb3cf; height:56px; }

    .scm-main { flex:1; min-width:0; display:flex; flex-direction:column; background:#fff; }
    .scm-topbar { display:flex; align-items:flex-end; gap:14px; padding:0 24px; border-bottom:1px solid #e6eaf1; }
    .scm-burger {
      display:flex; align-items:center; justify-content:center; width:30px; height:30px; margin:0 6px 8px 0;
      -webkit-appearance:none; appearance:none; border:none; background:transparent; border-radius:7px;
      color:#172033; cursor:pointer; flex:none; align-self:flex-end; line-height:0;
    }
    .scm-topbar svg, .scm-aside svg { flex:none; }
    .scm-burger svg { display:block; }
    .scm-burger:hover { background:var(--sidebar-strong); }
    .scm-burger:hover svg { stroke:#1f418f; }
    .scm-top-right { margin-left:auto; display:flex; align-items:center; gap:16px; padding-bottom:9px; }
    .scm-search { display:flex; align-items:center; gap:8px; height:32px; padding:0 12px; border:1px solid var(--line); border-radius:8px; background:#fff; width:270px; font-size:12.5px; color:var(--muted); }
    .scm-search input { border:none; outline:none; background:transparent; width:100%; font-size:12.5px; color:var(--ink); }
    .scm-bell { position:relative; display:flex; color:var(--muted); }
    .scm-user { position:relative; }
    .scm-user summary { list-style:none; display:flex; align-items:center; gap:6px; font-size:13px; color:var(--ink); cursor:pointer; white-space:nowrap; }
    .scm-user summary::-webkit-details-marker { display:none; }
    .scm-user__menu {
      position:absolute; right:0; top:calc(100% + 10px); z-index:60; min-width:200px;
      background:#fff; border:1px solid var(--line); border-radius:8px; box-shadow:0 10px 28px rgba(31,65,143,.12); padding:12px;
    }
    .scm-user__status { font-size:12px; color:var(--muted); padding-bottom:10px; margin-bottom:10px; border-bottom:1px solid var(--line); white-space:nowrap; }
    .scm-user__logout { display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:600; color:var(--ink); text-decoration:none; }
    .scm-user__logout:hover { color:var(--brand-primary); }
    .scm-content {
      flex:1; padding:20px 24px 28px; display:flex; flex-direction:column;
      gap:var(--puze-app-gap,16px); width:100%;
    }


    /* 工作区页签 · 确认稿白卡样式（覆盖 shell 组件默认样式） */
    .scm-portal .puze-utility-bar { min-height:0; background:transparent; border:none; padding:0; margin:0; gap:0; flex:1; min-width:0; }
    .scm-portal .puze-workspace-tabs { gap:4px; align-items:flex-end; padding-top:10px; }
    .scm-portal .puze-workspace-tab {
      position:relative; height:auto; min-width:0; max-width:220px; grid-template-columns:minmax(0,1fr) auto; column-gap:2px;
      align-items:center; padding:7px 8px 7px 14px; margin-bottom:-1px; background:transparent;
      border:1px solid transparent; border-bottom:none; border-radius:8px 8px 0 0; box-shadow:none;
    }
    .scm-portal .puze-workspace-tab:hover { background:var(--sidebar-strong); }
    .scm-portal .puze-workspace-tab.active { background:#fff; border-color:var(--line); box-shadow:none; }
    .scm-portal .puze-workspace-tab.active::after { display:none; }
    .scm-portal .puze-workspace-tab__link { padding:0; font-size:13px; font-weight:400; color:var(--muted); justify-content:flex-start; }
    .scm-portal .puze-workspace-tab.active .puze-workspace-tab__link { color:var(--ink); font-weight:500; }
    .scm-portal .puze-workspace-tab__close { width:20px; height:20px; }

    /* ===== 内容页通用样式（SCM 各功能页沿用） ===== */
    .topbar { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; margin-bottom:22px; }
    .topbar p { margin:0 0 6px; color:var(--muted); }
    .topbar h1 { margin:0; font-size:26px; letter-spacing:0; }
    .top-actions { display:flex; align-items:center; gap:10px; }
    .user-card { min-height:40px; border:1px solid var(--line); border-radius:999px; background:#fff; display:grid; align-items:center; gap:10px; padding:5px 12px; }
    .user-card strong,.user-card span { display:block; white-space:nowrap; }
    .user-card strong { font-size:13.5px; }
    .user-card span { color:var(--muted); font-size:12px; }
    .module-banner,.module-card,.module-panel,.sync-card,.notice { border:1px solid var(--line); border-radius:8px; background:var(--panel); }
    .module-banner { padding:22px; }
    .module-banner span,.module-code { display:inline-flex; width:fit-content; border-radius:999px; background:var(--brand-soft); color:var(--brand-primary); padding:4px 10px; font-size:12px; font-weight:700; }
    .module-banner h2 { margin:14px 0 8px; font-size:24px; }
    .module-banner p,.module-card p,.module-panel p,.sync-card p,.notice p { margin-bottom:0; color:var(--muted); line-height:1.65; }
    .module-grid,.sync-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-top:2px; }
    .sync-grid { grid-template-columns:repeat(3,minmax(0,1fr)); margin-top:16px; }
    .module-card,.sync-card { display:grid; gap:9px; min-height:150px; padding:16px; }
    .module-card h3,.module-panel h3,.sync-card h3 { margin:0; font-size:15px; }
    .module-card strong { align-self:end; color:var(--ink); }
    .module-card ul,.notice ul { margin:0; padding-left:18px; color:var(--muted); line-height:1.55; font-size:12.5px; }
    .module-panel { display:grid; grid-template-columns:minmax(0,1fr) minmax(240px,320px); gap:18px; padding:20px; margin-top:2px; }
    .module-actions,.toolbar { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 4px; }
    .module-link,.button,button.button-like {
      min-height:32px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink);
      display:inline-flex; align-items:center; justify-content:center; padding:5px 14px; text-decoration:none; font-size:13px; font-weight:600; cursor:pointer;
    }
    .module-link:hover,.button:hover { background:var(--paper); }
    .module-link.primary,.button:not(.secondary) { border-color:var(--brand-primary); background:var(--brand-primary); color:#fff; }
    .module-link.primary:hover,.button:not(.secondary):hover { background:#16306b; }
    form button,button { min-height:32px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink); display:inline-flex; align-items:center; justify-content:center; padding:5px 14px; font-size:13px; font-weight:600; cursor:pointer; }
    form button:not(.secondary) { border-color:var(--brand-primary); background:var(--brand-primary); color:#fff; }
    .module-state { display:grid; grid-template-columns:88px minmax(0,1fr); gap:8px 10px; border:1px solid var(--line); border-radius:8px; background:#f8fbff; padding:12px; align-content:start; }
    .module-state span { color:var(--muted); font-size:12.5px; }
    .module-state strong { color:var(--ink); font-size:13px; overflow-wrap:anywhere; }
    .status { display:inline-flex; width:fit-content; border-radius:999px; background:#e7f7f3; color:#0f766e; padding:3px 10px; font-size:11.5px; font-weight:600; }
    .status.warn,.notice.warning { background:#fff7ed; color:#b45309; }
    .status.danger,.notice.danger { background:#fef2f2; color:#b91c1c; }
    .notice { padding:16px; margin:var(--puze-app-gap,16px) 0; color:var(--ink); }
    .notice b { display:block; margin-bottom:8px; color:var(--ink); }
    label { display:grid; gap:6px; color:var(--muted); font-size:12.5px; font-weight:600; }
    input,select,textarea { width:100%; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink); padding:8px 10px; }
    pre { max-width:100%; overflow:auto; border:1px solid var(--line); border-radius:8px; background:#fff; padding:14px; color:#263445; line-height:1.55; }
    table { width:100%; border-collapse:separate; border-spacing:0; overflow:hidden; border:1px solid var(--line); border-radius:8px; background:#fff; }
    th,td { border-bottom:1px solid var(--line); padding:9px 10px; text-align:left; vertical-align:top; }
    th { background:var(--paper); color:var(--muted); font-size:11px; letter-spacing:.06em; font-weight:600; }
    tr:last-child td { border-bottom:0; }
    .puze-table-card table { border:none; border-radius:0; }
    .metric-strip { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:16px 0; }
    .metric-card { border:1px solid var(--line); border-radius:8px; background:#fff; padding:14px; }
    .metric-card span { display:block; color:var(--muted); font-size:12px; font-weight:600; }
    .metric-card strong { display:block; margin-top:6px; color:var(--ink); font-size:21px; font-family:var(--puze-font-mono); }
    @media (max-width:900px) {
      .scm-aside { display:none; }
      .scm-content { padding:16px; }
      .module-grid,.module-panel,.sync-grid,.metric-strip { grid-template-columns:1fr; }
    }

    /* ===== 内容归一层：旧内页统一排版（标题层级 / 卡片化 / 表单栅格） ===== */
    .scm-content h1 { font-size:20px; font-weight:700; margin:0; }
    .scm-content h2 { font-size:15px; font-weight:700; margin:4px 0 0; }
    .scm-content h3 { font-size:15px; font-weight:700; margin:0; }
    .scm-content > p { margin:0; color:var(--muted); line-height:1.6; }
    .lead { color:var(--muted); font-size:12.5px; margin:0; }
    .muted { color:var(--muted); font-size:12px; }
    .section-heading { font-size:15px; font-weight:700; margin:0; }
    .result-head { display:flex; align-items:baseline; gap:10px; margin-top:calc(var(--puze-app-gap-section,40px) - var(--puze-app-gap,16px)); }
    .result-head h3 { font-size:15px; font-weight:700; }
    .metric-strip { margin:0; }
    .metric { border:1px solid var(--line); border-radius:8px; background:#fff; padding:12px 14px; display:grid; gap:4px; }
    .metric span { color:var(--muted); font-size:11px; letter-spacing:.08em; }
    .metric strong { font-size:21px; font-weight:600; font-family:var(--puze-font-mono); }
    .toolbar { margin:0; }
    input[type="checkbox"], input[type="radio"] { width:auto; }
    .ssot-query-panel { border:1px solid var(--line); border-radius:8px; background:#fff; padding:14px 16px; display:grid; gap:12px; }
    .ssot-filter-form { display:grid; gap:12px; }
    .ssot-filter-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px 12px; align-items:end; }
    .ssot-filter-actions { display:flex; gap:8px; align-items:center; }
    .ssot-category-hint { margin:0; font-size:12px; color:var(--muted); }
    .ssot-column-settings summary { cursor:pointer; font-size:12.5px; color:var(--brand-primary); font-weight:600; }
    .ssot-column-panel { padding-top:10px; display:grid; gap:10px; }
    .field-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
    .field-groups { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:10px; }
    .field-group { border:1px solid var(--line); border-radius:8px; background:var(--paper); padding:10px 12px; display:grid; gap:6px; }
    .field-group h3 { font-size:12px; color:var(--muted); }
    .checkline { display:flex; align-items:center; gap:6px; font-size:12.5px; font-weight:400; color:var(--ink); }
    .checkline input { width:auto; }
    .ops-workbench { display:flex; flex-direction:column; gap:var(--puze-app-gap,16px); }
    .ops-hero { border:1px solid var(--line); border-radius:8px; background:#fff; padding:18px 20px; display:grid; gap:8px; }
    .ops-section { border:1px solid var(--line); border-radius:8px; background:#fff; padding:16px; display:grid; gap:10px; }
    .ops-verdict { display:grid; gap:6px; }
    .product-explorer { display:grid; grid-template-columns:minmax(280px,360px) minmax(0,1fr); gap:12px; align-items:start; }
    .notice-details summary, .compact-details summary { cursor:pointer; font-size:12.5px; color:var(--brand-primary); font-weight:600; }
    @media (max-width:1100px) { .product-explorer { grid-template-columns:1fr; } }

    /* ===== 字号还原层：抵消 design.css 的 body.puze-admin-ui * 12px 全局压平 ===== */
    body.scm-portal .scm-brand__co { font-size:10px !important; }
    body.scm-portal .scm-brand__title { font-size:18px !important; }
    body.scm-portal .scm-brand__chip { font-size:10.5px !important; }
    body.scm-portal .scm-nav__group { font-size:10px !important; }
    body.scm-portal .scm-nav__item { font-size:14px !important; }
    body.scm-portal .scm-nav__subitem { font-size:13px !important; }
    body.scm-portal .scm-collapse { font-size:12.5px !important; }
    body.scm-portal .puze-page-head__title { font-size:20px !important; }
    body.scm-portal .puze-page-head__meta { font-size:12.5px !important; }
    body.scm-portal .puze-kpi__label { font-size:11px !important; }
    body.scm-portal .puze-kpi__value { font-size:21px !important; }
    body.scm-portal .puze-kpi__sub { font-size:11.5px !important; }
    body.scm-portal .puze-section-head__title { font-size:15px !important; }
    body.scm-portal .puze-section-head__hint { font-size:12px !important; }
    body.scm-portal .puze-stage__head { font-size:11px !important; }
    body.scm-portal .puze-stage__count { font-size:22px !important; }
    body.scm-portal .puze-stage__unit,
    body.scm-portal .puze-stage__note { font-size:11.5px !important; }
    body.scm-portal .puze-table-card__title { font-size:13.5px !important; }
    body.scm-portal .puze-table-card__count { font-size:11px !important; }
    body.scm-portal .puze-table th { font-size:11px !important; }
    body.scm-portal .puze-table td { font-size:13px !important; }
    body.scm-portal .puze-table .cell-id,
    body.scm-portal .puze-table .cell-mono,
    body.scm-portal .puze-table .cell-wrap,
    body.scm-portal .puze-table .cell-owner { font-size:12.5px !important; }
    body.scm-portal .puze-pill { font-size:11.5px !important; }
    body.scm-portal .puze-btn { font-size:13px !important; }
    body.scm-portal .puze-filter-chip { font-size:12.5px !important; }
    body.scm-portal .scm-search,
    body.scm-portal .scm-search input { font-size:12.5px !important; }
    body.scm-portal .scm-user summary { font-size:13px !important; }
    body.scm-portal .scm-user__status { font-size:12px !important; }
    body.scm-portal .scm-user__logout { font-size:13px !important; }
    body.scm-portal .puze-workspace-tab__link { font-size:13px !important; }
    body.scm-portal .topbar h1 { font-size:26px !important; }
    body.scm-portal .module-banner h2 { font-size:24px !important; }
    body.scm-portal .module-card h3,
    body.scm-portal .module-panel h3,
    body.scm-portal .sync-card h3 { font-size:15px !important; }
    body.scm-portal .metric-card strong { font-size:21px !important; }
    body.scm-portal .scm-content h1 { font-size:20px !important; }
    body.scm-portal .scm-content h2 { font-size:15px !important; }
    body.scm-portal .scm-content h3 { font-size:15px !important; }
    body.scm-portal .result-head h3,
    body.scm-portal .section-heading { font-size:15px !important; }
    body.scm-portal .metric strong { font-size:21px !important; }
    body.scm-portal .lead { font-size:12.5px !important; }
    body.scm-portal .field-group h3 { font-size:12px !important; }
