/* ============================================================
   PHOTOBIOLOGICS® — Sistema de diseño compartido
   Fuentes: Marcellus (display) + Inter (body)
   Paleta: negro científico / crema mineral / dorado frío / acento teal
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap');

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --ink:    #0D0D0E;
  --ink2:   #1A1A1C;
  --ink3:   #2C2C2F;
  --cream:  #F5F2EC;
  --cream2: #EDE8DF;
  --cream3: #E2DBD0;
  --stone:  #5F5A54;
  --stone2: #D4CEC4;
  --gold:   #A8925A;
  --gold2:  #C4AC72;
  --teal:   #4A7A72;   /* firma: acento científico único */
  --teal2:  #6A9E96;
  --white:  #FFFFFF;

  --display: 'Marcellus', serif;
  --body:    'Inter', sans-serif;

  --max: 1280px;
  --nav-h: 72px;
}

html { scroll-behavior: smooth; font-size: 16px; }
body {
  font-family: var(--body);
  background: var(--cream);
  color: var(--ink);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* ── UTILIDADES ── */
.container { max-width: var(--max); margin: 0 auto; padding: 0 5rem; }
@media (max-width: 900px) { .container { padding: 0 1.5rem; } }

.tag {
  display: inline-flex; align-items: center; gap: .6rem;
  font-family: var(--body); font-size: .65rem; font-weight: 500;
  letter-spacing: .22em; text-transform: uppercase; color: var(--teal);
}
.tag::before { content: ''; display: block; width: 24px; height: 1px; background: var(--teal); }

.tag--gold { color: var(--gold); }
.tag--gold::before { background: var(--gold); }
.tag--stone { color: var(--stone); }
.tag--stone::before { background: var(--stone); }
.tag--light { color: var(--teal2); }
.tag--light::before { background: var(--teal2); }

.display { font-family: var(--display); font-weight: 400; line-height: 1.08; letter-spacing: 0; }

.btn-primary {
  display: inline-block; font-size: .72rem; font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase;
  padding: .85rem 2rem; background: var(--ink); color: var(--white);
  text-decoration: none; border: 1px solid var(--ink);
  transition: background .25s, color .25s, border-color .25s;
}
.btn-primary:hover { background: var(--teal); border-color: var(--teal); }

.btn-outline {
  display: inline-block; font-size: .72rem; font-weight: 400;
  letter-spacing: .14em; text-transform: uppercase;
  padding: .85rem 2rem; background: transparent; color: var(--ink);
  text-decoration: none; border: 1px solid var(--ink3);
  transition: border-color .25s, color .25s;
}
.btn-outline:hover { border-color: var(--teal); color: var(--teal); }

.btn-ghost-light {
  display: inline-flex; align-items: center; gap: .5rem;
  font-size: .72rem; font-weight: 400; letter-spacing: .12em;
  text-transform: uppercase; color: rgba(255,255,255,.55);
  text-decoration: none; transition: color .25s, gap .25s;
}
.btn-ghost-light::after { content: '→'; }
.btn-ghost-light:hover { color: var(--teal2); gap: .9rem; }

/* ── NAV ── */
nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 300;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 5rem; height: var(--nav-h);
  transition: background .35s, border-color .35s, box-shadow .35s;
}
nav.solid {
  background: rgba(245,242,236,.97);
  border-bottom: 1px solid rgba(168,146,90,.14);
  box-shadow: 0 2px 32px rgba(0,0,0,.06);
}
.nav-logo {
  font-family: var(--display); font-size: 1.1rem; font-weight: 500;
  letter-spacing: .08em; text-transform: uppercase;
  color: var(--white); text-decoration: none;
  transition: color .3s;
}
.nav-logo sup { font-size: .5em; vertical-align: super; color: var(--gold2); }
nav.solid .nav-logo { color: var(--ink); }

.nav-links { display: flex; align-items: center; gap: 2rem; list-style: none; }
.nav-links a {
  font-size: .68rem; font-weight: 400; letter-spacing: .14em;
  text-transform: uppercase; color: rgba(255,255,255,.65);
  text-decoration: none; transition: color .25s;
}
.nav-links a:hover, .nav-links a.active { color: var(--teal2); }
nav.solid .nav-links a { color: var(--stone); }
nav.solid .nav-links a:hover, nav.solid .nav-links a.active { color: var(--teal); }

