:root {
      --ink: #1e2220;
      --text: #313533;
      --muted: #6c716e;
      --paper: #f6f5f1;
      --paper-2: #e8e7e2;
      --white: #fffefb;
      --green: #2d322f;
      --green-dark: #232624;
      --green-soft: #e9eae8;
      --yellow: #f4c45f;
      --coral: #d56b55;
      --line: rgba(30, 34, 32, .14);
      --shadow: 0 24px 70px rgba(18, 20, 19, .16);
      --radius: 8px;
      --max: 1180px;
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; }
    body {
      margin: 0;
      color: var(--text);
      background: var(--paper);
      font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      line-height: 1.55;
    }
    body.menu-open,
    body.modal-open { overflow: hidden; }
    img, video { display: block; max-width: 100%; }
    a { color: inherit; text-decoration: none; }
    h1, h2, h3, p { margin-top: 0; }

    .container {
      width: min(var(--max), calc(100% - 40px));
      margin: 0 auto;
    }

    .eyebrow {
      margin-bottom: 12px;
      color: var(--green);
      font-size: 12px;
      font-weight: 900;
      letter-spacing: .13em;
      text-transform: uppercase;
    }

    .section { padding: 84px 0; }
    .section-tight { padding: 62px 0; }
    .section-title { max-width: 760px; margin-bottom: 34px; }
    .section-title h2 {
      margin-bottom: 16px;
      color: var(--ink);
      font-size: clamp(30px, 4vw, 48px);
      line-height: 1.05;
      letter-spacing: 0;
    }
    .section-title p {
      margin-bottom: 0;
      color: var(--muted);
      font-size: 18px;
    }

    .btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 46px;
      padding: 12px 18px;
      border: 1px solid transparent;
      border-radius: var(--radius);
      font-weight: 900;
      line-height: 1;
      cursor: pointer;
      transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
    }
    .btn:hover { transform: translateY(-2px); }
    .btn-primary {
      color: var(--white);
      background: var(--green);
      box-shadow: 0 12px 28px rgba(35, 38, 36, .26);
    }
    .btn-primary:hover { background: #125d41; }
    .btn-secondary {
      color: var(--green-dark);
      border-color: rgba(35, 38, 36, .24);
      background: rgba(255, 253, 248, .86);
    }

    .site-header {
      position: sticky;
      top: 0;
      z-index: 30;
      border-bottom: 1px solid rgba(255, 253, 248, .12);
      background: rgba(27, 29, 28, .94);
      backdrop-filter: blur(16px);
    }
    .nav {
      display: flex;
      align-items: center;
      justify-content: space-between;
      min-height: 72px;
      gap: 18px;
    }
    .brand {
      color: var(--white);
      font-weight: 900;
      letter-spacing: .02em;
      text-transform: uppercase;
    }
    .nav-links {
      display: flex;
      align-items: center;
      gap: 22px;
      color: rgba(255, 253, 248, .82);
      font-size: 14px;
      font-weight: 800;
    }
    .nav-links a:hover { color: var(--white); }
    .menu-toggle {
      display: none;
      width: 44px;
      height: 44px;
      border: 1px solid rgba(255, 253, 248, .22);
      border-radius: var(--radius);
      color: var(--white);
      background: transparent;
      font-size: 24px;
      line-height: 1;
      cursor: pointer;
    }

    .hero {
      position: relative;
      min-height: calc(100vh - 72px);
      display: grid;
      align-items: end;
      padding: 104px 0 48px;
      color: var(--white);
      overflow: hidden;
      background: #232624;
    }
    .hero-video {
      position: absolute;
      inset: 0;
      z-index: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      opacity: .85;
      filter: grayscale(100%) contrast(1.04);
    }
    .hero::after {
      content: "";
      position: absolute;
      inset: 0;
      z-index: 1;
      background:
        linear-gradient(90deg, rgba(26, 28, 27, .9) 0%, rgba(26, 28, 27, .6) 45%, rgba(26, 28, 27, .26) 100%),
        linear-gradient(0deg, rgba(20, 22, 21, .5), rgba(20, 22, 21, .04));
      pointer-events: none;
    }
    .hero .eyebrow { color: var(--yellow); }
    .hero-grid {
      position: relative;
      z-index: 2;
      display: grid;
      grid-template-columns: minmax(0, 1.02fr) minmax(360px, .82fr);
      align-items: end;
      gap: 42px;
    }
    .hero-copy { max-width: 760px; }
    .hero h1 {
      max-width: 850px;
      margin-bottom: 20px;
      font-size: clamp(46px, 7vw, 88px);
      line-height: .98;
      letter-spacing: 0;
    }
    .hero-copy > p:not(.eyebrow) {
      max-width: 700px;
      color: rgba(255, 253, 248, .86);
      font-size: clamp(18px, 2vw, 23px);
    }
    .hero-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
      margin-top: 32px;
    }
    .logo-strip {
      display: flex;
      align-items: center;
      gap: 24px;
      flex-wrap: wrap;
      margin-top: 40px;
    }
    .logo-strip img {
      max-height: 34px;
      width: auto;
      object-fit: contain;
      filter: brightness(0) invert(1);
      opacity: .92;
    }

    .hero-projects {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 12px;
    }
    .hero-project-card {
      min-height: 218px;
      display: flex;
      align-items: flex-end;
      position: relative;
      overflow: hidden;
      border: 1px solid rgba(255, 253, 248, .18);
      border-radius: var(--radius);
      background: rgba(255, 253, 248, .1);
      box-shadow: 0 22px 60px rgba(0, 0, 0, .24);
      isolation: isolate;
    }
    .hero-project-card > img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      z-index: -2;
      transition: transform .35s ease;
    }
    .hero-project-card::after {
      content: "";
      position: absolute;
      inset: 0;
      z-index: -1;
      background: linear-gradient(180deg, rgba(10, 26, 20, .08), rgba(10, 26, 20, .84));
    }
    .hero-project-card:hover > img { transform: scale(1.06); }
    .hero-project-card span,
    .hero-project-card strong {
      display: block;
    }
    .hero-project-card div {
      padding: 16px;
    }
    .hero-project-card span {
      margin-bottom: 6px;
      color: var(--yellow);
      font-size: 11px;
      font-weight: 900;
      letter-spacing: .11em;
      text-transform: uppercase;
    }
    .hero-project-card strong {
      color: var(--white);
      font-size: 16px;
      line-height: 1.15;
    }

    .context-band {
      background:
        linear-gradient(180deg, rgba(255, 253, 248, .96), rgba(247, 245, 238, .92)),
        var(--white);
    }
    .context-grid {
      display: grid;
      grid-template-columns: .78fr 1.22fr;
      gap: 56px;
      align-items: start;
    }
    .context-grid h2 {
      color: var(--ink);
      font-size: clamp(30px, 4vw, 48px);
      line-height: 1.05;
      margin-bottom: 0;
    }
    .lead-text {
      color: var(--muted);
      font-size: 18px;
    }
    .stat-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 16px;
      margin-top: 30px;
    }
    .stat {
      position: relative;
      min-height: 154px;
      padding: 24px;
      border: 1px solid rgba(35, 38, 36, .12);
      border-radius: var(--radius);
      background:
        linear-gradient(180deg, rgba(255, 253, 248, .96), rgba(244, 196, 95, .1)),
        var(--white);
      box-shadow: 0 18px 42px rgba(22, 35, 31, .08);
      overflow: hidden;
      transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
    }
    .stat::before {
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      height: 5px;
      background: linear-gradient(90deg, var(--green), var(--yellow));
    }
    .stat::after {
      content: "";
      position: absolute;
      right: -28px;
      bottom: -28px;
      width: 92px;
      height: 92px;
      border-radius: 50%;
      background: rgba(40, 42, 40, .06);
    }
    .stat:hover {
      transform: translateY(-4px);
      border-color: rgba(40, 42, 40, .2);
      box-shadow: 0 24px 54px rgba(20, 22, 21, .13);
    }
    .stat strong {
      display: block;
      position: relative;
      z-index: 1;
      margin-bottom: 14px;
      color: var(--green-dark);
      font-size: 42px;
      font-weight: 900;
      line-height: 1;
    }
    .stat span {
      position: relative;
      z-index: 1;
      color: var(--muted);
      font-size: 15px;
      font-weight: 900;
      line-height: 1.45;
    }

    .projects-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 22px;
    }
    .project-card {
      display: flex;
      flex-direction: column;
      min-height: 100%;
      border: 1px solid var(--line);
      border-radius: var(--radius);
      background: var(--white);
      box-shadow: 0 16px 44px rgba(22, 35, 31, .08);
      overflow: hidden;
    }
    .project-card img {
      width: 100%;
      aspect-ratio: 4 / 3;
      object-fit: cover;
    }
    .project-body {
      display: flex;
      flex: 1;
      flex-direction: column;
      padding: 22px;
    }
    .project-body h3 {
      margin-bottom: 12px;
      color: var(--ink);
      font-size: 23px;
      line-height: 1.12;
    }
    .project-body p {
      color: var(--muted);
      margin-bottom: 18px;
    }
    .project-meta {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin: auto 0 20px;
    }
    .tag {
      display: inline-flex;
      align-items: center;
      min-height: 30px;
      padding: 6px 10px;
      border-radius: 999px;
      background: var(--green-soft);
      color: #24473a;
      font-size: 12px;
      font-weight: 900;
    }
    .tag-warm { background: rgba(244, 196, 95, .32); color: #75531b; }
    .tag-coral { background: rgba(213, 107, 85, .18); color: #763b2e; }
    .progress { margin-bottom: 18px; }
    .progress-top {
      display: flex;
      justify-content: space-between;
      gap: 14px;
      margin-bottom: 8px;
      color: var(--muted);
      font-size: 13px;
      font-weight: 900;
    }
    .progress-track {
      height: 9px;
      border-radius: 999px;
      background: rgba(35, 38, 36, .12);
      overflow: hidden;
    }
    .progress-bar {
      width: 9%;
      height: 100%;
      border-radius: inherit;
      background: linear-gradient(90deg, var(--green), var(--yellow));
    }

    .project-detail {
      display: grid;
      grid-template-columns: .92fr 1.08fr;
      gap: 44px;
      align-items: start;
      padding: 44px 0;
      border-top: 1px solid var(--line);
      scroll-margin-top: 96px;
    }
    .project-detail:first-of-type {
      border-top: 0;
      padding-top: 0;
    }
    .project-detail h3 {
      margin-bottom: 14px;
      color: var(--ink);
      font-size: clamp(26px, 3vw, 38px);
      line-height: 1.08;
    }
    .detail-list {
      display: grid;
      gap: 12px;
      margin: 20px 0 0;
      padding: 0;
      list-style: none;
    }
    .detail-list li {
      position: relative;
      padding-left: 20px;
      color: var(--muted);
    }
    .detail-list li::before {
      content: "";
      position: absolute;
      left: 0;
      top: .72em;
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: var(--coral);
    }
    .gallery {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 12px;
    }
    .gallery img {
      width: 100%;
      height: 210px;
      object-fit: cover;
      border-radius: var(--radius);
      box-shadow: 0 16px 38px rgba(22, 35, 31, .12);
    }
    .gallery img:first-child {
      grid-column: 1 / -1;
      height: 290px;
    }
    .gallery.gallery-stack {
      grid-template-columns: 1fr;
    }
    .gallery.gallery-stack img,
    .gallery.gallery-stack img:first-child {
      grid-column: auto;
      height: 260px;
    }

    .finance-band {
      color: var(--white);
      background:
        radial-gradient(circle at 10% 10%, rgba(244, 196, 95, .14), transparent 32%),
        linear-gradient(135deg, #1f2220 0%, #343734 100%);
    }
    .finance-grid {
      display: grid;
      grid-template-columns: .88fr 1.12fr;
      gap: 44px;
      align-items: center;
    }
    .finance-band .eyebrow { color: var(--yellow); }
    .finance-band p { color: rgba(255, 253, 248, .78); }
    .finance-intro {
      padding: 28px;
      border: 1px solid rgba(255, 253, 248, .16);
      border-radius: var(--radius);
      background: rgba(255, 253, 248, .07);
      box-shadow: 0 22px 60px rgba(0, 0, 0, .12);
    }
    .finance-intro h2 {
      margin-bottom: 14px;
      color: var(--white);
      font-size: clamp(28px, 3.4vw, 42px);
      line-height: 1.08;
    }
    .coming-soon {
      margin-top: 22px;
      padding: 18px;
      border: 1px dashed rgba(244, 196, 95, .58);
      border-radius: var(--radius);
      background: rgba(244, 196, 95, .1);
    }
    .coming-soon strong {
      display: block;
      color: var(--white);
      margin-bottom: 6px;
    }
    .coming-soon p { margin-bottom: 0; }
    .finance-steps {
      display: grid;
      gap: 14px;
    }
    .finance-step {
      display: grid;
      grid-template-columns: auto 1fr;
      gap: 16px;
      padding: 18px;
      border: 1px solid rgba(255, 253, 248, .14);
      border-radius: var(--radius);
      background: rgba(255, 253, 248, .08);
    }
    .step-number {
      display: grid;
      place-items: center;
      width: 38px;
      height: 38px;
      border-radius: 50%;
      color: var(--green-dark);
      background: var(--yellow);
      font-weight: 900;
    }
    .finance-step strong {
      display: block;
      margin-bottom: 4px;
      color: var(--white);
    }
    .finance-step p { margin-bottom: 0; }

    .impact-grid {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 18px;
    }
    .impact-card {
      position: relative;
      min-height: 220px;
      padding: 26px 24px 24px;
      border: 1px solid rgba(31, 34, 32, .12);
      border-radius: var(--radius);
      background:
        linear-gradient(180deg, rgba(255, 254, 251, .98), rgba(232, 231, 227, .5)),
        var(--white);
      box-shadow: 0 18px 42px rgba(20, 22, 21, .08);
      overflow: hidden;
      transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
    }
    .impact-card::before {
      display: grid;
      place-items: center;
      width: 42px;
      height: 42px;
      margin-bottom: 22px;
      border-radius: 50%;
      color: var(--green-dark);
      background: var(--yellow);
      font-size: 20px;
      font-weight: 900;
    }
    .impact-card::after {
      content: "";
      position: absolute;
      right: -34px;
      top: -34px;
      width: 112px;
      height: 112px;
      border-radius: 50%;
      background: rgba(40, 42, 40, .06);
    }
    .impact-card:nth-child(1)::before { content: "01"; }
    .impact-card:nth-child(2)::before { content: "02"; }
    .impact-card:nth-child(3)::before { content: "03"; }
    .impact-card:nth-child(4)::before { content: "04"; }
    .impact-card:hover {
      transform: translateY(-5px);
      border-color: rgba(40, 42, 40, .2);
      box-shadow: 0 26px 58px rgba(20, 22, 21, .13);
    }
    .impact-card h3 {
      position: relative;
      z-index: 1;
      margin-bottom: 12px;
      color: var(--ink);
      font-size: 21px;
      line-height: 1.15;
    }
    .impact-card p {
      position: relative;
      z-index: 1;
      margin-bottom: 0;
      color: var(--muted);
      font-size: 16px;
      line-height: 1.55;
    }

    .visual-band { background: var(--paper-2); }
    .gallery-board {
      display: grid;
      grid-template-columns: repeat(6, 1fr);
      grid-auto-flow: dense;
      gap: 10px;
    }
    .gallery-open-all {
      display: none;
      margin: 22px auto 0;
    }
    .gallery-tile {
      position: relative;
      min-height: 150px;
      padding: 0;
      border: 0;
      border-radius: var(--radius);
      background: var(--green-dark);
      overflow: hidden;
      cursor: pointer;
      box-shadow: 0 14px 34px rgba(22, 35, 31, .1);
    }
    .gallery-tile img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      transition: transform .28s ease, filter .28s ease;
    }
    .gallery-tile::after {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(180deg, rgba(10, 26, 20, 0), rgba(10, 26, 20, .72));
      opacity: .78;
      transition: opacity .28s ease;
    }
    .gallery-tile span {
      position: absolute;
      left: 12px;
      right: 12px;
      bottom: 10px;
      z-index: 1;
      color: var(--white);
      font-size: 12px;
      font-weight: 900;
      line-height: 1.25;
      text-align: left;
      transform: translateY(6px);
      opacity: 0;
      transition: transform .28s ease, opacity .28s ease;
    }
    .gallery-tile:hover img {
      transform: scale(1.06);
      filter: saturate(1.08) contrast(1.04);
    }
    .gallery-tile:hover::after,
    .gallery-tile:focus-visible::after {
      opacity: 1;
    }
    .gallery-tile:hover span,
    .gallery-tile:focus-visible span {
      transform: translateY(0);
      opacity: 1;
    }
    .gallery-tile:focus-visible {
      outline: 3px solid var(--yellow);
      outline-offset: 3px;
    }
    .gallery-tile.is-wide { grid-column: span 2; }
    .gallery-tile.is-tall { grid-row: span 2; min-height: 310px; }
    .gallery-tile.is-large { grid-column: span 2; grid-row: span 2; min-height: 310px; }

    .lightbox {
      position: fixed;
      inset: 0;
      z-index: 70;
      display: none;
      place-items: center;
      padding: 24px;
      background: rgba(5, 15, 12, .84);
      backdrop-filter: blur(12px);
    }
    .lightbox.is-open {
      display: grid;
    }
    .lightbox-stage {
      position: relative;
      width: min(1100px, 100%);
      max-height: calc(100vh - 48px);
      display: grid;
      gap: 12px;
    }
    .lightbox-image-wrap {
      position: relative;
      overflow: hidden;
      border-radius: var(--radius);
      background: #07110d;
      box-shadow: 0 28px 90px rgba(0, 0, 0, .52);
    }
    .lightbox img {
      width: 100%;
      max-height: calc(100vh - 150px);
      object-fit: contain;
      background: #07110d;
    }
    .lightbox-caption {
      position: absolute;
      left: 16px;
      right: 16px;
      bottom: 16px;
      padding: 12px 14px;
      border-radius: var(--radius);
      color: var(--white);
      background: rgba(22, 24, 23, .82);
      font-size: 14px;
      font-weight: 900;
    }
    .lightbox-counter {
      color: rgba(255, 253, 248, .74);
      font-size: 13px;
      font-weight: 800;
      text-align: center;
    }
    .lightbox-control {
      position: absolute;
      top: 50%;
      z-index: 2;
      display: grid;
      place-items: center;
      width: 46px;
      height: 46px;
      border: 1px solid rgba(255, 253, 248, .24);
      border-radius: 50%;
      color: var(--white);
      background: rgba(22, 24, 23, .78);
      cursor: pointer;
      font-size: 28px;
      transform: translateY(-50%);
    }
    .lightbox-prev { left: 14px; }
    .lightbox-next { right: 14px; }
    .lightbox-close {
      position: absolute;
      top: 14px;
      right: 14px;
      z-index: 3;
      display: grid;
      place-items: center;
      width: 42px;
      height: 42px;
      border: 1px solid rgba(255, 253, 248, .24);
      border-radius: 50%;
      color: var(--white);
      background: rgba(22, 24, 23, .78);
      cursor: pointer;
      font-size: 24px;
    }

    .faq-list {
      display: grid;
      gap: 12px;
      max-width: 900px;
    }
    details {
      border: 1px solid var(--line);
      border-radius: var(--radius);
      background: var(--white);
    }
    summary {
      cursor: pointer;
      padding: 18px 20px;
      color: var(--ink);
      font-weight: 900;
    }
    details p {
      padding: 0 20px 20px;
      color: var(--muted);
      margin: 0;
    }

    .cta-final {
      color: var(--white);
      background:
        linear-gradient(90deg, rgba(24, 26, 24, .94), rgba(24, 26, 24, .7)),
        url("assets/proyectos/terracita/terracita-hero.jpeg") center / cover no-repeat;
    }
    .cta-final .eyebrow { color: var(--yellow); }
    .cta-box { max-width: 820px; }
    .cta-box h2 {
      margin-bottom: 18px;
      font-size: clamp(32px, 5vw, 58px);
      line-height: 1.02;
    }
    .cta-box p {
      color: rgba(255, 253, 248, .82);
      font-size: 18px;
    }

    .modal-backdrop {
      position: fixed;
      inset: 0;
      z-index: 60;
      display: none;
      place-items: center;
      padding: 20px;
      background: rgba(8, 20, 16, .68);
      backdrop-filter: blur(10px);
    }
    .modal-backdrop.is-open { display: grid; }
    .modal {
      width: min(440px, 100%);
      padding: 28px;
      border-radius: var(--radius);
      background: var(--white);
      color: var(--text);
      box-shadow: 0 26px 80px rgba(0, 0, 0, .34);
    }
    .modal h2 {
      margin-bottom: 10px;
      color: var(--ink);
      font-size: 26px;
      line-height: 1.1;
    }
    .modal p {
      color: var(--muted);
      margin-bottom: 22px;
    }
    .modal-actions {
      display: flex;
      justify-content: flex-end;
    }

    .footer {
      padding: 34px 0;
      color: rgba(255, 253, 248, .72);
      background: #0f211b;
    }
    .footer-inner {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 24px;
      flex-wrap: wrap;
    }
    .footer-logos {
      display: flex;
      align-items: center;
      gap: 18px;
      flex-wrap: wrap;
    }
    .footer-logos img {
      max-height: 28px;
      width: auto;
      filter: brightness(0) invert(1);
      opacity: .8;
    }

    @media (max-width: 1040px) {
      .hero-grid,
      .context-grid,
      .finance-grid,
      .project-detail {
        grid-template-columns: 1fr;
      }
      .hero-projects {
        max-width: 760px;
      }
      .projects-grid,
      .impact-grid {
        grid-template-columns: repeat(2, 1fr);
      }
      .gallery-board { grid-template-columns: repeat(3, 1fr); }
    }

    @media (max-width: 760px) {
      .container { width: min(100% - 28px, var(--max)); }
      .section,
      .section-tight { padding: 58px 0; }
      .menu-toggle {
        display: inline-grid;
        place-items: center;
      }
      .nav-links {
        position: fixed;
        inset: 72px 0 auto 0;
        display: none;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 14px;
        background: rgba(27, 29, 28, .98);
        border-top: 1px solid rgba(255, 253, 248, .12);
      }
      .nav-links a { padding: 14px 8px; }
      .nav-links.is-open { display: flex; }
      .hero {
        min-height: auto;
        padding: 86px 0 42px;
      }
      .hero-actions { flex-direction: column; }
      .btn { width: 100%; }
      .logo-strip { gap: 14px; }
      .logo-strip img { max-height: 28px; }
      .hero-projects,
      .stat-grid,
      .projects-grid,
      .impact-grid,
      .gallery-board {
        grid-template-columns: 1fr;
      }
      .gallery-tile,
      .gallery-tile.is-wide,
      .gallery-tile.is-tall,
      .gallery-tile.is-large {
        grid-column: auto;
        grid-row: auto;
        min-height: 230px;
      }
      .gallery-tile:nth-child(n + 9) {
        display: none;
      }
      .gallery-open-all {
        display: flex;
      }
      .gallery { grid-template-columns: 1fr; }
      .gallery img,
      .gallery img:first-child {
        height: 230px;
      }
      .lightbox { padding: 12px; }
      .lightbox-control {
        width: 40px;
        height: 40px;
        font-size: 24px;
      }
    }

    /* ===== Intro portada ===== */
    body.intro-lock { overflow: hidden; }

    .intro {
      position: fixed;
      inset: 0;
      z-index: 9999;
      background: #000;
      will-change: opacity, transform;
      transition: opacity .45s ease, transform .45s ease;
    }
    .intro.is-leaving {
      opacity: 0;
      transform: translateY(-30px);
    }
    .intro.is-done { display: none; }

    .intro-inner {
      position: absolute;
      inset: 0;
    }

    .intro-image {
      width: 100%;
      height: 100%;
      object-fit: contain;
      transform-origin: center;
      opacity: 0;
      animation: intro-reveal 1.2s cubic-bezier(.16, .84, .3, 1) forwards;
      will-change: transform, filter;
    }

    @keyframes intro-reveal {
      from { opacity: 0; transform: scale(1.06); }
      to   { opacity: 1; transform: scale(1); }
    }
    @keyframes intro-fade-in {
      to { opacity: 1; }
    }

    @media (prefers-reduced-motion: reduce) {
      .intro-image {
        animation: intro-fade-in .5s ease forwards;
        transform: none;
      }
    }
