/* =========================================================
   FSG — Derecho Inmobiliario
   Design tokens: color + type
   ---------------------------------------------------------
   Tone: seriedad, profesionalismo, boutique, lujo.
   Paleta: navy profundo, dorado cálido, off-white, negro azulado.
   ========================================================= */

/* ---------- Fonts ---------- */
@font-face {
  font-family: "Nexa";
  src: url("./fonts/Nexa-Light.otf") format("opentype");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Nexa";
  src: url("./fonts/Nexa-Regular.otf") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Nexa";
  src: url("./fonts/Nexa-Bold.otf") format("opentype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* Serif complemento para acentos editoriales (notaría / lujo). */
@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,400&display=swap");

:root {
  /* ---------- Brand palette (from brand sheet) ---------- */
  --fsg-navy:        #1C3163;   /* Primary brand navy */
  --fsg-ink:         #1C3163;   /* Brand navy used for text/backgrounds (replaces near-black) */
  --fsg-gold:        #D6B585;   /* Accent gold / líneas y detalles */
  --fsg-paper:       #FEFFFF;   /* Off-white, casi puro */

  /* ---------- Navy scale (derived) ---------- */
  --navy-950: #1C3163;
  --navy-900: #0A1433;
  --navy-800: #132248;
  --navy-700: #1C3163;  /* primary */
  --navy-600: #25417E;
  --navy-500: #365499;
  --navy-400: #5C78B2;
  --navy-300: #8EA2C9;
  --navy-200: #C1CCE0;
  --navy-100: #E6EBF3;
  --navy-050: #F4F6FA;

  /* ---------- Gold scale (derived) ---------- */
  --gold-900: #7A5E33;
  --gold-800: #9B7A4A;
  --gold-700: #B8945F;
  --gold-600: #C9A473;
  --gold-500: #D6B585;  /* primary gold */
  --gold-400: #DFC39B;
  --gold-300: #E8D3B4;
  --gold-200: #F1E3CE;
  --gold-100: #F8EFE0;
  --gold-050: #FCF8F1;

  /* ---------- Neutrals ---------- */
  --paper:     #FEFFFF;
  --bone:      #F7F5F0;   /* warm off-white, boutique */
  --stone-100: #EEEBE4;
  --stone-200: #DAD4C7;
  --stone-300: #B8AF9E;
  --stone-400: #8B8272;
  --stone-500: #5E5749;
  --stone-700: #2F2B23;
  --stone-900: #12100B;

  /* ---------- Semantic foreground / background ---------- */
  --bg:        var(--paper);
  --bg-alt:    var(--bone);
  --bg-inverse:var(--navy-700);
  --bg-deep:   var(--navy-950);

  --fg:        var(--navy-950);  /* body text on paper */
  --fg-muted:  var(--stone-500);
  --fg-subtle: var(--stone-400);
  --fg-on-dark:var(--paper);
  --fg-on-gold:var(--navy-950);

  --accent:         var(--gold-500);
  --accent-hover:   var(--gold-600);
  --accent-press:   var(--gold-700);
  --accent-subtle:  var(--gold-100);

  --brand:          var(--navy-700);
  --brand-hover:    var(--navy-600);
  --brand-press:    var(--navy-800);

  --border:         rgba(28, 49, 99, 0.14);
  --border-strong:  rgba(28, 49, 99, 0.28);
  --border-on-dark: rgba(214, 181, 133, 0.35);
  --divider-gold:   var(--gold-500);

  /* Semantic state (kept discreet, boutique) */
  --success: #2F6B4F;
  --warning: #A8761E;
  --danger:  #8C2A2A;
  --info:    var(--navy-600);

  /* ---------- Type families ---------- */
  --font-sans:    "Nexa", "Helvetica Neue", Arial, sans-serif;
  --font-display: "Nexa", "Helvetica Neue", Arial, sans-serif;
  --font-serif:   "Cormorant Garamond", "EB Garamond", Georgia, serif;

  /* ---------- Type scale (boutique, airy) ---------- */
  --fs-xs:   12px;
  --fs-sm:   14px;
  --fs-base: 16px;
  --fs-md:   18px;
  --fs-lg:   22px;
  --fs-xl:   28px;
  --fs-2xl:  36px;
  --fs-3xl:  48px;
  --fs-4xl:  64px;
  --fs-5xl:  84px;

  --lh-tight:  1.1;
  --lh-snug:   1.25;
  --lh-normal: 1.5;
  --lh-loose:  1.7;

  --tracking-tight:  -0.01em;
  --tracking-normal: 0;
  --tracking-wide:   0.08em;
  --tracking-xwide:  0.22em;   /* eyebrows, small caps */

  /* ---------- Spacing ---------- */
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  24px;
  --space-6:  32px;
  --space-7:  48px;
  --space-8:  64px;
  --space-9:  96px;
  --space-10: 128px;

  /* ---------- Radius — boutique = mínimos, casi rectos ---------- */
  --radius-none: 0px;
  --radius-xs:   2px;
  --radius-sm:   4px;
  --radius-md:   6px;
  --radius-lg:   10px;
  --radius-pill: 999px;

  /* ---------- Shadows — sobrios, frío-azulado ---------- */
  --shadow-xs: 0 1px 2px rgba(0, 7, 27, 0.06);
  --shadow-sm: 0 2px 6px rgba(0, 7, 27, 0.08);
  --shadow-md: 0 10px 24px -12px rgba(0, 7, 27, 0.22);
  --shadow-lg: 0 24px 48px -20px rgba(0, 7, 27, 0.28);
  --shadow-gold: 0 12px 32px -16px rgba(214, 181, 133, 0.55);
  --ring-focus: 0 0 0 3px rgba(214, 181, 133, 0.45);

  /* ---------- Motion ---------- */
  --ease-standard: cubic-bezier(.2, .6, .2, 1);
  --ease-entrance: cubic-bezier(.16, .84, .44, 1);
  --ease-exit:     cubic-bezier(.4, 0, .6, 1);
  --dur-fast:   160ms;
  --dur-base:   240ms;
  --dur-slow:   420ms;
}

/* =========================================================
   Semantic typography
   ========================================================= */

html, body {
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  line-height: var(--lh-normal);
  color: var(--fg);
  background: var(--bg);
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
  max-width: 100%;
}
*, *::before, *::after { box-sizing: border-box; }

.eyebrow,
.kicker {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: var(--fs-xs);
  letter-spacing: var(--tracking-xwide);
  text-transform: uppercase;
  color: var(--accent);
}

.display,
h1.display {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-5xl);
  line-height: var(--lh-tight);
  letter-spacing: var(--tracking-tight);
  color: var(--fg);
}

h1 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-4xl);
  line-height: var(--lh-tight);
  letter-spacing: var(--tracking-tight);
  margin: 0 0 var(--space-5);
}

