/* R7 replacements are scoped to the hero, header and closing sections. */
:root { --r7-paper: #f7f4ec; --r7-night: #03201a; --hero-header-overlap: 96px; }
.site-r7 { min-width: 0; }
.hero-r7 {
  height: 100svh;
  min-height: 720px;
  max-height: 1000px;
  display: flex;
  align-items: center;
  padding: 0;
  margin-top: calc(-1 * var(--hero-header-overlap));
  background: var(--r7-night);
  isolation: isolate;
}
.hero-r7 .hero-poster { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 88% 50%; }
.hero-r7::after { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(180deg, #03201ab3 0%, #03201a00 20%, #03201a00 72%, #03201ad9 100%), linear-gradient(90deg, #03201af5 0%, #03201acc 30%, #03201a26 58%, #03201a00 100%); }
.hero-r7 .hero-content { position: relative; width: calc(100% - 128px); max-width: 1600px; padding-top: 50px; }
.hero-r7 .hero-kicker { display: flex; align-items: center; gap: 18px; margin: 0 0 30px; color: #e9dec9; font: 500 12px/1.4 "Hanken Grotesk", sans-serif; letter-spacing: .34em; text-transform: uppercase; }
.hero-kicker i { height: 1px; width: 56px; background: #e9dec9; flex: none; }
.hero-r7 h1 { margin: 0; max-width: 780px; font: 400 clamp(54px, 7.8vw, 112px)/.94 "Newsreader", serif; letter-spacing: -.02em; }
.hero-r7 h1 span { padding: 0; display: block; }
.hero-r7 h1 em { display: block; color: var(--lush); font-weight: 300; }
.hero-rule { display: block; width: 72px; height: 2px; background: var(--lush); margin-top: 30px; }
.hero-r7 .hero-subline { max-width: 440px; margin: 30px 0; color: #e9dec9; font: 400 24px/1.45 "Newsreader", serif; }
.hero-r7 .button { min-height: 48px; border-radius: 999px; padding: 14px 24px; }
@media (max-width: 600px) {
  :root { --hero-header-overlap: 88px; }
  .hero-r7 { height: auto; min-height: 860px; min-height: max(860px, 100svh); padding: 390px 0 48px; align-items: flex-end; }
  .hero-r7 .hero-poster { height: 62%; object-position: 66% 50%; }
  .hero-r7::after { background: linear-gradient(180deg, #03201a66 0%, #03201a00 15%, #03201a00 25%, #03201a 61%); }
  .hero-r7 .hero-content { width: calc(100% - 40px); padding-top: 0; }
  .hero-r7 h1 { font-size: clamp(46px, 13.85vw, 66px); }
  .hero-r7 .hero-kicker { margin-bottom: 28px; font-size: 11px; letter-spacing: .16em; gap: 12px; }
  .hero-kicker i { width: 28px; }
  .hero-r7 .hero-subline { font-size: 22px; max-width: 29ch; margin: 24px 0; }
  .hero-r7 .button { width: 100%; }
}

/* 3a Cápsula, Claude's recommendation for Junior's local implementation. */
body > .header-r7 { height: var(--hero-header-overlap); box-sizing: border-box; padding: 22px 0 14px; background: transparent; pointer-events: none; }
.header-r7 .bar.wrap { width: min(1180px, calc(100% - 32px)); height: 60px; grid-template-columns: 155px minmax(0, 1fr) auto; gap: 12px; padding: 10px 10px 10px 26px; border-radius: 99px; background: rgb(3 32 26 / 82%); border: 1px solid rgb(233 222 201 / 22%); backdrop-filter: blur(14px); color: #e9dec9; pointer-events: auto; transition: background 250ms ease, box-shadow 250ms ease; }
.header-r7 .bar > a img { height: 36px; }
.header-r7 .nav { gap: 0; justify-content: center; }
.header-r7 .nav a { font: 500 11px/1.2 "Hanken Grotesk", sans-serif; letter-spacing: .17em; color: #e9dec9; border-radius: 99px; padding: 12px 10px; }
.header-r7 .nav a:hover, .header-r7 .nav a[aria-current="location"] { background: rgb(233 222 201 / 12%); color: #f7f9f5; text-decoration: none; }
.header-r7 .actions { gap: 8px; }
.header-r7 .language { border-color: rgb(233 222 201 / 30%); }
.header-r7 .language button { padding: 6px 8px; color: #e9dec9; }
.header-r7 .language button[aria-pressed="true"] { color: #02352a; }
.header-r7 .head-cta { min-height: 44px; border-radius: 99px; padding: 12px 18px; color: #02352a; font-size: 13px; }
.header-r7 .mobile-label { display: none; }
.header-r7 .menu { color: #e9dec9; border-color: rgb(233 222 201 / 30%); }
body > .header-r7.is-scrolled { padding-top: 14px; }
.header-r7.is-scrolled .bar.wrap { width: min(1080px, calc(100% - 32px)); background: rgb(3 32 26 / 94%); box-shadow: 0 14px 40px rgb(0 0 0 / 22%); }
.header-r7.is-scrolled .bar > a img { height: 30px; }
.header-r7 a:focus-visible, .header-r7 button:focus-visible { outline: 2px solid var(--lush); outline-offset: 3px; }

/* Closing 2b: one paper contact band, one night visit/footer band, then Desfile. */
.close-r7 { background: var(--r7-paper); color: #02352a; padding: 120px 0; text-align: left; }
.close-r7 > .close-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 600px); gap: 72px; align-items: center; width: min(1440px, calc(100% - 128px)); }
.close-r7 > .close-grid > .close-copy,
.close-r7 > .close-grid > .persona-deck { display: block; }
.r7-kicker { font: 500 11px/1.5 "Hanken Grotesk", sans-serif; letter-spacing: .3em; text-transform: uppercase; }
.close-r7 p.r7-kicker { margin: 0 0 30px; font-size: 11px; }
.close-r7 h2 { margin: 0; font: 500 clamp(68px, 7.23vw, 104px)/.92 "Newsreader", serif; letter-spacing: -.03em; }
.close-r7 h2 em { color: var(--emerald); font-weight: 400; display: block; }
.close-rule { display: block; width: 64px; height: 1px; margin: 30px 0; background: var(--emerald); }
.close-r7 .close-copy > p:not(.r7-kicker) { max-width: 480px; margin: 0; color: #414a44; font: 400 18px/1.6 "Hanken Grotesk", sans-serif; }
.close-r7 .close-topics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 32px 0; max-width: none; gap: 0 24px; }
.close-r7 .close-topics li { min-width: 0; padding: 16px 0; border: 0; border-bottom: 1px solid #d6d0c2; border-radius: 0; background: transparent; color: #02352a; font: 500 12px/1.6 "Hanken Grotesk", sans-serif; letter-spacing: .16em; text-transform: uppercase; }
.close-r7 .close-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 22px; }
.close-r7 .button.dark { border-radius: 99px; background: #02352a; color: #f7f4ec; }
.close-r7 .instagram-link { font-size: 14px; text-underline-offset: 5px; }
.persona-deck { width: 100%; min-width: 0; display: block; }
.persona-stage { position: relative; width: 100%; aspect-ratio: 600 / 810; }
.persona-back { position: absolute; top: 23.45%; width: 63.33%; aspect-ratio: 3 / 4; border-radius: 4px; overflow: hidden; box-shadow: 0 18px 42px rgb(32 38 34 / 12%); opacity: .9; }
.persona-back img { width: 100%; height: 100%; object-fit: contain; background: var(--r7-paper); }
.persona-back-left { left: 0; transform: rotate(-7deg); }
.persona-back-right { right: 0; transform: rotate(7deg); }
.persona-front { position: absolute; left: 10%; top: 14.81%; width: 80%; aspect-ratio: 3 / 4; overflow: hidden; border-radius: 4px; background: var(--r7-paper); box-shadow: 0 24px 60px rgb(32 38 34 / 18%); }
.persona-front > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; opacity: 0; transition: opacity 200ms ease; }
.persona-front > img.is-current { opacity: 1; }
.persona-badge { position: absolute; z-index: 2; top: 0; left: 50%; transform: translateX(-50%); width: 23.33%; }
.persona-sweep { position: absolute; z-index: 3; width: 250%; aspect-ratio: 1; top: 0; left: 0; border-radius: 50%; background: linear-gradient(225deg, #00d66b, #005c3c 45%, #02352a 80%); transform: translate(100%, -100%); visibility: hidden; }
.persona-sweep.is-sweeping { visibility: visible; animation: persona-sheet 900ms cubic-bezier(.2,0,0,1) both; }
@keyframes persona-sheet { 0% { transform: translate(100%, -100%); } 44%, 56% { transform: translate(-25%, -25%); } 100% { transform: translate(-140%, 140%); } }
.persona-controls { display: flex; align-items: flex-start; gap: 14px; }
.persona-controls[hidden] { display: none; }
.persona-pager { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; flex: 1; }
.persona-pager button { border: 0; background: transparent; text-align: left; padding: 6px 0; min-height: 44px; color: #5a6259; font: 500 11px/1.5 "Hanken Grotesk", sans-serif; letter-spacing: .12em; text-transform: uppercase; }
.persona-pager i { display: block; height: 2px; background: #d6d0c2; margin-bottom: 12px; }
.persona-pager button[aria-current="true"] { color: #005c3c; }
.persona-pager button[aria-current="true"] i { background: #005c3c; }
.persona-toggle { width: 44px; height: 44px; flex: none; border-radius: 50%; border: 1px solid #005c3c; color: #005c3c; background: transparent; }
.close-r7 button:focus-visible, .close-r7 a:focus-visible { outline: 2px solid #005c3c; outline-offset: 4px; }
.footer-r7 { background: var(--r7-night); color: #f7f4ec; }
.visit-r7 { background: var(--r7-night); padding: 110px 0 72px; }
.visit-r7 > .wrap { width: min(1440px, calc(100% - 128px)); grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); gap: 64px; align-items: end; }
.visit-r7 .visit-copy .r7-kicker { color: #e9dec9; }
.visit-r7 address { font: 400 clamp(34px, 3.33vw, 48px)/1.08 "Newsreader", serif; margin: 30px 0; }
.visit-r7 address em { color: #e9dec9; }
.visit-r7 .button { border-radius: 99px; }
.visit-r7 .venue-cards { gap: 12px; }
.visit-r7 .visit-card { position: relative; isolation: isolate; overflow: hidden; height: 380px; min-width: 0; border-radius: 4px; padding: 20px 18px; justify-content: space-between; background: #03201a; color: #f7f9f5; }
.visit-card .visit-wall { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.visit-card-punto .visit-wall { object-position: 50% 60%; }
.visit-card-novedades .visit-wall { object-position: 40% 50%; }
.visit-card-terraza .visit-wall { object-position: 62% 50%; }
.visit-card::after { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(180deg, #03201a8c, #03201a00 35%, #03201ae0); }
.visit-r7 .card-floor { color: #f7f4ec; font: 500 11px/1.4 "Hanken Grotesk", sans-serif; letter-spacing: .25em; }
.visit-card-bottom { width: 100%; }
.visit-card .visit-lockup { width: 100%; height: 64px; object-fit: contain; object-position: left bottom; }
.visit-card-action { display: block; border-top: 1px solid rgb(233 222 201 / 35%); margin-top: 24px; padding-top: 16px; font: 500 12px/1.4 "Hanken Grotesk", sans-serif; letter-spacing: .08em; }
.footer-links-r7 { background: var(--r7-night); padding: 0 0 72px; }
.footer-links-r7 > .wrap { width: min(1440px, calc(100% - 128px)); border-top: 1px solid rgb(233 222 201 / 20%); padding-top: 48px; grid-template-columns: minmax(0, 1fr) repeat(3, 180px); gap: 24px; }
.footer-links-r7 nav > b { font: 500 11px/1.4 "Hanken Grotesk", sans-serif; letter-spacing: .3em; }
.footer-links-r7 a, .footer-links-r7 button { color: #e9dec9; min-height: 26px; }
.footer-r7 button:focus-visible, .footer-r7 a:focus-visible { outline: 2px solid var(--lush); outline-offset: 4px; }
.legal-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 24px 64px; background: var(--r7-paper); border-top: 1px solid #d6d0c2; color: #414a44; font: 400 12px/1.4 "Hanken Grotesk", sans-serif; }
.legal-row > div { display: flex; gap: 20px; }
.legal-row button { border: 0; padding: 6px 0; background: transparent; color: #414a44; }
.footer-r7 .legal-row button:focus-visible { outline-color: #005c3c; }
.footer-r7 .legal-row a { color: #414a44; padding: 6px 0; text-underline-offset: 4px; }
.footer-r7 .legal-row a:focus-visible { outline-color: #005c3c; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* R8 family-history selections share a fixed portrait frame. Source files stay intact. */
.history-r8 figure { min-height: 0; aspect-ratio: 4 / 5; background: var(--r7-night); }
.history-r8 figure > img { object-fit: cover; object-position: center; }
.history-r8 figcaption { max-width: calc(100% - 32px); line-height: 1.45; }
.history-r8 .accordion > div { padding: 20px; text-align: left; }
.history-r8 .accordion > div[hidden] { display: none; }
.history-r8 .accordion button[aria-expanded="false"] b { background: var(--sunken); }
.history-r8 .accordion button:focus-visible { outline: 2px solid var(--emerald); outline-offset: -4px; }

@media (max-width: 1100px) {
  .header-r7 .bar.wrap { grid-template-columns: minmax(0, 1fr) auto; }
  .header-r7 .nav { display: none; }
  .header-r7 .menu { display: block; }
  .close-r7 > .close-grid { grid-template-columns: minmax(0, 1fr); width: min(800px, calc(100% - 80px)); gap: 60px; }
  .close-r7 .persona-deck { width: min(600px, 100%); margin: auto; }
  .visit-r7 > .wrap { grid-template-columns: minmax(0, 1fr); gap: 48px; }
  .visit-r7 address br:last-child { display: none; }
  .footer-links-r7 > .wrap { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .footer-links-r7 > .wrap > div { grid-column: 1 / -1; margin-bottom: 12px; }
}
@media (max-width: 600px) {
  body > .header-r7 { padding: 14px 0; }
  .header-r7 .bar.wrap { width: calc(100% - 24px); padding-left: 18px; gap: 8px; }
  .header-r7 .bar > a img, .header-r7.is-scrolled .bar > a img { height: 28px; }
  .header-r7 .language { display: none; }
  .header-r7 .head-cta { display: inline-flex; min-height: 44px; padding: 10px 14px; }
  .header-r7 .head-cta > span:first-child { display: none; }
  .header-r7 .mobile-label { display: inline; }
  .close-r7 { padding: 72px 0; }
  .close-r7 > .close-grid { width: calc(100% - 40px); gap: 48px; }
  /* Reserve the rotated back cards’ visual width at the mobile gutter seam. */
  .close-r7 .persona-deck { width: calc(100% - 24px); }
  .close-r7 h2 { font-size: clamp(60px, 16vw, 82px); }
  .close-r7 .close-copy > p:not(.r7-kicker) { font-size: 16px; }
  .close-r7 .close-topics { gap: 0 16px; }
  .close-r7 .close-topics li { font-size: 11px; letter-spacing: .1em; }
  .close-r7 .close-actions { align-items: flex-start; flex-direction: column; gap: 20px; }
  .persona-pager { gap: 10px; }
  .persona-pager button { font-size: 11px; letter-spacing: .04em; }
  .persona-controls { gap: 10px; }
  .visit-r7 { padding: 72px 0 48px; }
  .visit-r7 > .wrap, .footer-links-r7 > .wrap { width: calc(100% - 40px); }
  .visit-r7 .venue-cards { grid-template-columns: minmax(0, 1fr); }
  .visit-r7 .visit-card { height: 300px; padding: 24px; }
  .visit-card .visit-lockup { width: 65%; height: 72px; }
  .footer-links-r7 { padding-bottom: 48px; }
  .footer-links-r7 > .wrap { gap: 32px 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .legal-row { padding: 20px; flex-direction: column; align-items: flex-start; gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .header-r7, .header-r7 *, .close-r7 *, .hero-r7 * { animation: none !important; transition-duration: 1ms !important; }
  .close-r7 .persona-front > img { transition-duration: 200ms !important; }
}
