/* ============================================================
   LANDING v2 — portada dinámica de Quantum
   Todo va con prefijo lp- para no chocar con styles.css ni con el panel.
   ============================================================ */
:root{
  --lp-ink:#1C1A17;
  --lp-ink-soft:#3A3530;
  --lp-ink-2:#26231F;
  --lp-paper:#F8F4EA;
  --lp-paper-dim:#F0E9D8;
  --lp-sand:#E8DCC8;
  --lp-bronze:#B89B7A;
  --lp-bronze-light:#CDB496;
  --lp-bronze-dk:#8C6F52;
  --lp-white:#FFFFFF;
  --lp-line:rgba(28,26,23,0.13);
  --lp-line-dark:rgba(184,155,122,0.25);
  --lp-on-dark:rgba(255,255,255,0.8);
  --lp-on-dark-muted:rgba(250,246,238,0.65);
  --lp-display:'Playfair Display', Georgia, serif;
  --lp-body:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

html{ scroll-behavior:smooth; }
#inicio, #programas, #centro, #contacto{ scroll-margin-top:72px; }

.lp-in{ max-width:1200px; margin:0 auto; padding-left:max(16px, env(safe-area-inset-left, 0px)); padding-right:max(16px, env(safe-area-inset-right, 0px)); }
@media (min-width:700px){ .lp-in{ padding-left:max(32px, env(safe-area-inset-left, 0px)); padding-right:max(32px, env(safe-area-inset-right, 0px)); } }

/* barra de progreso de lectura */
.lp-progress{ position:fixed; top:0; left:0; height:3px; width:100%; transform-origin:0 50%; transform:scaleX(0); background:var(--lp-bronze); z-index:1001; pointer-events:none; }

/* ---------- botones ---------- */
.lp-btn{ display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:48px; padding:0 24px; border-radius:999px; font-family:var(--lp-body); font-weight:600; font-size:16px; line-height:1; text-decoration:none; border:0; cursor:pointer; transition:transform .2s, background-color .2s, box-shadow .2s, color .2s; }
.lp-btn:hover{ transform:translateY(-2px); }
.lp-btn:focus-visible{ outline:3px solid var(--lp-bronze); outline-offset:3px; }
.lp-btn--bronze{ background:var(--lp-bronze); color:var(--lp-ink); }
.lp-btn--bronze:hover{ background:var(--lp-bronze-light); }
.lp-btn--line{ background:transparent; color:var(--lp-white); box-shadow:inset 0 0 0 1.5px rgba(255,255,255,0.35); }
.lp-btn--line:hover{ box-shadow:inset 0 0 0 1.5px var(--lp-bronze); color:var(--lp-bronze-light); }
.lp-btn--sm{ min-height:42px; padding:0 18px; font-size:15px; }

/* ---------- cabecera ---------- */
.lp-top{ position:sticky; top:0; z-index:1000; background:rgba(28,26,23,0.95); color:var(--lp-white); border-bottom:1px solid var(--lp-line-dark); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); transition:box-shadow .3s; padding-top:env(safe-area-inset-top, 0px); }
.lp-top.is-scrolled{ box-shadow:0 10px 30px rgba(0,0,0,.3); }
.lp-top .lp-in{ display:flex; align-items:center; justify-content:space-between; gap:20px; padding-block:12px; }
.lp-brand{ display:flex; align-items:center; gap:12px; text-decoration:none; color:inherit; }
.lp-logo{ width:44px; height:44px; flex:none; border-radius:50%; display:block; }
.lp-brand__name{ font-family:var(--lp-display); font-weight:600; font-size:21px; line-height:1.1; color:var(--lp-white); }
.lp-brand__name small{ display:block; font-family:var(--lp-body); font-weight:400; font-size:12px; color:var(--lp-bronze-light); }
.lp-nav{ display:flex; gap:30px; font-weight:500; font-size:15px; }
.lp-nav a{ text-decoration:none; color:rgba(255,255,255,0.82); transition:color .2s; }
.lp-nav a:hover{ color:var(--lp-bronze); }
.lp-actions{ display:flex; align-items:center; gap:10px; }
.lp-burger{ display:none; width:46px; height:46px; border-radius:12px; border:1px solid var(--lp-line-dark); background:transparent; cursor:pointer; flex-direction:column; justify-content:center; align-items:center; gap:5px; padding:0; }
.lp-burger span{ display:block; width:20px; height:2px; border-radius:2px; background:var(--lp-white); transition:transform .25s, opacity .25s; }
.lp-burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.lp-burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.lp-burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }
.lp-mobilenav{ display:none; position:fixed; left:0; right:0; top:calc(70px + env(safe-area-inset-top, 0px)); z-index:999; background:var(--lp-ink); border-bottom:1px solid var(--lp-line-dark); padding:8px max(16px, env(safe-area-inset-right, 0px)) 20px max(16px, env(safe-area-inset-left, 0px)); flex-direction:column; gap:4px; }
.lp-mobilenav.is-open{ display:flex; }
.lp-mobilenav a{ color:var(--lp-paper); text-decoration:none; font-size:18px; font-weight:500; padding:14px 4px; border-bottom:1px solid var(--lp-line-dark); }
.lp-mobilenav .lp-btn{ margin-top:12px; }
@media (max-width:820px){
  .lp-nav{ display:none; }
  .lp-actions .lp-btn{ display:none; }
  .lp-burger{ display:flex; }
}
@media (min-width:821px){ .lp-mobilenav.is-open{ display:none; } }

