    /* ── Calc Management v2 ─────────────────────────────────── */
    .calc-v2-layout {
      display: flex; gap: 20px; align-items: flex-start;
    }
    .calc-v2-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
    .calc-v2-sidebar {
      width: 280px; flex-shrink: 0;
      position: sticky; top: 80px;
      display: flex; flex-direction: column; gap: 12px;
    }

    /* Breadcrumb */
    .calc-breadcrumb {
      font-size: 12px; color: var(--pwc-mid);
      display: flex; align-items: center; gap: 6px; margin-bottom: 16px;
    }
    .calc-breadcrumb span { color: var(--pwc-dark); font-weight: 600; }

    /* Version List Block */
    .vl-block {
      background: #fff; border-radius: var(--radius-lg);
      border: 1px solid var(--pwc-border); box-shadow: var(--shadow-sm);
      overflow: hidden;
    }
    .vl-header {
      padding: 14px 20px; background: #FAFAFA;
      border-bottom: 2px solid var(--pwc-orange);
      display: flex; align-items: center; justify-content: space-between;
    }
    .vl-title { font-size: 14px; font-weight: 700; color: var(--pwc-dark); }
    .vl-table { width: 100%; border-collapse: collapse; }
    .vl-table th {
      text-align: left; font-size: 10.5px; text-transform: uppercase;
      letter-spacing: .5px; color: var(--pwc-mid); font-weight: 600;
      padding: 9px 14px; background: var(--pwc-bg);
      border-bottom: 1px solid var(--pwc-border);
      white-space: nowrap;
    }
    .vl-table td {
      padding: 11px 14px; border-bottom: 1px solid #F0F0F0;
      font-size: 12.5px; vertical-align: middle;
    }
    .vl-table tr:last-child td { border-bottom: none; }
    .vl-table tr.selected td { background: #FFF8F5; }
    .vl-table tr:hover td { background: #FAFAFA; cursor: pointer; }
    .vl-table tr.selected:hover td { background: #FFF4EE; }
    .vl-vid { font-family: monospace; font-weight: 700; font-size: 12.5px; color: var(--pwc-orange); }
    .vl-actions { display: flex; gap: 4px; flex-wrap: nowrap; }

    /* Status chips */
    .vs-draft     { background: #F0F0F0; color: #555; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; white-space: nowrap; }
    .vs-frozen    { background: var(--blue-lt); color: var(--blue); padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; white-space: nowrap; }
    .vs-submitted { background: var(--green-lt); color: var(--green); padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; white-space: nowrap; }
    .vs-superseded{ background: #F0F0F0; color: #999; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; text-decoration: line-through; white-space: nowrap; }

    /* Completeness bar */
    .completeness {
      display: flex; align-items: center; gap: 6px; white-space: nowrap;
    }
    .comp-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
    .comp-green { background: var(--green); }
    .comp-amber { background: var(--amber); }
    .comp-red   { background: var(--red); }

    /* Conservative flags */
    .cf-tag {
      background: var(--amber-lt); color: var(--amber);
      border: 1px solid #E6C96A;
      font-size: 10.5px; font-weight: 600;
      padding: 1px 7px; border-radius: 3px; white-space: nowrap;
    }

    /* Version Detail Block */
    .vd-block {
      background: #fff; border-radius: var(--radius-lg);
      border: 1px solid var(--pwc-border); box-shadow: var(--shadow-sm);
      overflow: hidden;
    }
    .vd-header {
      padding: 12px 20px; background: #F7F9FF;
      border-bottom: 2px solid var(--blue);
      display: flex; align-items: center; gap: 10px;
    }
    .vd-title { font-size: 14px; font-weight: 700; color: var(--pwc-dark); flex: 1; }

    /* Tabs */
    .tab-nav {
      display: flex; border-bottom: 1px solid var(--pwc-border);
      background: #FAFAFA; padding: 0 20px;
    }
    .tab-btn {
      padding: 10px 16px; font-size: 13px; font-weight: 500;
      color: var(--pwc-mid); border: none; background: none;
      border-bottom: 2px solid transparent; margin-bottom: -1px;
      cursor: pointer; transition: color .12s, border-color .12s;
      white-space: nowrap;
    }
    .tab-btn:hover { color: var(--pwc-dark); }
    .tab-btn.active { color: var(--blue); border-bottom-color: var(--blue); font-weight: 600; }
    .tab-panel { display: none; padding: 20px; }
    .tab-panel.active { display: block; }

    /* Input Data Table */
    .input-table { width: 100%; border-collapse: collapse; font-size: 12px; }
    .input-table th {
      text-align: left; background: var(--pwc-bg); padding: 7px 12px;
      font-size: 10.5px; text-transform: uppercase; letter-spacing: .4px;
      color: var(--pwc-mid); font-weight: 600;
      border-bottom: 1px solid var(--pwc-border);
    }
    .input-table td {
      padding: 9px 12px; border-bottom: 1px solid #F0F0F0;
      vertical-align: middle;
    }
    .input-table tr:last-child td { border-bottom: none; }
    .iot-badge {
      background: var(--green-lt); color: var(--green);
      padding: 1px 7px; border-radius: 3px; font-size: 10.5px; font-weight: 600;
    }
    .manual-badge {
      background: var(--purple-lt); color: var(--purple);
      padding: 1px 7px; border-radius: 3px; font-size: 10.5px; font-weight: 600;
    }
    .hash-mono { font-family: monospace; font-size: 11px; color: var(--pwc-mid); }

    /* Calculation Trace Tree */
    .trace-tree { font-size: 12.5px; }
    .trace-row {
      display: flex; align-items: baseline; gap: 8px;
      padding: 8px 12px; border-bottom: 1px solid #F5F5F5;
    }
    .trace-row:last-child { border-bottom: none; }
    .trace-formula { font-family: monospace; font-size: 12px; color: var(--pwc-dark); flex: 1; }
    .trace-result { font-family: monospace; font-weight: 700; font-size: 12px; color: var(--blue); white-space: nowrap; }
    .trace-src-btn {
      font-size: 10.5px; color: var(--blue); cursor: pointer;
      background: var(--blue-lt); padding: 1px 7px; border-radius: 3px;
      white-space: nowrap; border: none;
    }

    /* Compliance Check Table */
    .compliance-check-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
    .compliance-check-table th {
      text-align: left; background: var(--pwc-bg); padding: 7px 12px;
      font-size: 10.5px; text-transform: uppercase; letter-spacing: .4px;
      color: var(--pwc-mid); font-weight: 600;
      border-bottom: 1px solid var(--pwc-border);
    }
    .compliance-check-table td {
      padding: 9px 12px; border-bottom: 1px solid #F0F0F0; vertical-align: middle;
    }
    .compliance-check-table tr:last-child td { border-bottom: none; }
    .check-pass { color: var(--green); font-weight: 700; }
    .check-warn { color: var(--amber); font-weight: 700; }
    .check-fail { color: var(--red); font-weight: 700; }

    /* Wizard Block */
    .wiz-block {
      background: #fff; border-radius: var(--radius-lg);
      border: 1px solid var(--pwc-border); box-shadow: var(--shadow-sm);
      overflow: hidden;
    }
    .wiz-header {
      padding: 12px 20px; background: linear-gradient(90deg,#F9F5FF 0%,#fff 100%);
      border-bottom: 2px solid var(--purple);
      display: flex; align-items: center; gap: 10px;
    }
    .wiz-title { font-size: 14px; font-weight: 700; color: var(--pwc-dark); flex: 1; }
    .wiz-steps-nav {
      display: flex; align-items: center; padding: 16px 20px;
      border-bottom: 1px solid var(--pwc-border); background: #FAFAFA; gap: 0;
    }
    .wiz-step-dot {
      display: flex; flex-direction: column; align-items: center; gap: 4px;
      position: relative; flex: 1;
    }
    .wiz-step-dot:not(:last-child)::after {
      content: ''; position: absolute; top: 14px; left: 50%;
      width: 100%; height: 2px; background: var(--pwc-border); z-index: 0;
    }
    .wiz-step-dot.done::after { background: var(--green); }
    .wiz-dot-num {
      width: 28px; height: 28px; border-radius: 50%;
      background: #E0E0E0; color: #888; font-size: 12px; font-weight: 700;
      display: flex; align-items: center; justify-content: center;
      z-index: 1; position: relative; flex-shrink: 0;
    }
    .wiz-step-dot.active .wiz-dot-num { background: var(--purple); color: #fff; }
    .wiz-step-dot.done .wiz-dot-num   { background: var(--green); color: #fff; }
    .wiz-dot-label { font-size: 10.5px; color: var(--pwc-mid); text-align: center; white-space: nowrap; }
    .wiz-step-dot.active .wiz-dot-label { color: var(--purple); font-weight: 600; }
    .wiz-step-dot.done .wiz-dot-label   { color: var(--green); }

    .wiz-panel { display: none; padding: 20px; }
    .wiz-panel.active { display: block; }
    .wiz-footer {
      padding: 12px 20px; border-top: 1px solid var(--pwc-border);
      display: flex; align-items: center; justify-content: space-between;
      background: #FAFAFA;
    }

    /* Compliance Sidebar */
    .cs-card {
      background: #fff; border-radius: var(--radius-lg);
      border: 1px solid var(--pwc-border); box-shadow: var(--shadow-sm);
      overflow: hidden;
    }
    .cs-header {
      padding: 11px 16px; font-size: 12px; font-weight: 700;
      text-transform: uppercase; letter-spacing: .6px;
      border-bottom: 2px solid var(--pwc-orange);
      background: linear-gradient(90deg,#FFF8F5 0%,#fff 100%);
      color: var(--pwc-dark);
    }
    .cs-row {
      padding: 10px 16px; border-bottom: 1px solid #F0F0F0;
      font-size: 12.5px; display: flex; flex-direction: column; gap: 3px;
    }
    .cs-row:last-child { border-bottom: none; }
    .cs-label { font-size: 10.5px; color: var(--pwc-mid); text-transform: uppercase; letter-spacing: .4px; }
    .cs-value { font-weight: 600; color: var(--pwc-dark); }
    .cs-hash  {
      font-family: monospace; font-size: 11px; color: var(--blue);
      cursor: pointer; word-break: break-all;
    }
    .cs-hash:hover { text-decoration: underline; }
    .lock-status {
      display: inline-flex; align-items: center; gap: 4px;
      padding: 2px 8px; border-radius: 3px; font-size: 11.5px; font-weight: 600;
    }
    .lock-locked   { background: var(--blue-lt); color: var(--blue); }
    .lock-editable { background: var(--amber-lt); color: var(--amber); }

    /* ════════════════════════════════════════════════════════════
       Unified Lock-State Pattern (P-3 統一)
       ════════════════════════════════════════════════════════════
       狀態階梯:
         draft     編輯中（任何人可改）         · 灰
         pending   提交待覆核（Maker 已提交）   · 琥珀
         locked    Frozen / 共簽完成不可改      · 藍
         signed    完整双簽 + Hash 鎖定         · 綠
         legal     法定鎖定（耐用年數內處分制限）· 紅
       使用方式: <span class="ls ls-locked">🔒 Frozen</span>
    */
    .ls {
      display: inline-flex; align-items: center; gap: 4px;
      padding: 2px 9px; border-radius: 11px; font-size: 11px; font-weight: 600;
      letter-spacing: .2px; line-height: 1.6; white-space: nowrap;
      border: 1px solid transparent;
    }
    .ls i, .ls svg { width: 11px; height: 11px; flex-shrink: 0; }
    .ls-draft   { background: #F5F5F5; color: #595959; border-color: #E0E0E0; }
    .ls-pending { background: var(--amber-lt); color: var(--amber-text); border-color: #F0CC7A; }
    .ls-locked  { background: var(--blue-lt); color: var(--blue); border-color: #BFD9F2; }
    .ls-signed  { background: var(--green-lt); color: var(--green); border-color: #A8D8B9; }
    .ls-legal   { background: var(--red-lt); color: var(--red); border-color: #E8B0B0; }
    .ls-icon-lock::before { content: "🔒 "; }
    .ls-icon-clock::before { content: "⏱ "; }
    .ls-icon-check::before { content: "✓ "; }
    .ls-icon-shield::before { content: "🛡 "; }

    /* Completeness progress bar in wizard */
    .comp-bar-wrap { background: #E0E0E0; border-radius: 4px; height: 8px; flex: 1; }
    .comp-bar-fill { height: 8px; border-radius: 4px; transition: width .4s; }
    .comp-bar-green { background: var(--green); }
    .comp-bar-amber { background: var(--amber); }
    .comp-bar-red   { background: var(--red); }

    /* Frozen seal overlay */
    .frozen-seal {
      text-align: center; padding: 32px 20px;
      background: linear-gradient(135deg,#E6F0FA 0%,#F7F9FF 100%);
      border-radius: var(--radius);
    }
    .frozen-icon { font-size: 48px; margin-bottom: 12px; }
    .frozen-title { font-size: 16px; font-weight: 700; color: var(--blue); margin-bottom: 6px; }
    .frozen-sub   { font-size: 12px; color: var(--pwc-mid); }

    /* ════════════════════════════════════════════════════════════
       CCU dMRV Device Dashboard (scoped under .dmrv-root)
       ════════════════════════════════════════════════════════════ */
    .dmrv-root {
      /* P5: dmrv tokens 委派至平台 :root --pwc-* / --green / --red 等,單一 SoT */
      --dmrv-orange:      var(--pwc-orange);
      --dmrv-orange-lt:   var(--pwc-orange-lt);
      --dmrv-orange-glow: rgba(208,74,2,0.40);
      --dmrv-bg-0:        var(--pwc-bg-form);
      --dmrv-line:        var(--pwc-border);
      --dmrv-line-strong: #CCCCCC;
      --dmrv-glass-bg:    var(--pwc-white);
      --dmrv-glass-border:var(--pwc-border);
      --dmrv-glass-blur:  none;
      --dmrv-fg:          var(--pwc-dark);
      --dmrv-fg-mid:      var(--pwc-mid);
      --dmrv-fg-low:      #A0A0A0;
      --dmrv-ok:          var(--green);
      --dmrv-ok-bg:       var(--green-lt);
      --dmrv-warn:        var(--amber);
      --dmrv-warn-bg:     var(--amber-lt);
      --dmrv-err:         var(--red);
      --dmrv-err-bg:      var(--red-lt);
      --dmrv-info:        var(--blue);
      --dmrv-shadow-1:    0 2px 6px rgba(0,0,0,0.06);
      --dmrv-inset:       none;
      --dmrv-font-ui:     "Inter", "Helvetica Neue", "Segoe UI", "Noto Sans TC", sans-serif;
      --dmrv-font-mono:   "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;

      position: relative;
      margin: -28px;
      padding: 18px 24px 32px;
      background: #FAFAFA;
      color: var(--dmrv-fg);
      font-family: var(--dmrv-font-ui);
      font-size: 13px;
      letter-spacing: 0.01em;
      -webkit-font-smoothing: antialiased;
      min-height: calc(100vh - 64px);
      display: grid;
      grid-template-columns: 1fr;
      gap: 16px;
      overflow: hidden;
    }
    .dmrv-root::before {
      display: none;
    }
    .dmrv-root > * { position: relative; z-index: 1; }
    .dmrv-root *, .dmrv-root *::before, .dmrv-root *::after { box-sizing: border-box; }

    .dmrv-page-head {
      display: flex; align-items: flex-end; justify-content: space-between;
      gap: 16px; flex-wrap: wrap;
    }
    .dmrv-page-titlebar { display: flex; flex-direction: column; gap: 6px; }
    .dmrv-tag-row { display: inline-flex; gap: 8px; align-items: center; flex-wrap: wrap; }
    .dmrv-layer-tag {
      display: inline-flex; align-items: center; gap: 4px;
      background: rgba(208,74,2,0.16);
      color: var(--dmrv-orange-lt);
      border: 1px solid rgba(208,74,2,0.4);
      font-size: 10.5px; font-weight: 600;
      padding: 2px 8px; border-radius: 4px;
      letter-spacing: 0.04em; text-transform: uppercase;
    }
    .dmrv-muted-tag {
      display: inline-flex; align-items: center; gap: 5px;
      font-size: 10.5px; color: var(--dmrv-fg-low);
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--dmrv-line);
      padding: 2px 8px; border-radius: 4px;
      letter-spacing: 0.04em; text-transform: uppercase;
    }
    .dmrv-page-title {
      font-size: 22px; font-weight: 700;
      letter-spacing: -0.02em;
      color: #fff;
      margin: 0;
    }
    .dmrv-page-title small {
      font-weight: 500; font-size: 13px;
      color: var(--dmrv-fg-low);
      margin-left: 8px;
      letter-spacing: 0;
    }
    .dmrv-page-sub { font-size: 12px; color: var(--dmrv-fg-mid); margin-top: 2px; }

    .dmrv-topbar-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
    .dmrv-live-pill {
      display: inline-flex; align-items: center; gap: 7px;
      padding: 4px 10px;
      border: 1px solid rgba(52,211,153,0.35);
      border-radius: 999px;
      background: var(--dmrv-ok-bg);
      color: var(--dmrv-ok);
      font-size: 11px; font-weight: 600;
      letter-spacing: 0.06em; text-transform: uppercase;
    }
    .dmrv-live-pill .dot {
      width: 6px; height: 6px; border-radius: 50%;
      background: var(--dmrv-ok);
      box-shadow: 0 0 8px var(--dmrv-ok);
      animation: dmrv-pulse 1.6s ease-in-out infinite;
    }
    @keyframes dmrv-pulse {
      0%, 100% { opacity: 1; transform: scale(1); }
      50%      { opacity: 0.4; transform: scale(0.7); }
    }
    .dmrv-tb-btn {
      border: 1px solid var(--dmrv-line-strong);
      background: rgba(255,255,255,0.02);
      color: var(--dmrv-fg);
      border-radius: 6px;
      height: 32px; padding: 0 12px;
      font-size: 12px; font-weight: 500;
      display: inline-flex; align-items: center; gap: 6px;
      cursor: pointer;
      transition: background .12s, border-color .12s;
      font-family: var(--dmrv-font-ui);
    }
    .dmrv-tb-btn:hover { background: rgba(255,255,255,0.05); }
    .dmrv-tb-btn.primary {
      background: var(--dmrv-orange); border-color: var(--dmrv-orange); color: #fff;
    }
    .dmrv-tb-btn.primary:hover { background: var(--dmrv-orange-lt); border-color: var(--dmrv-orange-lt); }
    .dmrv-clock {
      font-family: var(--dmrv-font-mono);
      font-size: 12px;
      color: var(--dmrv-fg-mid);
      letter-spacing: 0.04em;
      display: flex; flex-direction: column;
    }
    .dmrv-clock .label {
      font-size: 9.5px; text-transform: uppercase;
      letter-spacing: 0.18em;
      color: var(--dmrv-fg-low);
      font-family: var(--dmrv-font-ui);
    }

    .dmrv-glass {
      background: var(--dmrv-glass-bg);
      backdrop-filter: var(--dmrv-glass-blur);
      -webkit-backdrop-filter: var(--dmrv-glass-blur);
      border: 1px solid var(--dmrv-glass-border);
      border-radius: 10px;
      box-shadow: var(--dmrv-shadow-1), var(--dmrv-inset);
      position: relative;
      overflow: hidden;
    }
    .dmrv-glass::before {
      content: ""; position: absolute; inset: 0;
      background: linear-gradient(180deg, rgba(255,255,255,0.04), transparent 30%);
      pointer-events: none;
    }
    .dmrv-panel-head {
      display: flex; align-items: center; gap: 10px;
      padding: 12px 16px;
      border-bottom: 1px solid var(--dmrv-line);
    }
    .dmrv-panel-head .title {
      font-size: 11.5px; font-weight: 600;
      text-transform: uppercase; letter-spacing: 0.14em;
      color: var(--dmrv-fg);
    }
    .dmrv-panel-head .id {
      font-family: var(--dmrv-font-mono);
      font-size: 10.5px; color: var(--dmrv-fg-low);
    }
    .dmrv-panel-head .right { margin-left: auto; display: flex; align-items: center; gap: 8px; }

    .dmrv-kpi-strip {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 12px;
    }
    .dmrv-kpi {
      padding: 14px 16px;
      display: flex; flex-direction: column; gap: 8px;
      min-height: 116px;
      transition: border-color .15s;
    }
    .dmrv-kpi:hover { border-color: rgba(255,255,255,0.16); }
    .dmrv-kpi-top {
      display: flex; align-items: flex-start; justify-content: space-between;
      gap: 10px;
    }
    .dmrv-kpi-label {
      font-size: 10.5px; font-weight: 600;
      letter-spacing: 0.14em; text-transform: uppercase;
      color: var(--dmrv-fg-low);
    }
    .dmrv-kpi-tag {
      font-size: 9.5px; font-weight: 600;
      padding: 2px 6px; border-radius: 3px;
      letter-spacing: 0.06em; text-transform: uppercase;
    }
    .dmrv-kpi-tag.ok   { color: var(--dmrv-ok);   background: var(--dmrv-ok-bg);   border: 1px solid rgba(52,211,153,0.3); }
    .dmrv-kpi-tag.warn { color: var(--dmrv-warn); background: var(--dmrv-warn-bg); border: 1px solid rgba(245,165,36,0.3); }
    .dmrv-kpi-value {
      font-family: var(--dmrv-font-mono);
      font-size: 30px; font-weight: 600;
      color: #fff;
      line-height: 1;
      letter-spacing: -0.02em;
      display: flex; align-items: baseline; gap: 6px;
    }
    .dmrv-kpi-value .unit {
      font-family: var(--dmrv-font-ui);
      font-size: 12px; font-weight: 500;
      color: var(--dmrv-fg-low);
      letter-spacing: 0;
    }
    .dmrv-kpi-foot {
      display: flex; align-items: center; justify-content: space-between;
      gap: 8px;
    }
    .dmrv-kpi-delta {
      font-family: var(--dmrv-font-mono);
      font-size: 11px; font-weight: 600;
      display: inline-flex; align-items: center; gap: 4px;
    }
    .dmrv-kpi-delta.up   { color: var(--dmrv-ok); }
    .dmrv-kpi-delta.down { color: var(--dmrv-err); }
    .dmrv-kpi-vs { font-size: 10.5px; color: var(--dmrv-fg-low); margin-left: 4px; font-family: var(--dmrv-font-ui); font-weight: 400; }
    .dmrv-kpi-spark { width: 80px; height: 28px; }
    .dmrv-kpi-spark svg { display: block; width: 100%; height: 100%; overflow: visible; }

    .dmrv-grid-main {
      display: grid;
      grid-template-columns: 1fr;
      gap: 16px;
      align-items: start;
    }
    /* ── Dashboard dual-mode (all vs single) toggle ── */
    body[data-dash-mode="all"]    [data-dash-view="single"] { display: none !important; }
    body[data-dash-mode="single"] [data-dash-view="all"]    { display: none !important; }
    /* Fleet comparison widget (all mode) — light theme to match PwC dmrv-root */
    .dmrv-fleet-section { margin-bottom: 14px; }
    .dmrv-fleet-head { display:flex; align-items:center; gap:10px; margin-bottom:12px; padding-bottom:10px; border-bottom:1px solid var(--pwc-border); }
    .dmrv-fleet-head h3 { margin:0; font-size:13px; color:var(--pwc-dark); letter-spacing:.3px; font-weight:700; }
    .dmrv-fleet-head .hint { font-size:10.5px; color:var(--pwc-mid); margin-left:auto; }
    .dmrv-fleet-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; }
    .dmrv-fleet-card {
      background: #FAFAFA;
      border: 1px solid var(--pwc-border);
      border-radius: 8px;
      padding: 14px;
      cursor: pointer;
      transition: all .15s ease;
      display: flex; flex-direction: column; gap: 10px;
    }
    .dmrv-fleet-card:hover { background: #FFF7ED; border-color: var(--pwc-orange); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(208,74,2,0.12); }
    .dmrv-fleet-card .card-head { display:flex; align-items:center; gap:8px; }
    .dmrv-fleet-card .card-id { font-size:13px; font-weight:700; color:var(--pwc-dark); font-family:'JetBrains Mono', monospace; }
    .dmrv-fleet-card .card-pip { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
    .dmrv-fleet-card .card-pip.ok { background:var(--green); box-shadow:0 0 6px rgba(15,133,84,0.4); }
    .dmrv-fleet-card .card-pip.warn { background:var(--amber); box-shadow:0 0 6px rgba(245,158,11,0.4); }
    .dmrv-fleet-card .card-pip.err { background:var(--red); box-shadow:0 0 6px rgba(239,68,68,0.4); }
    .dmrv-fleet-card .card-status { font-size:10.5px; color:var(--pwc-mid); margin-left:auto; font-weight:600; }
    .dmrv-fleet-card .card-stats { display:grid; grid-template-columns:1fr 1fr; gap:8px 14px; }
    .dmrv-fleet-card .card-stat-l { font-size:10px; color:var(--pwc-mid); text-transform:uppercase; letter-spacing:.4px; }
    .dmrv-fleet-card .card-stat-v { font-size:14px; font-weight:700; color:var(--pwc-dark); font-family:'JetBrains Mono', monospace; }
    .dmrv-fleet-card .card-stat-u { font-size:9.5px; color:var(--pwc-mid); margin-left:3px; font-weight:400; }
    .dmrv-fleet-card .card-spark { height:28px; width:100%; }
    .dmrv-fleet-card .card-spark svg { display:block; width:100%; height:100%; }
    /* Contribution bar */
    .dmrv-contrib-bar { display:flex; height:26px; border-radius:6px; overflow:hidden; background:#F0F0F0; border:1px solid var(--pwc-border); }
    .dmrv-contrib-seg { display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; color:#fff; transition:flex .3s; }
    .dmrv-contrib-seg.a1 { background: #D04A02; }
    .dmrv-contrib-seg.a2 { background: #FF7A1A; }
    .dmrv-contrib-seg.a3 { background: #F59E0B; }
    .dmrv-contrib-legend { display:flex; gap:14px; margin-top:8px; font-size:10.5px; color:var(--pwc-mid); }
    .dmrv-contrib-legend .lg-dot { display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:5px; vertical-align:-1px; }
    /* Lifecycle block (single mode) */
    .dmrv-lifecycle { display:grid; grid-template-columns:repeat(4, 1fr); gap:14px; padding:14px 16px; }
    .dmrv-lifecycle-stat { display:flex; flex-direction:column; gap:4px; }
    .dmrv-lifecycle-l { font-size:10px; color:var(--pwc-mid); text-transform:uppercase; letter-spacing:.4px; }
    .dmrv-lifecycle-v { font-size:14px; font-weight:700; color:var(--pwc-dark); font-family:'JetBrains Mono', monospace; }
    .dmrv-lifecycle-sub { font-size:10.5px; color:var(--pwc-mid); }
    .dmrv-lifecycle-bar { height:6px; background:#F0F0F0; border-radius:3px; overflow:hidden; margin-top:4px; }
    .dmrv-lifecycle-bar > div { height:100%; background:linear-gradient(90deg, var(--pwc-orange) 0%, #FF7A1A 100%); border-radius:3px; transition:width .3s; }
    /* KPI delta vs fleet badge (single mode) */
    .dmrv-kpi-vsfleet { font-size:10px; color:var(--pwc-mid); margin-left:6px; padding:1px 6px; border-radius:3px; background:#F0F0F0; font-weight:600; }
    .dmrv-kpi-vsfleet.up { color:var(--green); background:var(--green-lt); }
    .dmrv-kpi-vsfleet.down { color:var(--red); background:var(--red-lt); }
    /* Hero 左上角狀態文字 */
    .dmrv-hero-title .h.hero-status {
      display: inline-flex; align-items: center; gap: 8px;
      color: var(--dmrv-warn);
      font-size: 12px;
      text-transform: none;
      letter-spacing: 0.04em;
      font-weight: 700;
    }
    .dmrv-hero-title .h.hero-status .dmrv-status-pulse {
      width: 9px; height: 9px;
    }

    .dmrv-hero {
      height: 540px;
      position: relative;
      overflow: hidden;
    }
    .dmrv-hero-canvas {
      position: absolute; inset: 0;
      background:
        radial-gradient(ellipse 65% 50% at 50% 55%, rgba(56,189,248,0.05), transparent 60%),
        radial-gradient(ellipse 90% 60% at 50% 100%, rgba(208,74,2,0.07), transparent 70%);
    }
    .dmrv-hero-canvas svg { width: 100%; height: 100%; display: block; }
    .dmrv-hero-overlay {
      position: absolute; top: 14px; left: 16px; right: 16px;
      display: flex; align-items: flex-start; justify-content: space-between;
      gap: 12px;
      pointer-events: none;
      z-index: 5;
    }
    .dmrv-hero-title { display: flex; flex-direction: column; gap: 4px; }
    .dmrv-hero-title .h {
      font-size: 11px; font-weight: 600;
      text-transform: uppercase; letter-spacing: 0.16em;
      color: var(--dmrv-fg-low);
    }
    .dmrv-hero-title .name {
      font-size: 16px; font-weight: 700; color: #fff;
      letter-spacing: -0.01em;
    }
    .dmrv-hero-title .meta {
      font-family: var(--dmrv-font-mono);
      font-size: 10.5px; color: var(--dmrv-fg-mid);
    }
    .dmrv-hero-controls {
      pointer-events: auto;
      display: flex; gap: 6px;
      background: rgba(0,0,0,0.35);
      border: 1px solid var(--dmrv-line);
      padding: 4px;
      border-radius: 8px;
      backdrop-filter: blur(8px);
    }
    .dmrv-hero-controls button {
      background: transparent;
      border: 0; color: var(--dmrv-fg-mid);
      padding: 5px 9px; font-size: 11px;
      border-radius: 5px;
      cursor: pointer;
      font-family: var(--dmrv-font-ui);
      font-weight: 500;
    }
    .dmrv-hero-controls button:hover { background: rgba(255,255,255,0.05); color: var(--dmrv-fg); }
    .dmrv-hero-controls button.on {
      background: rgba(208,74,2,0.2);
      color: var(--dmrv-orange-lt);
    }
    .dmrv-hero-legend {
      position: absolute; bottom: 12px; left: 16px;
      z-index: 5;
      display: flex; gap: 14px; align-items: center;
      padding: 7px 12px;
      background: rgba(0,0,0,0.35);
      border: 1px solid var(--dmrv-line);
      border-radius: 999px;
      backdrop-filter: blur(8px);
    }
    .dmrv-hero-legend .item {
      display: inline-flex; align-items: center; gap: 6px;
      font-size: 10.5px; color: var(--dmrv-fg-mid);
      letter-spacing: 0.04em;
    }
    .dmrv-hero-legend .swatch { width: 18px; height: 3px; border-radius: 2px; }
    .dmrv-hero-axes {
      position: absolute; bottom: 14px; right: 16px;
      z-index: 5;
      font-family: var(--dmrv-font-mono); font-size: 10px;
      color: var(--dmrv-fg-low);
      background: rgba(0,0,0,0.35);
      border: 1px solid var(--dmrv-line);
      border-radius: 6px;
      padding: 6px 10px;
      backdrop-filter: blur(8px);
      letter-spacing: 0.06em;
    }

    .dmrv-eq-stroke { stroke: rgba(255,255,255,0.6); stroke-width: 1.2; fill: none; }
    .dmrv-eq-stroke-soft { stroke: rgba(255,255,255,0.22); stroke-width: 1; fill: none; }
    .dmrv-eq-grid line { stroke: rgba(255,255,255,0.05); stroke-width: 1; }
    .dmrv-eq-flow {
      stroke: var(--dmrv-orange);
      stroke-width: 1.4; fill: none;
      stroke-dasharray: 3 4;
      filter: drop-shadow(0 0 4px rgba(208,74,2,0.5));
      animation: dmrv-flowdash 1.6s linear infinite;
    }
    .dmrv-eq-flow.cool { stroke: var(--dmrv-info); filter: drop-shadow(0 0 4px rgba(56,189,248,0.4)); }
    @keyframes dmrv-flowdash { to { stroke-dashoffset: -28; } }

    .dmrv-hotspot {
      cursor: pointer;
      pointer-events: all;
      transition: transform .15s;
      transform-origin: center;
      transform-box: fill-box;
    }
    .dmrv-hotspot circle.outer {
      fill: rgba(208,74,2,0.15);
      stroke: var(--dmrv-orange);
      stroke-width: 1.2;
    }
    .dmrv-hotspot circle.inner {
      fill: var(--dmrv-orange);
      filter: drop-shadow(0 0 6px var(--dmrv-orange-glow));
    }
    .dmrv-hotspot circle.ring {
      fill: none;
      stroke: var(--dmrv-orange);
      stroke-width: 1;
      opacity: 0.5;
      transform-origin: center;
      transform-box: fill-box;
      animation: dmrv-ringpulse 2.4s ease-out infinite;
    }
    @keyframes dmrv-ringpulse {
      0%   { transform: scale(0.6); opacity: 0.7; }
      100% { transform: scale(2.2); opacity: 0; }
    }
    .dmrv-hotspot.active circle.outer,
    .dmrv-hotspot:hover circle.outer {
      fill: rgba(245,165,36,0.25);
      stroke: var(--dmrv-warn);
    }
    .dmrv-hotspot.active circle.inner,
    .dmrv-hotspot:hover circle.inner {
      fill: var(--dmrv-warn);
      filter: drop-shadow(0 0 10px rgba(245,165,36,0.7));
    }
    .dmrv-hotspot.alarm circle.outer { stroke: var(--dmrv-err); fill: rgba(244,63,94,0.2); }
    .dmrv-hotspot.alarm circle.inner { fill: var(--dmrv-err); filter: drop-shadow(0 0 10px var(--dmrv-err)); }
    .dmrv-hotspot.alarm circle.ring  { stroke: var(--dmrv-err); }

    .dmrv-dtag {
      position: absolute;
      z-index: 4;
      pointer-events: auto;
      min-width: 132px;
      padding: 8px 11px;
      background: rgba(13,18,26,0.78);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 8px;
      backdrop-filter: blur(10px);
      -webkit-backdrop-filter: blur(10px);
      box-shadow: 0 6px 18px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.04);
      transition: border-color .18s, transform .18s, box-shadow .18s;
    }
    .dmrv-dtag.active {
      border-color: rgba(245,165,36,0.7);
      box-shadow: 0 8px 22px rgba(0,0,0,0.55), 0 0 0 1px rgba(245,165,36,0.4), 0 0 24px rgba(245,165,36,0.25);
      transform: translateY(-2px);
    }
    .dmrv-dtag.alarm {
      border-color: rgba(244,63,94,0.7);
      box-shadow: 0 8px 22px rgba(0,0,0,0.55), 0 0 0 1px rgba(244,63,94,0.4), 0 0 28px rgba(244,63,94,0.3);
    }
    .dmrv-dtag .dt-head {
      display: flex; align-items: center; justify-content: space-between;
      gap: 8px;
      margin-bottom: 4px;
    }
    .dmrv-dtag .dt-id {
      font-family: var(--dmrv-font-mono); font-size: 9.5px;
      color: var(--dmrv-fg-low);
      letter-spacing: 0.06em;
    }
    .dmrv-dtag .dt-status {
      width: 6px; height: 6px; border-radius: 50%;
      background: var(--dmrv-ok);
      box-shadow: 0 0 6px var(--dmrv-ok);
    }
    .dmrv-dtag.active .dt-status { background: var(--dmrv-warn); box-shadow: 0 0 6px var(--dmrv-warn); }
    .dmrv-dtag.alarm  .dt-status { background: var(--dmrv-err);  box-shadow: 0 0 6px var(--dmrv-err); }
    .dmrv-dtag .dt-label {
      font-size: 10.5px; color: var(--dmrv-fg-mid);
      margin-bottom: 3px;
      letter-spacing: 0.02em;
    }
    .dmrv-dtag .dt-value {
      font-family: var(--dmrv-font-mono);
      font-size: 18px; font-weight: 600; color: #fff;
      line-height: 1;
      letter-spacing: -0.01em;
      display: flex; align-items: baseline; gap: 4px;
    }
    .dmrv-dtag .dt-value .u {
      font-family: var(--dmrv-font-ui); font-weight: 500;
      font-size: 11px; color: var(--dmrv-fg-low);
    }
    .dmrv-dtag .dt-bar {
      margin-top: 6px;
      height: 3px; background: rgba(255,255,255,0.08); border-radius: 2px;
      overflow: hidden;
      position: relative;
    }
    .dmrv-dtag .dt-bar > i {
      position: absolute; left: 0; top: 0; bottom: 0;
      background: var(--dmrv-orange);
      border-radius: 2px;
      box-shadow: 0 0 8px var(--dmrv-orange-glow);
    }
    .dmrv-dtag.active .dt-bar > i { background: var(--dmrv-warn); box-shadow: 0 0 8px rgba(245,165,36,0.5); }
    .dmrv-dtag.alarm  .dt-bar > i { background: var(--dmrv-err);  box-shadow: 0 0 8px var(--dmrv-err); }
    .dmrv-dtag .dt-range {
      display: flex; justify-content: space-between;
      font-family: var(--dmrv-font-mono);
      font-size: 9px; color: var(--dmrv-fg-low);
      margin-top: 3px;
      letter-spacing: 0.04em;
    }

    .dmrv-leader-svg {
      position: absolute; inset: 0;
      width: 100%; height: 100%;
      pointer-events: none;
      z-index: 3;
    }
    .dmrv-leader-line {
      fill: none;
      stroke: rgba(208,74,2,0.55);
      stroke-width: 1;
      filter: drop-shadow(0 0 3px rgba(208,74,2,0.4));
    }
    .dmrv-leader-line.active { stroke: var(--dmrv-warn); filter: drop-shadow(0 0 4px rgba(245,165,36,0.7)); }
    .dmrv-leader-line.alarm  { stroke: var(--dmrv-err); filter: drop-shadow(0 0 4px rgba(244,63,94,0.7)); }

    .dmrv-side-col {
      display: flex; flex-direction: column;
      gap: 16px;
    }
    .dmrv-status-block { padding: 14px 16px 12px; }
    .dmrv-status-headline { display: flex; align-items: center; gap: 10px; }
    .dmrv-status-pulse {
      width: 10px; height: 10px; border-radius: 50%;
      background: var(--dmrv-ok);
      box-shadow: 0 0 0 4px rgba(52,211,153,0.18), 0 0 12px var(--dmrv-ok);
      animation: dmrv-pulse 1.6s ease-in-out infinite;
    }
    .dmrv-status-pulse.warn { background: var(--dmrv-warn); box-shadow: 0 0 0 4px rgba(245,165,36,0.18), 0 0 12px var(--dmrv-warn); }
    .dmrv-status-pulse.err  { background: var(--dmrv-err);  box-shadow: 0 0 0 4px rgba(244,63,94,0.18), 0 0 12px var(--dmrv-err); }
    .dmrv-status-text {
      font-size: 18px; font-weight: 700; color: #fff;
      letter-spacing: -0.01em;
    }
    .dmrv-status-sub {
      font-size: 11px; color: var(--dmrv-fg-mid); margin-top: 2px;
    }
    .dmrv-status-row {
      margin-top: 12px;
      display: grid; grid-template-columns: repeat(4, 1fr);
      gap: 8px;
    }
    .dmrv-status-pill {
      background: rgba(255,255,255,0.025);
      border: 1px solid var(--dmrv-line);
      border-radius: 6px;
      padding: 7px 9px;
    }
    .dmrv-status-pill .l {
      font-size: 9.5px; color: var(--dmrv-fg-low);
      text-transform: uppercase; letter-spacing: 0.12em;
    }
    .dmrv-status-pill .v {
      font-family: var(--dmrv-font-mono);
      font-size: 13px; color: #fff; font-weight: 600;
      margin-top: 2px;
    }

    .dmrv-alerts-list {
      display: flex; flex-direction: column;
      max-height: 340px;
      overflow-y: auto;
    }
    .dmrv-alert {
      display: grid;
      grid-template-columns: 4px 18px 1fr auto;
      gap: 10px;
      padding: 12px 14px;
      border-bottom: 1px solid var(--dmrv-line);
      align-items: flex-start;
      cursor: pointer;
      transition: background .12s;
    }
    .dmrv-alert:last-child { border-bottom: none; }
    .dmrv-alert:hover { background: rgba(255,255,255,0.02); }
    .dmrv-alert.alarm { background: linear-gradient(90deg, rgba(244,63,94,0.06), transparent 60%); }
    .dmrv-alert.warn  { background: linear-gradient(90deg, rgba(245,165,36,0.06), transparent 60%); }
    .dmrv-alert .bar { width: 3px; height: 100%; min-height: 28px; border-radius: 2px; }
    .dmrv-alert.alarm .bar { background: var(--dmrv-err); box-shadow: 0 0 8px var(--dmrv-err); }
    .dmrv-alert.warn  .bar { background: var(--dmrv-warn); box-shadow: 0 0 8px var(--dmrv-warn); }
    .dmrv-alert.info  .bar { background: var(--dmrv-info); }
    .dmrv-alert .ic {
      font-size: 13px;
      display: grid; place-items: center;
      width: 18px; height: 18px;
      margin-top: 1px;
      font-family: var(--dmrv-font-mono);
      font-weight: 700;
    }
    .dmrv-alert.alarm .ic { color: var(--dmrv-err); }
    .dmrv-alert.warn  .ic { color: var(--dmrv-warn); }
    .dmrv-alert.info  .ic { color: var(--dmrv-info); }
    .dmrv-alert .body { min-width: 0; }
    .dmrv-alert .body .t { font-size: 12px; font-weight: 600; color: #fff; }
    .dmrv-alert .body .d {
      font-size: 11px; color: var(--dmrv-fg-mid);
      margin-top: 2px;
      word-wrap: break-word;
    }
    .dmrv-alert .body .meta {
      font-family: var(--dmrv-font-mono);
      font-size: 10px; color: var(--dmrv-fg-low);
      margin-top: 4px;
      letter-spacing: 0.04em;
    }
    .dmrv-alert .time {
      font-family: var(--dmrv-font-mono);
      font-size: 10px; color: var(--dmrv-fg-low);
      white-space: nowrap;
    }
    .dmrv-alerts-foot {
      padding: 10px 14px;
      font-size: 11px; color: var(--dmrv-fg-mid);
      display: flex; justify-content: space-between;
      border-top: 1px solid var(--dmrv-line);
    }
    .dmrv-alerts-foot a { color: var(--dmrv-orange-lt); cursor: pointer; }

    .dmrv-trend { padding: 0; }
    .dmrv-trend-head {
      display: flex; align-items: center; gap: 16px;
      padding: 14px 18px;
      border-bottom: 1px solid var(--dmrv-line);
      flex-wrap: wrap;
    }
    .dmrv-trend-head .title {
      font-size: 13px; font-weight: 700; color: #fff;
      letter-spacing: -0.01em;
    }
    .dmrv-trend-head .sub { font-size: 11px; color: var(--dmrv-fg-mid); }
    .dmrv-trend-tabs {
      display: flex; gap: 0;
      background: rgba(255,255,255,0.03);
      border: 1px solid var(--dmrv-line);
      border-radius: 6px;
      padding: 2px;
    }
    .dmrv-trend-tabs button {
      background: transparent; border: 0; color: var(--dmrv-fg-mid);
      font-size: 11px; padding: 5px 12px;
      border-radius: 4px;
      cursor: pointer; font-family: var(--dmrv-font-ui);
    }
    .dmrv-trend-tabs button.on { background: rgba(208,74,2,0.18); color: #fff; }
    .dmrv-trend-legend { display: flex; gap: 14px; margin-left: auto; flex-wrap: wrap; }
    .dmrv-trend-legend .item {
      display: inline-flex; align-items: center; gap: 6px;
      font-size: 11px; color: var(--dmrv-fg-mid);
    }
    .dmrv-trend-legend .swatch { width: 10px; height: 10px; border-radius: 2px; }
    .dmrv-trend-body {
      padding: 14px 18px 18px;
      display: grid;
      grid-template-columns: 220px 1fr;
      gap: 20px;
    }
    .dmrv-trend-stats {
      display: flex; flex-direction: column;
      gap: 10px;
      border-right: 1px solid var(--dmrv-line);
      padding-right: 18px;
    }
    .dmrv-trend-stat .l {
      font-size: 10px; text-transform: uppercase;
      letter-spacing: 0.14em; color: var(--dmrv-fg-low);
    }
    .dmrv-trend-stat .v {
      font-family: var(--dmrv-font-mono);
      font-size: 22px; font-weight: 600; color: #fff;
      line-height: 1.1;
      margin-top: 3px;
      display: flex; align-items: baseline; gap: 5px;
    }
    .dmrv-trend-stat .v .u {
      font-family: var(--dmrv-font-ui); font-size: 11px;
      color: var(--dmrv-fg-low); font-weight: 500;
    }
    .dmrv-trend-stat .d {
      font-family: var(--dmrv-font-mono);
      font-size: 11px; margin-top: 3px;
    }
    .dmrv-trend-stat .d.up { color: var(--dmrv-ok); }
    .dmrv-trend-stat .d.down { color: var(--dmrv-err); }
    .dmrv-trend-chart { width: 100%; height: 240px; display: block; }

