/* ============================= */
/* DESIGN TOKENS — ModoBeta */
/* ============================= */

:root{
  --font-sans: "PP Neue Montreal", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;

  --brand-dark-1: #091574;
  --brand-dark-2: #172FAD;
  --brand-primary: #2F54F1;
  --brand-light-2: #6182F6;
  --brand-light-1: #D5E0FE;

  --bg-light: #FAFAFA;
  --surface-light: #F4F4F5;
  --neutral-100: #E4E4E7;
  --neutral-200: #D4D4D8;
  --text-secondary: #A1A1AA;
  --neutral-700: #3F3F46;
  --surface-dark: #27272A;
  --bg-dark: #18181B;

  --container: 1440px;
  --gutter: 64px;
  --radius: 20px;

  --h1: 56px;
  --h1-lh: 1.2;
  --h1-ls: -0.01em;
  --h1-fw: 500;

  --h2: 34px;
  --h2-lh: 1.2;
  --h2-fw: 500;

  --h3: 28px;
  --h3-lh: 1.5;
  --h3-fw: 500;

  --body-lg: 18px;
  --body-lg-lh: 1.5;

  --body-md: 16px;
  --body-md-lh: 1.3;

  --body-sm: 14px;
  --body-sm-lh: 1.3;

  --link: 16px;
  --link-lh: 1.2;

  --label: 14px;
  --label-lh: 1.3;

  --btn: 14px;
  --btn-lh: 20px;

  --bg: var(--bg-light);
  --fg: var(--surface-dark);
  --muted: var(--neutral-700);
}

@media (max-width: 480px){
  :root{
    --h1: 34px;
    --h1-lh: 1.2;
    --h2: 26px;
    --h2-lh: 1.3;
    --h4: 18px;
    --h4-lh: 1.3;
    --gutter: 18px;
  }
}

/* ============================= */
/* RESET / BASE */
/* ============================= */

*{
  box-sizing: border-box;
}

html{
  scroll-behavior: smooth;
}

body{
  margin: 0;
  font-family: var(--font-sans);
  background: var(--bg-dark);
  color: #ffffff;
}

img{
  max-width: 100%;
  height: auto;
  display: block;
}

.container{
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

.site-main{
  overflow: hidden;
}

/* ============================= */
/* TYPOGRAPHY */
/* ============================= */

h1, h2, h3, h4{
  margin: 0;
  font-weight: 500;
}

h1{
  font-size: var(--h1);
  line-height: var(--h1-lh);
  letter-spacing: var(--h1-ls);
  font-weight: var(--h1-fw);
  margin: 0 0 16px;
}

h2{
  font-size: var(--h2);
  line-height: var(--h2-lh);
  font-weight: var(--h2-fw);
  margin: 0 0 12px;
}

h3{
  font-size: var(--h3);
  line-height: var(--h3-lh);
  font-weight: var(--h3-fw);
  margin: 0 0 10px;
}

h4{
  font-size: var(--h4, 18px);
  line-height: var(--h4-lh, 1.3);
  margin: 0 0 10px;
}

p{
  font-size: var(--body-md);
  line-height: var(--body-md-lh);
  margin: 0 0 16px;
}

a{
  color: inherit;
  text-decoration: none;
}

a:hover{
  opacity: .95;
}

/* ============================= */
/* GENERIC SECTIONS */
/* ============================= */

.section{
  padding: 96px 0;
}

/* ============================= */
/* ANCLAS */
/* ============================= */

#contacto{
  scroll-margin-top: 0;
}

#servicios{
  scroll-margin-top: 120px;
}

/* ============================= */
/* REVEAL */
/* ============================= */

.reveal{
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.8s ease, transform 0.8s ease;
  will-change: opacity, transform;
}

.reveal.is-visible{
  opacity: 1;
  transform: translateY(0);
}

.reveal--soft{
  transform: translateY(16px);
}

.reveal--left{
  transform: translateX(-40px);
}

.reveal--right{
  transform: translateX(40px);
}

/* ============================= */
/* REVEAL FADE IN */
/* ============================= */

.reveal-fade{
  opacity: 0;
  transform: translateY(22px);
  transition:
    opacity 0.8s ease,
    transform 0.8s ease;
  will-change: opacity, transform;
}

.reveal-fade.is-visible{
  opacity: 1;
  transform: translateY(0);
}

.reveal-fade--soft{
  opacity: 0;
  transform: translateY(30px);
  transition:
    opacity 1.35s cubic-bezier(0.22, 1, 0.36, 1),
    transform 1.35s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}

.reveal-fade--soft.is-visible{
  opacity: 1;
  transform: translateY(0);
}

/* ============================= */
/* GLOBAL UI */
/* ============================= */

.scroll-top{
  position: fixed;
  bottom: 32px;
  right: 32px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.2);
  background: rgba(0,0,0,0.4);
  color: #fff;
  cursor: pointer;
  opacity: 0;
  transform: translateY(10px);
  transition: all 0.3s ease;
  z-index: 200;
}

.scroll-top.is-visible{
  opacity: 1;
  transform: translateY(0);
}

/* ============================= */
/* GLOBAL FIX — OVERFLOW MOBILE */
/* ============================= */

html, body{
  overflow-x: hidden;
}

*{
  box-sizing: border-box;
}