/*
 * public.css — Crisol MCP public-surface primitives (v1.1 Phase 65, Plan 65-01).
 *
 * Styles for the no-session, no-sidebar surfaces served through base_public.html:
 * the shared auth/gate screens (login, acceso denegado, logout). Reuses the shared
 * design tokens (tokens.css) + components (components.css: .card, .btn*, .notice*,
 * .mono) and only ADDS what those don't cover — the centered layout, the auth card,
 * the logo lockup, the danger halo icon, the action stack. Zero JS (CSP Option A).
 * The landing + contacto add their own section styles to this file in Plans 65-02/03.
 */

/* ---- Centered full-height wrap (base_public <main>) ---- */
.public-wrap {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg);
  padding: clamp(20px, 5vw, 48px);
}

/* ---- Auth card (layers onto .card) ---- */
.auth-card {
  max-width: 380px;
  width: 100%;
  padding: clamp(28px, 5vw, 36px) clamp(24px, 5vw, 32px);
  text-align: center;
}

/* ---- Logo lockup + mono subtitle ---- */
.auth-logo {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-bottom: 22px;
}
.auth-logo__img { height: 40px; width: auto; }
.auth-logo__sub {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted-2);
}

/* ---- Headings / copy inside an auth card ---- */
.auth-title {
  font: 600 1.25rem var(--font-sans);
  color: var(--ink);
  margin: 0 0 8px;
}
.auth-text {
  font-size: 0.94rem;
  line-height: 1.55;
  color: var(--muted);
  margin: 0 0 20px;
}

/* ---- Google sign-in icon inside a .btn ---- */
.btn__icon { width: 18px; height: 18px; flex: none; }

/* ---- Allowlist note (green dot + text) ---- */
.allowlist-note {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 16px;
  font-size: 0.82rem;
  color: var(--muted);
}
.dot {
  width: 8px;
  height: 8px;
  border-radius: var(--radius-pill);
  flex: none;
}
.dot--ok { background: var(--ok); }

/* ---- Danger halo icon (acceso denegado) ---- */
.auth-icon--danger {
  width: 56px;
  height: 56px;
  border-radius: var(--radius-pill);
  margin: 0 auto 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--danger-bg);
  border: 1px solid var(--danger-border);
}
.auth-icon--danger::after {
  content: "";
  width: 16px;
  height: 16px;
  border-radius: var(--radius-pill);
  background: var(--danger);
  box-shadow: 0 0 0 6px rgba(212, 82, 74, 0.18);
}

/* ---- Stacked actions (full-width buttons) ---- */
.auth-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}

/* ---- Card footer caveat ---- */
.auth-foot {
  margin-top: 20px;
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--faint);
}

/* ===================================================================
   Landing (Plan 65-02) — full-bleed marketing surface on base_public.
   Ported from design_handoff_crisol_mcp/Boveda Landing.dc.html (inline → classes),
   using only tokens.css variables. Reuses components.css (.btn/.badge/.icon-chip/
   .source-row/.divider/.dot). Zero JS; the dark security band is fixed (var(--dark-band)).
   =================================================================== */

/* Full-bleed layout that REPLACES .public-wrap centering for the landing */
.landing {
  min-height: 100vh;
  width: 100%;
  background: var(--bg);
  color: var(--ink);
}
.landing strong { color: var(--ink); font-weight: 600; }

/* Large button variant for landing CTAs (layers onto .btn) */
.btn--lg { padding: 14px 24px; font-size: 16px; border-radius: 11px; }

/* ---- Eyebrow (mono section label) ---- */
.leyebrow {
  font: 600 12.5px var(--font-mono);
  letter-spacing: 0.05em;
  color: var(--faint);
  margin-bottom: 14px;
}
.leyebrow--center { text-align: center; margin-bottom: 24px; }
.leyebrow--accent { color: var(--accent); }

