/* BNTIC CyberAlert — style sobre, premium, institutionnel, mobile-first.
   Pas d'esthétique « hacker vert fluo » : bleu nuit maîtrisé, cartes propres,
   hiérarchie forte. La couleur n'est jamais le seul canal d'information. */
:root {
  --ca-bg: #f5f7fa;
  --ca-surface: #ffffff;
  --ca-ink: #1a2230;
  --ca-muted: #5b6675;
  --ca-line: #e2e8f0;
  --ca-primary: #143a63;
  --ca-primary-ink: #ffffff;
  --ca-accent: #1f6feb;
  --ca-crit: #b42318;
  --ca-high: #c4530f;
  --ca-med: #b7791f;
  --ca-low: #2f855a;
  --ca-kev: #7a1f12;
  --ca-radius: 12px;
  --ca-shadow: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);
  --ca-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
* { box-sizing: border-box; }
.ca-body {
  margin: 0; font-family: var(--ca-font); color: var(--ca-ink);
  background: var(--ca-bg); line-height: 1.55; font-size: 16px;
}
.ca-container { width: 100%; max-width: 960px; margin: 0 auto; padding: 0 16px; }
a { color: var(--ca-accent); text-decoration: none; }
a:hover { text-decoration: underline; }

/* Header */
.ca-header { background: var(--ca-primary); color: #fff; position: sticky; top: 0; z-index: 20; }
.ca-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 58px; flex-wrap: wrap; }
.ca-brand { display: inline-flex; align-items: center; gap: 8px; color: #fff; font-size: 1.05rem; }
.ca-brand__mark { color: #7fb2ff; }
.ca-nav { display: flex; gap: 16px; flex-wrap: wrap; }
.ca-nav a { color: #cddcf0; font-size: .92rem; }
.ca-nav a:hover { color: #fff; }

.ca-main { padding: 24px 16px 48px; }

/* Hero + recherche */
.ca-hero { text-align: center; padding: 24px 0 8px; }
.ca-hero__title { font-size: 2rem; margin: 0 0 6px; }
.ca-hero__tagline { color: var(--ca-muted); margin: 0 0 22px; font-size: 1.1rem; }
.ca-search { background: var(--ca-surface); border: 1px solid var(--ca-line); border-radius: var(--ca-radius); box-shadow: var(--ca-shadow); padding: 18px; text-align: left; }
.ca-search--compact { margin-bottom: 20px; }
.ca-search__row { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.ca-field { display: flex; flex-direction: column; gap: 4px; flex: 0 0 auto; }
.ca-field--grow { flex: 1 1 220px; }
.ca-label { font-size: .8rem; color: var(--ca-muted); font-weight: 600; }
.ca-input, .ca-select {
  width: 100%; padding: 10px 12px; border: 1px solid var(--ca-line);
  border-radius: 8px; font-size: 1rem; background: #fff; color: var(--ca-ink);
}
.ca-input:focus, .ca-select:focus { outline: 2px solid var(--ca-accent); border-color: var(--ca-accent); }
.ca-btn {
  display: inline-block; padding: 10px 18px; border-radius: 8px; border: 1px solid var(--ca-line);
  background: #fff; color: var(--ca-ink); font-weight: 600; cursor: pointer; font-size: .95rem;
}
.ca-btn--primary { background: var(--ca-primary); color: var(--ca-primary-ink); border-color: var(--ca-primary); margin-top: 14px; }
.ca-btn--primary:hover { background: #0f2e50; text-decoration: none; }

/* Raccourcis */
.ca-shortcuts { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 18px 0 4px; }
.ca-chip { background: #fff; border: 1px solid var(--ca-line); border-radius: 999px; padding: 6px 14px; font-size: .9rem; color: var(--ca-ink); }
.ca-chip:hover { border-color: var(--ca-accent); text-decoration: none; }

/* Sections / cartes */
.ca-section { margin-top: 34px; }
.ca-section__title { font-size: 1.2rem; margin: 0 0 14px; }
.ca-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.ca-card { background: var(--ca-surface); border: 1px solid var(--ca-line); border-radius: var(--ca-radius); padding: 14px; box-shadow: var(--ca-shadow); display: block; }
.ca-card:hover { border-color: var(--ca-accent); text-decoration: none; }
.ca-card__name { display: block; font-weight: 600; color: var(--ca-ink); }
.ca-card__meta { display: block; color: var(--ca-muted); font-size: .82rem; margin-top: 3px; }
.ca-note { background: #eef3f9; border: 1px solid #dce6f2; border-radius: var(--ca-radius); padding: 14px 16px; color: #33475b; }
.ca-page-title { font-size: 1.6rem; margin: 0 0 16px; }

/* Résultats */
.ca-results__head { margin-bottom: 14px; }
.ca-results__title { font-size: 1.35rem; margin: 0 0 4px; }
.ca-results__meta { color: var(--ca-muted); margin: 0; }
.ca-sources { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.ca-source-tag { font-size: .78rem; padding: 3px 9px; border-radius: 999px; border: 1px solid var(--ca-line); background: #fff; color: var(--ca-muted); }
.ca-source-tag--err { border-color: #f3c6c0; background: #fdecea; color: var(--ca-crit); }

.ca-vuln-list { display: flex; flex-direction: column; gap: 12px; }
.ca-vuln { background: var(--ca-surface); border: 1px solid var(--ca-line); border-left: 4px solid var(--ca-muted); border-radius: var(--ca-radius); padding: 16px; box-shadow: var(--ca-shadow); }
.ca-vuln--critical, .ca-vuln--urgent { border-left-color: var(--ca-crit); }
.ca-vuln--important { border-left-color: var(--ca-high); }
.ca-vuln--modéré, .ca-vuln--modere { border-left-color: var(--ca-med); }
.ca-vuln--faible { border-left-color: var(--ca-low); }
.ca-vuln__top { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; flex-wrap: wrap; }
.ca-vuln__id { font-size: 1.1rem; font-weight: 700; }
.ca-vuln__id a { color: var(--ca-ink); }
.ca-vuln__metrics { display: flex; gap: 14px; flex-wrap: wrap; margin: 10px 0; font-size: .9rem; }
.ca-vuln__metric b { display: block; font-size: 1.05rem; }
.ca-vuln__metric span { color: var(--ca-muted); font-size: .78rem; }
.ca-vuln__desc { color: #33414f; margin: 8px 0 0; }
.ca-vuln__sources { margin: 10px 0 0; font-size: .8rem; color: var(--ca-muted); border-top: 1px dashed var(--ca-line); padding-top: 8px; }
.ca-vuln__sources-lbl { font-weight: 600; }
.ca-vuln__sources a { color: var(--ca-accent); }

/* Badges & pills */
.ca-badges { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 8px; }
.ca-badge { font-size: .78rem; font-weight: 600; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--ca-line); background: #fff; }
.ca-badge--kev { background: #fdecea; color: var(--ca-kev); border-color: #f3c6c0; }
.ca-badge--fix { background: #e9f6ee; color: var(--ca-low); border-color: #c3e6d1; }
.ca-badge--version { background: #e8f4ff; color: #135b8f; border-color: #b9daf2; }
.ca-badge--sev-critical { background: #fdecea; color: var(--ca-crit); border-color: #f3c6c0; }
.ca-badge--sev-high { background: #fdf0e6; color: var(--ca-high); border-color: #f6d5b9; }
.ca-badge--sev-medium { background: #fdf6e3; color: var(--ca-med); border-color: #f0e2b8; }
.ca-badge--sev-low { background: #e9f6ee; color: var(--ca-low); border-color: #c3e6d1; }
.ca-version-note { margin: 10px 0 16px; padding: 10px 12px; border-left: 3px solid #2f7eb7; background: #edf7ff; color: #29475d; font-size: .88rem; }
.ca-pill { font-size: .8rem; padding: 2px 9px; border-radius: 999px; background: #eef2f7; border: 1px solid var(--ca-line); }
.ca-pill--urgent, .ca-pill--critique { background: #fdecea; color: var(--ca-crit); }
.ca-pill--important { background: #fdf0e6; color: var(--ca-high); }
.ca-pill--modéré { background: #fdf6e3; color: var(--ca-med); }
.ca-pill--faible { background: #e9f6ee; color: var(--ca-low); }
.ca-pill--ok { background: #e9f6ee; color: var(--ca-low); }
.ca-pill--error { background: #fdecea; color: var(--ca-crit); }
.ca-pill--unknown { background: #eef2f7; color: var(--ca-muted); }

/* Fiche CVE */
.ca-cve__id { font-size: 1.8rem; margin: 4px 0; }
.ca-cve__title { font-size: 1.1rem; color: #33414f; margin: 0 0 4px; }
.ca-scoreboard { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; margin: 18px 0; }
.ca-score { background: var(--ca-surface); border: 1px solid var(--ca-line); border-radius: var(--ca-radius); padding: 12px 14px; box-shadow: var(--ca-shadow); }
.ca-score--cyber { background: var(--ca-primary); color: #fff; border-color: var(--ca-primary); }
.ca-score__label { display: block; font-size: .78rem; opacity: .85; }
.ca-score__value { display: block; font-size: 1.7rem; font-weight: 700; }
.ca-score__max { font-size: .9rem; opacity: .7; }
.ca-score__class { display: block; font-size: .78rem; opacity: .8; }
.ca-block { background: var(--ca-surface); border: 1px solid var(--ca-line); border-radius: var(--ca-radius); padding: 16px 18px; margin: 14px 0; box-shadow: var(--ca-shadow); }
.ca-block h2 { font-size: 1.1rem; margin: 0 0 10px; }
.ca-block h3 { font-size: .98rem; margin: 14px 0 4px; }
.ca-block--kev { border-left: 4px solid var(--ca-kev); }
.ca-src { display: inline-block; font-size: .72rem; font-weight: 500; color: var(--ca-muted); background: #eef2f7; border-radius: 999px; padding: 2px 8px; margin-left: 6px; vertical-align: middle; }
.ca-refs { word-break: break-all; }
.ca-dates { font-size: .85rem; }
.ca-muted { color: var(--ca-muted); }

/* Tableaux */
.ca-table-wrap { overflow-x: auto; }
.ca-table { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid var(--ca-line); border-radius: var(--ca-radius); overflow: hidden; }
.ca-table th, .ca-table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--ca-line); font-size: .9rem; vertical-align: top; }
.ca-table th { background: #eef2f7; font-size: .8rem; text-transform: uppercase; letter-spacing: .02em; color: var(--ca-muted); }

/* Skeleton loaders */
.ca-skeleton { background: var(--ca-surface); border: 1px solid var(--ca-line); border-radius: var(--ca-radius); padding: 16px; }
.ca-skeleton__line { height: 12px; border-radius: 6px; background: linear-gradient(90deg,#eef2f7 25%,#e2e8f0 37%,#eef2f7 63%); background-size: 400% 100%; animation: ca-shimmer 1.4s ease infinite; margin: 8px 0; }
.ca-skeleton__line--lg { height: 18px; width: 40%; }
.ca-skeleton__line--sm { width: 60%; }
@keyframes ca-shimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }

.ca-alert { border-radius: var(--ca-radius); padding: 14px 16px; margin: 12px 0; }
.ca-alert--error { background: #fdecea; border: 1px solid #f3c6c0; color: var(--ca-crit); }
.ca-error { color: var(--ca-crit); font-size: .9rem; margin: 8px 0; }
.ca-hint { font-size: .82rem; color: var(--ca-muted); margin: 10px 0 0; }

/* Inscription aux alertes */
.ca-alerts__head { margin-bottom: 14px; }
.ca-alerts__grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 16px; }
.ca-alerts__form { display: flex; flex-direction: column; gap: 10px; padding: 18px; }
.ca-alerts__form .ca-field { flex-direction: column; }
.ca-alerts__form-title { margin: 0 0 4px; font-size: 1.05rem; }
.ca-alerts__form--unsub { background: #f7f9fc; }
.ca-alerts__form .ca-btn { margin-top: 6px; align-self: flex-start; }
.ca-consent { display: flex; gap: 8px; align-items: flex-start; font-size: .85rem; color: var(--ca-muted); }
.ca-consent input { margin-top: 3px; }
.ca-alert--ok { background: #e9f6ee; border: 1px solid #c3e6d1; color: #2f855a; }
@media (max-width: 640px) { .ca-alerts__grid { grid-template-columns: 1fr; } }

/* Footer */
.ca-footer { border-top: 1px solid var(--ca-line); background: #fff; padding: 22px 0; margin-top: 40px; }
.ca-disclaimer { font-size: .85rem; color: #55627a; background: #f2f5fb; border: 1px solid #e0e8f4; border-radius: 10px; padding: 12px 14px; }
.ca-notice { font-size: .88rem; color: #6b4a12; background: #fff8ec; border: 1px solid #f0e0be; border-left: 4px solid var(--ca-med); border-radius: 10px; padding: 12px 14px; margin-bottom: 12px; }
.ca-notice a { color: #8a5a00; text-decoration: underline; }
.ca-footer__meta { font-size: .82rem; color: var(--ca-muted); margin: 10px 0 0; }
.ca-doc h2 { font-size: 1.15rem; margin-top: 22px; }

@media (max-width: 640px) {
  .ca-hero__title { font-size: 1.6rem; }
  .ca-search__row { flex-direction: column; align-items: stretch; }
  .ca-field, .ca-field--grow { flex: 1 1 auto; }
  .ca-nav { gap: 12px; }
}

/* Mode sombre maîtrisé (préférence système) */
@media (prefers-color-scheme: dark) {
  :root {
    --ca-bg: #0e1621; --ca-surface: #16212e; --ca-ink: #e6edf5;
    --ca-muted: #96a3b5; --ca-line: #253242; --ca-primary: #0f2c4d;
  }
  .ca-note { background: #14202c; border-color: #253242; color: #b9c6d6; }
  .ca-table th { background: #1b2836; }
  .ca-chip, .ca-card, .ca-search, .ca-block, .ca-score, .ca-btn, .ca-badge, .ca-table { background: var(--ca-surface); }
}