.nav-cta {
  font-size: .65rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase;
  padding: .55rem 1.3rem; background: var(--teal); color: var(--white);
  text-decoration: none; border: 1px solid var(--teal);
  transition: background .25s, color .25s;
}
.nav-cta:hover { background: transparent; color: var(--teal); }
nav.solid .nav-cta { background: var(--ink); border-color: var(--ink); color: var(--white); }
nav.solid .nav-cta:hover { background: var(--teal); border-color: var(--teal); }

.nav-ig {
  color: rgba(255,255,255,.5); text-decoration: none; transition: color .25s;
  display: flex; align-items: center;
}
.nav-ig:hover { color: var(--teal2); }
nav.solid .nav-ig { color: var(--stone); }
nav.solid .nav-ig:hover { color: var(--teal); }

@media (max-width: 900px) {
  nav { padding: 0 1.5rem; }
  .nav-links { display: none; }
}

/* ── FOOTER ── */
footer {
  background: var(--ink);
  border-top: 1px solid rgba(255,255,255,.05);
  padding: 4rem 0 2rem;
}
.footer-grid {
  display: grid; grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 3rem; padding-bottom: 3rem;
  border-bottom: 1px solid rgba(255,255,255,.07);
}
.footer-brand .f-logo {
  font-family: var(--display); font-size: 1.3rem; font-weight: 400;
  color: var(--white); letter-spacing: .08em; text-transform: uppercase;
  text-decoration: none; display: block; margin-bottom: 1rem;
}
.footer-brand .f-logo sup { font-size: .5em; vertical-align: super; color: var(--gold2); }
.footer-brand p {
  font-size: .82rem; line-height: 1.8; color: var(--stone);
  font-weight: 300; max-width: 280px;
}
.footer-brand .f-ig {
  display: inline-flex; align-items: center; gap: .5rem;
  margin-top: 1.2rem; font-size: .7rem; letter-spacing: .1em;
  text-transform: uppercase; color: var(--teal2); text-decoration: none;
  transition: color .25s;
}
.footer-brand .f-ig:hover { color: var(--white); }
.f-col h4 {
  font-size: .65rem; letter-spacing: .2em; text-transform: uppercase;
  color: var(--stone); margin-bottom: 1.2rem; font-weight: 500;
}
.f-col ul { list-style: none; display: flex; flex-direction: column; gap: .7rem; }
.f-col ul a {
  font-size: .82rem; color: rgba(255,255,255,.45); text-decoration: none;
  transition: color .25s; font-weight: 300;
}
.f-col ul a:hover { color: var(--teal2); }
.footer-bottom {
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 2rem; flex-wrap: wrap; gap: 1rem;
}
.footer-bottom span { font-size: .72rem; color: var(--stone); font-weight: 300; }
.footer-bottom a { font-size: .72rem; color: var(--stone); text-decoration: none; transition: color .25s; }
.footer-bottom a:hover { color: var(--teal2); }

@media (max-width: 900px) {
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .footer-brand { grid-column: span 2; }
}

/* ── SCROLL REVEAL ── */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: .1s; }
.reveal-delay-2 { transition-delay: .2s; }
.reveal-delay-3 { transition-delay: .3s; }

/* ── LEGIBILIDAD ──
   Mantiene el estilo premium, pero evita texto demasiado fino o gris.
   Las páginas tienen muchos estilos embebidos, por eso estas reglas usan
   !important para prevalecer sin reestructurar todo el HTML. */
body,
button,
input,
select,
textarea {
  letter-spacing: 0 !important;
}

p,
li,
span,
a,
label,
input,
select,
textarea,
button {
  font-weight: 400;
}

.display,
h1,
h2,
h3,
.nav-logo,
.f-logo,
.hm-n,
.wstat-n,
.lc-n,
.pstep-n,
.dm-n,
.dp-step-n,
.ts-n {
  font-family: var(--display) !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
}

