/* ============================================================
   /webscan — additions layered on the shared SecureDomainScore
   design system (/assets/css/style.css). Only the few pieces the
   shared stylesheet doesn't already cover live here.
   ============================================================ */

/* deep-check option under the scan form */
.deep-opt{
  display:flex; gap:9px; align-items:center; margin-top:14px;
  color:var(--muted); font-size:.85rem; cursor:pointer; user-select:none;
}
.deep-opt input{ accent-color:var(--cyan); width:16px; height:16px; flex:none; }

/* overview verdict badge row */
.ov-badges{ display:flex; gap:8px; flex-wrap:wrap; }

/* compact key/value line used under some panels */
.kvline{ font-size:.82rem; color:var(--muted); margin-top:14px;
  font-family:var(--font-mono); line-height:1.9; word-break:break-word; }
.kvline b{ color:var(--text); font-weight:600; }
.kvline .sep{ color:var(--steel); margin:0 8px; }

/* a plain two-column list inside a panel (TLS details, etc.) */
.kv-list{ list-style:none; margin-top:14px; }
.kv-list li{ display:flex; justify-content:space-between; gap:16px;
  padding:8px 0; border-bottom:1px solid rgba(29,44,72,.5); font-size:.86rem; }
.kv-list li:last-child{ border-bottom:0; }
.kv-list .k{ color:var(--muted); }
.kv-list .v{ color:var(--text); text-align:right; word-break:break-word; }
.kv-list .v.mono{ font-family:var(--font-mono); font-size:.82rem; }

/* redirect chain */
.chain{ list-style:none; }
.chain li{ display:flex; gap:12px; align-items:center; padding:9px 0;
  border-bottom:1px solid rgba(29,44,72,.5); font-size:.82rem; }
.chain li:last-child{ border-bottom:0; }
.chain code{ font-family:var(--font-mono); color:var(--muted); word-break:break-all; }

/* raw response headers table (inside a <details>) */
.raw-wrap{ overflow-x:auto; margin-top:12px; }
table.raw-table{ width:100%; border-collapse:collapse;
  font-family:var(--font-mono); font-size:.76rem; }
table.raw-table td{ padding:6px 10px; border-bottom:1px solid rgba(29,44,72,.5);
  vertical-align:top; word-break:break-all; }
table.raw-table tr:last-child td{ border-bottom:0; }
table.raw-table td.n{ color:var(--cyan); white-space:nowrap; width:1%; padding-right:18px; }

/* error box reusing panel styling */
.errbox{ color:var(--danger); font-family:var(--font-display); font-weight:600; }
.errbox .detail{ display:block; margin-top:8px; color:var(--muted);
  font-family:var(--font-mono); font-size:.8rem; font-weight:400; }

/* scanning state: let the form wrap cleanly on small screens */
.scan-form{ flex-wrap:wrap; }

/* technology stack — grouped by category */
.tech-groups{ margin-top:18px; display:flex; flex-direction:column; gap:12px; }
.tech-group{ display:grid; grid-template-columns:170px 1fr; gap:14px; align-items:start;
  padding-top:12px; border-top:1px solid rgba(29,44,72,.5); }
.tech-group:first-child{ border-top:0; padding-top:0; }
.tech-cat{ font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); padding-top:6px; }
.pill.tech{ color:var(--text); background:rgba(14,25,48,.5); }
.pill.tech b{ color:var(--cyan); font-weight:500; }
@media (max-width:600px){ .tech-group{ grid-template-columns:1fr; gap:6px; } .tech-cat{ padding-top:0; } }

