/* =====================================================================
   AFB — Sistema de diseño compartido (estilo Mood Board / letterhead)
   Se usa en todas las hojas del sitio. Requiere las fuentes Montserrat
   y Playfair Display (cárgalas con <link> en el <head> de cada página).
   ===================================================================== */
:root{
  --teal:#229c9f;--teal-d:#1a7a7d;--blue:#d8e9f4;--white:#ffffff;
  --ink:#0e0e0f;--gray:#3a3b41;--gray-2:#6b6e77;
  --gold:#c9a227;--gold-2:#f0d98a;--gold-soft:rgba(201,162,39,.16);
  --line:#e5eaf0;--pad:clamp(26px,5vw,64px);
  --sans:'Montserrat',system-ui,'Segoe UI',sans-serif;
  --serif:'Playfair Display',Georgia,serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--blue);color:var(--gray);
  -webkit-font-smoothing:antialiased;line-height:1.55}
img{display:block;max-width:100%}
a{text-decoration:none;color:inherit}
.serif{font-family:var(--serif)}
.kicker{font-size:.68rem;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:var(--teal)}

/* Barra superior */
.topbar{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar .in{max-width:1200px;margin:0 auto;padding:0 26px;height:60px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.brand{display:flex;align-items:center;gap:11px;font-weight:800;color:var(--ink)}
.brand img{width:32px;height:32px;border-radius:8px;object-fit:cover}
.brand small{display:block;font-family:var(--serif);font-style:italic;font-weight:400;font-size:.7rem;color:var(--gray-2);letter-spacing:0;text-transform:none}
.back{font-size:.82rem;color:var(--gray-2);font-weight:600;white-space:nowrap}.back:hover{color:var(--teal)}

/* Menú de navegación (opcional) */
.navlinks{display:flex;gap:20px;flex-wrap:wrap}
.navlinks a{font-size:.84rem;font-weight:600;color:var(--gray-2)}
.navlinks a:hover,.navlinks a.active{color:var(--teal)}
@media(max-width:720px){.navlinks{display:none}}

/* Toggle Ordenador / Móvil */
.view-toggle{display:inline-flex;align-items:center;gap:3px;background:#fff;border:1px solid var(--line);border-radius:100px;padding:3px}
.view-toggle button{border:0;background:transparent;font:inherit;font-size:.76rem;font-weight:700;color:var(--gray-2);
  padding:7px 13px;border-radius:100px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:.18s}
.view-toggle button svg{width:15px;height:15px}
.view-toggle button.active{background:linear-gradient(135deg,var(--teal),var(--teal-d));color:#fff;box-shadow:0 6px 16px -8px rgba(34,156,159,.6)}
.view-toggle .sl{color:#c7cfda;font-weight:400;font-size:1rem}
@media(max-width:560px){.view-toggle button span{display:none}.view-toggle button{padding:8px 11px}}

/* Hoja */
.sheet{max-width:1200px;margin:30px auto;background:var(--white);border:1px solid var(--line);border-radius:6px;
  box-shadow:0 40px 90px -50px rgba(14,14,15,.35);padding:var(--pad);overflow:hidden;transition:max-width .4s ease}

/* Banner de marca (logo recortado, estilo letterhead) */
.brandbanner{display:block;background:transparent}
.brandbanner img{height:auto;display:block}
.brandbanner.top{width:100%;margin:0 0 26px;padding-bottom:16px;border-bottom:1px solid rgba(34,156,159,.42)}
.brandbanner.top img{width:100%;max-width:250px;margin:0}
.brandbanner.bottom{width:100%;margin:34px 0 0;padding-top:16px;border-top:1px solid rgba(34,156,159,.32)}
.brandbanner.bottom img{width:100%;max-width:180px;margin:0;opacity:.9}

/* Masthead */
.mast{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap}
.mast h1{font-family:var(--sans);font-weight:800;letter-spacing:-.025em;color:var(--ink);font-size:clamp(2.2rem,5.6vw,3.6rem);line-height:1;margin:12px 0 8px}
.mast .sub{font-family:var(--serif);font-style:italic;color:var(--gray);font-size:clamp(1.02rem,2.2vw,1.35rem);max-width:52ch}
.mast .count{font-family:var(--serif);font-size:clamp(2.4rem,7vw,4.4rem);color:var(--line);font-weight:600;line-height:.8}
.mast .count b{color:var(--teal)}

/* Barra decorativa con brillo */
.rulebar{height:5px;margin-top:26px;border-radius:4px;position:relative;overflow:hidden;
  background:linear-gradient(90deg,var(--teal) 0 30%,var(--gold) 30% 42%,var(--blue) 42% 100%)}
.rulebar::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);animation:afb-sweep 5.5s ease-in-out 1s infinite}
@keyframes afb-sweep{0%{transform:translateX(-100%)}55%,100%{transform:translateX(220%)}}

/* Letra griega decorativa (dorada con brillo) */
.glyph{position:relative;font-family:var(--serif);font-weight:600;line-height:.8;font-size:clamp(3rem,6vw,4.4rem);
  background:linear-gradient(115deg,#b8901f 0%,#f4e0a0 45%,#c9a227 60%,#f4e0a0 80%,#b8901f 100%);
  background-size:220% auto;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:afb-shimmer 5s linear infinite;filter:drop-shadow(0 2px 10px rgba(201,162,39,.28))}
@keyframes afb-shimmer{to{background-position:-220% center}}

/* Títulos de sección */
.h2{font-family:var(--sans);font-weight:800;color:var(--ink);letter-spacing:-.02em;
  font-size:clamp(1.5rem,3.4vw,2.2rem);line-height:1.12;position:relative;padding-bottom:14px;margin-bottom:14px}
.h2 span{font-family:var(--serif);font-weight:500;font-style:italic;color:var(--teal)}
.h2::after{content:"";position:absolute;left:0;bottom:0;width:56px;height:2px;background:linear-gradient(90deg,var(--teal),var(--gold))}
.h2.center{text-align:center}.h2.center::after{left:50%;transform:translateX(-50%)}

/* Botones */
.cta{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:.95rem;color:#fff;
  padding:13px 26px;border-radius:100px;background:linear-gradient(135deg,var(--teal),var(--teal-d));
  box-shadow:0 12px 26px -12px rgba(34,156,159,.6);transition:transform .18s,box-shadow .25s;position:relative;overflow:hidden;cursor:pointer;border:0}
.cta::after{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;transform:skewX(-20deg);
  background:linear-gradient(90deg,transparent,rgba(255,240,200,.55),transparent)}
.cta:hover{transform:translateY(-2px);box-shadow:0 0 0 1px rgba(201,162,39,.55),0 16px 34px -12px rgba(201,162,39,.45)}
.cta:hover::after{animation:afb-glint .8s ease}
@keyframes afb-glint{to{left:150%}}
.btn-out{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:.95rem;color:var(--ink);
  padding:13px 26px;border-radius:100px;border:1px solid var(--line);background:#fff;transition:.2s;cursor:pointer}
.btn-out:hover{border-color:var(--teal);color:var(--teal)}

/* Pie */
.foot{margin-top:20px;padding-top:20px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;
  font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gray-2)}
.foot a{color:var(--teal)}

/* Reveal al hacer scroll */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* Lightbox */
.frame img,.thumbs img,.shots img,.zoomable{cursor:zoom-in}
.lb{position:fixed;inset:0;z-index:120;background:rgba(8,10,12,.92);backdrop-filter:blur(5px);
  display:none;align-items:center;justify-content:center;padding:28px;cursor:zoom-out}
.lb.open{display:flex;animation:afb-lbin .22s ease}
@keyframes afb-lbin{from{opacity:0}to{opacity:1}}
.lb figure{max-width:96%;max-height:94%;display:flex;flex-direction:column;align-items:center;gap:12px;cursor:default}
.lb img{max-width:100%;max-height:82vh;border-radius:10px;box-shadow:0 40px 90px -20px rgba(0,0,0,.85);border:1px solid rgba(255,255,255,.12)}
.lb figcaption{font-family:var(--serif);font-style:italic;color:#d8e9f4;font-size:.9rem}
.lb .x{position:absolute;top:18px;right:24px;color:#fff;font-size:2.2rem;line-height:1;cursor:pointer;opacity:.75;background:none;border:0}
.lb .x:hover{opacity:1}
.lb .hint{position:absolute;bottom:20px;left:0;right:0;text-align:center;color:rgba(255,255,255,.5);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase}

/* Vista MÓVIL simulada (genérico) */
body.view-mobile{background:#c3d3e0}
body.view-mobile .sheet{--pad:20px;max-width:430px;border-radius:34px;border:9px solid #0e0e0f;box-shadow:0 50px 90px -30px rgba(14,14,15,.6)}
body.view-mobile .mast{flex-direction:column;align-items:flex-start}
body.view-mobile .mast .count{display:none}
body.view-mobile .brandbanner.top img{max-width:190px}
body.view-mobile .brandbanner.bottom img{max-width:150px}
body.view-mobile .two,body.view-mobile .three,body.view-mobile .four{grid-template-columns:1fr!important}

/* Rejillas utilitarias */
.two{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.three{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.four{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media(max-width:820px){.two,.three,.four{grid-template-columns:1fr}}

@media(prefers-reduced-motion:reduce){
  .glyph,.rulebar::after,.cta::after{animation:none!important}
  .reveal{opacity:1;transform:none;transition:none}
}

/* =====================================================================
   TEMA OSCURO — se activa con data-theme="dark" en <html>.
   Solo aplica cuando el atributo está presente; el modo claro es el default.
   ===================================================================== */
:root[data-theme="dark"]{
  --teal:#2fb6b9;--teal-d:#229c9f;--blue:#0e1216;--white:#171b21;
  --ink:#eef3f6;--gray:#c3ccd6;--gray-2:#8a94a2;
  --gold:#d9b23a;--gold-2:#f0d98a;--gold-soft:rgba(217,178,58,.18);
  --line:#272d36;
}
:root[data-theme="dark"] .topbar{background:rgba(18,22,27,.82)}
:root[data-theme="dark"] .btn-out{background:var(--white)}
:root[data-theme="dark"] .view-toggle{background:var(--white)}

/* Botón de tema (claro / oscuro) */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;
  border-radius:100px;border:1px solid var(--line);background:var(--white);color:var(--teal);cursor:pointer;transition:.18s}
.theme-toggle:hover{border-color:var(--teal);box-shadow:0 6px 16px -8px rgba(34,156,159,.5)}
.theme-toggle svg{width:19px;height:19px}
.theme-toggle .sun{display:none}
:root[data-theme="dark"] .theme-toggle .moon{display:none}
:root[data-theme="dark"] .theme-toggle .sun{display:block}

/* =====================================================================
   Rieles laterales — aprovechan el margen en escritorio amplio.
   Contacto (izquierda) y redes (derecha). Ocultos en móvil / hoja estrecha.
   ===================================================================== */
.side-rail{position:fixed;top:50%;transform:translateY(-50%);z-index:35;
  display:none;flex-direction:column;align-items:center;gap:14px}
.side-rail.left{left:calc((100vw - 1200px)/4 - 22px)}
.side-rail.right{right:calc((100vw - 1200px)/4 - 22px)}
@media(min-width:1380px){.side-rail{display:flex}}
body.view-mobile .side-rail{display:none!important}
.rail-label{writing-mode:vertical-rl;text-transform:uppercase;letter-spacing:.3em;
  font-size:.6rem;font-weight:700;color:var(--gray-2)}
.rail-ico{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:var(--white);border:1px solid var(--line);color:var(--ink);transition:.2s}
.rail-ico:hover{transform:translateY(-3px);box-shadow:0 12px 24px -10px rgba(14,14,15,.4)}
.rail-ico svg{width:19px;height:19px}
.rail-ico.wa:hover{color:#fff;border-color:transparent;background:#25d366}
.rail-ico.mail:hover{color:#fff;border-color:transparent;background:linear-gradient(135deg,var(--teal),var(--teal-d))}
.rail-ico.ig:hover{color:#fff;border-color:transparent;background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888)}
.rail-ico.fb:hover{color:#fff;border-color:transparent;background:#1877f2}
.rail-ico.yt:hover{color:#fff;border-color:transparent;background:#ff0000}
.rail-line{width:1px;height:38px;background:linear-gradient(var(--line),transparent)}
