    /* ─────────────────────────────────────────────────────────────
       pool.html specific styles (V3 junction-aware rewrite of
       target-pool.html). CSP: no inline event handlers; all JS is
       attached programmatically in /js/app.js with fallback in the
       module script at the bottom of this file.
       Thresholds follow docs/requirements/v3.md §12: days_remaining
       < 7  → emergency, < 14 → warning, else ok; critical = no
       consumption / empty / banned dead-stock (pool-health.ts).
       ───────────────────────────────────────────────────────────── */
    .pool-section {
      background: var(--bg-secondary);
      border: 1px solid var(--border-default);
      border-radius: var(--radius-md);
      padding: var(--space-xl);
      margin-bottom: var(--space-xl);
      box-shadow: var(--shadow-panel);
    }
    .pool-section-title {
      font-family: var(--font-heading);
      font-size: 0.875rem;
      font-weight: 500;
      color: var(--text-secondary);
      text-transform: uppercase;
      letter-spacing: 0.06em;
      margin-bottom: var(--space-lg);
      border-bottom: 1px solid var(--border-default);
      padding-bottom: var(--space-md);
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: var(--space-md);
    }
    .pool-section-title .title-subtle {
      font-size: 0.6875rem;
      font-weight: 400;
      color: var(--text-tertiary);
      letter-spacing: 0;
      text-transform: none;
    }

    /* ── summary cards (footer stats / health overview) ── */
    .summary-row {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: var(--space-md);
      margin-bottom: var(--space-xl);
    }
    .summary-card {
      background: var(--bg-secondary);
      border: 1px solid var(--border-default);
      border-radius: var(--radius-md);
      padding: var(--space-lg);
      box-shadow: var(--shadow-panel);
    }
    .summary-label {
      font-size: 0.6875rem;
      color: var(--text-tertiary);
      text-transform: uppercase;
      letter-spacing: 0.06em;
      margin-bottom: 4px;
    }
    .summary-value {
      font-family: var(--font-number);
      font-size: 1.5rem;
      font-weight: 700;
      font-variant-numeric: tabular-nums;
      color: var(--text-primary);
    }
    .summary-sub {
      font-size: 0.75rem;
      color: var(--text-tertiary);
      margin-top: 4px;
    }

    /* ── pool-health: 4-band aggregate badge + per-client breakdown
       maps pool-health.ts status labels:
         aggregate.status ∈ ok | warning | emergency | critical
         per-client.status ∈ healthy | warning | critical         ── */
    .health-overview {
      display: grid;
      grid-template-columns: 1.2fr 1fr 1fr 1fr 1fr;
      gap: var(--space-md);
      margin-bottom: var(--space-lg);
    }
    .health-aggregate-card {
      background: var(--bg-secondary);
      border: 1px solid var(--border-default);
      border-radius: var(--radius-md);
      padding: var(--space-lg);
      display: flex;
      flex-direction: column;
      gap: 6px;
    }
    .health-aggregate-card.status-ok        { border-left: 3px solid var(--status-active); }
    .health-aggregate-card.status-warning   { border-left: 3px solid var(--status-warmup); }
    .health-aggregate-card.status-emergency { border-left: 3px solid var(--alert-warning); }
    .health-aggregate-card.status-critical  { border-left: 3px solid var(--status-error); }

    .health-status-chip {
      display: inline-block;
      font-size: 0.6875rem;
      font-weight: 500;
      padding: 2px 10px;
      border-radius: var(--radius-sm);
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }
    .health-status-chip.status-ok        { background: var(--status-active-bg); color: var(--status-active); }
    .health-status-chip.status-warning   { background: var(--status-warmup-bg); color: var(--status-warmup); }
    .health-status-chip.status-emergency { background: var(--alert-warning-bg); color: var(--alert-warning); }
    .health-status-chip.status-critical  { background: var(--status-error-bg);  color: var(--status-error); }
    .health-status-chip.status-healthy   { background: var(--status-active-bg); color: var(--status-active); }

    .health-client-table {
      width: 100%;
      border-collapse: collapse;
      font-size: 0.8125rem;
    }
    .health-client-table th {
      font-family: var(--font-heading);
      font-size: 0.6875rem;
      font-weight: 500;
      color: var(--text-tertiary);
      text-transform: uppercase;
      letter-spacing: 0.06em;
      text-align: left;
      padding: var(--space-sm) var(--space-md);
      border-bottom: 1px solid var(--border-default);
    }
    .health-client-table td {
      padding: var(--space-sm) var(--space-md);
      border-bottom: 1px solid var(--border-subtle);
      color: var(--text-primary);
      vertical-align: middle;
    }
    .health-client-table tr:last-child td { border-bottom: none; }
    .health-client-table td.num { font-variant-numeric: tabular-nums; text-align: right; }

    /* ── import drop zone ── */
    .import-row {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: var(--space-md);
      align-items: stretch;
    }
    .drop-zone {
      border: 2px dashed var(--border-default);
      border-radius: var(--radius-md);
      padding: var(--space-xl);
      text-align: center;
      color: var(--text-secondary);
      background: var(--bg-subtle);
      transition: border-color 150ms, background 150ms;
      cursor: pointer;
      min-height: 160px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: var(--space-sm);
    }
    .drop-zone.is-dragover {
      border-color: var(--status-active);
      background: var(--status-active-bg);
      color: var(--status-active);
    }
    .drop-zone.is-error {
      border-color: var(--status-error);
      background: var(--status-error-bg);
      color: var(--status-error);
    }
    .drop-zone input[type="file"] { display: none; }
    .drop-zone-sub {
      font-size: 0.75rem;
      color: var(--text-tertiary);
    }
    .import-preview {
      border: 1px solid var(--border-default);
      border-radius: var(--radius-md);
      background: var(--bg-subtle);
      padding: var(--space-md);
      font-size: 0.8125rem;
      color: var(--text-primary);
      min-height: 160px;
      display: flex;
      flex-direction: column;
      gap: 6px;
      overflow: hidden;
    }
    .import-preview-meta {
      display: flex;
      gap: var(--space-md);
      flex-wrap: wrap;
      font-size: 0.75rem;
      color: var(--text-secondary);
    }
    .import-preview-meta strong {
      color: var(--text-primary);
      font-variant-numeric: tabular-nums;
      font-weight: 600;
    }
    .import-preview-errors {
      color: var(--status-error);
      font-size: 0.75rem;
      white-space: pre-wrap;
      word-break: break-word;
      max-height: 70px;
      overflow: auto;
    }
    .import-actions {
      display: flex;
      gap: var(--space-md);
      margin-top: var(--space-md);
      align-items: center;
    }
    .import-result {
      font-size: 0.8125rem;
      color: var(--text-secondary);
      margin-left: auto;
    }

    /* ── filters ── */
    .filter-row {
      display: flex;
      gap: var(--space-md);
      margin-bottom: var(--space-lg);
      align-items: center;
      flex-wrap: wrap;
    }
    .filter-row select,
    .filter-row input {
      font-family: var(--font-body);
      font-size: 0.8125rem;
      padding: 6px 10px;
      border: 1px solid var(--border-default);
      border-radius: var(--radius-sm);
      background: var(--bg-subtle);
      color: var(--text-primary);
    }
    .filter-row input[type="search"] { flex: 1; max-width: 320px; }
    .filter-row .filter-label {
      font-size: 0.6875rem;
      color: var(--text-tertiary);
      text-transform: uppercase;
      letter-spacing: 0.06em;
      margin-right: 4px;
    }

    /* ── pool table ── */
    .pool-table {
      width: 100%;
      border-collapse: collapse;
      font-size: 0.8125rem;
    }
    .pool-table th {
      font-family: var(--font-heading);
      font-size: 0.6875rem;
      font-weight: 500;
      color: var(--text-tertiary);
      text-transform: uppercase;
      letter-spacing: 0.06em;
      text-align: left;
      padding: var(--space-sm) var(--space-md);
      border-bottom: 1px solid var(--border-default);
    }
    .pool-table td {
      padding: var(--space-sm) var(--space-md);
      border-bottom: 1px solid var(--border-subtle);
      color: var(--text-primary);
      vertical-align: middle;
    }
    .pool-table tr.clickable { cursor: pointer; }
    .pool-table tr.clickable:hover td { background: var(--bg-subtle); }
    .pool-table tr:last-child td { border-bottom: none; }
    .pool-table td.num { font-variant-numeric: tabular-nums; text-align: right; }

    .assign-badge {
      display: inline-block;
      font-size: 0.6875rem;
      font-weight: 500;
      padding: 2px 8px;
      border-radius: var(--radius-sm);
      font-variant-numeric: tabular-nums;
    }
    .assign-badge.zero { background: rgba(0,0,0,0.04); color: var(--text-tertiary); }
    .assign-badge.nonzero { background: rgba(33,150,243,0.15); color: var(--status-info, #2196f3); }

    .pagination {
      display: flex;
      gap: var(--space-sm);
      align-items: center;
      margin-top: var(--space-lg);
      font-size: 0.8125rem;
      color: var(--text-secondary);
    }
    .pagination button {
      background: var(--bg-subtle);
      color: var(--text-primary);
      border: 1px solid var(--border-default);
      border-radius: var(--radius-sm);
      padding: 4px 10px;
      cursor: pointer;
      font-size: 0.8125rem;
    }
    .pagination button:disabled { opacity: 0.4; cursor: default; }

    /* ── detail modal (re-uses .modal-overlay .modal-box from style.css)
       but gets extra width because raw_data is a JSON tree.              ── */
    .pool-detail-modal .modal-box {
      max-width: 720px;
      width: 92vw;
      max-height: 80vh;
      display: flex;
      flex-direction: column;
      gap: var(--space-md);
      overflow: hidden;
    }
    .pool-detail-body {
      overflow: auto;
      display: flex;
      flex-direction: column;
      gap: var(--space-md);
    }
    .pool-detail-grid {
      display: grid;
      grid-template-columns: 140px 1fr;
      gap: 4px var(--space-md);
      font-size: 0.8125rem;
    }
    .pool-detail-grid dt {
      color: var(--text-tertiary);
      font-size: 0.75rem;
      padding-top: 2px;
    }
    .pool-detail-grid dd {
      color: var(--text-primary);
      margin: 0;
      word-break: break-word;
    }
    .pool-detail-raw {
      background: var(--bg-subtle);
      border: 1px solid var(--border-subtle);
      border-radius: var(--radius-sm);
      padding: var(--space-sm);
      font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
      font-size: 0.75rem;
      color: var(--text-primary);
      max-height: 220px;
      overflow: auto;
      white-space: pre-wrap;
      word-break: break-word;
    }
    .assigned-client-list {
      list-style: none;
      margin: 0;
      padding: 0;
      display: flex;
      flex-direction: column;
      gap: 4px;
    }
    .assigned-client-list li {
      display: grid;
      grid-template-columns: 1fr 120px 80px;
      gap: var(--space-md);
      padding: 6px 8px;
      background: var(--bg-subtle);
      border-radius: var(--radius-sm);
      font-size: 0.8125rem;
    }
    .assigned-client-list .ac-status {
      font-size: 0.6875rem;
      color: var(--text-tertiary);
      text-transform: uppercase;
      letter-spacing: 0.04em;
    }
    .assigned-client-list .ac-score {
      font-variant-numeric: tabular-nums;
      text-align: right;
      color: var(--text-secondary);
    }

    /* ── status / empty placeholders ── */
    .empty-cell,
    .loading-cell,
    .error-cell {
      text-align: center;
      color: var(--text-tertiary);
      font-size: 0.8125rem;
      padding: var(--space-lg);
    }
    .error-cell { color: var(--status-error); }

    @media (max-width: 960px) {
      .health-overview { grid-template-columns: 1fr 1fr; }
      .import-row { grid-template-columns: 1fr; }
      .summary-row { grid-template-columns: 1fr 1fr; }
      .filter-row { flex-wrap: wrap; }
    }

    /* ── extracted inline style attributes (B-1, CSP compliance) ── */
    .pool-1 { color: var(--text-secondary); font-size: 0.8125rem; margin-top: -4px; margin-bottom: var(--space-xl); }
    .pool-2 { text-align: right; }
    .pool-3 { font-size: 1.25rem; opacity: 0.6; }
    .pool-4 { width: 70px; }
