/* RuntimeClear report tool — screen + print. Builds on ../assets/site.css tokens. */

.report-page body, body.report-page { font-size: 1rem; }
.print-only { display: none; }

.report-top {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end;
  gap: 0.75rem 2rem; padding-block: 2rem 1.25rem;
}
.report-title { display: grid; gap: 0.35rem; }
.report-title h1 { font-size: var(--step-4); }
.privacy-line { font-size: 1rem; color: var(--carbon); }
.privacy-line strong { font-weight: 700; }
.rules-meta { color: var(--graphite); margin: 0; }
.rules-meta.is-error { color: var(--crit); }

/* ---------- Access bar ---------- */
.access {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem 1.5rem;
  padding: 0.75rem 0.9rem; border: 1px solid var(--rule-strong); border-radius: var(--radius);
  background: var(--sheet);
}
.access-text { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.75rem; font-size: 0.95rem; min-width: 0; }
.access-badge {
  font-family: var(--font-mono); font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.05em;
  padding: 0.12rem 0.5rem; border: 1px solid var(--carbon); border-radius: 2px; white-space: nowrap;
}
.access-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.access[data-state="unlocked"] { border-color: var(--ok); }
.access[data-state="unlocked"] .access-badge { color: var(--ok); background: var(--ok-bg); border-color: var(--ok); }
.access[data-state="verifying"] .access-badge { color: var(--register); border-color: var(--register); }
.access[data-state="verifying"] .access-badge::after { content: ""; display: inline-block; width: 0.5em; margin-left: 0.3em; animation: rc-dots 1.2s steps(4) infinite; overflow: hidden; vertical-align: bottom; }
.access[data-state="failed"] { border-color: var(--crit); background: var(--crit-bg); }
.access[data-state="failed"] .access-badge { color: var(--crit); border-color: var(--crit); }
.access[data-state="preview"] { border-style: dashed; }
@keyframes rc-dots { 0% { content: ""; } 25% { content: "."; } 50% { content: ".."; } 75% { content: "..."; } }

/* ---------- Intake ---------- */
.intake { padding-block: 1rem 0.5rem; display: grid; gap: 0.75rem; }
.dropzone {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem;
  padding: 1.25rem 1.25rem; border: 1.5px dashed var(--rule-strong); border-radius: var(--radius);
  background: var(--sheet);
  transition: border-color 120ms ease, background-color 120ms ease;
}
.dropzone.is-over { border-color: var(--register); border-style: solid; background: color-mix(in srgb, var(--register) 8%, var(--sheet)); }
.dropzone-copy { display: grid; gap: 0.25rem; max-width: 56ch; }
.dropzone-title { font-family: var(--font-display); font-stretch: 88%; font-weight: 700; font-size: 1.25rem; }
.dropzone-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }
label.btn { user-select: none; }
#file-input:focus-visible + .dropzone-copy { outline: none; }
.dropzone:focus-within:has(#file-input:focus-visible) #choose-label { outline: 2px solid var(--focus); outline-offset: 2px; }

.intake-status { display: grid; gap: 0.4rem; }
.intake-status:empty { display: none; }
.notice { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.6rem; align-items: baseline; padding: 0.55rem 0.8rem; border-radius: 2px; font-size: 0.92rem; border: 1px solid var(--rule-strong); background: var(--sheet); }
.notice--error { border-color: var(--crit); background: var(--crit-bg); }
.notice--error .notice-tag { color: var(--crit); }
.notice--info .notice-tag { color: var(--register); }
.notice-tag { font-family: var(--font-mono); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; }
.notice code { white-space: normal; }

.file-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.4rem; }
.file-list:empty { display: none; }
.file-chip {
  display: inline-flex; align-items: center; gap: 0.5rem; max-width: 100%;
  padding: 0.2rem 0.3rem 0.2rem 0.6rem; border: 1px solid var(--rule-strong); border-radius: 2px; background: var(--sheet);
  font-family: var(--font-mono); font-size: 0.78rem;
}
.file-chip .fc-host { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.file-chip .fc-name { color: var(--graphite); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 22ch; }
.file-chip button {
  border: 0; background: transparent; color: var(--graphite); cursor: pointer; font: inherit; line-height: 1;
  min-width: 1.6rem; min-height: 1.6rem; border-radius: 2px;
}
.file-chip button:hover { background: var(--ledger); color: var(--crit); }

.sample-banner {
  display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1rem; margin-top: 0.5rem;
  padding: 0.65rem 0.9rem; border: 1.5px solid var(--carbon); border-radius: var(--radius);
  background: repeating-linear-gradient(-45deg, transparent 0 10px, color-mix(in srgb, var(--mark) 35%, transparent) 10px 20px), var(--sheet);
}
.sample-banner p { flex: 1 1 22rem; font-size: 0.95rem; }
.excerpt-stamp {
  font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.12em; font-weight: 500;
  color: var(--crit); border: 1.5px solid currentColor; padding: 0.04rem 0.45rem; transform: rotate(-2deg); display: inline-block;
}

/* ---------- Report sections ---------- */
.report-sections { display: flex; flex-direction: column; gap: 0; padding-top: 1rem; }
.rsec { padding-block: 2rem; border-top: 1px solid var(--rule); min-width: 0; }
.rsec:first-child { border-top: 0; }
.rsec-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 0.5rem 1.5rem; margin-bottom: 1.1rem; }
.rsec-head h2 { font-size: var(--step-3); }
.rsec-head p { max-width: 60ch; }