/* ---- Shared section headings ---- */
.lh2 {
  font-size: clamp(26px, 3.4vw, 40px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 700;
  margin: 0 0 12px;
  max-width: 620px;
  text-wrap: balance;
}
.lsub { font-size: 17px; color: var(--muted); margin: 0 0 40px; max-width: 560px; line-height: 1.5; }

/* ---- Nav (sticky, translucent) ---- */
.lnav {
  position: sticky;
  top: 0;
  z-index: 20;
  background: rgba(246, 245, 241, 0.82);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
}
.lnav__inner {
  max-width: 1160px;
  margin: 0 auto;
  padding: 14px clamp(20px, 5vw, 48px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.lnav__brand { display: flex; align-items: center; }
.lnav__logo { height: 46px; width: auto; }
.lnav__links { display: flex; align-items: center; gap: 26px; font-size: 14px; color: var(--muted); font-weight: 500; }
.lnav__links a { white-space: nowrap; }
.lnav__links a:hover { color: var(--ink); }
.lnav__actions { display: flex; align-items: center; gap: 12px; }
.lnav__enter { font-size: 14px; font-weight: 600; color: var(--ink); padding: 9px 14px; border-radius: 9px; }
.lnav__enter:hover { background: var(--surface-muted); }

/* ---- Hero ---- */
.lhero { position: relative; }
.lhero__glow {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(900px 420px at 78% -8%, rgba(52, 102, 154, 0.08), transparent 60%),
    radial-gradient(700px 380px at 8% 18%, rgba(199, 154, 79, 0.07), transparent 55%);
}
.lhero__inner {
  position: relative;
  max-width: 1160px;
  margin: 0 auto;
  padding: clamp(40px, 7vw, 86px) clamp(20px, 5vw, 48px) clamp(36px, 5vw, 64px);
  display: flex;
  gap: clamp(32px, 5vw, 64px);
  align-items: center;
  flex-wrap: wrap;
}
.lhero__copy { flex: 1 1 360px; min-width: 300px; }
.lchip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  padding: 6px 13px;
  font: 600 12px var(--font-mono);
  color: var(--muted);
  letter-spacing: 0.02em;
  box-shadow: var(--shadow-card);
}
.lhero__title {
  font-size: clamp(34px, 5vw, 58px);
  line-height: 1.04;
  letter-spacing: -0.025em;
  font-weight: 700;
  margin: 20px 0 0;
  text-wrap: balance;
}
.lhero__accent { color: var(--accent); }
.lhero__lead {
  font-size: clamp(16px, 1.7vw, 19px);
  line-height: 1.55;
  color: var(--muted);
  margin: 20px 0 0;
  max-width: 520px;
  text-wrap: pretty;
}
.lhero__cta { display: flex; gap: 12px; margin-top: 30px; flex-wrap: wrap; }
.lhero__checks {
  display: flex;
  gap: 20px;
  margin-top: 26px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--muted-2);
  font-weight: 500;
}
.lhero__checks > span { display: inline-flex; align-items: center; gap: 7px; }
.lcheck { color: var(--ok); font-weight: 700; }
.lhero__compat { margin-top: 18px; font-size: 12.5px; color: var(--faint); font-weight: 500; }
.lhero__compat strong { color: var(--muted); }

/* ---- Hero panel mock ---- */
.lhero__mock { flex: 1 1 360px; min-width: 300px; display: flex; justify-content: center; }
.lmock {
  width: 100%;
  max-width: 420px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 18px;
  box-shadow: var(--shadow-hero);
  padding: 20px 22px;
}
.lmock__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; }
.lmock__brand { display: flex; align-items: center; gap: 9px; }
.lmock__icon { width: 26px; height: 26px; border-radius: 7px; }
.lmock__title { font-size: 13px; font-weight: 700; }
.lmock__rows { display: flex; flex-direction: column; gap: 11px; }
.lmock__foot { display: flex; align-items: center; gap: 9px; font-size: 12.5px; color: var(--muted); }
.lmock__foot-dot { background: var(--accent); flex: none; }

/* ---- Fuentes ---- */
.lfuentes {
  max-width: 1160px;
  margin: 0 auto;
  padding: 24px clamp(20px, 5vw, 48px) clamp(40px, 6vw, 72px);
}
.lsources {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
}
.lsource {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 13px;
  padding: 16px 14px;
  display: flex;
  align-items: center;
  gap: 11px;
}
.lsource__name { font-size: 13px; font-weight: 600; }
.lsource--soon { flex-wrap: wrap; }
.lsource__soon { margin-left: auto; }

/* ---- Cómo funciona (white band) ---- */
.lband { background: var(--surface); border-top: 1px solid var(--border-soft); border-bottom: 1px solid var(--border-soft); }
.lband__inner { max-width: 1160px; margin: 0 auto; padding: clamp(48px, 6vw, 84px) clamp(20px, 5vw, 48px); }
.lsteps { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 18px; }
.lstep { background: var(--surface-soft); border: 1px solid var(--border-soft); border-radius: 16px; padding: 26px 24px; }
.lstep__num {
  width: 40px; height: 40px; border-radius: 11px;
  background: var(--surface); border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font: 700 16px var(--font-mono); color: var(--accent); margin-bottom: 18px;
}
.lstep__title { font-size: 18px; font-weight: 700; margin-bottom: 8px; letter-spacing: -0.01em; }
.lstep__text { font-size: 14.5px; color: var(--muted); line-height: 1.55; }