h2 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-2xl);
  line-height: var(--lh-snug);
  letter-spacing: var(--tracking-tight);
  margin: 0 0 var(--space-4);
}

h3 {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-xl);
  line-height: var(--lh-snug);
  margin: 0 0 var(--space-3);
}

h4 {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-lg);
  line-height: var(--lh-snug);
  margin: 0 0 var(--space-3);
}

.serif-display {
  font-family: var(--font-serif);
  font-weight: 400;
  font-style: italic;
  font-size: var(--fs-3xl);
  line-height: var(--lh-snug);
  letter-spacing: 0;
  color: var(--fg);
}

.lede {
  font-family: var(--font-sans);
  font-weight: 300;
  font-size: var(--fs-md);
  line-height: var(--lh-loose);
  color: var(--fg-muted);
}

p {
  font-size: var(--fs-base);
  line-height: var(--lh-loose);
  color: var(--fg);
  margin: 0 0 var(--space-4);
  max-width: 68ch;
}

small,
.caption {
  font-size: var(--fs-sm);
  color: var(--fg-muted);
  letter-spacing: 0.01em;
}

.label {
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--fg-muted);
}

.gold-rule {
  display: block;
  width: 48px;
  height: 1px;
  background: var(--gold-500);
  border: 0;
  margin: var(--space-4) 0;
}