/* Summary ledger */
.summary { display: grid; grid-template-columns: minmax(12rem, 0.6fr) minmax(0, 2fr); border: 1px solid var(--rule-strong); border-radius: var(--radius); background: var(--sheet); overflow: hidden; }
.summary-inventory { margin: 0; display: grid; align-content: stretch; border-right: 1.5px solid var(--carbon); }
.summary-inventory > div { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: 0.85rem 1rem; border-bottom: 1px solid var(--rule); }
.summary-inventory > div:last-child { border-bottom: 0; }
.summary-inventory dd { margin: 0; font-family: var(--font-mono); font-size: 1.5rem; font-weight: 500; }
.summary-status { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.stat { display: grid; grid-template-rows: auto auto 1fr; gap: 0.5rem; padding: 0.9rem 1rem 1rem; border-left: 1px solid var(--rule); align-content: start; }
.stat:first-child { border-left: 0; }
.stat .pill { justify-self: start; }
.stat-num { font-family: var(--font-display); font-stretch: 75%; font-weight: 750; font-size: 2.9rem; line-height: 1; }
.stat--paid_license .stat-num { color: var(--crit); }
.stat--at_risk .stat-num { color: var(--warn); }
.stat--needs_review .stat-num { color: var(--review); }
.stat--free .stat-num { color: var(--ok); }
.stat.is-zero .stat-num { color: var(--graphite); opacity: 0.7; }
.stat-desc { font-size: 0.82rem; color: var(--graphite); line-height: 1.45; }
@media (max-width: 62rem) {
  .summary { grid-template-columns: minmax(0, 1fr); }
  .summary-inventory { grid-template-columns: repeat(3, minmax(0, 1fr)); border-right: 0; border-bottom: 1.5px solid var(--carbon); }
  .summary-inventory > div { display: grid; gap: 0.1rem; border-bottom: 0; border-left: 1px solid var(--rule); }
  .summary-inventory > div:first-child { border-left: 0; }
  .summary-status { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stat:nth-child(odd) { border-left: 0; }
  .stat:nth-child(n+3) { border-top: 1px solid var(--rule); }
}
@media (max-width: 26rem) {
  .summary-inventory dd { font-size: 1.2rem; }
  .stat { padding: 0.75rem; }
  .stat-num { font-size: 2.3rem; }
}

.warnings { margin-top: 0.9rem; font-size: 0.9rem; }
.warnings summary { cursor: pointer; color: var(--graphite); }
.warnings ul { margin: 0.5rem 0 0; padding-left: 1.2rem; display: grid; gap: 0.2rem; font-family: var(--font-mono); font-size: 0.8rem; }

/* CTA */
.cta {
  display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 1.25rem 2rem; align-items: center;
  padding: 1.4rem 1.5rem; border: 1.5px solid var(--register); border-radius: var(--radius); background: var(--sheet);
}
.cta-copy { display: grid; gap: 0.8rem; }
.cta h2 { font-size: var(--step-2); font-stretch: 85%; }
.cta-actions { display: grid; gap: 0.6rem; }
@media (max-width: 48rem) { .cta { grid-template-columns: minmax(0, 1fr); } }

/* Settings + cost */
.settings { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)) minmax(0, 1.3fr); gap: 1rem 1.5rem; align-items: start; }
@media (max-width: 62rem) { .settings { grid-template-columns: minmax(0, 1fr); } }
.field { display: grid; gap: 0.35rem; }
.field input {
  width: 100%; min-height: 2.75rem; padding: 0.5rem 0.7rem;
  border: 1.5px solid var(--rule-strong); border-radius: var(--radius); background: var(--sheet); color: var(--carbon);
  font: 500 1rem/1.3 var(--font-body); font-variant-numeric: tabular-nums;
}
.field input:hover { border-color: var(--graphite); }
.field input:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; border-color: var(--register); }
.field .label { color: var(--carbon); }
.cost { display: grid; gap: 0.6rem; padding: 0.9rem 1rem; border: 1px solid var(--rule-strong); border-radius: var(--radius); background: var(--sheet); min-height: 5.5rem; }
.cost-figures { display: grid; grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); gap: 0.6rem 1rem; margin: 0; }
.cost-figures div { display: grid; gap: 0.1rem; }
.cost-figures dd { margin: 0; font-family: var(--font-mono); font-size: 1.15rem; font-weight: 500; }
.cost-figures .cost-annual dd { font-size: 1.55rem; color: var(--crit); }
.cost-note { font-size: 0.82rem; color: var(--graphite); }

