/* ─────────────────────────────────────────────────────────────
   UpScan brand theme — the Bootstrap-reskin layer.
   Racing green (#1F5137) · Portland stone (#FBFAF7) · charcoal ink
   Inter Tight headings · IBM Plex Sans body · IBM Plex Mono technical

   The design tokens live in assets/upscan.css. The values below are kept
   byte-identical as a fallback for the auth pages (verify / reset /
   forgot-password) that load this file WITHOUT upscan.css; where upscan.css
   is present (the dashboard) its `:root` wins on identical names, and
   `--green` follows its `--scan`. If you retune a colour, change it in
   upscan.css and mirror it here. Consolidating this file into a thin
   Bootstrap-only layer is BACKLOG C2 (needs a visual pass).
   ───────────────────────────────────────────────────────────── */
:root{
  color-scheme:light only;
  --ink:#17191F;
  --paper:#FBFAF7;
  --slate:#34373E;
  --mist:#6E7178;
  --line:#E5E1D8;
  --green:var(--scan, #1F5137);   /* upscan.css calls this --scan */
  --green-dark:#17402B;
  --green-lt:#7FC79B;
  --clear:#1DB56C;
  --threat:#D6453D;
  --warn:#E0A430;                 /* upscan.css's --caution is a different amber (#B7791F) — see C2 */
  --card:#FFFFFF;

  /* Bootstrap overrides so existing markup inherits the brand */
  --bs-primary:#1F5137;
  --bs-body-color:#34373E;
  --bs-body-font-family:'IBM Plex Sans',system-ui,sans-serif;
  --bs-border-color:#E5E1D8;
  --bs-link-color:#1F5137;
  --bs-link-hover-color:#17402B;
}

body{
  background:var(--paper)!important;
  background-image:linear-gradient(var(--paper),var(--paper))!important;
  color:var(--slate);
  font-family:'IBM Plex Sans',system-ui,sans-serif!important;
  min-height:100vh;
}
h1,h2,h3,h4,h5,h6,.navbar-brand{
  font-family:'Inter Tight',system-ui,sans-serif!important;
  color:var(--ink);letter-spacing:-0.02em;font-weight:700;
}
code,pre,.mono{font-family:'IBM Plex Mono',monospace}

/* ── Nav: same green bar as the site ── */
.navbar,.app-nav{
  background:var(--green)!important;
  background-image:linear-gradient(var(--green),var(--green))!important;
  box-shadow:none!important;border-bottom:1px solid rgba(0,0,0,.12);
}
.navbar-brand,.navbar .navbar-brand{color:#F7F5EE!important;font-weight:800!important;font-size:1.25rem!important}
.navbar .nav-link,.navbar .navbar-text,.navbar span{color:#CBDACF!important}
.navbar .nav-link:hover{color:#fff!important}

/* ── Surfaces ── */
.card,.auth-card,.panel{
  background:var(--card)!important;background-image:linear-gradient(#fff,#fff)!important;
  border:1px solid var(--line)!important;border-radius:10px!important;
  box-shadow:0 2px 10px rgba(23,25,31,.05)!important;
}
.card-title{font-family:'Inter Tight',sans-serif;font-weight:700}

/* ── Buttons ── */
.btn{border-radius:8px!important;font-weight:600!important;font-family:'IBM Plex Sans',sans-serif!important}
.btn-primary,.btn-success{
  background:var(--green)!important;border-color:var(--green)!important;color:#fff!important;
}
.btn-primary:hover,.btn-success:hover{background:var(--green-dark)!important;border-color:var(--green-dark)!important}
.btn-outline-primary{color:var(--green)!important;border-color:var(--green)!important}
.btn-outline-primary:hover{background:var(--green)!important;color:#fff!important}
.btn-link{color:var(--green)!important}
.btn-danger{background:var(--threat)!important;border-color:var(--threat)!important}

/* ── Forms ── */
.form-control,.form-select,input[type=text],input[type=email],input[type=password]{
  border:1px solid var(--line)!important;border-radius:8px!important;
  font-family:'IBM Plex Sans',sans-serif!important;color:var(--slate)!important;
}
.form-control:focus,input:focus,select:focus,textarea:focus{
  border-color:var(--green)!important;box-shadow:0 0 0 3px rgba(31,81,55,.28)!important;outline:none!important;
}
/* Keyboard focus gets a solid ring that meets the 3:1 contrast minimum. */
.form-control:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--green)!important;outline-offset:2px!important;
}
label,.form-label{font-weight:600;color:var(--ink)}

/* ── Verdict language: green clean, red infected, amber pending ── */
.badge-clean,.badge-success,.badge.bg-success{background:var(--clear)!important;color:#fff!important}
.badge-malicious,.badge-danger,.badge.bg-danger{background:var(--threat)!important;color:#fff!important}
.badge-suspicious,.badge-warning,.badge.bg-warning{background:var(--warn)!important;color:var(--ink)!important}
.scan-result{border-left:4px solid var(--line);border-radius:8px;background:#fff;
  background-image:linear-gradient(#fff,#fff);padding:16px 18px;margin-bottom:12px;border:1px solid var(--line)}
.scan-result.clean{border-left-color:var(--clear)}
.scan-result.malicious{border-left-color:var(--threat)}
.scan-result.suspicious{border-left-color:var(--warn)}
.alert-success{background:#EAF7EF!important;border:1px solid #BFE3CD!important;color:#14532D!important}
.alert-danger{background:#FDECEA!important;border:1px solid #F3C6C2!important;color:#7F1D1D!important}
.alert-info{background:#F2F6F3!important;border:1px solid var(--line)!important;color:var(--slate)!important}

/* ── The verdict stamp, borrowed from the landing page ── */
.stamp{
  display:inline-block;font-family:'IBM Plex Mono',monospace;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;font-size:.8rem;
  padding:.35em .8em;border:2.5px solid currentColor;border-radius:6px;transform:rotate(-2deg);
}
.stamp.clean{color:var(--clear)}
.stamp.infected{color:var(--threat)}

/* ── Upload area ── */
.upload-area,.dropzone{
  border:2px dashed var(--line)!important;border-radius:10px!important;
  background:#FCFBF8!important;background-image:linear-gradient(#FCFBF8,#FCFBF8)!important;
  transition:border-color .2s,background .2s;
}
.upload-area:hover,.dropzone:hover{border-color:var(--green)!important;background:#F4F8F5!important}

/* ── Auth pages (verify / reset / forgot) ── */
.auth-wrap,.auth-page{
  min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:var(--paper);background-image:linear-gradient(var(--paper),var(--paper));
}
.auth-card{max-width:440px;width:100%;padding:32px}
.auth-brand{display:flex;align-items:center;gap:.55rem;justify-content:center;margin-bottom:20px;
  font-family:'Inter Tight',sans-serif;font-weight:800;font-size:1.3rem;color:var(--ink)}
.auth-brand svg{width:26px;height:26px;color:var(--green)}

.text-muted,small{color:var(--mist)!important}
a{color:var(--green)}
a:hover{color:var(--green-dark)}
::selection{background:var(--green-lt);color:var(--ink)}

/* ── Login / signup lockup ── */
.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.auth-brand{
  display:flex;align-items:center;justify-content:center;gap:.5rem;
  font-family:'Inter Tight',sans-serif;font-weight:800;font-size:1.45rem;
  color:var(--ink)!important;text-decoration:none;margin-bottom:2px;
}
.auth-brand svg{width:28px;height:28px;color:var(--green)}
.auth-tagline{
  text-align:center;color:var(--mist);font-size:.85rem;margin:0 0 22px;
  font-family:'IBM Plex Mono',monospace;letter-spacing:.04em;
}
.auth-title{text-align:center;font-size:1.15rem!important;margin-bottom:20px!important;color:var(--slate)!important;font-weight:600!important}