.hero h1,
.tech-hero h1,
.dep-hero h1,
.fac-hero h1,
.pag-hero h1,
.contact-hero h1 {
  line-height: 1.06 !important;
}

.tag,
.hero-eyebrow span,
.ticker-i,
.nav-links a,
.nav-cta,
.btn-primary,
.btn-outline,
.btn-ghost-light,
.footer-brand .f-ig,
.f-col h4,
.lc-tag,
.lc-pill,
.lc-link,
.ptab,
.pc-line,
.pc-arrow,
.pg-card-line,
.pg-card-link,
.fp-tag,
.fp a,
.pv-tag,
.cd-label,
.f-group label,
.f-submit {
  letter-spacing: 0 !important;
}

.hero-body,
.tech-hero p,
.dep-hero p,
.fac-hero p,
.pag-hero p,
.contact-hero p,
.proto-head p,
.proto-note p,
.lc-desc,
.wstat-l,
.hm-l,
.pstep p,
.ba-col.before .ba-item,
.ba-col.after .ba-item,
.dt.dark p,
.dp-step p,
.fac-what p,
.fb p,
.dron-text p,
.dp p,
.pv-text {
  color: rgba(255,255,255,.74) !important;
  font-weight: 400 !important;
}

.what-text p,
.sec-head p,
.line-header p,
.dep-section p,
.dt.light p,
.pg-card p,
.fp p,
.principle p,
.ts-item p,
.contact-info p,
.f-note,
.f-success p {
  color: var(--stone) !important;
  font-weight: 400 !important;
}

.footer-brand p,
.f-col ul a,
.footer-bottom span,
.footer-bottom a {
  color: rgba(255,255,255,.62) !important;
  font-weight: 400 !important;
}

nav.solid .nav-links a,
nav.solid .nav-ig {
  color: #5F5A54 !important;
}

.nav-links a {
  font-size: .78rem !important;
  font-weight: 500 !important;
}

.nav-cta {
  font-size: .74rem !important;
  font-weight: 600 !important;
}

.nav-logo {
  font-size: 1.18rem !important;
}

.nav-logo,
.f-logo {
  display: inline-flex !important;
  align-items: center;
  gap: .72rem;
  text-transform: none !important;
}

.brand-mark {
  width: 42px;
  height: 42px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  background: #000 url("logo-pb.jpg") center / cover no-repeat;
  color: transparent;
  font-size: 0;
  line-height: 1;
  letter-spacing: 0 !important;
  text-transform: lowercase;
  overflow: hidden;
  box-shadow: 0 0 0 1px rgba(255,255,255,.18);
}

.brand-word {
  display: inline-flex;
  align-items: flex-start;
  color: currentColor;
  font-family: var(--display);
  font-size: 1.14rem;
  line-height: 1;
  letter-spacing: 0 !important;
  text-transform: none;
}

.nav-logo sup,
.f-logo sup {
  font-size: .5em;
  margin-left: .08rem;
  vertical-align: super;
  color: var(--gold2);
}

nav.solid .brand-mark {
  background: #000 url("logo-pb.jpg") center / cover no-repeat;
  color: transparent;
  box-shadow: none;
}

.footer-brand .f-logo .brand-mark {
  width: 48px;
  height: 48px;
  background: #000 url("logo-pb.jpg") center / cover no-repeat;
  color: transparent;
  font-size: 0;
}

.footer-brand .f-logo .brand-word {
  font-size: 1.28rem;
}

@media (max-width: 900px) {
  .brand-mark { width: 38px; height: 38px; font-size: 1.2rem; }
  .brand-word { font-size: 1.02rem; }
}

.ticker {
  padding: 1.05rem 0 !important;
}

.ticker-i {
  font-size: .76rem !important;
  color: rgba(255,255,255,.72) !important;
  font-weight: 500 !important;
}

.ticker-i::after {
  color: var(--teal2) !important;
  opacity: .95;
}

.hm-l,
.dm-l,
.wstat-l {
  color: rgba(255,255,255,.68) !important;
  font-size: .8rem !important;
  font-weight: 500 !important;
}

.btn-ghost-light {
  color: rgba(255,255,255,.76) !important;
}

.hero h1 em,
.line-card .display em,
.display em {
  opacity: .92;
}