/* Tables */
.data-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; background: var(--sheet); }
.data-table th, .data-table td { text-align: left; vertical-align: top; padding: 0.6rem 0.75rem; border-bottom: 1px solid var(--rule); }
.data-table thead th { font-family: var(--font-display); font-stretch: 118%; font-weight: 600; font-size: 0.68rem; letter-spacing: 0.09em; text-transform: uppercase; color: var(--graphite); border-bottom: 1.5px solid var(--carbon); white-space: nowrap; }
.data-table tbody tr:last-child > * { border-bottom: 0; }
.data-table .num { text-align: right; font-family: var(--font-mono); }
.data-table .mono, .data-table code { font-family: var(--font-mono); font-size: 0.82rem; }
.hosts-table { min-width: 40rem; }
.hosts-table td:first-child { font-family: var(--font-mono); font-weight: 500; }

.findings-table { min-width: 58rem; }
.findings-table col.c-status { width: 9rem; }
.findings-table td.c-status { white-space: nowrap; }
.findings-table .host { font-family: var(--font-mono); font-size: 0.82rem; white-space: nowrap; }
.findings-table .subject { font-family: var(--font-mono); font-size: 0.8rem; overflow-wrap: anywhere; word-break: break-word; min-width: 14rem; }
.findings-table .type { display: block; margin-top: 0.2rem; font-family: var(--font-display); font-stretch: 118%; font-size: 0.62rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--graphite); }
.findings-table .product { font-weight: 600; }
.findings-table .license { display: block; font-family: var(--font-mono); font-size: 0.78rem; color: var(--graphite); }
.findings-table .reason { max-width: 46ch; }
.findings-table .action { margin-top: 0.35rem; max-width: 46ch; }
.findings-table .action::before { content: "Action: "; font-weight: 600; }
.findings-table .cites { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.2rem; font-size: 0.8rem; }
.findings-table tr.is-hidden { display: none; }
.findings-table tr.row--paid_license > td:first-child { box-shadow: inset 3px 0 0 var(--crit); }
.findings-table tr.row--at_risk > td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.findings-table tr.row--needs_review > td:first-child { box-shadow: inset 3px 0 0 var(--review); }

/* Redaction for locked details */
.redacted { display: grid; gap: 0.35rem; }
.redacted .bar { display: block; height: 0.72rem; background: var(--carbon); opacity: 0.82; border-radius: 1px; }
.redacted .bar:nth-child(1) { width: 62%; }
.redacted .bar:nth-child(2) { width: 88%; }
.redacted .bar:nth-child(3) { width: 45%; }
.redacted .lock-note { font-family: var(--font-mono); font-size: 0.72rem; color: var(--graphite); text-transform: uppercase; letter-spacing: 0.04em; }