/* ---------- portada ---------- */
.lp-hero{ background:var(--lp-ink); color:var(--lp-white); position:relative; overflow:hidden; }
.lp-hero canvas{ position:absolute; inset:0; width:100%; height:100%; display:block; }
.lp-hero .lp-in{ position:relative; padding-block:96px 64px; }
.lp-eyebrow{ display:inline-flex; align-items:center; gap:10px; padding:8px 16px; border-radius:999px; background:var(--lp-ink-2); border:1px solid var(--lp-line-dark); color:var(--lp-bronze); font-size:14px; font-weight:500; letter-spacing:.02em; margin:0; }
.lp-dot{ width:8px; height:8px; border-radius:50%; background:var(--lp-bronze); animation:lp-ping 2.4s infinite; }
@keyframes lp-ping{ 0%{ box-shadow:0 0 0 0 rgba(184,155,122,.6); } 70%{ box-shadow:0 0 0 10px rgba(184,155,122,0); } 100%{ box-shadow:0 0 0 0 rgba(184,155,122,0); } }
.lp-hero h1{ margin:28px 0 0; display:flex; align-items:center; gap:22px; font-family:var(--lp-display); font-weight:700; font-size:clamp(56px, 10vw, 136px); line-height:.95; letter-spacing:-.02em; color:var(--lp-white); }
.lp-hero h1 .lp-logo{ width:.72em; height:.72em; }
.lp-hero__sub{ display:block; margin:10px 0 0; font-family:var(--lp-display); font-style:italic; font-weight:500; font-size:clamp(24px, 3vw, 38px); color:var(--lp-bronze-light); }
.lp-hero__lead{ margin:28px 0 0; max-width:36em; font-size:19px; line-height:1.6; color:var(--lp-on-dark); }
.lp-cta{ display:flex; flex-wrap:wrap; gap:12px; margin-top:36px; }
.lp-stats{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); margin-top:72px; border-top:1px solid var(--lp-line-dark); }
.lp-stat{ padding:28px 24px 8px 0; }
.lp-stat + .lp-stat{ padding-left:24px; border-left:1px solid var(--lp-line-dark); }
.lp-stat b{ display:block; font-family:var(--lp-display); font-weight:700; font-size:clamp(36px, 4.4vw, 56px); color:var(--lp-bronze); line-height:1.05; font-variant-numeric:tabular-nums; }
.lp-stat span{ color:var(--lp-on-dark-muted); font-size:15px; }
.lp-scroll{ display:inline-flex; align-items:center; gap:12px; margin-top:48px; color:var(--lp-on-dark-muted); font-size:14px; font-family:var(--lp-body); background:none; border:0; cursor:pointer; padding:0; }
.lp-scroll i{ width:26px; height:40px; border-radius:14px; border:1.5px solid rgba(255,255,255,0.35); position:relative; }
.lp-scroll i::after{ content:""; position:absolute; left:50%; top:8px; width:4px; height:8px; margin-left:-2px; border-radius:2px; background:var(--lp-bronze); animation:lp-wheel 1.8s infinite; }
@keyframes lp-wheel{ 0%{ opacity:0; transform:translateY(0); } 30%{ opacity:1; } 100%{ opacity:0; transform:translateY(12px); } }
.lp-scroll:focus-visible{ outline:3px solid var(--lp-bronze); outline-offset:6px; border-radius:8px; }
@media (max-width:640px){
  .lp-hero .lp-in{ padding-block:56px 48px; }
  .lp-hero h1{ gap:14px; }
  .lp-stats{ grid-template-columns:1fr; margin-top:48px; }
  .lp-stat{ padding:18px 0 6px; }
  .lp-stat + .lp-stat{ padding-left:0; border-left:0; border-top:1px solid var(--lp-line-dark); }
}

