:root{
  --cov-pass:#5c7f32;
  --cov-notyet:#c3bdab;
  --cov-wrong:#a8442a;
  --cov-oos:#e9e5d9;
}
body.coverage-page{ min-height:100svh; display:flex; flex-direction:column }
body.coverage-page main{ flex:1 0 auto }
body.coverage-page .shell{ max-width:1240px }

/* Hero */
.cov-hero{ padding:clamp(26px,4vw,46px) 0 clamp(22px,3vw,34px) }
.cov-crumb{ display:flex; align-items:center; gap:9px; margin-bottom:14px;
  color:var(--ink-3); font-family:var(--mono); font-size:11.5px }
.cov-crumb b{ color:var(--ink); font-weight:650 }
.cov-hero .eyebrow{ margin-bottom:13px }
.cov-hero h1{ max-width:20ch; font-size:clamp(2.1rem,4.4vw,3.3rem); letter-spacing:-.04em;
  line-height:1.03 }
.cov-hero h1 .accent{ display:block; color:var(--leaf-ink) }
.cov-hero .lead{ max-width:82ch; margin-top:16px; color:var(--ink-2); font-size:1.02rem;
  line-height:1.62 }
.cov-hero .lead code,.cov-sub code,.cov-note code,.cov-meta-line code{
  font-family:var(--mono); font-size:.88em; background:var(--paper-2);
  border:1px solid var(--rule); border-radius:4px; padding:.5px 4px }

/* Headline number */
.cov-headline{ display:grid; gap:22px; align-items:center; margin-top:clamp(22px,3vw,32px) }
@media (min-width:820px){ .cov-headline{ grid-template-columns:minmax(0,auto) minmax(0,1fr);
  gap:44px } }
.cov-pct{ display:block; color:var(--leaf-ink); font-family:var(--mono);
  font-size:clamp(3rem,7vw,4.6rem); font-weight:750; font-variant-numeric:tabular-nums;
  letter-spacing:-.045em; line-height:1 }
.cov-frac{ display:block; margin-top:9px; color:var(--ink-2); font-size:13px; line-height:1.45 }
.cov-frac b{ color:var(--ink); font-weight:700; font-variant-numeric:tabular-nums }
.cov-headline.is-small .cov-pct{ font-size:clamp(2rem,4vw,2.7rem) }

.cov-bar{ display:flex; height:13px; border-radius:999px; overflow:hidden;
  background:var(--cov-oos); border:1px solid var(--rule-2) }
.cov-bar i{ display:block; height:100% }
.b-pass{ background:var(--cov-pass) }
.b-not_yet{ background:var(--cov-notyet) }
.b-wrong{ background:var(--cov-wrong) }
/* Kapsam dışı taralı: "sayılmadı" ile "sayıldı ve olmadı" aynı yüzeyle
   gösterilirse okuyan ikisini karıştırır. */