.filters { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.chip {
  display: inline-flex; align-items: center; gap: 0.4rem; min-height: 2.1rem; padding: 0.2rem 0.65rem;
  border: 1px solid var(--rule-strong); border-radius: 2px; background: var(--sheet); color: var(--carbon);
  font: 500 0.85rem/1 var(--font-body); cursor: pointer;
}
.chip:hover { border-color: var(--carbon); }
.chip[aria-pressed="true"] { background: var(--carbon); color: var(--ledger); border-color: var(--carbon); }
.chip-n { font-family: var(--font-mono); font-size: 0.78rem; opacity: 0.8; }
.empty { padding: 1rem 0; }

@media (max-width: 46rem) {
  .findings-scroll { overflow: visible; border: 0; background: transparent; }
  .findings-table { min-width: 0; background: transparent; }
  .findings-table thead { display: none; }
  .findings-table, .findings-table tbody, .findings-table tr, .findings-table td { display: block; width: 100%; }
  .findings-table tr { background: var(--sheet); border: 1px solid var(--rule-strong); border-radius: var(--radius); margin-bottom: 0.6rem; padding: 0.35rem 0; }
  .findings-table tr.is-hidden { display: none; }
  .findings-table td { border-bottom: 0; padding: 0.3rem 0.8rem; }
  .findings-table td[data-label]::before { content: attr(data-label); display: block; font-family: var(--font-display); font-stretch: 118%; font-weight: 600; font-size: 0.62rem; letter-spacing: 0.09em; text-transform: uppercase; color: var(--graphite); margin-bottom: 0.1rem; }
  .findings-table td.c-status::before { display: none; }
  .findings-table .host { white-space: normal; }
  .findings-table .subject { min-width: 0; }
  .findings-table tr > td:first-child { box-shadow: none !important; }
  .findings-table tr.row--paid_license { border-left: 3px solid var(--crit); }
  .findings-table tr.row--at_risk { border-left: 3px solid var(--warn); }
  .findings-table tr.row--needs_review { border-left: 3px solid var(--review); }
}

/* Runbook */
.runbook-platform { border-top: 1.5px solid var(--carbon); padding-block: 1rem 1.5rem; }
.runbook-platform > header { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.3rem 1rem; align-items: baseline; margin-bottom: 0.75rem; }
.runbook-platform h3 { font-size: 1.35rem; }
.runbook-platform .applies { font-size: 0.85rem; color: var(--graphite); }
.runbook-target { display: grid; gap: 0.75rem; margin-top: 0.5rem; }
.runbook-target h4 { font-family: var(--font-display); font-stretch: 100%; font-weight: 650; font-size: 1rem; }
.runbook-steps { margin: 0; padding: 0; list-style: none; counter-reset: rstep; display: grid; gap: 0.9rem; }
.runbook-step { counter-increment: rstep; display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: 0 0.6rem; }
.runbook-step::before { content: counter(rstep); font-family: var(--font-mono); color: var(--register); font-size: 0.9rem; padding-top: 0.1rem; }
.runbook-step-body { display: grid; gap: 0.45rem; min-width: 0; }
.runbook-step-title { font-weight: 600; }
.runbook-step .note { font-size: 0.88rem; color: var(--graphite); }
.runbook-empty { color: var(--graphite); }

.disclaimer { display: grid; gap: 0.6rem; color: var(--graphite); max-width: 80ch; }

.print-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1rem; padding-block: 1rem 0; }

/* ==========================================================================
   Print: clean audit-evidence document
   ========================================================================== */