/* ---------- franja en movimiento ---------- */
.lp-marquee{ background:var(--lp-bronze); color:var(--lp-ink); overflow:hidden; padding-block:16px; white-space:nowrap; }
.lp-marquee__track{ display:inline-flex; animation:lp-slide 36s linear infinite; font-family:var(--lp-display); font-style:italic; font-weight:500; font-size:24px; }
.lp-marquee__track span{ display:inline-flex; align-items:center; gap:40px; padding-right:40px; }
.lp-marquee__track span::after{ content:""; width:8px; height:8px; border-radius:50%; background:var(--lp-ink); }
@keyframes lp-slide{ to{ transform:translateX(-50%); } }

/* ---------- secciones ---------- */
.lp-sec{ padding-block:112px; background:var(--lp-paper); color:var(--lp-ink); }
.lp-kicker{ margin:0 0 14px; color:var(--lp-bronze-dk); font-weight:600; font-size:15px; letter-spacing:.02em; }
.lp-sec h2{ margin:0; font-family:var(--lp-display); font-weight:700; font-size:clamp(34px, 4.4vw, 58px); line-height:1.05; letter-spacing:-.01em; max-width:16em; color:var(--lp-ink); text-wrap:balance; }
.lp-lead{ margin:18px 0 0; color:var(--lp-ink-soft); max-width:38em; font-size:18px; line-height:1.6; }
.lp-head{ margin-bottom:56px; }
@media (max-width:640px){ .lp-sec{ padding-block:72px; } .lp-head{ margin-bottom:36px; } }

