/* Diseños de tienda: variantes de encabezado, portada y tarjetas, modo oscuro y la personalidad de
   cada plantilla. Colores, radios y tipografías llegan como variables desde app/web/theme.py; las
   clases (tpl-*, hdr-*, hero-*, card-*, mode-*, case-*) van en <html>. */

/* ---------- tipografía de títulos ---------- */
.pr,.goal b,.promo-card b,.brand .txt,.stage-card .p b,.carttotal b,.sumrow.total b,.combo .total b,.f-name{font-family:var(--font-h);font-weight:var(--fw-h)}
.f-name{margin:0 0 10px;font-size:1.3rem;color:var(--on-dark-hi);max-width:none}
.case-upper :is(h1,h2,h3,.goal b,.promo-card b,.brand .txt,.f-name){text-transform:uppercase;letter-spacing:.02em}
.case-upper .hero-copy h1{line-height:1}

/* ---------- vista previa del borrador ---------- */
.draft-bar{display:flex;flex-wrap:wrap;gap:6px 18px;justify-content:center;align-items:center;padding:9px 16px;background:#1D4ED8;color:#fff;font-size:.88rem}
.draft-bar a{color:#fff;text-decoration:underline;font-weight:700}
.try-bar{position:sticky;top:0;z-index:60}
.try-bar .try-use{background:#fff;color:#1D4ED8;text-decoration:none;padding:6px 14px;border-radius:999px;min-height:32px;display:inline-flex;align-items:center}
.try-other{position:relative}
.try-other summary{cursor:pointer;font-weight:700;text-decoration:underline;min-height:32px;display:inline-flex;align-items:center}
.try-other ul{position:absolute;right:0;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;background:#fff;border-radius:12px;box-shadow:0 18px 40px -16px rgba(0,0,0,.45);min-width:190px}
.try-other ul a{display:block;color:#111;text-decoration:none;font-weight:600;padding:9px 12px;border-radius:8px}
.try-other ul a:hover,.try-other ul a[aria-current]{background:#EEF2FF}

/* ---------- encabezado ---------- */
.hdr-claro header.top{--dark:var(--surface);--dark-2:var(--bg);--dark-line:var(--line);--on-dark:var(--ink);--on-dark-hi:var(--ink);
  --on-dark-2:var(--text-2);--on-dark-mut:var(--mut);--brand-on-dark:var(--brand-ink);border-bottom:1px solid var(--line)}
.hdr-claro .search form{background:var(--bg);border:1px solid var(--line-2)}
.hdr-marca header.top{--dark:var(--brand);--dark-2:var(--brand-d);--dark-line:color-mix(in srgb,var(--on-brand) 20%,transparent);
  --on-dark:var(--on-brand);--on-dark-hi:var(--on-brand);--on-dark-mut:color-mix(in srgb,var(--on-brand) 72%,transparent);--brand-on-dark:var(--on-brand)}
.hdr-marca .cartbtn{background:var(--deep);color:var(--on-deep)}
.hdr-marca .cartbtn:hover{background:color-mix(in srgb,var(--deep) 82%,var(--brand))}
.hdr-marca .cartbtn .cartcount{background:var(--brand);color:var(--on-brand)}
.hdr-marca nav.cats a.on{border-bottom-color:var(--on-brand)}
.hdr-centrado .bar{flex-wrap:wrap;justify-content:center;row-gap:12px}
.hdr-centrado .brand{flex:1 1 100%;justify-content:center;order:-1}
.hdr-centrado .search{flex:0 1 640px}
/* Centrado con márgenes automáticos (no justify-content): si las categorías no entran, el scroll
   arranca desde la primera en vez de cortarla a la izquierda. */
.hdr-centrado nav.cats .row>:first-child{margin-left:auto}
.hdr-centrado nav.cats .row>:last-child{margin-right:auto}
@media(min-width:761px){.hdr-centrado .brand img{height:52px}.hdr-centrado .brand .txt{font-size:1.8rem;max-width:none}}

/* ---------- portada: imagen de fondo ---------- */
.hero-img{position:relative;isolation:isolate;overflow:hidden;background:var(--dark);color:var(--on-dark);min-height:clamp(420px,62vh,640px);display:flex;align-items:center}
.hero-img .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.hero-img:after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(90deg,color-mix(in srgb,var(--dark) 90%,transparent) 0%,color-mix(in srgb,var(--dark) 55%,transparent) 55%,transparent 100%)}
.hero-img.noimg{background:radial-gradient(70% 90% at 85% 15%,color-mix(in srgb,var(--brand) 42%,var(--dark)) 0%,var(--dark) 70%)}
.hero-img.noimg:after{display:none}
.hero-img .wrap{width:100%;padding-top:56px;padding-bottom:56px}
.hero-img .hero-copy{max-width:640px}

/* ---------- portada: producto o foto en escenario ---------- */
.stage.stage-img{min-height:0;aspect-ratio:5/4;padding:0;background:var(--dark-2)}
.stage.stage-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* ---------- portada: dividida clara ---------- */
.hero-split{background:var(--surface);border-bottom:1px solid var(--line)}
.hero-split .hero-grid{padding-top:48px;padding-bottom:48px}
.hero-split .hero-copy h1,.hero-min .hero-copy h1{color:var(--ink)}
.hero-split .hero-copy p,.hero-min .hero-copy p{color:var(--text-2)}
.hero-split .hero-copy .eyebrow,.hero-min .hero-copy .eyebrow{color:var(--brand-ink)}
.split-media{position:relative;display:block;aspect-ratio:5/4;border-radius:var(--r-lg);overflow:hidden;background:var(--brand-soft)}
.split-media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.split-plate{background:radial-gradient(60% 60% at 50% 45%,var(--surface) 0%,var(--brand-soft) 100%)}
.split-plate>img{inset:12%;width:76%;height:76%;object-fit:contain;mix-blend-mode:multiply}
.split-tag{position:absolute;left:16px;bottom:16px;display:flex;flex-direction:column;gap:2px;max-width:300px;padding:12px 14px;
  border-radius:var(--r-sm);background:var(--surface);color:var(--ink);box-shadow:var(--shadow);font-size:.9rem;line-height:1.3}
.split-tag span{font-family:var(--font-h);font-weight:var(--fw-h);font-size:1.3rem;color:var(--brand-ink)}

/* ---------- portada: solo texto ---------- */
.hero-min{background:var(--bg);text-align:center}
.hero-min .wrap{padding-top:clamp(40px,7vw,96px);padding-bottom:clamp(32px,5vw,64px)}
.hero-min .hero-copy{align-items:center;max-width:900px;margin:0 auto}
.hero-min .hero-copy h1{font-size:clamp(2.4rem,6vw,5.2rem)}
.hero-min .hero-copy p{margin:0 auto}
.hero-min .hero-ctas{justify-content:center}

/* ---------- secciones propias: banner y texto ---------- */
.banner{position:relative;isolation:isolate;overflow:hidden;border-radius:var(--r-lg);background:var(--brand);color:var(--on-brand);
  min-height:260px;display:flex;align-items:center;padding:clamp(24px,4vw,56px)}
.banner .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.banner.has-img{background:#000;color:#fff}
.banner.has-img:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(0,0,0,.74),rgba(0,0,0,.16))}
.banner-copy{max-width:560px;display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.banner-copy h2{margin:0;color:inherit}
.banner-copy p{margin:0;font-size:1.05rem;opacity:.92;white-space:pre-line}
.banner .eyebrow{color:inherit;opacity:.85}
.banner:not(.has-img) .btn{background:var(--deep);color:var(--on-deep)}
.text-sec{max-width:820px}
.text-sec .prose{margin:0;white-space:pre-line;color:var(--text-2);font-size:1.05rem;line-height:1.65}

/* ---------- tarjetas de producto ---------- */
.card-plana .grid .card{border-color:transparent;background:transparent}
.card-plana .grid .card .ph{border-radius:var(--r)}
.card-plana .grid .card .body{padding:12px 2px 4px}
.card-plana .grid .card:hover{box-shadow:none}
.card-borde .grid .card{border:1px solid var(--line-2)}
.card-borde .grid .card .ph{border-bottom:1px solid var(--line)}
.card-borde .grid .card:hover{transform:none;border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}
.card-compacta .grid{grid-template-columns:repeat(auto-fill,minmax(min(190px,100%),1fr));gap:10px}
.card-compacta .grid .card .ph>a{inset:16px}
.card-compacta .grid .card .body{padding:10px 12px 12px}
.card-compacta .grid .card .nm{font-size:.92rem}
.card-compacta .grid .card .pr{font-size:1.3rem}
.card-compacta .grid .card .btn{height:40px;font-size:.88rem;margin-top:10px}

/* ---------- modo oscuro ---------- */
.mode-oscuro{color-scheme:dark;--ok:#4ADE80;--ok-soft:#10291B;--warn:#FBBF24;--warn-soft:#33260A;--danger:#F87171}
.mode-oscuro .gal,.mode-oscuro .thumbs img{background:var(--plinth)}
.mode-oscuro .notice.err,.mode-oscuro .status-pill.cancelado{background:color-mix(in srgb,var(--danger) 22%,var(--surface))}
.mode-oscuro footer{border-top:1px solid var(--line)}
.mode-oscuro .shadow,.mode-oscuro .grid .card:hover{box-shadow:0 16px 36px -18px rgba(0,0,0,.8)}
.mode-oscuro .avail.\32 4_48{color:#60A5FA}

/* ---------- personalidad de cada diseño ---------- */
.tpl-minimal .sec-head h2{letter-spacing:-.02em}
.tpl-minimal .benefits{background:transparent;border-bottom:0}
.tpl-minimal .benefits .ic{background:transparent;border:1px solid var(--line-2);color:var(--ink)}
.tpl-minimal .cta-band{--dark:var(--surface);--on-dark:var(--ink);--on-dark-hi:var(--ink);--on-dark-2:var(--text-2);border:1px solid var(--line)}

.tpl-nocturno .hero-dark{background:radial-gradient(60% 80% at 80% 10%,color-mix(in srgb,var(--brand) 16%,var(--dark)) 0%,var(--dark) 62%)}
.tpl-nocturno .btn:hover{box-shadow:0 0 26px -4px color-mix(in srgb,var(--brand) 70%,transparent)}
.tpl-nocturno .sec-head h2:after{content:"";display:block;width:48px;height:3px;margin-top:10px;background:var(--brand);box-shadow:0 0 12px var(--brand)}

.tpl-natural h1,.tpl-natural h2{letter-spacing:0;font-stretch:100%}
.tpl-natural .goal,.tpl-natural .promo-card,.tpl-natural .grid .card{box-shadow:0 12px 30px -24px rgba(30,24,16,.55)}
.tpl-natural .hero-split{background:linear-gradient(180deg,var(--surface),var(--bg))}

.tpl-pop .hero-min{background:radial-gradient(55% 70% at 12% 8%,color-mix(in srgb,var(--brand) 24%,var(--bg)) 0%,transparent 62%),
  radial-gradient(50% 60% at 92% 85%,color-mix(in srgb,#F59E0B 24%,var(--bg)) 0%,transparent 62%),var(--bg)}
.tpl-pop .goal.cat{background:var(--brand-soft);border-color:transparent}
.tpl-pop .goal.cat:nth-child(3n+2){background:color-mix(in srgb,#F59E0B 16%,var(--surface))}
.tpl-pop .goal.cat:nth-child(3n){background:color-mix(in srgb,#10B981 14%,var(--surface))}
.tpl-pop .btn:not(.sec):not(.ghost){box-shadow:0 10px 22px -12px color-mix(in srgb,var(--brand) 85%,transparent)}

.tpl-premium h1,.tpl-premium h2{font-stretch:100%;letter-spacing:.05em}
.tpl-premium .eyebrow,.tpl-premium .goal .k,.tpl-premium .promo-card .k{letter-spacing:.32em}
.tpl-premium .sec-head{flex-direction:column;align-items:center;text-align:center}
.tpl-premium .sec-head h2:after{content:"";display:block;width:56px;height:1px;margin:14px auto 0;background:var(--brand)}
.tpl-premium .btn{letter-spacing:.14em;text-transform:uppercase;font-size:.8rem}
.tpl-premium .brand-rail{justify-content:center}
.tpl-premium .hero-img:after{background:color-mix(in srgb,var(--dark) 60%,transparent)}
.tpl-premium .hero-img .hero-copy{margin:0 auto;text-align:center;align-items:center}
.tpl-premium .hero-img .hero-copy p{margin:0 auto}
.tpl-premium .hero-img .hero-ctas{justify-content:center}

.tpl-laboratorio .hero-split{background-color:var(--surface);background-size:32px 32px;
  background-image:linear-gradient(color-mix(in srgb,var(--brand) 9%,transparent) 1px,transparent 1px),
    linear-gradient(90deg,color-mix(in srgb,var(--brand) 9%,transparent) 1px,transparent 1px)}
.tpl-laboratorio .eyebrow,.tpl-laboratorio .goal .k,.tpl-laboratorio .card .br{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.06em}
.tpl-laboratorio .goal{border-top:3px solid var(--brand)}

.tpl-street h1,.tpl-street h2{font-stretch:100%;letter-spacing:.01em}
.tpl-street header.top{border-bottom:3px solid var(--ink)}
.tpl-street .hero-min{background:var(--brand);--focus:var(--on-brand);--focus-gap:var(--brand)}
.tpl-street .hero-min .hero-copy :is(h1,p,.eyebrow){color:var(--on-brand)}
.tpl-street .hero-min .btn:not(.sec){background:var(--deep);color:var(--on-deep);border-color:var(--deep)}
.tpl-street .hero-min .btn.sec{border-color:var(--on-brand);color:var(--on-brand)}
.tpl-street .sec-head h2{display:inline-block;padding:4px 12px;background:var(--deep);color:var(--on-deep)}
.tpl-street .btn{border:2px solid var(--ink)}
.tpl-street .grid .card{border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink)}
.tpl-street .grid .card:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink);border-color:var(--ink)}
.tpl-street .promo-card{border:2px solid var(--ink);border-left-width:8px}

.tpl-endurance .hero-dark,.tpl-endurance .hero-img.noimg{background:repeating-linear-gradient(115deg,transparent 0 46px,color-mix(in srgb,var(--brand) 10%,transparent) 46px 48px),var(--dark)}
.tpl-endurance h1,.tpl-endurance h2{font-style:italic}
.tpl-endurance .sec-head h2:before{content:"";display:inline-block;width:14px;height:.8em;margin-right:10px;background:var(--brand);transform:skewX(-18deg)}

.tpl-mercado .sec{margin:28px 0}
.tpl-mercado .sec-head{margin-bottom:12px}
.tpl-mercado .sec-head h2{font-size:clamp(1.2rem,1.8vw,1.5rem)}
.tpl-mercado .hero-min{background:var(--brand-soft)}
.tpl-mercado .hero-min .wrap{padding-top:28px;padding-bottom:24px}
.tpl-mercado .hero-min .hero-copy h1{font-size:clamp(1.8rem,3.6vw,2.8rem)}
.tpl-mercado .goals{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.tpl-mercado .goal.cat{min-height:80px;padding:14px}
.tpl-mercado .goal.cat b{font-size:1rem}
.tpl-mercado .promo-cards{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}

/* ---------- móvil ---------- */
@media(max-width:760px){
  .hdr-centrado .brand{flex:1 1 0;order:0}
  .hero-img{min-height:460px;align-items:flex-end}
  .hero-img:after{background:linear-gradient(0deg,color-mix(in srgb,var(--dark) 92%,transparent) 0%,color-mix(in srgb,var(--dark) 40%,transparent) 70%,transparent 100%)}
  .hero-img .wrap{padding-top:28px;padding-bottom:28px}
  .hero-min .hero-copy h1{font-size:2.3rem}
  .hero-split .hero-grid{padding-top:24px;padding-bottom:28px}
  .split-media{aspect-ratio:4/3}
  .banner{min-height:220px}
  .tpl-mercado .goals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0}
  .tpl-mercado .goal.cat{flex:none}
}