@page { size: auto; margin: 16mm 14mm 18mm; }
@page {
  @bottom-left { content: "RuntimeClear · Oracle Java License Exposure Report · Not legal advice"; font-size: 8pt; color: #555; }
  @bottom-right { content: "Page " counter(page) " of " counter(pages); font-size: 8pt; color: #555; }
}
@media print {
  :root, :root[data-theme="dark"], :root:not([data-theme="light"]) {
    --ledger: #FFFFFF; --sheet: #FFFFFF; --carbon: #111111; --graphite: #444444;
    --rule: #CCCCCC; --rule-strong: #888888; --register: #1A2680;
    --crit: #9E1F17; --crit-bg: #FFFFFF; --warn: #7A4A00; --warn-bg: #FFFFFF;
    --review: #2F4652; --review-bg: #FFFFFF; --ok: #22603A; --ok-bg: #FFFFFF;
    --terminal: #F3F3F3; --terminal-ink: #111111; --terminal-dim: #555555;
    color-scheme: light;
  }
  html, body { background: #fff !important; color: #111; font-size: 9.5pt; }
  .no-print, .site-header, .site-footer, .skip-link, .copy-btn, .filters, .cta, .rsec--cta, .field, .print-bar, #sample-banner, .intake, .access { display: none !important; }
  .print-only { display: block !important; }
  .wrap { max-width: none; padding-inline: 1.5pt; }
  a { color: #111; text-decoration: underline; }
  .print-head { border-bottom: 2px solid #111; padding-bottom: 8pt; margin-bottom: 10pt; }
  .print-brand { font-family: var(--font-mono); font-size: 8pt; letter-spacing: 0.1em; text-transform: uppercase; color: #444; }
  .print-head h1 { font-size: 20pt; margin: 2pt 0 8pt; }
  .print-meta { display: grid; grid-template-columns: repeat(4, auto); gap: 4pt 16pt; margin: 0; }
  .print-meta dt { font-family: var(--font-display); font-stretch: 118%; font-size: 6.5pt; text-transform: uppercase; letter-spacing: 0.09em; color: #444; }
  .print-meta dd { margin: 0; font-size: 9pt; font-weight: 600; }
  .report-sections { display: flex !important; flex-direction: column; padding-top: 0; }
  .report-sections[hidden] { display: flex !important; }
  .rsec--summary { order: 1; }
  .rsec--cost { order: 2; }
  .rsec--hosts { order: 3; }
  .rsec--findings { order: 4; }
  .rsec--runbook { order: 5; }
  .rsec--disclaimer { order: 6; }
  .rsec { padding-block: 10pt; border-top: 1px solid #888; }
  .rsec-head { margin-bottom: 6pt; }
  .rsec-head h2 { font-size: 13pt; }
  .summary { grid-template-columns: 1fr 3fr; border-color: #888; }
  .summary-inventory { grid-template-columns: none; border-right: 1.5px solid #111; border-bottom: 0; }
  .summary-inventory > div { display: flex; border-left: 0; border-bottom: 1px solid #ccc; padding: 5pt 8pt; }
  .summary-inventory dd { font-size: 12pt; }
  .summary-status { grid-template-columns: repeat(4, 1fr); }
  .stat { border-left: 1px solid #ccc !important; border-top: 0 !important; padding: 6pt 8pt; }
  .stat:first-child { border-left: 0 !important; }
  .stat-num { font-size: 22pt; }
  .stat-desc { font-size: 7.5pt; }
  .stat.is-zero .stat-num { opacity: 1; }
  .warnings { display: block; }
  .warnings[hidden] { display: none; }
  .settings { display: block; }
  .cost { border-color: #888; }
  .cost-empty { display: none; }
  .rsec--cost.is-empty { display: none !important; }
  .table-scroll { overflow: visible !important; border: 0; }
  .data-table { min-width: 0 !important; font-size: 8pt; }
  .data-table th, .data-table td { padding: 3pt 4pt; }
  .data-table thead { display: table-header-group; }
  .data-table tr { break-inside: avoid; page-break-inside: avoid; }
  .findings-table { display: table !important; }
  .findings-table thead { display: table-header-group !important; }
  .findings-table tbody { display: table-row-group !important; }
  .findings-table tr { display: table-row !important; border: 0 !important; margin: 0; }
  .findings-table tr.is-hidden { display: table-row !important; }
  .findings-table td { display: table-cell !important; width: auto !important; border-bottom: 1px solid #ccc !important; }
  .findings-table td::before { display: none !important; }
  .findings-table .subject { min-width: 0; font-size: 7.5pt; }
  .findings-table .reason, .findings-table .action { max-width: none; }
  .findings-table tr > td:first-child { box-shadow: none !important; }
  .pill { font-size: 6.5pt; padding: 0 3pt; }
  .runbook-platform { break-inside: auto; border-top: 1.5px solid #111; padding-block: 6pt; }
  .runbook-platform > header { break-after: avoid; }
  .runbook-step { break-inside: avoid; }
  .cmd { border: 1px solid #bbb; }
  .cmd-head { display: none; }
  .cmd pre { white-space: pre-wrap; word-break: break-all; font-size: 7.5pt; padding: 4pt 6pt; }
  .disclaimer { color: #333; max-width: none; font-size: 7.5pt; }
  h2, h3, h4 { break-after: avoid; }
}