/* ---------- programas en pestañas ---------- */
.lp-prog{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:24px; align-items:start; }
.lp-tabs{ display:flex; flex-direction:column; gap:8px; }
.lp-tab{ -webkit-appearance:none; appearance:none; margin:0; text-align:left; cursor:pointer; display:flex; justify-content:space-between; align-items:center; gap:16px; padding:22px 24px; border-radius:12px; background:var(--lp-white); border:1px solid var(--lp-line); color:var(--lp-ink); font-family:var(--lp-display); font-weight:600; font-size:21px; line-height:1.2; transition:background-color .25s, color .25s, border-color .25s, transform .25s; }
.lp-tab:hover{ border-color:var(--lp-bronze); transform:translateX(4px); }
.lp-tab .lp-tag{ font-family:var(--lp-body); font-weight:500; font-size:13px; color:var(--lp-bronze-dk); white-space:nowrap; }
.lp-tab[aria-selected="true"]{ background:var(--lp-ink); color:var(--lp-paper); border-color:var(--lp-ink); }
.lp-tab[aria-selected="true"] .lp-tag{ color:var(--lp-bronze); }
.lp-tab:focus-visible{ outline:3px solid var(--lp-bronze); outline-offset:3px; }
.lp-panels{ position:sticky; top:96px; }
.lp-panel{ position:relative; background:var(--lp-ink); color:var(--lp-paper); border-radius:20px; padding:48px; overflow:hidden; min-height:460px; display:flex; flex-direction:column; gap:18px; }
.lp-panel[hidden]{ display:none; }
.lp-panel.is-swap > *{ animation:lp-swap .5s cubic-bezier(.22,.61,.36,1) both; }
@keyframes lp-swap{ from{ opacity:0; transform:translateY(16px); } to{ opacity:1; transform:none; } }
.lp-panel__big{ position:absolute; right:-10px; bottom:-50px; font-family:var(--lp-display); font-weight:700; font-style:italic; font-size:250px; line-height:1; color:var(--lp-ink-soft); pointer-events:none; user-select:none; }
.lp-panel > :not(.lp-panel__big){ position:relative; }
.lp-panel__label{ color:var(--lp-bronze); font-weight:600; font-size:15px; }
.lp-panel h3{ margin:0; font-family:var(--lp-display); font-weight:700; font-size:clamp(30px, 3.4vw, 44px); line-height:1.05; color:var(--lp-paper); }
.lp-panel p{ margin:0; font-size:18px; line-height:1.6; max-width:30em; color:rgba(250,246,238,0.85); }
.lp-chips{ display:flex; flex-wrap:wrap; gap:8px; list-style:none; margin:0; padding:0; }
.lp-chips li{ padding:7px 14px; border-radius:999px; border:1px solid rgba(184,155,122,0.35); color:var(--lp-bronze-light); font-size:14px; font-weight:500; }
.lp-panel .lp-btn{ align-self:flex-start; margin-top:auto; }
@media (max-width:900px){
  .lp-prog{ grid-template-columns:1fr; }
  .lp-panels{ position:relative; top:0; }
  .lp-panel{ min-height:0; padding:32px; }
  .lp-panel__big{ font-size:160px; }
  .lp-tab{ font-size:19px; padding:18px 20px; }
}

/* ---------- instalaciones ---------- */
.lp-sec--dim{ background:var(--lp-paper-dim); }
.lp-inst-head{ display:flex; justify-content:space-between; align-items:end; gap:24px; flex-wrap:wrap; margin-bottom:48px; }
.lp-gal-ctrl{ display:flex; gap:10px; }
.lp-arrow{ -webkit-appearance:none; appearance:none; cursor:pointer; width:52px; height:52px; border-radius:50%; border:1.5px solid rgba(28,26,23,0.5); background:transparent; display:grid; place-items:center; padding:0; color:var(--lp-ink); transition:background-color .2s, border-color .2s, color .2s; }
.lp-arrow:hover{ background:var(--lp-ink); border-color:var(--lp-ink); color:var(--lp-paper); }
.lp-arrow:focus-visible{ outline:3px solid var(--lp-bronze); outline-offset:3px; }
.lp-gal{ display:flex; gap:18px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:16px; cursor:grab; scrollbar-width:thin; scroll-behavior:smooth; -webkit-overflow-scrolling:touch; }
.lp-gal:active{ cursor:grabbing; }
.lp-gal:focus-visible{ outline:3px solid var(--lp-bronze); outline-offset:4px; border-radius:12px; }
.lp-shot{ flex:0 0 min(460px, 84%); scroll-snap-align:start; margin:0; }
.lp-ph{ position:relative; aspect-ratio:4/5; max-width:100%; border-radius:12px; overflow:hidden; background:var(--lp-sand); }
.lp-ph img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.22,.61,.36,1); -webkit-user-drag:none; user-select:none; }
.lp-shot:hover .lp-ph img{ transform:scale(1.04); }
.lp-shot figcaption{ margin-top:14px; font-weight:500; color:var(--lp-ink-soft); }
.lp-note{ margin:36px 0 0; color:var(--lp-ink-soft); }
.lp-note a{ color:var(--lp-bronze-dk); font-weight:600; }

