/* ============================================================================
   public.css - styles for the PRE-LOGIN pages (login, signup, error).
   These pages run a strict Content-Security-Policy with NO 'unsafe-inline'
   (src/index.ts, "Pre-auth pages" block - R-010/R-012, 22 Sep 2026), so they
   must never use inline <style>, style="" or <script> blocks. Put styles here.
   Each page is scoped by a body class: .pg-login / .pg-signup / .pg-error / .pg-staff.
   ============================================================================ */

/* ---------------- Login (portal.lumenmsp.co.uk sign-in) ---------------- */
    /* ---- Brand tokens (mirrors the website) --------------------------------- */
:root{
  --l-navy:#003D66; --l-cyan:#00BCD4; --l-green:#5FD068; --l-green-dk:#4E9A2E;
  --l-ink:#0F1F33; --l-muted:#5F7286;
}

/* ---- Page shell: green band on top, card centred below ------------------ */
body.pg-login{
  margin:0 !important; min-height:100dvh !important;
  display:flex !important; flex-direction:column !important;
  background:
    radial-gradient(1100px 480px at 50% -140px, #EAF6E2 0%, rgba(234,246,226,0) 70%),
    linear-gradient(180deg,#F5F8FB 0%, #EAF0F6 100%) !important;
  font-family:'Segoe UI',system-ui,-apple-system,sans-serif;
}

/* ---- Deep green contact band (matches the website top bar) -------------- */
.portal-band{
  background:linear-gradient(180deg,#2E6B2C 0%, #235A23 100%);
  border-bottom:1px solid rgba(0,0,0,.18);
  box-shadow:0 6px 22px -14px rgba(0,0,0,.5);
}
.portal-band__inner{
  max-width:1120px; margin:0 auto; padding:11px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
}
.band-phones{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.band-phone{ display:inline-flex; align-items:center; gap:9px; text-decoration:none; color:#fff; }
.band-phone svg{ width:18px; height:18px; color:#BEE9A8; flex:none; }
.band-phone b{ font-size:1.06rem; font-weight:700; letter-spacing:.02em; white-space:nowrap; font-variant-numeric:tabular-nums; }
.band-phone span{ font-size:.62rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#A8CE9C; margin-right:2px; }
.band-dot{ width:1px; height:26px; background:rgba(255,255,255,.24); flex:none; }
.band-link{
  display:inline-flex; align-items:center; gap:7px; text-decoration:none;
  background:#fff; color:var(--l-navy);
  font-size:.8rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  padding:8px 17px; border-radius:999px; transition:background .2s, transform .15s, box-shadow .2s;
}
.band-link:hover{ background:#EAF6E2; transform:translateY(-1px); box-shadow:0 4px 14px -6px rgba(0,0,0,.4); }
.band-link svg{ width:13px; height:13px; opacity:.75; }

/* ---- Centre column ----------------------------------------------------- */
.login-main{ flex:1; display:flex; align-items:center; justify-content:center; padding:40px 18px 56px; }

.pg-login .login-card{
  max-width:560px !important; width:100%;
  background:#fff !important; border:1px solid #E6EAEF; border-radius:20px !important;
  padding:52px 56px !important;
  box-shadow:0 30px 70px -34px rgba(0,61,102,.45), 0 2px 0 rgba(255,255,255,.6) inset !important;
  text-align:center; position:relative; overflow:hidden;
}
/* thin brand keyline along the very top of the card */
.pg-login .login-card::before{
  content:""; position:absolute; top:0; left:0; right:0; height:5px;
  background:linear-gradient(90deg,var(--l-cyan) 0%, var(--l-green) 100%);
}
.pg-login .login-card img{ height:78px !important; width:auto; margin-bottom:22px !important; }
.pg-login .login-card h1{ font-size:2.15rem; line-height:1.1; color:var(--l-navy); margin:0 0 8px; letter-spacing:-.01em; }
.login-sub{ font-size:1.15rem; color:var(--l-muted); margin:0 0 30px; }

/* ---- Primary CTA ------------------------------------------------------- */
.btn-ms{
  display:flex; align-items:center; justify-content:center; gap:11px;
  width:100%; box-sizing:border-box;
  background:var(--l-navy); color:#fff !important; text-decoration:none;
  font-size:1.18rem; font-weight:700; padding:17px 22px; border-radius:12px;
  transition:background .2s, transform .15s, box-shadow .2s;
  box-shadow:0 12px 26px -14px rgba(0,61,102,.7);
}
.btn-ms:hover{ background:#00527d; transform:translateY(-1px); box-shadow:0 16px 30px -14px rgba(0,61,102,.75); }
.btn-ms svg{ width:21px; height:21px; flex:none; }

.alert-error{
  background:#fdecec; border:1px solid #f5c2c2; color:#8a1c1c;
  padding:12px 15px; border-radius:10px; font-size:15px; margin-bottom:20px; text-align:left;
}

/* ---- Email fallback ---------------------------------------------------- */
.login-local{ margin-top:20px; text-align:left; }
.login-local > summary{
  list-style:none; cursor:pointer; text-align:center;
  font-size:1rem; color:var(--l-muted); font-weight:600; padding:8px;
}
.login-local > summary::-webkit-details-marker{ display:none; }
.login-local > summary:hover{ color:var(--l-navy); }
.login-local .form-group{ margin-top:14px; }
.login-local label{ display:block; font-size:14px; font-weight:600; color:var(--l-ink); margin-bottom:6px; }
.login-local input{
  width:100%; box-sizing:border-box; font-size:17px; padding:13px 15px;
  border:1px solid #D3DEE7; border-radius:10px; background:#fff;
}
.login-local input:focus{ outline:3px solid rgba(0,188,212,.35); border-color:var(--l-cyan); }
.login-local button{
  width:100%; margin-top:16px; font-size:16px; font-weight:700; padding:14px;
  border:1px solid var(--l-navy); background:#fff; color:var(--l-navy); border-radius:10px; cursor:pointer;
  transition:background .2s, color .2s;
}
.login-local button:hover{ background:var(--l-navy); color:#fff; }

/* ---- Support / no-account CTA ------------------------------------------ */
.login-support{
  margin-top:28px; padding:18px 20px; border-radius:14px;
  background:#F1F9EC; border:1px solid #D6E8C8; text-align:center;
}
.login-support p{ margin:0 0 12px; font-size:1rem; color:#33502e; }
.login-support a.cta{
  display:inline-flex; align-items:center; gap:8px; text-decoration:none;
  background:#5FD068; color:var(--l-navy); font-weight:800; font-size:1.02rem;
  padding:12px 22px; border-radius:11px; transition:background .2s, transform .15s;
}
.login-support a.cta:hover{ background:#4CBB57; transform:translateY(-1px); }

.login-notice{
  margin-top:22px; padding:12px 14px; border:1px solid #e6d3a3; background:#fdf7e7;
  border-radius:10px; font-size:12.5px; line-height:1.5; color:#6b5518; text-align:left;
}

@media (max-width:640px){
  .login-card{ padding:38px 26px !important; }
  .login-card h1{ font-size:1.7rem; }
  .band-phone span{ display:none; }
  .portal-band__inner{ justify-content:center; }
}

/* ---------------- Signup ---------------- */
.pg-signup .login-card { max-width: 720px !important; width: 92%; padding: 48px 64px !important; text-align: left; }
.pg-signup .login-card h1 { font-size: 32px; margin-bottom: 6px; }
.pg-signup .login-card > .muted { font-size: 17px; }
.pg-signup .login-card .form-group label { font-size: 15px; }
.pg-signup .login-card input { font-size: 17px; padding: 13px 15px; }
.pg-signup .login-card .btn { font-size: 17px; padding: 14px 20px; }
.pg-signup .signup-head { text-align: center; }
.pg-signup .signup-or { display: flex; align-items: center; gap: 14px; margin: 26px 0 20px; color: var(--faint); font-size: 14px; }
.pg-signup .signup-or::before, .signup-or::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.pg-signup .hint { color: var(--faint); font-size: 13px; margin: 4px 0 0; }
.pg-signup .signup-foot { margin-top: 26px; text-align: center; font-size: 15px; }
.pg-signup .signup-crest { height: 48px; width: auto; margin-bottom: 14px; }
.pg-signup .alert-success { margin: 18px 0; }

/* ---------------- Error ---------------- */
body.pg-error { display: grid; place-items: center; min-height: 100vh; background: #f0f2f5; margin: 0; }
.pg-error .err-box { text-align: center; max-width: 400px; padding: 0 18px; }
.pg-error .err-ico { font-size: 48px; margin-bottom: 16px; }
.pg-error h1 { margin: 0 0 12px; font-size: 20px; }
.pg-error p { color: #6b7280; margin-bottom: 24px; }
.pg-error .err-home { background: #1d4ed8; color: #fff; padding: 10px 20px; border-radius: 8px; text-decoration: none; font-weight: 600; }


/* ---------------- Staff sign-in (control.lumenmsp.co.uk) ----------------
   Deliberately nothing like the customer page: dark, quiet, no phone numbers,
   no signup, no marketing. It should read as a restricted internal system. */
body.pg-staff {
  margin: 0; min-height: 100vh; min-height: 100dvh; color: #DCE7F1;
  font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
  background:
    radial-gradient(900px 520px at 85% -10%, rgba(0,188,212,0.16) 0%, rgba(0,188,212,0) 60%),
    radial-gradient(700px 480px at 0% 110%, rgba(95,208,104,0.12) 0%, rgba(95,208,104,0) 60%),
    #06121F;
}
.pg-staff .staff-wrap { min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 32px 18px; box-sizing: border-box; }
.pg-staff .staff-card {
  width: 100%; max-width: 440px; box-sizing: border-box;
  background: rgba(13,30,48,0.92); border: 1px solid rgba(255,255,255,0.08);
  border-radius: 18px; padding: 34px 34px 26px;
  box-shadow: 0 30px 80px -30px rgba(0,0,0,0.8);
}
.pg-staff .staff-top { display: flex; align-items: center; gap: 12px; margin-bottom: 30px; }
.pg-staff .staff-crest { width: 40px; height: 40px; border-radius: 10px; background: #fff; padding: 4px; box-sizing: border-box; }
.pg-staff .staff-name { font-size: 1.12rem; color: #fff; letter-spacing: 0.01em; }
.pg-staff .staff-name b { color: #5FD068; }
.pg-staff .staff-tag { font-size: 0.72rem; color: #7F95AA; letter-spacing: 0.08em; text-transform: uppercase; }
.pg-staff .staff-pill {
  margin-left: auto; font-size: 0.66rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
  color: #F6C453; border: 1px solid rgba(246,196,83,0.45); background: rgba(246,196,83,0.08);
  padding: 4px 9px; border-radius: 999px; white-space: nowrap;
}
.pg-staff h1 { font-size: 1.6rem; color: #fff; margin: 0 0 6px; }
.pg-staff .staff-strap {
  margin: 0 0 18px; padding: 9px 12px; border-radius: 9px; text-align: center;
  background: rgba(246,196,83,0.10); border: 1px solid rgba(246,196,83,0.38);
  color: #F6C453; font-size: 0.74rem; font-weight: 800;
  letter-spacing: 0.14em; text-transform: uppercase;
}
.pg-staff .staff-sub { margin: 0 0 22px; color: #97ABBF; font-size: 0.95rem; }
.pg-staff .staff-error { background: rgba(220,38,38,0.12); border: 1px solid rgba(220,38,38,0.45); color: #FCA5A5; padding: 10px 12px; border-radius: 10px; margin-bottom: 16px; font-size: 0.9rem; }
.pg-staff .staff-ms {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  background: #fff; color: #0F1F33; text-decoration: none; font-weight: 700; font-size: 1.02rem;
  padding: 14px 18px; border-radius: 11px; transition: transform .15s, box-shadow .2s;
}
.pg-staff .staff-ms:hover { transform: translateY(-1px); box-shadow: 0 10px 26px -12px rgba(0,188,212,0.6); color: #0F1F33; }
.pg-staff .staff-ms svg { width: 19px; height: 19px; }
.pg-staff .staff-local { margin-top: 16px; }
.pg-staff .staff-local > summary { list-style: none; cursor: pointer; text-align: center; font-size: 0.82rem; color: #6F869B; padding: 6px; }
.pg-staff .staff-local > summary::-webkit-details-marker { display: none; }
.pg-staff .staff-local > summary:hover { color: #B8C8D6; }
.pg-staff .staff-local form { display: grid; gap: 10px; margin-top: 10px; }
.pg-staff .staff-local label { display: grid; gap: 5px; font-size: 0.8rem; color: #97ABBF; }
.pg-staff .staff-local input { font-size: 15px; padding: 11px 12px; border-radius: 9px; border: 1px solid rgba(255,255,255,0.14); background: #0A1A2B; color: #fff; }
.pg-staff .staff-local input:focus { outline: 2px solid rgba(0,188,212,0.5); border-color: transparent; }
.pg-staff .staff-local button { padding: 11px; border-radius: 9px; border: 1px solid rgba(255,255,255,0.2); background: transparent; color: #fff; font-weight: 700; cursor: pointer; }
.pg-staff .staff-local button:hover { background: rgba(255,255,255,0.06); }
.pg-staff .staff-notice { margin: 22px 0 0; padding-top: 16px; border-top: 1px solid rgba(255,255,255,0.08); font-size: 0.78rem; line-height: 1.5; color: #7F95AA; }
.pg-staff .staff-notice strong { color: #F6C453; }
.pg-staff .staff-foot { margin-top: 18px; font-size: 0.8rem; color: #5E7488; }
.pg-staff .staff-foot a { color: #8FB3CC; }
.pg-error .err-home-alt { background: transparent; color: #1d4ed8; border: 1px solid #1d4ed8; margin-left: 8px; }