/* ---- Features ---- */
.lfeatures { max-width: 1160px; margin: 0 auto; padding: clamp(48px, 6vw, 84px) clamp(20px, 5vw, 48px); }
.lfeature-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 18px; }
.lfeature { background: var(--surface); border: 1px solid var(--border); border-radius: 16px; padding: 24px; }
.lfeature__title { font-size: 16px; font-weight: 700; margin-bottom: 8px; }
.lfeature__text { font-size: 14px; color: var(--muted); line-height: 1.55; }

/* ---- Seguridad (fixed dark band) ---- */
.lsec { background: var(--dark-band); }
.lsec__inner { max-width: 1160px; margin: 0 auto; padding: clamp(52px, 7vw, 92px) clamp(20px, 5vw, 48px); }
.lsec__head { display: flex; gap: clamp(32px, 5vw, 64px); flex-wrap: wrap; align-items: flex-start; }
.lsec__intro { flex: 1 1 320px; min-width: 280px; }
.lsec .leyebrow--sec { color: #8ea8f0; }
.lsec__title {
  font-size: clamp(28px, 3.6vw, 44px);
  line-height: 1.08;
  letter-spacing: -0.025em;
  font-weight: 700;
  margin: 0 0 16px;
  color: #f4f3ef;
  text-wrap: balance;
}
.lsec__lead { font-size: 16.5px; line-height: 1.55; color: #a7a8ad; margin: 0; max-width: 440px; }
.lsec__cards { flex: 1 1 340px; min-width: 300px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.lsec__card { background: #1f232c; border: 1px solid #2c313c; border-radius: 14px; padding: 20px; }
.lsec__card-title { font-size: 15px; font-weight: 700; margin-bottom: 7px; color: #f4f3ef; }
.lsec__card-text { font-size: 13.5px; color: #a7a8ad; line-height: 1.5; }
.lsec__caveat {
  margin-top: 30px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: #1f232c;
  border: 1px solid #2c313c;
  border-radius: 11px;
  padding: 12px 16px;
  font-size: 13.5px;
  color: #a7a8ad;
}
.lsec__caveat strong { color: #f4f3ef; font-weight: 600; }
.lsec__caveat-dot { background: var(--warn); flex: none; }

/* ---- CTA final ---- */
.lcta { max-width: 1160px; margin: 0 auto; padding: clamp(56px, 7vw, 96px) clamp(20px, 5vw, 48px); text-align: center; }
.lcta__icon { width: 54px; height: 54px; border-radius: 14px; margin: 0 auto 22px; display: block; box-shadow: var(--shadow-card); }
.lcta__title {
  font-size: clamp(28px, 3.8vw, 46px);
  line-height: 1.08;
  letter-spacing: -0.025em;
  font-weight: 700;
  margin: 0 auto 16px;
  max-width: 600px;
  text-wrap: balance;
}
.lcta__text { font-size: 17px; color: var(--muted); margin: 0 auto 30px; max-width: 480px; line-height: 1.5; }
.lcta__actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* ---- Footer ---- */
.lfoot { background: #efece4; border-top: 1px solid var(--border); }
.lfoot__inner {
  max-width: 1160px;
  margin: 0 auto;
  padding: 36px clamp(20px, 5vw, 48px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.lfoot__brand { display: flex; align-items: center; gap: 12px; }
.lfoot__logo { height: 38px; width: auto; }
.lfoot__tag { font-family: var(--font-mono); font-size: 11px; color: var(--faint); }
.lfoot__note { font-size: 13px; color: var(--muted-2); font-weight: 500; }

/* ===================================================================
   Contacto (Plan 65-03) — public "request access" / contact form on
   base_public (centered .public-wrap / .auth-card). Reuses components.css
   (.card/.field/.btn/.notice). Zero JS; honeypot hidden via .hp (no inline).
   =================================================================== */

/* Wider card than the auth surfaces (a form, not a single button) */
.contact-card { max-width: 460px; }

/* Vertical rhythm between the stacked form fields */
.contact-form { display: flex; flex-direction: column; gap: 16px; margin-top: 18px; }

/* Textarea sizing (layers onto .field__input) */
.contact-textarea { min-height: 130px; resize: vertical; line-height: 1.5; }

/* Honeypot: kept in the DOM for bots, removed from the visual + a11y tree.
   A real (zero-JS) user never sees or tabs into it. */
.hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