/* ---------- contacto ---------- */
.lp-visit{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; align-items:start; }
.lp-info{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:16px; margin:40px 0 32px; }
.lp-info div{ background:var(--lp-white); border:1px solid var(--lp-line); border-radius:12px; padding:24px; box-shadow:0 4px 24px rgba(28,26,23,0.08); min-width:0; }
.lp-info dt{ color:var(--lp-bronze-dk); font-weight:600; font-size:14px; margin-bottom:8px; }
.lp-info dd{ margin:0; font-size:16px; line-height:1.5; overflow-wrap:anywhere; color:var(--lp-ink); }
.lp-info a{ color:var(--lp-ink); }
.lp-map{ position:relative; border-radius:20px; overflow:hidden; background:var(--lp-ink); min-height:460px; box-shadow:0 20px 60px rgba(28,26,23,0.22); }
.lp-map iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; filter:grayscale(.35) sepia(.15); }
@media (max-width:900px){ .lp-visit{ grid-template-columns:1fr; gap:40px; } .lp-map{ min-height:320px; } }
@media (max-width:520px){ .lp-info{ grid-template-columns:1fr; } }

/* ---------- pie ---------- */
.lp-foot{ background:var(--lp-ink); color:var(--lp-paper); border-top:1px solid rgba(250,246,238,0.12); }
.lp-foot .lp-in{ display:flex; justify-content:space-between; align-items:center; gap:20px; flex-wrap:wrap; padding-block:40px calc(40px + env(safe-area-inset-bottom, 0px)); }
.lp-foot .lp-logo{ width:36px; height:36px; }
.lp-foot .lp-brand__name{ font-size:18px; }
.lp-foot p{ margin:0; color:var(--lp-on-dark-muted); font-size:15px; }
.lp-foot a.lp-insta{ color:var(--lp-bronze); display:inline-grid; place-items:center; width:44px; height:44px; border-radius:50%; border:1px solid var(--lp-line-dark); }

/* ---------- apariciones al hacer scroll (visibles por defecto) ---------- */
.lp-js .lp-reveal{ transition:opacity .8s ease, transform .8s cubic-bezier(.22,.61,.36,1); }
.lp-js .lp-reveal.is-pre{ opacity:0; transform:translateY(28px); }

/* ---------- panel interno y login: la portada desaparece ---------- */
body.app-mode .lp-top,
body.app-mode .lp-mobilenav,
body.app-mode .lp-foot,
body.app-mode .lp-progress{ display:none !important; }

@media (prefers-reduced-motion:reduce){
  html, .lp-gal{ scroll-behavior:auto; }
  .lp-dot, .lp-scroll i::after, .lp-marquee__track, .lp-panel.is-swap > *{ animation:none !important; }
  .lp-btn, .lp-tab, .lp-ph img, .lp-js .lp-reveal{ transition:none !important; }
  .lp-js .lp-reveal.is-pre{ opacity:1; transform:none; }
}

/* v38 — mapa con consentimiento previo (RGPD) */
.lp-map__consent{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; padding:24px; text-align:center; color:var(--lp-paper); }
.lp-map__consent svg{ color:var(--lp-bronze); }
.lp-map__consent p{ margin:0; font-size:17px; }
.lp-map__consent small{ color:var(--lp-on-dark-muted); font-size:13px; max-width:300px; line-height:1.45; }
.lp-map__consent a, .lp-foot a.lp-foot__legal{ color:var(--lp-bronze); }