/* crawl-file cards: let long lines wrap */
.mini-card p + p{ margin-top:4px; }
.mini-card p b{ color:var(--text); }
@media print{ .pill.tech{ background:#fff !important; color:#111 !important; } .pill.tech b{ color:#0a6c7a !important; } }

/* breathing room between the verdict and the first panel */
#results > .verdict{ margin:0 0 20px; }

/* ============ known vulnerabilities (CVE) ============ */
.cve-loading{ display:flex; align-items:center; gap:10px; color:var(--muted); font-size:.88rem; margin-bottom:12px; }
.spin{ width:14px; height:14px; border-radius:50%; border:2px solid var(--steel); border-top-color:var(--cyan); animation:wsspin .8s linear infinite; flex:none; }
@keyframes wsspin{ to{ transform:rotate(360deg); } }
.cve-comp{ background:var(--panel-2); border:1px solid var(--steel); border-radius:12px; padding:16px 18px; margin-bottom:12px; }
.cve-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.cve-head h4{ font-family:var(--font-display); font-size:.98rem; font-weight:600; margin-right:4px; }
.cve-head h4 .mono{ color:var(--cyan); font-size:.85em; }
.cve-src{ margin-left:auto; font-size:.68rem; color:#4E6288; word-break:break-all; }
.cve-wrap{ overflow-x:auto; margin-top:12px; }
table.cve-table{ width:100%; border-collapse:collapse; font-size:.8rem; }
table.cve-table th{ text-align:left; font-family:var(--font-mono); font-size:.66rem; letter-spacing:.08em; text-transform:uppercase;
  color:#4E6288; font-weight:500; padding:0 10px 8px 0; border-bottom:1px solid var(--steel); }
table.cve-table td{ padding:9px 10px 9px 0; border-bottom:1px solid rgba(29,44,72,.5); vertical-align:top; }
table.cve-table tr:last-child td{ border-bottom:0; }
table.cve-table td.id{ white-space:nowrap; }
table.cve-table td.id a{ color:var(--cyan); }
table.cve-table td.sv, table.cve-table td.ep{ white-space:nowrap; }
table.cve-table td.ds{ color:var(--muted); min-width:260px; }
table.cve-table tr.kev td.id a{ color:var(--danger); }
.kev-badge{ display:inline-block; margin-left:6px; font-family:var(--font-mono); font-size:.6rem; letter-spacing:.08em;
  color:var(--danger); border:1px solid rgba(240,101,90,.55); background:rgba(240,101,90,.08); border-radius:5px; padding:1px 5px; vertical-align:1px; }
.kev-badge.rw{ color:var(--gold); border-color:rgba(232,180,74,.5); background:rgba(232,180,74,.08); }
.cvss{ font-family:var(--font-mono); font-size:.62rem; letter-spacing:.08em; border-radius:5px; padding:1px 6px; border:1px solid var(--steel); color:var(--muted); }
.cvss.critical{ color:#fff; background:rgba(240,101,90,.85); border-color:transparent; }
.cvss.high{ color:var(--danger); border-color:rgba(240,101,90,.55); }
.cvss.medium{ color:var(--gold); border-color:rgba(232,180,74,.5); }
.cvss.low{ color:var(--ok); border-color:rgba(62,213,152,.45); }
.cwe-inline{ display:block; margin-top:4px; font-size:.72rem; }
.cwe-inline a{ color:var(--azure); margin-right:8px; }
details.cve-more{ background:transparent; border:0; padding:0; margin:8px 0 0; }
details.cve-more summary{ font-size:.82rem; color:var(--cyan); font-family:var(--font-display); }
details.cve-more[open]{ border:0; }

/* ============ MITRE tags on findings + mapping panel ============ */
.mitre-tags{ display:flex; flex-wrap:wrap; gap:6px; margin-top:10px !important; }
.mtag{ font-family:var(--font-mono); font-size:.66rem; letter-spacing:.04em; border-radius:6px; padding:2px 8px; border:1px solid var(--steel); }
.mtag.att{ color:var(--danger); border-color:rgba(240,101,90,.4); background:rgba(240,101,90,.05); }
.mtag.cwe{ color:var(--azure); border-color:rgba(76,141,255,.4); background:rgba(76,141,255,.06); }
.mtag:hover{ border-color:var(--text); }
.mitre-h{ font-family:var(--font-display); font-size:.92rem; font-weight:600; margin:20px 0 12px; }
.attack-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.tactic{ background:var(--panel-2); border:1px solid var(--steel); border-radius:12px; padding:14px 16px; }
.tactic-h{ font-family:var(--font-display); font-weight:600; font-size:.88rem; margin-bottom:10px; }
.tactic-h .mono{ font-size:.7rem; color:#4E6288; margin-right:6px; }
.tech-row{ border-top:1px solid rgba(29,44,72,.6); padding:10px 0 4px; position:relative; }
.tech-row a{ color:var(--text); font-size:.86rem; display:block; padding-right:30px; }
.tech-row a .mono{ color:var(--danger); font-size:.78rem; margin-right:4px; }
.tech-row a:hover{ color:var(--cyan); }
.tech-row .cnt{ position:absolute; right:0; top:10px; font-size:.72rem; color:var(--muted); border:1px solid var(--steel); border-radius:999px; padding:0 8px; }
.tech-row ul{ list-style:none; margin-top:6px; }
.tech-row li{ font-size:.75rem; color:var(--muted); padding:2px 0 2px 12px; position:relative; }
.tech-row li::before{ content:"›"; position:absolute; left:0; color:#4E6288; }
.pill.cwe-pill{ color:var(--text); background:rgba(76,141,255,.05); border-color:rgba(76,141,255,.3); font-family:var(--font-body); }
.pill.cwe-pill .mono{ color:var(--azure); }
.pill.cwe-pill b{ color:var(--cyan); font-weight:500; }
@media (max-width:960px){ .attack-grid{ grid-template-columns:1fr; } }
@media print{
  .cve-comp, .tactic{ background:#fff !important; border-color:#ccc !important; }
  table.cve-table td.ds, .tech-row li{ color:#444 !important; }
  .mtag, .cvss, .kev-badge{ background:#fff !important; }
}

/* ============ report export (PDF via print) ============ */
.print-only{ display:none; }
@page{ margin:14mm 12mm; }
@media print{
  .print-only{ display:block; margin-top:6px; font-size:9px; color:#555 !important; }
  .deep-opt, .hero-copy .lede, .hero-copy .eyebrow{ display:none !important; }
  .hero-copy h1{ font-size:20px !important; color:#111 !important; }
  .hero-inner{ grid-template-columns:1fr 260px !important; gap:20px !important; }
  .gauge-card{ max-width:260px; }
  .dashboard{ padding-top:10px !important; }
  .dash-head{ margin-bottom:14px !important; }
  .dash-head .mono{ color:#0a6c7a !important; }
  .tactic, .tech-group, table.cve-table tr, .cve-head{ break-inside:avoid; }
  .cve-head{ break-after:avoid; }
  table.cve-table{ font-size:9.5px; }
  table.cve-table th{ color:#666 !important; border-color:#ccc !important; }
  table.cve-table td{ border-color:#e3e3e3 !important; }
  table.cve-table td.id a, .cwe-inline a, .tech-row a .mono{ color:#0a6c7a !important; }
  table.cve-table tr.kev td.id a{ color:#b3261e !important; }
  .kev-badge{ color:#b3261e !important; border-color:#b3261e !important; }
  .cvss.critical{ background:#b3261e !important; color:#fff !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .cvss.high{ color:#b3261e !important; border-color:#b3261e !important; }
  .cvss.medium{ color:#8a6a1e !important; border-color:#8a6a1e !important; }
  .mtag.att{ color:#b3261e !important; border-color:#d9a19c !important; }
  .mtag.cwe{ color:#1a4fa0 !important; border-color:#a9bfe3 !important; }
  .tech-row a, .tactic-h, .cve-head h4, .mitre-h, .tech-row .cnt{ color:#111 !important; }
  .kv-list .k, .kvline, .tech-cat, .cve-src{ color:#555 !important; }
  .kv-list .v, .kvline b{ color:#111 !important; }
  .kv-list li, .tech-group, .tech-row{ border-color:#e3e3e3 !important; }
  .verdict{ background:#fff !important; }
  .finding{ break-inside:avoid; background:#fff !important; }
  .finding h4{ color:#111 !important; }
  details.raw:not([open]){ display:none !important; }   /* collapsed raw headers are omitted */
  a[href]{ text-decoration:none; }
}

/* print layout: keep desktop columns on A4, compact summary card, bounded CVE lists */
.print-inline{ display:none; }
@media print{
  .no-print{ display:none !important; }
  .print-inline{ display:inline; }
  details.cve-more{ display:block !important; }
  details.cve-more summary{ color:#555 !important; font-size:9px; list-style:none; }
  details.cve-more summary::after{ content:none !important; }
  details.cve-more > :not(summary){ display:none !important; }
  .cards.three{ grid-template-columns:repeat(3,1fr) !important; }
  .cards.two{ grid-template-columns:repeat(2,1fr) !important; }
  .attack-grid{ grid-template-columns:repeat(3,1fr) !important; }
  .tech-group{ grid-template-columns:150px 1fr !important; }
  .hero{ padding:0 !important; }
  .hero-copy{ display:none !important; }
  .hero-inner{ display:block !important; }
  .gauge-card{ max-width:none !important; width:100%; display:grid !important;
    grid-template-columns:150px 1fr; column-gap:24px; align-items:center; padding:14px 18px !important; }
  .gauge-head{ grid-column:1 / -1; }
  .gauge-wrap{ width:140px !important; margin:0 !important; }
  .grade{ font-size:2.2rem !important; }
  .signal-list{ border-top:0 !important; margin-top:0 !important; column-count:2; column-gap:28px; }
  .signal-list li{ break-inside:avoid; }
  .panel{ padding:16px 18px 14px !important; margin-bottom:12px !important; }
  .mini-card{ padding:12px !important; }
  .mini-card.stat b{ font-size:1.05rem !important; }
  h2{ font-size:20px !important; }
}

/* ============ DNS records ============ */
table.dns-table{ width:100%; border-collapse:collapse; font-size:.8rem; margin-top:12px; }
table.dns-table th{ text-align:left; font-family:var(--font-mono); font-size:.66rem; letter-spacing:.08em; text-transform:uppercase;
  color:#4E6288; font-weight:500; padding:0 10px 8px 0; border-bottom:1px solid var(--steel); }
table.dns-table td{ padding:7px 10px 7px 0; border-bottom:1px solid rgba(29,44,72,.5); vertical-align:top; }
table.dns-table tr:last-child td{ border-bottom:0; }
table.dns-table td.ty{ white-space:nowrap; }
table.dns-table td.nm{ color:var(--muted); font-size:.76rem; white-space:nowrap; max-width:220px; overflow:hidden; text-overflow:ellipsis; }
table.dns-table td.vl{ color:var(--text); font-size:.78rem; word-break:break-all; }
table.dns-table td.rl{ white-space:nowrap; }
.rr{ display:inline-block; font-family:var(--font-mono); font-size:.68rem; font-weight:600; color:var(--cyan);
  border:1px solid rgba(45,212,232,.35); border-radius:5px; padding:1px 7px; }
.dns-table .pri{ color:#4E6288; font-size:.7rem; margin-left:4px; }
.rrole{ font-family:var(--font-mono); font-size:.66rem; letter-spacing:.06em; color:var(--azure);
  border:1px solid rgba(76,141,255,.35); background:rgba(76,141,255,.06); border-radius:5px; padding:1px 7px; }
@media print{
  table.dns-table{ font-size:9px; }
  table.dns-table td.vl, .rr, .rrole, .dns-table td.nm{ color:#111 !important; }
  table.dns-table th{ color:#666 !important; border-color:#ccc !important; }
  table.dns-table td{ border-color:#e3e3e3 !important; }
  .rr{ border-color:#aaa !important; color:#0a6c7a !important; }
  .rrole{ background:#fff !important; border-color:#a9bfe3 !important; color:#1a4fa0 !important; }
}

/* DNS table: record purpose column */
.dns-table .rl{ color:var(--muted); font-size:.82rem; min-width:170px; }
.dns-table .rmean{ color:var(--muted); }
.dns-table .rrole{ display:inline-block; font-family:var(--font-mono); font-size:.66rem; color:var(--cyan);
  border:1px solid rgba(45,212,232,.35); border-radius:5px; padding:1px 6px; margin-right:4px; }
@media print{ .dns-table .rrole{ color:#0a6c7a !important; } }
