/* ======= Base y variables ======= */
:root{
	--ol-blue:#00415b;
	--ol-pink:#da9189;
	--ol-text:#00415b;
	--ol-white:#fff;
	--ol-line:#e8e8e8;
	--ol-shadow:0 18px 50px rgba(0,0,0,.10);
	/* Aliases para compatibilidad (footer, homepage) */
	--olsen-blue:#00415b;
	--olsen-pink:#da9189;
	--olsen-white:#fff;
	/* Grises compartidos */
	--ol-gray-50:#f7fafc;
	--ol-gray-100:#edf2f7;
	--ol-gray-200:#e2e8f0;
	--ol-gray-300:#cbd5e0;
	--ol-gray-400:#a0aec0;
	--ol-gray-500:#718096;
	--ol-gray-600:#4a5568;
	--ol-gray-700:#2d3748;
	--ol-gray-800:#1a202c;
	--ol-gray-900:#171923;
	/* Sombras */
	--ol-shadow-sm:0 1px 3px 0 rgba(0,0,0,.1), 0 1px 2px 0 rgba(0,0,0,.06);
	--ol-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -2px rgba(0,0,0,.05);
	--ol-shadow-xl:0 20px 25px -5px rgba(0,0,0,.1), 0 10px 10px -5px rgba(0,0,0,.04);
	/* Estados */
	--ol-success:#10b981;
	--ol-warning:#f59e0b;
	--ol-error:#ef4444;
	/* Footer */
	--footer-bg:#f7f7f7;
	--footer-text:#3a3a3a;
	--footer-muted:#6b7a86;
	--footer-card:#fff;
  }
  *{box-sizing:border-box}
  html{margin:0;padding:0;overscroll-behavior:none}
  body{margin:0;padding:0;overflow-x:hidden}
  body{font-family:'Montserrat', system-ui, -apple-system, Segoe UI, Roboto, sans-serif; color:var(--ol-text); background:#fff; line-height:1.5; font-size:14px}
  img{max-width:100%;display:block}

  /* Custom scrollbar */
  @supports(scrollbar-color:auto){
    *{scrollbar-width:thin;scrollbar-color:rgba(0,65,91,.18) transparent}
  }
  ::-webkit-scrollbar{width:6px;height:6px}
  ::-webkit-scrollbar-track{background:transparent}
  ::-webkit-scrollbar-thumb{background:rgba(0,65,91,.16);border-radius:100px}
  ::-webkit-scrollbar-thumb:hover{background:rgba(0,65,91,.32)}

  /* Page enter animation */
  @keyframes pageEnter{
	from{opacity:0;transform:translateY(24px)}
	to{opacity:1;transform:translateY(0)}
  }
  #main-content{animation:pageEnter .5s ease both}
  @media(prefers-reduced-motion:reduce){
	#main-content{animation:none}
  }

/* Botón genérico */
.ol-btn{
	display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
	padding:.55rem .9rem;border-radius:8px;border:1px solid transparent;
	font:500 14px/1 'Montserrat',sans-serif; text-transform:uppercase; letter-spacing:.06em;
	cursor:pointer;text-decoration:none;transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
  }
  .ol-btn--primary{background:var(--ol-pink);color:#fff;font-family:'Montserrat', sans-serif;
    font-weight:700;font-size:11px}
  .ol-btn--primary:hover{transform:translateY(-1px)}
  .ol-btn--mobile{padding:.45rem .7rem;border-radius:8px;font-family:'Montserrat', sans-serif;
    font-weight:700;font-size:10px;transition:transform .15s ease, filter .15s ease}
  .ol-btn--mobile:active{transform:scale(.95)}
  
  /* ===== NAVBAR 2 (fondo azul fijo, mayúsculas) ===== */
  .ol-nav2{
	position:sticky; top:0; z-index:1000;
	color:#fff;
	transition:background .35s ease, box-shadow .35s ease;
  }
  .ol-nav2--solid{
	background:var(--ol-blue);
	box-shadow:var(--ol-shadow);
  }
  /* Transparent start (homepage) */
  .ol-nav2--transparent{
	position:fixed; top:var(--topbar-h, 0px); left:0; right:0;
	background:transparent;
	box-shadow:none;
	transition:background .35s ease, box-shadow .35s ease, top .3s ease;
  }
  .ol-nav2--transparent.is-scrolled{
	background:var(--ol-blue);
	box-shadow:var(--ol-shadow);
  }
  .ol-nav2__bar{
	max-width:1200px;margin:0 auto;padding:.7rem 1rem;
	display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;
  }
  .ol-nav2__brand{display:inline-flex;align-items:center}
  .ol-nav2__logo{height:30px}
  
  /* Desktop menu */
  .ol-nav2__menu{display:flex;gap:1.2rem;justify-self:center;font-family:'Montserrat', sans-serif;
    font-weight:800;}
  .ol-nav2__link{
	position:relative;color:#fff;text-decoration:none;
	font-family:'Montserrat', sans-serif;font-size:11.5px;
  font-weight:700; letter-spacing:.06em; text-transform:uppercase; opacity:.75;
  transition: opacity .2s ease;
  }
  .ol-nav2__link:hover{opacity:1}
  .ol-nav2__link.is-active{opacity:1}
  .ol-nav2__link::after{
	content:""; position:absolute; left:50%; right:50%; bottom:-8px; height:2px;
	background:var(--ol-pink); border-radius:2px;
	transition: left .25s ease, right .25s ease;
  }
  .ol-nav2__link.is-active::after,
  .ol-nav2__link:hover::after{
	left:0; right:0;
  }
  .ol-nav2__cta{display:flex;gap:.6rem;align-items:center}

  /* Cart icon */
  .ol-nav2__cart{
	position:relative;display:inline-flex;align-items:center;justify-content:center;
	color:#fff;padding:.5rem;border-radius:8px;text-decoration:none;
	border:none;background:transparent;cursor:pointer;
	transition:background .2s ease, transform .2s ease;
  }
  .ol-nav2__cart:hover{background:#ffffff1a;transform:scale(1.05)}
  .ol-nav2__cart svg{width:18px;height:18px;stroke-width:2.5}
  .ol-nav2__cart-count{
	position:absolute;top:0px;right:-2px;
	min-width:14px;height:14px;padding:0 3px;
	background:var(--ol-pink);color:#fff;
	font-family:'Montserrat',sans-serif;font-size:9px;font-weight:700;
	border-radius:8px;display:flex;align-items:center;justify-content:center;
	line-height:1;
  }
  .ol-nav2__cart-count:empty{display:none}

  /* Animación de pulso para el carrito */
  .ol-nav2__cart.cart-pulse{
	animation:cartPulse .6s ease;
  }
  @keyframes cartPulse{
	0%{transform:scale(1)}
	25%{transform:scale(1.15)}
	50%{transform:scale(1.05)}
	75%{transform:scale(1.1)}
	100%{transform:scale(1)}
  }
  .ol-nav2__cart-count.count-pop{
	animation:countPop .5s cubic-bezier(0.68, -0.55, 0.27, 1.55);
  }
  @keyframes countPop{
	0%{transform:scale(1)}
	50%{transform:scale(1.3)}
	100%{transform:scale(1)}
  }

  /* ===== MINI-CART DROPDOWN ===== */
  .mini-cart__wrapper{position:relative}
  .mini-cart{
    position:absolute;top:calc(100% + 12px);right:-1rem;width:340px;
    background:#fff;border-radius:16px;z-index:1001;overflow:hidden;
    box-shadow:0 24px 64px rgba(0,0,0,.18), 0 0 0 1px rgba(0,0,0,.04);
    transform-origin:top right;
  }
  .mini-cart[hidden]{display:none}
  .mini-cart::before{
    content:'';position:absolute;top:-6px;right:1.5rem;
    width:12px;height:12px;background:#fff;transform:rotate(45deg);
    box-shadow:-1px -1px 0 rgba(0,0,0,.04);
  }
  .mini-cart__header{
    display:flex;align-items:center;justify-content:space-between;
    padding:1rem 1.25rem;border-bottom:1px solid #f1f5f9;
  }
  .mini-cart__title{
    font:700 .75rem/1 'Montserrat',sans-serif;text-transform:uppercase;
    letter-spacing:.1em;color:#0f172a;
  }
  .mini-cart__close{
    background:none;border:none;font-size:1.3rem;line-height:1;
    color:#94a3b8;cursor:pointer;padding:0 .2rem;transition:color .2s;
  }
  .mini-cart__close:hover{color:#334155}
  .mini-cart__items{max-height:280px;overflow-y:auto;padding:.25rem 0}
  .mini-cart__item{
    display:grid;grid-template-columns:44px 1fr auto auto;gap:.6rem;
    align-items:center;padding:.65rem 1.25rem;
    transition:opacity .3s ease,transform .3s ease,background .15s ease;
  }
  .mini-cart__item:hover{background:#f8fafc}
  .mini-cart__item.removing{opacity:0;transform:translateX(8px);max-height:0;padding:0 1.25rem;overflow:hidden}
  .mini-cart__remove{
    background:none;border:none;cursor:pointer;padding:.15rem;
    display:flex;align-items:center;justify-content:center;
    color:#cbd5e1;opacity:0;transition:opacity .2s,color .2s;
  }
  .mini-cart__item:hover .mini-cart__remove{opacity:1}
  .mini-cart__remove:hover{color:#94a3b8}
  .mini-cart__remove svg{width:12px;height:12px}
  .mini-cart__img{
    width:44px;height:44px;object-fit:cover;border-radius:10px;
    background:#f8fafc;
  }
  .mini-cart__detail{min-width:0}
  .mini-cart__name{
    display:block;font:600 .78rem/1.3 'Montserrat',sans-serif;
    color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .mini-cart__meta{font:400 .72rem/1.3 'Montserrat',sans-serif;color:#64748b}
  .mini-cart__price{font:600 .8rem/1 'Montserrat',sans-serif;color:#0f172a;white-space:nowrap}
  .mini-cart__footer{border-top:1px solid #f1f5f9;padding:1rem 1.25rem}
  .mini-cart__total{
    display:flex;justify-content:space-between;
    font:700 .85rem/1 'Montserrat',sans-serif;color:#0f172a;margin-bottom:.85rem;
  }
  .mini-cart__actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
  .mini-cart__btn{
    display:inline-flex;align-items:center;justify-content:center;
    padding:.7rem .5rem;font:600 .7rem/1 'Montserrat',sans-serif;
    text-transform:uppercase;letter-spacing:.06em;text-decoration:none;
    border:none;border-radius:10px;cursor:pointer;transition:all .18s ease;
  }
  .mini-cart__btn--primary{background:#00415b;color:#fff}
  .mini-cart__btn--primary:hover{background:#00526f;transform:translateY(-1px)}
  .mini-cart__btn--ghost{
    background:#f8fafc;color:#1e293b;
    border:1.5px solid transparent;
  }
  .mini-cart__btn--ghost:hover{border-color:#cbd5e1}
  .mini-cart__empty{padding:2rem 1.25rem;text-align:center}
  .mini-cart__empty p{font:400 .85rem/1.5 'Montserrat',sans-serif;color:#64748b;margin-bottom:1rem}
  .mini-cart__btn:focus-visible,.mini-cart__close:focus-visible{outline:3px solid var(--ol-blue,#00415b);outline-offset:2px}
  @keyframes miniCartIn{
    from{opacity:0;transform:scale(.97) translateY(-6px)}
    to{opacity:1;transform:scale(1) translateY(0)}
  }
  @media(prefers-reduced-motion:no-preference){
    .mini-cart:not([hidden]){animation:miniCartIn .28s cubic-bezier(.22,.61,.36,1) both}
  }
  @media(max-width:980px){
    .mini-cart{display:none!important}
  }

  /* Mobile actions row (CTA rosa + hamburguesa) */
  .ol-nav2__mobileActions{display:none;align-items:center;gap:.5rem;margin-left:auto}
  .ol-nav2__toggle{background:#ffffff1a;border:0;color:#fff;padding:.5rem;border-radius:10px;display:inline-flex;cursor:pointer;transition:background .2s ease}
  .ol-nav2__toggle:hover{background:#ffffff26}
  .ol-nav2__toggle:focus-visible{outline:2px solid #fff;outline-offset:2px}
  .ol-nav2__hamburger{display:flex;flex-direction:column;gap:4px;width:18px;justify-content:center;position:relative}
  .ol-nav2__hamburger span{display:block;height:2px;width:100%;background:#fff;border-radius:2px;transition:transform .25s ease, opacity .2s ease;flex-shrink:0}
  .ol-nav2.is-open .ol-nav2__hamburger span:nth-child(1){transform:translateY(6px) rotate(45deg)}
  .ol-nav2.is-open .ol-nav2__hamburger span:nth-child(2){opacity:0;transform:scaleX(0)}
  .ol-nav2.is-open .ol-nav2__hamburger span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
  
  /* Responsive switches */
  @media (max-width:980px){
	.ol-nav2__menu, .ol-nav2__cta{display:none}
	.ol-nav2__mobileActions{display:inline-flex;gap:.4rem}
	.ol-nav2__bar{padding:.55rem .85rem;grid-template-columns:auto 1fr;gap:.5rem}
	.ol-nav2__logo{height:26px}
	.ol-nav2__cart{padding:.35rem}
	.ol-nav2__cart svg{width:18px;height:18px}
	.ol-nav2__cart-count{min-width:14px;height:14px;font-size:8px;top:-2px;right:-4px}
	.ol-nav2__toggle{padding:.4rem;border-radius:8px}
	.ol-nav2__hamburger{width:17px;gap:3.5px}
	.ol-nav2__hamburger span{height:1.5px}
  }
  
  /* Overlay clicable */
  .ol-nav2__overlay{
	position:fixed; inset:0; z-index:999;
	background:rgba(0,20,30,.4); backdrop-filter:blur(2px);
	opacity:0; pointer-events:none; transition:opacity .25s ease;
  }
  .ol-nav2.is-open .ol-nav2__overlay{opacity:1; pointer-events:auto}
  
  /* Drop-down que cae desde la barra */
  .ol-nav2__drop{
	position:absolute; left:0; right:0; top:100%;
	z-index:1000; margin-inline:auto; max-width:1200px; padding:0 .6rem;
	transform-origin:top center; transform:scaleY(0.92) translateY(-8px);
	opacity:0; pointer-events:none;font-family:'Montserrat', sans-serif;
	border-radius:16px; overflow:hidden;
	box-shadow:0 16px 40px rgba(0,0,0,.12);
  }
  .ol-nav2.is-open .ol-nav2__drop{opacity:1; transform:scaleY(1) translateY(0); pointer-events:auto;}
  
  .ol-nav2__dropNav{
	background:#fff; color:var(--ol-text);
	display:grid; gap:0; padding:.4rem 0 0;
  }
  .ol-nav2__dropLink{
	display:flex; align-items:center; gap:.65rem;
	padding:.85rem 1.1rem; text-decoration:none;
	font:700 .8rem/1 'Montserrat',sans-serif; letter-spacing:.06em; text-transform:uppercase;
	color:var(--ol-blue); transition:background .15s ease, color .15s ease;
	border-bottom:1px solid rgba(0,0,0,.04);
  }
  .ol-nav2__dropLink svg{color:var(--ol-pink);flex-shrink:0;opacity:.7}
  .ol-nav2__dropLink:active{background:#f0f4f8}
  .ol-nav2__dropLink.is-active{color:var(--ol-pink);background:#fdf5f4}
  .ol-nav2__dropLink.is-active svg{opacity:1}
  .ol-nav2__dropSep{height:1px;background:rgba(0,0,0,.06);margin:.2rem 1.1rem}
  .ol-nav2__dropLink--account{color:var(--ol-pink) !important;font-weight:700}
  .ol-nav2__dropLink--account svg{color:var(--ol-pink) !important;opacity:1 !important}
  .ol-nav2__dropFooter{
	background:#fff; border-radius:0 0 16px 16px;
	padding:.75rem 1rem; display:flex; align-items:center; justify-content:space-between;
	border-top:1px solid var(--ol-line);
  }
  .ol-nav2__dropCta{
	display:inline-flex;align-items:center;gap:.5rem;
	padding:.65rem 1.2rem;border-radius:10px;border:none;
	background:var(--ol-pink);color:#fff;
	font:700 .75rem/1 'Montserrat',sans-serif;letter-spacing:.06em;text-transform:uppercase;
	cursor:pointer;transition:transform .15s ease, filter .15s ease;
  }
  .ol-nav2__dropCta:active{transform:scale(.97)}
  .ol-nav2__dropCta svg{opacity:.85}
  .ol-nav2__dropSocial{display:flex;gap:.6rem;align-items:center}
  .ol-nav2__dropSocial a{
	color:var(--ol-blue);opacity:.35;display:inline-flex;
	transition:opacity .2s ease, color .2s ease;
  }
  .ol-nav2__dropSocial a:active{opacity:.7}
  @media (prefers-reduced-motion: no-preference){
	.ol-nav2__drop{transition:transform .22s cubic-bezier(.2,.8,.2,1), opacity .18s ease;}
	.ol-nav2__overlay{transition:opacity .18s ease;}
  }

/* HERO */

.hero{
  position:relative; isolation:isolate;
  min-height:72vh; display:grid; place-items:center;
  background:var(--hero-bg) center/cover no-repeat;
  color:#fff; text-align:center;
}
.hero::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(to bottom, rgba(0,0,0,.25), rgba(0,0,0,.25));
}
.hero__inner{padding:3rem 1rem}
.hero h1{
  font-size: clamp(2rem, 5vw, 3.5rem);
  letter-spacing:.03em; margin:0 0 1rem; font-weight:500;
}
.hero__cta{
  margin-top:1.25rem; display:flex; gap:.75rem; justify-content:center; flex-wrap:wrap;
}
.btn{
  display:inline-block; border-radius:8px; padding:0.7rem 1.2rem;font-size:14px;
  text-decoration:none; font-weight:500; transition:transform .15s ease, background .2s ease, color .2s ease;
}
.btn--primary{background:var(--ol-pink,#da9189); color:#fff; border-color:var(--ol-pink,#da9189)}
.btn--primary:hover{filter:brightness(.92); transform:translateY(-2px); color:#fff}
.btn--ghost{border:2px solid #fff; color:#fff}
.btn--ghost:hover{transform:translateY(-2px); background:#ffffff22}

/* INTRO corto */
.intro{
  max-width:980px; margin:4.5rem auto; padding:0 1rem; text-align:center;
}
.intro h2{text-transform: uppercase;font-weight:500;font-size:1.8rem; margin:.25rem 0 1rem; color:var(--olsen-blue)}
.intro p{color:#00415b; line-height:1.6; font-size:0.95rem}

/* sandwiches (grid limpio) */
.sandwiches{
  max-width:1200px; margin:4.5rem auto; padding:0 1rem;
}
.sandwiches__grid{
  display:grid; gap:14px;
  grid-template-columns:repeat(2,1fr);
}
@media(min-width:768px){ .sandwiches__grid{grid-template-columns:repeat(3,1fr);} }
@media(min-width:1100px){ .sandwiches__grid{grid-template-columns:repeat(6,1fr);} }

.card-img{
  position:relative; border-radius:10px; overflow:hidden; min-height:180px;
  background:#eaeaea;
}
.card-img img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .35s ease;}
.card-img:hover img{transform:scale(1.05)}
.card-img__label{
  position:absolute; inset:auto 0 0 0; padding:.75rem .9rem;font-size:12px;
  color:#fff; font-weight:500; text-align:center; text-transform:uppercase; letter-spacing:.05em;
  background:linear-gradient(to top, rgba(0,65,91,.98), rgba(0,65,91,0));
}

/* CTA “ver sandwiches” */
.cta-line{
  display:flex; justify-content:center; margin:2.5rem 0 0 0;
}
.btn--outline{
  border:2px solid var(--olsen-blue); color:var(--olsen-blue);
  background:transparent;
}
.btn--outline:hover{background:var(--olsen-blue); color:#fff}

/* BLOQUES visuales (Tiendas / Catering / Franquicias) */
.blocks{
  max-width:1200px; margin:2rem auto; padding:0 1rem; display:grid; gap:24px;
}
@media(min-width:900px){ .blocks{grid-template-columns:repeat(3,1fr);} }

.block{
  background:#fff; border:1px solid #eee; border-radius:12px; overflow:hidden;
  display:flex; flex-direction:column; height:100%;
}
.block__media{
  aspect-ratio: 16/10; background:#ddd; overflow:hidden;
}
.block__media img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .35s ease;}
.block:hover .block__media img{transform:scale(1.04)}
.block__body{padding:1rem}
.block__title{margin:.25rem 0 .5rem; font-size:1.15rem; font-weight:500; color:var(--olsen-blue); text-align:center}
.block__text{color:#00415b; text-align:center; min-height:3.2em}
.block__cta{display:flex; justify-content:center; padding:1rem 1rem 1.2rem}


/* Banner Cookies – estilo Olsen */
.ol-cookie{
  position:fixed; inset:auto 0 0 0; z-index:9999; background:#fff;
  border-top:1px solid var(--ol-line); box-shadow:0 -18px 40px rgba(0,0,0,.08);
  font-family:'Montserrat',sans-serif; color:var(--ol-text);
}
.ol-cookie__inner{
  max-width:1100px; margin:0 auto; padding:14px 1rem; display:flex; gap:1rem; align-items:center; justify-content:space-between;
}
.ol-cookie__text strong{ display:block; color:var(--ol-blue); font-family:'Montserrat',sans-serif; text-transform:uppercase; letter-spacing:.04em; font-weight:800; font-size:.9rem }
.ol-cookie__text p{ margin:.35rem 0 .4rem; max-width:760px }
.ol-cookie__link{
  appearance:none; border:1px solid var(--ol-blue); background:#fff; color:var(--ol-blue);
  border-radius:999px; padding:.35rem .7rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; font-size:.7rem; cursor:pointer;
}
.ol-cookie__actions{ display:flex; gap:.5rem; flex-wrap:wrap }
.ol-cookie .btn, .ol-cookie__panel .btn{ background:var(--ol-blue); color:#fff; border:1px solid var(--ol-blue); border-radius:10px; padding:.55rem .9rem; font:700 .75rem 'Montserrat',sans-serif; text-transform:uppercase; letter-spacing:.04em; cursor:pointer }
.ol-cookie .btn.btn--ghost, .ol-cookie__panel .btn.btn--ghost{ background:#fff; color:var(--ol-blue) }

/* Panel de ajustes (modal simple) */
.ol-cookie__panel{ position:fixed; inset:0; display:grid; place-items:end center; background:rgba(0,0,0,.35); padding:1rem }
.ol-cookie__panel[hidden]{ display:none }
.ol-cookie__panelBox{
  width:min(680px, 100%); background:#fff; border:1px solid var(--ol-line); border-radius:16px; padding:1rem;
  box-shadow:0 20px 60px rgba(0,0,0,.15); animation: olSlideUp .25s ease;
  font-family:'Montserrat',sans-serif; color:var(--ol-text);
}
@keyframes olSlideUp{ from{ transform:translateY(20px); opacity:0 } to{ transform:none; opacity:1 } }
.ol-cookie__panelBox h3{
  margin:.2rem 0 .25rem; color:var(--ol-blue); font:700 1rem 'Montserrat',sans-serif; text-transform:uppercase; letter-spacing:.04em;
}
.ol-cookie__row{
  display:flex; align-items:center; justify-content:space-between; gap:1rem; border:1px solid var(--ol-line);
  border-radius:12px; padding:.7rem .8rem; background:#fff; margin:.5rem 0;
}
.ol-cookie__row .small{ color:var(--ol-blue); margin:.15rem 0 0; font-size:.9rem }
.ol-cookie__panelActions{ display:flex; gap:.6rem; justify-content:flex-end; margin-top:.6rem }

/* Switch */
.switch{ position:relative; display:inline-block; width:46px; height:26px }
.switch input{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0 }
.switch span{
  position:absolute; inset:0; background:#e5e7eb; border-radius:999px; transition:.2s;
}
.switch span::after{
  content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; box-shadow:0 2px 6px rgba(0,0,0,.2);
  transition:.2s;
}
.switch input:focus-visible + span{ outline:3px solid var(--ol-blue); outline-offset:2px }
.switch input:checked + span{ background:var(--ol-blue) }
.switch input:checked + span::after{ transform:translateX(20px) }

@media (max-width:720px){
  .ol-cookie__inner{ flex-direction:column; align-items:flex-start }
  .ol-cookie__actions{ width:100% }
  .ol-cookie .btn, .ol-cookie .btn.btn--ghost{ flex:1; text-align:center }
}
/* FOOTER simple */
/* ====== FOOTER ====== */
.site-footer{
  background: var(--ol-blue);
  color: rgba(255,255,255,.8);
  margin-top: 0;
  border-top: none;
  font-family: 'Montserrat', sans-serif;
}

/* Top section */
.site-footer__top{
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.footer-grid{
  max-width: 1200px;
  margin: 0 auto;
  padding: clamp(2.5rem, 5vw, 4rem) 1.5rem;
  display: grid;
  gap: 2.5rem;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;
}
@media (max-width: 900px){
  .footer-grid{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px){
  .footer-grid{ grid-template-columns: 1fr; gap: 2rem; }
}

/* Brand column */
.footer-brand__logo{
  display: block;
  text-decoration: none;
}
.footer-brand__logo img{
  width: 90px;
  height: auto;
  display: block;
  opacity: .75;
}
.footer-brand__desc{
  font-size: .85rem;
  line-height: 1.7;
  color: rgba(255,255,255,.5);
  margin: .8rem 0 1.2rem;
  padding: 0;
}

/* Social icons */
.footer-social{ display: flex; gap: .5rem; }
.footer-social__icon{
  width: 38px; height: 38px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: rgba(255,255,255,.7);
  text-decoration: none;
  transition: all .25s ease;
}
.footer-social__icon svg{ width: 18px; height: 18px; }
.footer-social__icon:hover{
  background: var(--ol-pink);
  border-color: var(--ol-pink);
  color: #fff;
  transform: translateY(-2px);
}

/* Nav columns */
.footer-col h4{
  font-family: 'Montserrat', sans-serif;
  margin: 0 0 1rem;
  color: #fff;
  font-weight: 700;
  font-size: .7rem;
  text-transform: uppercase;
  letter-spacing: .12em;
}
.footer-col ul{
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: .6rem;
}
.footer-col a{
  color: rgba(255,255,255,.55);
  text-decoration: none;
  font-weight: 500;
  font-size: .85rem;
  transition: color .2s ease;
}
.footer-col a:hover{
  color: #fff;
}

/* ====== ACCESIBILIDAD (WCAG 2.1 AA) ====== */
.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;
}
/* Skip-to-content link */
.skip-link{
  position:fixed; top:-100%; left:50%; transform:translateX(-50%);
  z-index:99999; padding:.75rem 1.5rem;
  background:var(--ol-blue); color:#fff;
  font-weight:700; font-size:.9rem; text-decoration:none;
  border-radius:0 0 8px 8px; box-shadow:0 4px 12px rgba(0,0,0,.3);
  transition:top .2s ease;
}
.skip-link:focus{
  top:0; outline:3px solid var(--ol-pink); outline-offset:2px;
}
/* Focus visible global */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible{
  outline:3px solid var(--ol-blue);
  outline-offset:2px;
}
/* Focus on dark backgrounds */
.ol-nav2 a:focus-visible,
.ol-nav2 button:focus-visible,
.site-footer a:focus-visible,
.page-hero a:focus-visible{
  outline-color:#fff;
}
/* prefers-reduced-motion — desactivar todas las animaciones */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
    scroll-behavior:auto !important;
  }
}
/* ====== FOOTER BOTTOM ====== */
.site-footer__bottom{
  padding: 1.2rem 0;
  font-family: 'Montserrat', sans-serif;
  font-size: .75rem;
}
.site-footer__bottom .bottom-inner{
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: .6rem 1.5rem;
}
.site-footer__bottom small{
  font-size: .75rem;
  color: rgba(255,255,255,.35);
}
.site-footer__bottom .bottom-links{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 1.2rem;
  flex-wrap: wrap;
}
.site-footer__bottom .bottom-links a{
  color: rgba(255,255,255,.35);
  font-weight: 400;
  font-size: .75rem;
  text-decoration: none;
  transition: color .2s ease;
}
.site-footer__bottom .bottom-links a:hover{
  color: rgba(255,255,255,.8);
}

/* ====== SHARED PAGE HERO (tienda, carrito, checkout) ====== */
.page-hero{
  color:#fff; padding:clamp(2rem, 5vw, 3rem) 1rem; text-align:center;
  position:relative; margin-bottom:2rem;
}
.page-hero::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,.25) 0%, rgba(0,0,0,.45) 100%);
}
.page-hero__inner{
  max-width:800px; margin:0 auto; position:relative; z-index:1;
}
.page-hero h1{
  font-size:clamp(1.6rem, 5vw, 2.5rem); font-weight:700; margin:0 0 .75rem;
  text-shadow:0 2px 4px rgba(0,0,0,.3);
}
.page-hero p{
  font-size:clamp(.85rem, 2.5vw, 1.1rem); opacity:.95; max-width:900px; margin:0 auto;
}

/* ====== SECTION HERO (landing pages) ====== */
.section-hero{
  position:relative; color:#fff; text-align:center; overflow:hidden;
  display:flex; align-items:center; justify-content:center;
}
.section-hero::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,.28) 0%, rgba(0,0,0,.50) 100%);
}
.section-hero__inner{
  position:relative; z-index:1; max-width:1000px; margin:0 auto;
  padding:clamp(3rem, 6vw, 4rem) clamp(1rem, 3vw, 1.5rem);
}
.section-hero h1{
  margin:0 0 .5rem;
  font:800 clamp(1.6rem, 5vw, 3.2rem) 'Montserrat', sans-serif;
  letter-spacing:.03em; text-transform:uppercase;
}
.section-hero p{
  max-width:760px; margin:0 auto 1.2rem;
  font-size:clamp(0.9rem, 2.5vw, 1.05rem); opacity:.95;
}
.section-hero__cta{
  margin-top:1.25rem; display:flex; gap:.75rem; justify-content:center; flex-wrap:wrap;
}

/* ====== SHARED QUANTITY CONTROLS (tienda, carrito) ====== */
.quantity-controls{
  display:flex; align-items:center; gap:.3rem;
  background:#fff; padding:.15rem; border-radius:16px;
  flex-shrink:0;
}
.quantity-btn{
  width:24px; height:24px; border:none; background:transparent;
  border-radius:50%; color:var(--ol-blue); cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  font-weight:600; font-size:.9rem; position:relative;
  overflow:hidden; transition:all .2s ease;
}
.quantity-btn:hover{transform:scale(1.1); background:rgba(0,65,91,.1)}
.quantity-btn:active{transform:scale(.95)}
.quantity-input{
  width:45px; height:24px; text-align:center; border:none;
  background:transparent; font-weight:600; font-size:.8rem;
  color:#1e293b; -moz-appearance:textfield; transition:all .2s ease;
  font-family:'Montserrat', sans-serif;
}
.quantity-input::-webkit-outer-spin-button,
.quantity-input::-webkit-inner-spin-button{-webkit-appearance:none; margin:0}
.quantity-input:focus{outline:none; background:#f8fafc; border-radius:6px; transform:scale(1.02)}

/* ====== SHARED NOTIFICATION ====== */
.notification{
  position:fixed; top:1rem; right:1rem;
  background:var(--ol-success); color:#fff;
  padding:.75rem 1rem; border-radius:12px;
  box-shadow:0 8px 32px rgba(0,0,0,.15); z-index:1001;
  transform:translateX(100%) scale(.8); opacity:0;
  transition:all .4s cubic-bezier(.4,0,.2,1);
  font-size:.8rem; font-weight:500; max-width:300px;
  word-wrap:break-word; backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.1);
}
.notification.show{
  animation:notificationSlideIn .4s cubic-bezier(.4,0,.2,1) forwards;
}
.notification.error{background:var(--ol-error)}
.notification.success{background:linear-gradient(135deg, var(--ol-success), #059669)}
@keyframes notificationSlideIn{
  0%{transform:translateX(100%) scale(.8); opacity:0}
  60%{transform:translateX(-5%) scale(1.02); opacity:.9}
  100%{transform:translateX(0) scale(1); opacity:1}
}
@media(max-width:768px){
  .notification{top:.5rem; right:.5rem; left:.5rem; max-width:none; font-size:.75rem; padding:.6rem .8rem}
}

/* ====== SHARED MODAL ====== */
.modal{
  display:none; position:fixed; z-index:9999;
  left:0; top:0; width:100%; height:100%;
  background-color:rgba(0,0,0,.5); backdrop-filter:blur(4px);
}
.modal-content{
  background-color:var(--ol-white); margin:5% auto; padding:0;
  border-radius:16px; width:90%; max-width:500px;
  box-shadow:var(--ol-shadow-xl); position:relative; z-index:10000;
}
.modal-header{
  background:var(--ol-blue); color:white; padding:1.5rem;
  border-radius:16px 16px 0 0; display:flex;
  justify-content:space-between; align-items:center;
}
.modal-header h3{margin:0; font-size:1.25rem; font-weight:600}
.modal-close{
  background:none; border:none; color:white; font-size:1.5rem;
  cursor:pointer; padding:0; width:30px; height:30px;
  display:flex; align-items:center; justify-content:center;
  border-radius:50%; transition:background-color .2s ease;
}
.modal-close:hover{background-color:rgba(255,255,255,.2)}
.modal-body{padding:1.5rem}
.modal-footer{
  padding:1rem 1.5rem; background:#f8f9fa;
  border-radius:0 0 16px 16px; text-align:right;
}
.btn-modal-close{
  background:var(--ol-blue); color:white; border:none;
  padding:.75rem 1.5rem; border-radius:8px; font-weight:600;
  cursor:pointer; transition:all .2s ease;
}
.btn-modal-close:hover{background:var(--ol-pink); transform:translateY(-1px)}
@media(max-width:480px){
  .modal-content{width:95%; margin:10% auto}
  .modal-header, .modal-body, .modal-footer{padding:.8rem}
}

/* ====== SHARED SPINNER ====== */
@keyframes olcSpin{to{transform:rotate(360deg)}}
.olc-spinner{
  display:inline-block; width:20px; height:20px;
  border:2px solid rgba(255,255,255,.3);
  border-top-color:#fff;
  border-radius:50%;
  animation:olcSpin .6s linear infinite;
}
.olc-spinner--dark{
  border-color:rgba(0,65,91,.2);
  border-top-color:var(--ol-blue);
}

/* ====== BTN LOADING STATE ====== */
.btn--loading{
  position:relative;
  color:transparent !important;
  pointer-events:none;
}
.btn--loading .olc-spinner{
  position:absolute;
  inset:0;
  margin:auto;
}

/* ====== SUCCESS OVERLAY (full-viewport celebration) ====== */
@keyframes olcOverlayIn{
  from{opacity:0}
  to{opacity:1}
}
.olc-success-overlay{
  position:fixed; inset:0; z-index:9999;
  background:linear-gradient(160deg, rgba(255,255,255,.96), rgba(248,249,250,.96));
  backdrop-filter:blur(24px);
  -webkit-backdrop-filter:blur(24px);
  display:flex; align-items:center; justify-content:center;
  overflow-y:auto; padding:2rem 1rem;
  animation:olcOverlayIn .45s ease both;
}
.olc-success-overlay__close{
  position:fixed; top:1.2rem; right:1.2rem; z-index:10001;
  background:var(--ol-blue); color:#fff;
  border:none; border-radius:50%; width:44px; height:44px;
  font-size:1.4rem; line-height:1; cursor:pointer;
  display:grid; place-content:center;
  box-shadow:0 4px 16px rgba(0,0,0,.15);
  transition:background .2s, transform .15s;
}
.olc-success-overlay__close:hover{background:var(--ol-pink); transform:scale(1.08)}

/* ====== ANIMATED CHECKMARK ====== */
@keyframes olcCheckScale{
  0%{transform:scale(0); opacity:0}
  50%{transform:scale(1.15)}
  100%{transform:scale(1); opacity:1}
}
@keyframes olcCheckCircle{
  0%{stroke-dashoffset:166}
  100%{stroke-dashoffset:0}
}
@keyframes olcCheckTick{
  0%{stroke-dashoffset:48}
  100%{stroke-dashoffset:0}
}
.olc-success__check{
  width:80px; height:80px;
  margin:0 auto 1.5rem;
  animation:olcCheckScale .5s ease both;
}
.olc-success__check circle{
  fill:none; stroke:var(--ol-success,#10b981);
  stroke-width:2; stroke-linecap:round;
  stroke-dasharray:166; stroke-dashoffset:166;
  animation:olcCheckCircle .6s .3s ease forwards;
}
.olc-success__check path{
  fill:none; stroke:var(--ol-success,#10b981);
  stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:48; stroke-dashoffset:48;
  animation:olcCheckTick .4s .7s ease forwards;
}

/* ====== SUCCESS CONTENT ====== */
.olc-success{
  text-align:center;
  padding:1rem 0;
  max-width:520px; width:100%;
}
.olc-success__title{
  font-family:var(--ol-heading,'Montserrat',sans-serif);
  font-size:1.75rem; font-weight:700;
  color:var(--ol-blue);
  margin:0 0 .5rem;
}
.olc-success__subtitle{
  font-size:1rem; color:var(--ol-text-light,#6b7a86);
  margin:0 0 2rem; line-height:1.5;
}
.olc-success__card{
  background:var(--ol-bg-light,#f8f9fa);
  border:1px solid rgba(0,0,0,.06);
  border-radius:12px;
  padding:1.5rem;
  margin:0 auto 1rem;
  text-align:left;
}
.olc-success__card-title{
  font-weight:700; font-size:.85rem;
  text-transform:uppercase; letter-spacing:.04em;
  color:var(--ol-blue); margin:0 0 1rem;
}
.olc-success__dl{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:.5rem 1rem;
  font-size:.9rem;
}
.olc-success__dl dt{color:var(--ol-text-light,#6b7a86); font-weight:500}
.olc-success__dl dd{margin:0; color:var(--ol-text,#2c3e50); font-weight:600}
.olc-success__actions{
  display:flex; justify-content:center;
  gap:1rem; margin-top:2rem; flex-wrap:wrap;
}
.olc-success__actions a,
.olc-success__actions button{
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.75rem 1.5rem; border-radius:8px;
  font-family:'Montserrat', sans-serif;
  font-weight:600; font-size:.9rem;
  text-decoration:none; cursor:pointer;
  border:none; transition:all .2s ease;
}
.olc-success__btn-primary{background:var(--ol-blue); color:#fff}
.olc-success__btn-primary:hover{background:var(--ol-pink); transform:translateY(-1px)}
.olc-success__btn-secondary{
  background:transparent;
  color:var(--ol-blue);
  border:1.5px solid var(--ol-blue) !important;
}
.olc-success__btn-secondary:hover{background:var(--ol-blue); color:#fff}

/* ====== CONFETTI ====== */
.olc-confetti{
  position:fixed; inset:0; z-index:10000;
  pointer-events:none; overflow:hidden;
}
.olc-confetti__piece{
  position:absolute; top:-10px;
  border-radius:2px;
  animation:olcConfettiFall var(--dur,3s) var(--delay,0s) ease-in forwards;
}
@keyframes olcConfettiFall{
  0%{transform:translateY(0) rotate(0deg) scale(1); opacity:1}
  75%{opacity:1}
  100%{transform:translateY(105vh) rotate(var(--rot,720deg)) scale(.4); opacity:0}
}

/* ====== SUCCESS RESPONSIVE ====== */
@media(max-width:480px){
  .olc-success__title{font-size:1.35rem}
  .olc-success__card{padding:1rem}
  .olc-success__dl{font-size:.8rem; gap:.4rem .75rem}
  .olc-success__actions{flex-direction:column; align-items:stretch}
  .olc-success__actions a,
  .olc-success__actions button{justify-content:center}
  .olc-success-overlay__close{top:.8rem; right:.8rem; width:38px; height:38px; font-size:1.2rem}
}
