/* policies: page styles on top of the design-system primitives in /styles.css.
   Tokens only (var(--...)); no hex, no rgba, no new hues. */

/* ── Shell: tabs under the header ─────────────────────────────── */
.pol-tabs { margin: 0 0 28px; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.pol-section { margin-top: 40px; }
.pol-section > .section-title { display: flex; align-items: center; gap: 10px; }
.pol-section > .banner { margin-bottom: 16px; }
.pol-link { text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: 3px; }
.pol-link, [data-contract-table] td.mono { white-space: nowrap; }
.pol-link:hover { text-decoration-color: var(--ink-3); }

/* ── Search tab ───────────────────────────────────────────────── */
.pol-search { max-width: 560px; }
.pol-search-row { display: flex; gap: 8px; }
.pol-search-row .search-input { flex: 1; min-width: 0; }

/* ── Detail: hero header ──────────────────────────────────────── */
.pol-detail .page-head h1 { font-family: var(--font-mono); font-weight: 600; letter-spacing: -0.01em; overflow-wrap: anywhere; }
.pol-jump { width: 340px; margin: 0; }
.pol-hero { display: flex; flex-direction: column; gap: 8px; margin: -14px 0 28px; }
.pol-hero-h { font-size: var(--fs-meta); font-weight: 400; color: var(--ink-3); margin: 0 0 2px; }
.pol-status-stack { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; }
.pol-hero-client { font-size: var(--fs-lead); font-weight: 600; }
.pol-hero-client .mono { color: var(--ink-3); font-weight: 400; }
.pol-hero-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; }
.pol-hero-meta > .row-meta { margin: 0; font-size: var(--fs-body); color: var(--ink-2); }
.pol-hero .banner { margin-top: 8px; }
.pol-note { margin-top: 14px; }
.pol-note-text { white-space: pre-wrap; margin-top: 4px; }
.pol-section-actions { margin-top: 16px; }

/* ── Disclosure: grid rows 0fr → 1fr (contracts, insurer launchers) ── */
.pol-disc { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 320ms var(--ease-out); }
[data-open="true"] > .pol-disc { grid-template-rows: 1fr; }
.pol-disc > div { min-height: 0; overflow: hidden; }

/* ── Contracts ────────────────────────────────────────────────── */
.pol-contracts { display: flex; flex-direction: column; gap: 12px; }
.pol-contract { border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
.pol-contract-head { display: flex; align-items: center; gap: 8px; padding-right: 14px; }
.pol-contract-toggle { flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px; padding: 16px 8px 16px 20px; text-align: left; }
.pol-contract-title { flex: 1; min-width: 0; }
.pol-contract-name { display: block; font-size: var(--fs-lead); font-weight: 600; }
.pol-chev { color: var(--ink-3); transition: transform 200ms var(--ease-out); }
[data-open="true"] .pol-chev { transform: rotate(180deg); }
.pol-pin[aria-pressed="true"] { color: var(--ink); }
.pol-contract-body { border-top: 1px solid var(--line-2); padding: 16px 20px 20px; display: flex; flex-direction: column; gap: 14px; }
.pol-contract-dates { font-size: var(--fs-meta); color: var(--ink-3); }
.pol-cats, .auth-modes { max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.pol-cats .seg, .auth-modes .seg { max-width: none; }

/* ── Authentication tab ───────────────────────────────────────── */
.auth-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; align-items: start; }
.auth-layout.has-runs { grid-template-columns: minmax(0, 1fr) 340px; }
.auth-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
.auth-support-pop { width: 360px; max-width: calc(100vw - 32px); }
.auth-support-sec + .auth-support-sec { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line-2); }
.auth-support-sec .field-hint { margin: 4px 0 10px; }
.auth-support-intro { font-size: var(--fs-meta); color: var(--ink-2); margin: 0 0 14px; }
.auth-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.auth-note { color: var(--ink-3); margin: 0 0 16px; }
.auth-counter .banner { margin-top: 20px; }
.auth-cards { display: flex; flex-direction: column; gap: 16px; margin-top: 28px; }
.auth-cards:empty { display: none; }
.auth-insurer { padding: 20px 24px; }
.auth-insurer-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.auth-insurer-id { flex: 1 1 220px; min-width: 0; }
.auth-insurer-id h3 { font-size: var(--fs-section); }
.auth-insurer-id .row-meta:empty { display: none; }
.auth-launcher-body { padding: 18px 3px 3px; }
.auth-modes { margin-bottom: 16px; }
/* A mode with no vault entry: visible but not selectable. */
.auth-modes .seg > button:disabled { opacity: .45; cursor: not-allowed; }
.auth-run-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.auth-run-row .field-hint { margin: 0; }

/* Runs panel: a sticky side column while runs exist. */
.auth-runs {
  position: sticky; top: 24px;
  border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--panel);
  box-shadow: var(--shadow); max-height: calc(100dvh - 72px); overflow-y: auto;
}
.auth-runs-head { display: flex; align-items: center; gap: 10px; padding: 16px 18px; border-bottom: 1px solid var(--line-2); }
.auth-runs-head h3 { flex: 1; }
.auth-runs-list { padding: 10px; display: flex; flex-direction: column; gap: 8px; }
.auth-run { border: 1px solid var(--line); border-radius: var(--r-md); padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
.auth-run-head { display: flex; align-items: center; gap: 8px; }
.auth-run-name { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; font-weight: 600; }
.auth-run-head .icon-btn { width: 30px; height: 30px; }
.auth-run-text { font-size: var(--fs-ui); }
.auth-run .field-error:empty { display: none; }
.auth-run .field-hint, .auth-run .field-error { margin-top: 0; }
.auth-run-actions { display: flex; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.auth-code-row { display: flex; gap: 8px; }
.auth-code { flex: 1; min-width: 0; font-family: var(--font-mono); font-size: var(--fs-lead); letter-spacing: .3em; text-align: center; }
.auth-code--lg { height: 52px; font-size: 22px; letter-spacing: .4em; }
.auth-tally { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.auth-results summary { cursor: pointer; font-size: var(--fs-meta); color: var(--ink-2); }
.auth-results-list { margin-top: 6px; max-height: 200px; overflow: auto; }
.auth-results-list > div { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--line-2); }
.auth-results-list > div:last-child { border-bottom: 0; }
.auth-res-ok { color: var(--good); }
.auth-res-err { color: var(--alert); }
.auth-res-missing { color: var(--caution); }

/* Narrow windows: the panel floats at the bottom instead of taking a column. */
@media (max-width: 1100px) {
  .auth-layout.has-runs { grid-template-columns: minmax(0, 1fr); }
  .auth-runs {
    position: fixed; top: auto; right: 16px; bottom: 16px; z-index: 50;
    width: min(420px, calc(100vw - 32px)); max-height: 60vh; box-shadow: var(--pop-sh);
  }
}
@media (max-width: 640px) {
  .pol-detail .page-actions { flex: 1 1 100%; }
  .pol-jump { width: 100%; }
  .pol-search > .pol-search-row { flex-direction: column; }
  .pol-contract-toggle { padding-left: 16px; }
  .pol-contract-body { padding: 14px 16px 16px; }
  .auth-insurer { padding: 18px; }
}