.b-oos{ background:repeating-linear-gradient(135deg,var(--cov-oos) 0 4px,#dcd7c8 4px 8px) }

.cov-legend{ display:flex; flex-wrap:wrap; gap:8px 20px; margin-top:13px; list-style:none;
  font-size:12.5px; color:var(--ink-2) }
.cov-legend li{ display:inline-flex; align-items:center; gap:7px }
.cov-legend i{ width:10px; height:10px; border-radius:3px; border:1px solid var(--rule-2) }
.cov-legend b{ color:var(--ink); font-family:var(--mono); font-variant-numeric:tabular-nums;
  font-weight:650 }
.cov-legend-wrap{ margin-top:18px }

  gap:1px; margin-top:clamp(20px,3vw,28px); background:var(--rule);
  border:1px solid var(--rule); border-radius:9px; overflow:hidden }
.cov-tile{ background:#fff; padding:13px 15px 14px }
.cov-tile dt{ color:var(--ink); font-family:var(--mono); font-size:1.45rem; font-weight:700;
  font-variant-numeric:tabular-nums; line-height:1.1 }
.cov-tile dd{ margin:5px 0 0; color:var(--ink-3); font-size:11.5px; line-height:1.35 }
.cov-tile.is-pass dt{ color:var(--leaf-ink) }
.cov-tile.is-wrong dt{ color:var(--cov-wrong) }

/* Source card */
.cov-source{ margin-top:clamp(20px,3vw,28px); border:1px solid var(--rule-2);
  border-top:3px solid var(--leaf); border-radius:9px; background:#fff; padding:15px 17px 4px }
.cov-source figcaption{ margin-bottom:4px; color:var(--ink-3); font-family:var(--mono);
  font-size:11px; font-weight:650; letter-spacing:.08em; text-transform:uppercase }
.cov-source dl{ margin:0 }
.cov-source dl > div{ display:grid; grid-template-columns:minmax(0,1fr); gap:2px;
  padding:11px 0; border-top:1px solid var(--rule) }
@media (min-width:640px){
  .cov-source dl > div{ grid-template-columns:150px minmax(0,1fr); gap:16px; align-items:baseline }
}
.cov-source dt{ color:var(--ink-3); font-family:var(--mono); font-size:11px;
  letter-spacing:.05em; text-transform:uppercase }
.cov-source dd{ margin:0; min-width:0; color:var(--ink-2); font-size:13.5px; line-height:1.5;
  overflow-wrap:anywhere }
.cov-source code{ font-family:var(--mono); font-size:12.5px; color:var(--ink) }

/* Notes */
.cov-note{ max-width:88ch; margin-top:18px; padding:13px 15px; border:1px solid var(--rule);
  border-left:3px solid var(--amber); border-radius:8px; background:var(--paper-2);
  color:var(--ink-2); font-size:13.5px; line-height:1.6 }
.cov-note b{ color:var(--ink); font-weight:700 }
.cov-note em{ color:var(--ink); font-style:normal }
.cov-note-rose{ border-left-color:var(--cov-wrong); background:#f8efec }

.cov-tail{ max-width:88ch; margin-top:13px; color:var(--ink-3); font-size:12.75px }

/* Sections */
.cov-section{ padding:clamp(28px,4vw,44px) 0; border-top:1px solid var(--rule) }
.cov-sec-head{ margin-bottom:16px }
.cov-sec-head h2{ margin-top:7px; font-size:clamp(1.35rem,2.4vw,1.85rem) }
.cov-sub{ max-width:86ch; margin-top:9px; color:var(--ink-2); font-size:13.5px; line-height:1.62 }
.cov-meta-line{ margin-top:12px }
.cov-second{ background:var(--paper-2) }

/* Controls */
.cov-controls{ display:flex; align-items:center; flex-wrap:wrap; gap:10px 14px; margin-bottom:11px }
.cov-filter input{ min-width:min(260px,100%); padding:8px 12px; border:1px solid var(--control-rule);
  border-radius:7px; background:#fff; color:var(--ink); font-family:var(--sans); font-size:13.5px }
.cov-filter input:focus{ outline:2px solid var(--leaf-ink); outline-offset:1px }
.cov-count{ color:var(--ink-3); font-family:var(--mono); font-size:11.5px }

/* Tables */
.cov-scroll{ overflow-x:auto; border:1px solid var(--rule); border-radius:9px; background:#fff }
.cov-table{ width:100%; border-collapse:collapse; font-size:13.25px }
.cov-table th{ position:relative; padding:10px 12px; border-bottom:1px solid var(--rule-2);
  color:var(--ink-3); font-family:var(--mono); font-size:10.5px; font-weight:650;
  letter-spacing:.07em; text-align:left; text-transform:uppercase; white-space:nowrap }
.cov-table th[data-cov-sort]{ cursor:pointer; user-select:none }
.cov-table th[data-cov-sort]:hover{ color:var(--ink) }
.cov-table th[aria-sort="ascending"]::after{ content:" ↑"; color:var(--leaf-ink) }
.cov-table th[aria-sort="descending"]::after{ content:" ↓"; color:var(--leaf-ink) }
.cov-table td{ padding:9px 12px; border-top:1px solid var(--rule); color:var(--ink-2);
  vertical-align:middle; line-height:1.5 }
.cov-table tbody tr:hover td{ background:var(--paper) }
.cov-table th.n,.cov-table td.n{ text-align:right; font-variant-numeric:tabular-nums;
  white-space:nowrap }
.cov-table td.n{ font-family:var(--mono); font-size:12.5px; color:var(--ink) }
.cov-table td.cov-rate{ color:var(--ink-2) }
.cov-table td.cov-bad{ color:var(--cov-wrong); font-weight:700 }
.cov-name{ font-family:var(--mono); font-size:12.5px; color:var(--ink)!important;
  overflow-wrap:anywhere }
/* Durum adları tek parça okunur: `hit_mismatch` alt çizgiden bölününce
   iki ayrı sözcük gibi görünüyordu. Tablo zaten yatay kayabiliyor. */
#tbl-status .cov-name,#tbl-oracle .cov-name{ white-space:nowrap; overflow-wrap:normal }
.cov-reason{ min-width:26ch }
.cov-blamed{ font-family:var(--mono); font-size:11.5px }
.cov-blamed code{ display:inline-block; margin:1px 4px 1px 0; padding:1px 5px;
  border:1px solid var(--rule); border-radius:4px; background:var(--paper-2); color:var(--ink-2) }
.cov-splitcell{ width:130px }
.cov-minibar{ display:flex; height:7px; min-width:110px; border-radius:999px; overflow:hidden;
  background:var(--cov-oos) }
.cov-minibar i{ display:block; height:100% }
.cov-pill{ display:inline-block; padding:2px 8px; border:1px solid var(--rule-2);
  border-radius:999px; color:var(--ink-3); font-family:var(--mono); font-size:10.5px;
  white-space:nowrap }
.cov-pill.is-pass{ border-color:rgba(92,127,50,.45); color:var(--leaf-ink) }
.cov-pill.is-wrong{ border-color:rgba(168,68,42,.45); color:var(--cov-wrong) }
.cov-pill.is-not_yet{ border-color:var(--rule-2); color:var(--ink-2) }
.cov-pill.is-oos{ border-color:var(--rule); color:var(--ink-3) }
.cov-pill.is-stage{ color:var(--ink-2) }
.cov-table tr[hidden]{ display:none }

/* Funnel */
.cov-funnel{ list-style:none; border:1px solid var(--rule); border-radius:9px; background:#fff }
.cov-funnel li{ display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:6px 14px;
  align-items:center; padding:13px 15px }
.cov-funnel li + li{ border-top:1px solid var(--rule) }
.cov-funnel-label{ grid-column:1 / -1; color:var(--ink); font-size:13.5px; line-height:1.45 }
.cov-funnel-track{ grid-column:1; height:9px; border-radius:999px; background:var(--paper-2);
  border:1px solid var(--rule) }
.cov-funnel-track i{ display:block; height:100%; border-radius:999px; background:var(--cov-pass) }
.cov-funnel-n{ font-family:var(--mono); font-size:13px; font-variant-numeric:tabular-nums;
  color:var(--ink); font-weight:650 }
.cov-funnel-pct{ min-width:5.5ch; color:var(--ink-3); font-family:var(--mono); font-size:12px;
  font-variant-numeric:tabular-nums; text-align:right }
@media (min-width:720px){
  .cov-funnel li{ grid-template-columns:minmax(0,32ch) minmax(0,1fr) auto auto }
  .cov-funnel-label{ grid-column:1 }
  .cov-funnel-track{ grid-column:2 }
}

/* Folders with no measurement */
.cov-rest-head{ margin:18px 0 9px; color:var(--ink-2); font-size:13px }
.cov-rest-head b{ color:var(--ink-3); font-family:var(--mono); font-size:11.5px; font-weight:650 }
.cov-rest{ display:grid; grid-template-columns:repeat(auto-fill,minmax(132px,1fr)); gap:6px;
  list-style:none }
.cov-rest li{ padding:7px 10px; border:1px solid var(--rule); border-radius:6px; background:#fff;
  color:var(--ink-2); font-family:var(--mono); font-size:12px; overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap }

/* Index cards */
.cov-cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(258px,1fr)); gap:12px;
  margin-top:clamp(22px,3vw,30px); list-style:none }
.cov-card{ display:block; height:100%; padding:16px 18px 18px; border:1px solid var(--rule-2);
  border-top:3px solid var(--leaf); border-radius:9px; background:#fff; color:var(--ink);
  text-decoration:none; transition:border-color .14s ease, background-color .14s ease }
.cov-card.is-curated{ border-top-color:var(--amber) }
.cov-card:hover{ border-color:var(--leaf); background:var(--paper) }
.cov-card-kind{ display:block; color:var(--ink-3); font-family:var(--mono); font-size:10.5px;
  font-weight:650; letter-spacing:.06em; text-transform:uppercase }
.cov-card h2{ margin-top:6px; font-size:1.5rem; letter-spacing:-.03em }
.cov-card-pct{ display:block; margin-top:10px; color:var(--leaf-ink); font-family:var(--mono);
  font-size:2.35rem; font-weight:750; font-variant-numeric:tabular-nums; letter-spacing:-.04em;
  line-height:1 }
.cov-card-meta{ display:block; margin:8px 0 12px; color:var(--ink-2); font-size:12.5px;
  line-height:1.45 }
.cov-card-meta b{ color:var(--ink); font-family:var(--mono); font-variant-numeric:tabular-nums }
.cov-bad{ color:var(--cov-wrong) }

@media (max-width:520px){
  .cov-tiles{ grid-template-columns:repeat(2,minmax(0,1fr)) }
  .cov-splitcell{ display:none }
  .cov-table thead th:last-child{ display:none }
}
