/* ==========================================================================
   TECNIPRINT — hoja única. Mobile-first, tema claro/oscuro, PWA.
   1 tokens · 2 base · 3 header · 4 hero · 5 ticker · 6 secciones
   7 buscador · 8 promos · 9 familias · 10 chips · 11 muro
   12 fab/sheet/toast · 13 instalar · 14 footer · 15animaciones · 16 breakpoints
   ========================================================================== */

/* ---------- 1. TOKENS ---------- */
:root{
  --cyan:#0097e8; --cyan-2:#43b6f8; --yellow:#ffcf02; --magenta:#f51278; --green:#25d366;
  --bg:#f6f7fb; --bg-soft:#eef0f7; --surface:#fff; --surface-2:#f3f4f9;
  --text:#0f131a; --text-2:#5b6373; --text-3:#8b93a3;
  --line:#e4e7ef; --line-2:#eef0f6;
  --btn:#12141a; --btn-fg:#fff;
  --hd-bg:rgba(255,255,255,.78); --hero-bg:#fff;
  --grid-line:rgba(15,19,26,.055);
  --card-sh:0 1px 2px rgba(16,24,40,.05),0 10px 28px -14px rgba(16,24,40,.18);
  --card-sh-h:0 2px 4px rgba(16,24,40,.06),0 18px 40px -18px rgba(16,24,40,.28);
  --pop-sh:0 24px 70px -20px rgba(16,24,40,.28),0 2px 8px rgba(16,24,40,.06);
  --lg-l:block; --lg-d:none; --glow:.26; --ph:#f2f3f8;
  --pad:clamp(14px,3.6vw,32px); --r:16px; --hdh:56px;
  --safe:env(safe-area-inset-bottom,0px);
  --mono:ui-monospace,SFMono-Regular,"JetBrains Mono",Menlo,Consolas,monospace;
  --ease:cubic-bezier(.2,.8,.2,1);
}
:root[data-theme=dark]{
  --bg:#070910; --bg-soft:#0b0e16; --surface:#0f131c; --surface-2:#161b26;
  --text:#edf1f8; --text-2:#98a2b8; --text-3:#6d7789;
  --line:#1f2532; --line-2:#171c27;
  --btn:#e9eefb; --btn-fg:#0b0e16;
  --hd-bg:rgba(8,11,18,.76); --hero-bg:#080b12;
  --grid-line:rgba(255,255,255,.055);
  --card-sh:0 1px 0 rgba(255,255,255,.035) inset,0 14px 34px -18px #000;
  --card-sh-h:0 1px 0 rgba(255,255,255,.06) inset,0 22px 48px -20px #000;
  --pop-sh:0 30px 80px -20px rgba(0,0,0,.75),0 0 0 1px rgba(255,255,255,.06);
  --lg-l:none; --lg-d:block; --glow:.30; --ph:#161b26;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]){
    --bg:#070910; --bg-soft:#0b0e16; --surface:#0f131c; --surface-2:#161b26;
    --text:#edf1f8; --text-2:#98a2b8; --text-3:#6d7789;
    --line:#1f2532; --line-2:#171c27;
    --btn:#e9eefb; --btn-fg:#0b0e16;
    --hd-bg:rgba(8,11,18,.76); --hero-bg:#080b12;
    --grid-line:rgba(255,255,255,.055);
    --card-sh:0 1px 0 rgba(255,255,255,.035) inset,0 14px 34px -18px #000;
    --card-sh-h:0 1px 0 rgba(255,255,255,.06) inset,0 22px 48px -20px #000;
    --pop-sh:0 30px 80px -20px rgba(0,0,0,.75),0 0 0 1px rgba(255,255,255,.06);
    --lg-l:none; --lg-d:block; --glow:.30; --ph:#161b26;
  }
}
:root[data-theme=light]{--lg-l:block; --lg-d:none}

/* ---------- 2. BASE ---------- */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--hdh) + 64px);-webkit-text-size-adjust:100%}
body{font-family:"Segoe UI",system-ui,-apple-system,"Helvetica Neue",sans-serif;
  background:var(--bg);color:var(--text);line-height:1.45;
  overflow-x:hidden;overscroll-behavior-y:none;
  -webkit-font-smoothing:antialiased;transition:background .3s,color .3s}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;cursor:pointer;background:none;border:none;-webkit-tap-highlight-color:transparent}
a{color:inherit}
:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:6px}
::selection{background:color-mix(in srgb,var(--cyan) 28%,transparent)}
.wrap{width:min(1240px,100% - var(--pad)*2);margin-inline:auto}
.lg-l{display:var(--lg-l)}.lg-d{display:var(--lg-d)}
.grad{background:linear-gradient(96deg,var(--cyan) 0%,var(--magenta) 55%,var(--yellow) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  padding-right:.06em}
#prog{position:fixed;top:0;left:0;height:3px;width:0;z-index:99;
  background:linear-gradient(90deg,var(--cyan),var(--magenta),var(--yellow));
  transition:width .1s linear;border-radius:0 3px 3px 0;box-shadow:0 0 12px color-mix(in srgb,var(--cyan) 60%,transparent)}

/* ---------- 3. HEADER ---------- */
#hdr{position:fixed;top:0;left:0;right:0;z-index:80;
  background:var(--hd-bg);border-bottom:1px solid transparent;
  backdrop-filter:blur(18px) saturate(180%);-webkit-backdrop-filter:blur(18px) saturate(180%);
  transition:border-color .3s,box-shadow .3s,background .3s;
  padding-top:env(safe-area-inset-top,0px)}
#hdr.scrolled{border-bottom-color:var(--line);box-shadow:0 6px 24px -18px rgba(0,0,0,.5)}
.hwrap{width:min(1240px,100% - var(--pad)*2);margin-inline:auto;min-height:56px;
  display:flex;align-items:center;gap:8px}
.brand{display:flex;align-items:center;gap:8px;flex:0 0 auto;text-decoration:none}
.brand .lg{height:26px;width:auto}
.bname{font-size:.8rem;font-weight:800;letter-spacing:1.1px;line-height:1;display:flex;flex-direction:column}
.bname em{font-style:normal;font-size:.5rem;letter-spacing:1.6px;color:var(--text-3);margin-top:3px;font-weight:700}
.hnav{display:none;gap:4px;margin-left:10px}
.hnav a{font-size:.82rem;font-weight:600;color:var(--text-2);text-decoration:none;
  padding:8px 11px;border-radius:9px;transition:color .2s,background .2s}
.hnav a:hover{color:var(--text);background:var(--surface-2)}
.spacer{flex:1}
.hbtn{height:36px;min-width:36px;border-radius:11px;display:inline-flex;align-items:center;
  justify-content:center;gap:6px;background:var(--surface);border:1px solid var(--line);
  font-size:.78rem;font-weight:700;color:var(--text);flex:0 0 auto;
  transition:transform .15s,background .2s,border-color .2s,box-shadow .2s}
.hbtn.ico{font-size:.95rem;padding:0;margin-left:0}
.hbtn:active{transform:scale(.92)}
.hbtn:hover{border-color:color-mix(in srgb,var(--cyan) 45%,var(--line));box-shadow:0 4px 14px -8px rgba(0,0,0,.4)}
#themeBtn .moon{display:none}
:root[data-theme=dark] #themeBtn .sun{display:none}
:root[data-theme=dark] #themeBtn .moon{display:inline}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) #themeBtn .sun{display:none}
  :root:not([data-theme=light]) #themeBtn .moon{display:inline}}
.hbtn.install{background:var(--btn);color:var(--btn-fg);border-color:transparent;
  padding:0 13px;margin-right:6px}
.hbtn.install[hidden]{display:none}
@media (max-width:519px){.hbtn.install .i-txt{display:none}.hbtn.install{padding:0;width:36px}}
.hbtn.install .i-ico{font-size:1rem;line-height:1}

/* ---------- 4. HERO ---------- */
.hero{position:relative;overflow:visible;background:var(--hero-bg);
  padding:calc(var(--hdh) + env(safe-area-inset-top,0px) + 14px) 0 26px;
  border-bottom:1px solid var(--line)}
.grid-bg{position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),
                   linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(120% 90% at 50% 0%,#000 20%,transparent 78%);
  mask-image:radial-gradient(120% 90% at 50% 0%,#000 20%,transparent 78%);
  animation:gridPan 26s linear infinite}
.glow{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.blob{position:absolute;width:min(430px,72vw);aspect-ratio:1;border-radius:50%;
  filter:blur(120px);opacity:var(--glow);will-change:transform;
  animation:float 20s ease-in-out infinite}
.b1{background:var(--cyan);top:-160px;left:-120px;opacity:calc(var(--glow)*.9)}
.b2{background:var(--magenta);top:-40px;right:-140px;animation-delay:-7s}
.b3{background:var(--yellow);bottom:-200px;right:6%;left:auto;animation-delay:-13s;opacity:calc(var(--glow)*.8)}
.hero-in{position:relative;z-index:1;display:grid;gap:26px}
.hero-copy{text-align:center;display:flex;flex-direction:column;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:.66rem;font-weight:700;
  letter-spacing:1.4px;text-transform:uppercase;color:var(--text-2);
  background:var(--surface-2);border:1px solid var(--line);padding:5px 11px;border-radius:20px}
.eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--green);
  box-shadow:0 0 0 0 color-mix(in srgb,var(--green) 70%,transparent);animation:pulseDot 2.6s infinite}
.lockup{margin:14px 0 4px;animation:pop .8s var(--ease) both}
.lockup .lg{height:clamp(70px,20vw,104px);width:auto;margin-inline:auto}
.hero h1{font-size:clamp(1.5rem,5.4vw,2.6rem);font-weight:800;letter-spacing:-.02em;
  line-height:1.12;margin-top:6px;max-width:16ch;animation:riseUp .7s .1s var(--ease) both}
.hero h1::after{content:'';display:block;width:56px;height:3px;border-radius:3px;margin:14px auto 0;
  background:linear-gradient(90deg,var(--cyan),var(--yellow),var(--magenta))}
.sub{color:var(--text-2);font-size:clamp(.84rem,2.6vw,1rem);margin-top:12px;max-width:44ch;
  animation:riseUp .7s .18s var(--ease) both}
.sub span{display:block;color:var(--text-3);font-size:.94em;margin-top:3px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:20px;width:100%;max-width:420px}
.stat{text-align:center;min-width:0}
.stat b{display:block;font-size:clamp(.98rem,3.2vw,1.3rem);font-weight:800;
  font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.stat small{font-size:.52rem;color:var(--text-3);letter-spacing:.5px;text-transform:uppercase;
  display:block;line-height:1.2;margin-top:2px}

/* consola decorativa (solo desktop) */
.hvisual{display:none;position:relative;width:100%;max-width:470px;justify-self:center}
.console{position:relative;width:100%;max-width:100%;border-radius:16px;overflow:hidden;
  background:linear-gradient(160deg,#0d1119,#080b12);border:1px solid rgba(255,255,255,.09);
  box-shadow:0 30px 70px -30px rgba(0,0,0,.65),0 0 0 1px rgba(0,0,0,.2),
    inset 0 1px 0 rgba(255,255,255,.06);transform:rotate(-1.4deg)}
.cbar{display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.07);
  background:rgba(255,255,255,.03)}
.cbar i{width:9px;height:9px;border-radius:50%;background:#ff5f57}
.cbar i:nth-child(2){background:#febc2e}.cbar i:nth-child(3){background:#28c840}
.cbar span{margin-left:8px;font:600 .62rem/1 var(--mono);color:#7d8798;letter-spacing:.4px}
.clines{padding:16px 16px 22px;font:500 .74rem/2 var(--mono);color:#c3ccdb;
  white-space:pre-wrap;word-break:break-word}
.cl{display:block;opacity:0;animation:fadeLine .5s var(--ease) forwards}
.cl.l1{animation-delay:.5s}.cl.l2{animation-delay:1s}.cl.l3{animation-delay:1.5s}.cl.l4{animation-delay:2s}
.cl u{text-decoration:none;color:var(--cyan-2)}
.cl b{color:#fff;font-weight:600}
.cl em{color:var(--yellow);font-style:normal}
.cl.ok{color:#4ade80}
.cl i{color:var(--magenta);font-style:normal}
.caret{display:inline-block;width:7px;height:13px;background:var(--cyan-2);vertical-align:-2px;
  margin-left:3px;animation:blink 1.05s steps(1) infinite}
.cchip{position:absolute;font:700 .66rem/1 system-ui;color:var(--text);
  background:var(--surface);border:1px solid var(--line);border-radius:10px;
  padding:8px 11px;box-shadow:0 10px 24px -12px rgba(0,0,0,.5);white-space:nowrap;
  animation:bob 6s ease-in-out infinite}
.cchip.c1{left:-14px;top:-20px;animation-delay:-1s}
.cchip.c2{right:-8px;bottom:-20px;animation-delay:-2.6s}

/* ---------- 5. TICKER ---------- */
.ticker{overflow:hidden;border-bottom:1px solid var(--line);background:var(--bg-soft);
  padding:9px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.tk{display:flex;align-items:center;gap:22px;width:max-content;
  font:700 .58rem/1 var(--mono);letter-spacing:1.8px;color:var(--text-3);
  animation:marquee 38s linear infinite}
.tk i{color:var(--cyan);font-style:normal;font-size:.5rem;opacity:.8}
.ticker:hover .tk{animation-play-state:paused}

/* ---------- 6. SECCIONES ---------- */
.sect{padding-top:22px}
.sect[hidden]{display:none}
.shead{display:flex;align-items:baseline;gap:10px;margin-bottom:2px}
.shead h2{font-size:.95rem;font-weight:800;letter-spacing:-.01em}
.shead h2::before{content:'';display:inline-block;width:7px;height:7px;border-radius:2px;
  background:var(--cyan);margin-right:8px;vertical-align:1px}
.shead .hint{font-size:.68rem;color:var(--text-3);font-weight:600}

/* ---------- 7. BUSCADOR ---------- */
.sw{width:100%;max-width:560px;margin:18px auto 0;position:relative;z-index:75;
  animation:riseUp .7s .24s var(--ease) both}
.sw input{width:100%;padding:14px 46px 14px 44px;border-radius:14px;border:1.5px solid var(--line);
  font-size:16px;outline:none;background:var(--surface);color:var(--text);
  transition:border-color .2s,box-shadow .25s,transform .2s;box-shadow:var(--card-sh)}
.sw input::placeholder{color:var(--text-3);font-size:.9rem}
.sw input:focus{border-color:var(--cyan);box-shadow:0 0 0 4px color-mix(in srgb,var(--cyan) 16%,transparent),
  0 10px 26px -14px color-mix(in srgb,var(--cyan) 70%,transparent)}
.sw .lup{position:absolute;left:15px;top:50%;transform:translateY(-50%);font-size:.95rem;
  opacity:.5;pointer-events:none}
.sw #clr{position:absolute;right:9px;top:50%;transform:translateY(-50%);width:28px;height:28px;
  border-radius:50%;background:var(--surface-2);color:var(--text-2);font-size:.72rem;
  display:none;place-items:center;transition:transform .15s}
.sw #clr.on{display:grid}
.sw #clr:active{transform:translateY(-50%) scale(.88)}
input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}
#sug{position:absolute;left:0;right:0;top:calc(100% + 8px);background:var(--surface);border-radius:16px;
  border:1px solid var(--line);box-shadow:var(--pop-sh);overflow:hidden;max-height:min(62vh,440px);
  overflow-y:auto;display:none;text-align:left;z-index:76;transform-origin:top;
  animation:sugIn .18s var(--ease)}
#sug.on{display:block}
.srow{display:flex;align-items:center;gap:10px;padding:9px 13px;cursor:pointer;border-bottom:1px solid var(--line-2)}
.srow:last-child{border-bottom:none}
.srow:active,.srow.sel{background:var(--surface-2)}
.srow.sel{box-shadow:inset 3px 0 0 var(--cyan)}
.sthumb{width:42px;height:42px;border-radius:9px;background:var(--surface-2) center/cover no-repeat;
  flex:0 0 auto;display:grid;place-items:center;font-size:1.15rem;overflow:hidden}
.stxt{flex:1;min-width:0}
.sname{font-size:.78rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sname mark,.desc mark,.sprice mark{background:color-mix(in srgb,var(--yellow) 45%,transparent);
  color:inherit;padding:0 1px;border-radius:3px;font-weight:700}
.smeta{font-size:.63rem;color:var(--text-3);margin-top:2px}
.sprice{font-size:.78rem;font-weight:800;white-space:nowrap}
.snote{padding:8px 13px;font-size:.68rem;color:#b47400;background:color-mix(in srgb,var(--yellow) 16%,var(--surface));
  border-top:1px solid var(--line-2)}
:root[data-theme=dark] .snote{color:#ffd45e}
.sfoot{padding:11px 13px;font-size:.72rem;font-weight:700;color:var(--cyan);background:var(--surface-2);
  cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.sempty{padding:16px 15px 8px;font-size:.8rem;color:var(--text-2);line-height:1.5}
.sempty b{color:var(--text)}
.sterms{display:flex;gap:7px;flex-wrap:wrap;padding:0 13px 11px}
.sterm{padding:7px 12px;border-radius:16px;background:var(--surface-2);border:1px solid var(--line);
  font-size:.72rem;font-weight:600;cursor:pointer}
.sterm:active{transform:scale(.95)}
.shist{padding:11px 13px 12px}
.shist h5{font-size:.6rem;text-transform:uppercase;letter-spacing:.8px;color:var(--text-3);
  margin-bottom:8px;font-weight:800}
.swa{display:flex;align-items:center;justify-content:center;gap:7px;margin:4px 13px 13px;padding:11px;
  background:var(--green);color:#fff;text-decoration:none;font-weight:800;font-size:.78rem;border-radius:11px}

/* ---------- 8. PROMOS ---------- */
.promos{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:10px var(--pad) 4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.promos::-webkit-scrollbar{display:none}
.promo{flex:0 0 84%;max-width:430px;scroll-snap-align:start;border-radius:18px;padding:15px 16px 14px;
  color:#fff;position:relative;overflow:hidden;cursor:pointer;border:none;text-align:left;
  background:linear-gradient(135deg,var(--p1),var(--p2));
  box-shadow:0 12px 30px -14px color-mix(in srgb,var(--p2) 70%,transparent);
  transition:transform .2s var(--ease),box-shadow .2s}
.promo:active{transform:scale(.975)}
.promo::after{content:'';position:absolute;right:-40px;top:-46px;width:150px;height:150px;border-radius:50%;
  background:rgba(255,255,255,.16);pointer-events:none}
.promo::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.22) 45%,transparent 60%);
  transform:translateX(-120%);animation:shine 6s ease-in-out infinite}
.promo .ptop{display:flex;justify-content:space-between;align-items:center;gap:8px}
.promo .plabel{font-size:.6rem;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;opacity:.88}
.promo .pdisc{background:rgba(255,255,255,.22);padding:3px 10px;border-radius:10px;font-size:.76rem;font-weight:800}
.promo h3{font-size:1.02rem;margin-top:9px;line-height:1.22;font-weight:800}
.promo p{font-size:.76rem;opacity:.95;margin-top:4px;line-height:1.4}
.promo .pmeta{display:flex;align-items:center;gap:9px;margin-top:12px;font-size:.67rem;opacity:.94}
.promo .pcta{margin-left:auto;background:#fff;color:#111;font-weight:800;font-size:.7rem;
  padding:7px 13px;border-radius:20px}

/* ---------- 9. FAMILIAS ---------- */
.famscroll{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:10px var(--pad) 8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.famscroll::-webkit-scrollbar{display:none}
.famcard{flex:0 0 104px;scroll-snap-align:start;background:var(--surface);border:1.5px solid var(--line);
  border-radius:var(--r);padding:13px 8px 11px;font-family:inherit;color:var(--text);
  text-align:center;transition:transform .2s var(--ease),border-color .2s,box-shadow .2s,background .2s}
.famcard:active{transform:scale(.95)}
.famcard:hover{border-color:var(--c);box-shadow:0 10px 26px -16px var(--c)}
.famcard.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 9%,var(--surface));
  box-shadow:0 10px 26px -14px color-mix(in srgb,var(--c) 60%,transparent)}
.fam-ico{font-size:1.5rem;display:block;transition:transform .3s var(--ease)}
.famcard:hover .fam-ico{transform:translateY(-2px) scale(1.12)}
.famcard b{display:block;font-size:.72rem;margin-top:6px;line-height:1.2}
.famcard small{color:var(--text-3);font-size:.64rem}

/* ---------- 10. CHIPS ---------- */
.chipwrap{position:sticky;top:var(--hdh);z-index:70;background:var(--bg);
  padding:9px 0 8px;border-bottom:1px solid var(--line-2);transition:background .3s}
.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:1px}
.chips::-webkit-scrollbar{display:none}
.subfilters{display:flex;gap:8px;padding:7px 0 0}
.subfilters select{flex:1;min-width:0;border:1.5px solid var(--line);background:var(--surface);
  color:var(--text);border-radius:12px;padding:7px 10px;font:inherit;font-size:.74rem;font-weight:600}
.subfilters select:focus{outline:2px solid var(--cyan);outline-offset:-2px}
@media(min-width:900px){.subfilters select{max-width:300px}}
.chip{flex:0 0 auto;padding:8px 14px;border-radius:20px;border:1.5px solid var(--line);
  background:var(--surface);font-weight:600;font-size:.77rem;color:var(--text);
  transition:transform .15s,background .2s,color .2s,border-color .2s}
.chip em{font-style:normal;opacity:.5;font-size:.7rem;margin-left:2px}
.chip:active{transform:scale(.94)}
.chip.active{background:var(--btn);color:var(--btn-fg);border-color:var(--btn)}
.chip.active em{opacity:.7}
.chip.promochip{background:linear-gradient(135deg,var(--magenta),#ff5ba7);color:#fff;border-color:transparent}
.chip.promochip em{opacity:.85}
.stockchip{border-style:dashed}
.stockchip.on{background:color-mix(in srgb,var(--green) 16%,var(--surface));
  border-color:var(--green);border-style:solid;color:#0f7a3d}
:root[data-theme=dark] .stockchip.on,:root:not([data-theme=light]) .stockchip.on{color:#5df0a0}
.count{text-align:center;font-size:.71rem;color:var(--text-3);padding:8px 0 4px;font-weight:600}
.count b{color:var(--text-2)}

/* ---------- 11. MURO ---------- */
.wall{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;
  padding:8px 0 96px;width:min(1240px,calc(100% - var(--pad)*2));margin-inline:auto;align-items:start}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;
  position:relative;box-shadow:var(--card-sh);
  transition:transform .26s var(--ease),box-shadow .26s,border-color .26s,opacity .18s}
.card:active{transform:scale(.972)}
.card.reveal{opacity:0;transform:translateY(16px)}
.card.reveal.in{opacity:1;transform:none;transition-delay:calc(var(--d,0)*40ms)}
.card.gone{opacity:0;transform:scale(.94);pointer-events:none}
.ph{position:relative;aspect-ratio:4/3;background:var(--ph);overflow:hidden}
.ph img{width:100%;height:100%;object-fit:cover;display:block;opacity:0;
  transition:opacity .45s ease,transform .5s var(--ease)}
.ph img.loaded{opacity:1}
.ph-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  background:
    radial-gradient(circle at 26% 20%,color-mix(in srgb,var(--c) 20%,transparent),transparent 62%),
    linear-gradient(150deg,var(--surface-2),color-mix(in srgb,var(--c) 7%,var(--surface-2)));
  background-image:linear-gradient(150deg,var(--surface-2),color-mix(in srgb,var(--c) 9%,var(--surface-2)))}
.ph-ico{font-size:2rem;opacity:.85;filter:drop-shadow(0 6px 12px rgba(0,0,0,.14))}
.ph-cat{font-size:.52rem;font-weight:800;letter-spacing:.6px;text-transform:uppercase;
  color:var(--text-3);max-width:86%;text-align:center;line-height:1.25}
.pbadge{position:absolute;left:8px;top:8px;background:var(--surface);
  font-weight:800;font-size:.75rem;
  padding:4px 9px;border-radius:9px;box-shadow:0 2px 10px rgba(0,0,0,.14);color:var(--text)}
.pbadge s{display:block;font-size:.58rem;font-weight:600;color:var(--text-3)}
.sale{position:absolute;left:8px;bottom:8px;background:linear-gradient(135deg,var(--magenta),#ff5ba7);
  color:#fff;font-weight:800;font-size:.65rem;padding:3px 8px;border-radius:8px;z-index:2;
  box-shadow:0 4px 12px -2px color-mix(in srgb,var(--magenta) 70%,transparent)}
.fav{position:absolute;right:7px;top:7px;width:30px;height:30px;border-radius:50%;
  background:var(--surface);color:var(--text-3);font-size:.86rem;line-height:1;display:grid;place-items:center;
  transition:transform .18s var(--ease),color .18s;box-shadow:0 2px 8px rgba(0,0,0,.14)}
.fav.on{color:var(--magenta);animation:beat .45s cubic-bezier(.2,1.6,.4,1)}
.add{position:absolute;right:7px;bottom:7px;width:32px;height:32px;border-radius:50%;
  background:var(--btn);color:var(--btn-fg);font-size:1.1rem;
  line-height:1;display:grid;place-items:center;
  opacity:0;transform:translateY(6px) scale(.85);
  transition:opacity .2s,transform .22s cubic-bezier(.2,1.4,.4,1),background .2s}
.card.showadd .add,.card:active .add{opacity:1;transform:none}
.add.on{background:var(--green);transform:scale(1.1)}
.meta{padding:8px 10px 10px}
.desc{font-size:.72rem;line-height:1.35;min-height:2.7em;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.row{display:flex;justify-content:space-between;align-items:center;margin-top:6px;gap:5px}
.fam-chip{font-size:.55rem;font-weight:800;border-radius:6px;padding:2px 6px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;max-width:68%;letter-spacing:.2px}
.stock{font-size:.56rem;color:#1a9b4d;font-weight:800;white-space:nowrap}
.stock.zero{color:var(--text-3);font-weight:600}
:root[data-theme=dark] .stock{color:#4ade80}
.nada{text-align:center;color:var(--text-2);padding:46px 22px;display:none;font-size:.9rem}
/* esqueleto de carga */
.sk{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.sk>div{background:var(--ph);position:relative;overflow:hidden}
.sk .sk-img{aspect-ratio:4/3}
.sk .sk-l{height:9px;border-radius:5px;margin:9px 10px 0}
.sk .sk-l.s{width:55%;margin-bottom:11px}
.sk>div::after{content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--surface) 65%,transparent),transparent);
  transform:translateX(-100%);animation:shimmer 1.5s infinite}

/* ---------- 12. FAB / SHEET / TOAST ---------- */
#fab{position:fixed;right:16px;bottom:calc(18px + var(--safe));z-index:85;width:56px;height:56px;
  border-radius:50%;background:var(--green);color:#fff;font-size:1.3rem;display:grid;place-items:center;
  box-shadow:0 10px 26px -8px rgba(37,211,102,.6);transform:scale(0);
  transition:transform .3s cubic-bezier(.2,1.5,.4,1)}
#fab.on{transform:scale(1)}
#fab:active{transform:scale(.9)}
#fabc{position:absolute;top:-3px;right:-3px;min-width:21px;height:21px;border-radius:11px;
  background:var(--btn);color:var(--btn-fg);font-size:.66rem;font-weight:800;display:grid;
  place-items:center;padding:0 5px;transform:scale(0);transition:transform .25s cubic-bezier(.2,1.7,.4,1)}
#fabc.on{transform:scale(1)}
#fabc.bump{animation:bump .4s}
#scrim{position:fixed;inset:0;background:rgba(8,10,16,.5);backdrop-filter:blur(4px);z-index:90;
  opacity:0;pointer-events:none;transition:opacity .28s}
#scrim.on{opacity:1;pointer-events:auto}
#sheet{position:fixed;left:0;right:0;bottom:0;z-index:95;background:var(--surface);color:var(--text);
  border-radius:22px 22px 0 0;max-height:88vh;overflow-y:auto;transform:translateY(101%);
  transition:transform .34s cubic-bezier(.2,.85,.25,1);padding-bottom:calc(16px + var(--safe));
  will-change:transform;box-shadow:0 -10px 50px rgba(0,0,0,.3);border:1px solid var(--line);border-bottom:none}
#sheet.on{transform:translateY(0)}
#sheet.drag{transition:none}
.grab{position:sticky;top:0;padding:10px 0 6px;display:grid;place-items:center;z-index:3;
  background:linear-gradient(var(--surface) 60%,transparent)}
.grab i{width:40px;height:4.5px;border-radius:3px;background:var(--line);display:block}
.shclose{position:absolute;right:12px;top:12px;width:34px;height:34px;border-radius:50%;z-index:4;
  background:var(--surface);
  border:1px solid var(--line);color:var(--text-2);display:grid;place-items:center;font-size:.8rem}
#shimg{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--ph)}
#shph{display:none;aspect-ratio:16/9;place-items:center;background:var(--surface-2);font-size:3rem}
/* galería de fotos en la ficha */
#shgal{position:relative;width:100%;aspect-ratio:4/3;background:var(--ph);overflow:hidden}
#shgal[hidden]{display:none}
#shgaltrack{display:flex;height:100%;overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
#shgaltrack::-webkit-scrollbar{display:none}
#shgaltrack img{flex:0 0 100%;width:100%;height:100%;object-fit:cover;
  scroll-snap-align:center;scroll-snap-stop:always;background:var(--ph)}
.shdots{position:absolute;left:0;right:0;bottom:9px;display:flex;justify-content:center;gap:5px;pointer-events:none}
.shdots i{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.6);
  box-shadow:0 1px 4px rgba(0,0,0,.45);transition:background .2s,transform .2s}
.shdots i.on{background:#fff;transform:scale(1.3)}
.shcount{position:absolute;right:8px;top:8px;background:rgba(0,0,0,.55);color:#fff;
  font-size:.62rem;font-weight:800;padding:3px 8px;border-radius:8px;letter-spacing:.3px}
.shbody{padding:14px 18px 4px}
.shfam{font-size:.62rem;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--text-3)}
.shname{font-size:1rem;font-weight:700;line-height:1.35;margin-top:5px;padding-right:36px}
.shprice{font-size:1.45rem;font-weight:800;margin-top:9px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.shprice small{font-size:.68rem;font-weight:600;color:var(--text-3)}
.shprice s{font-size:.85rem;font-weight:600;color:var(--text-3)}
.shstock{margin-top:6px;font-size:.75rem;color:#1a9b4d;font-weight:700}
:root[data-theme=dark] .shstock{color:#4ade80}
.shpromo{margin-top:8px;display:inline-flex;align-items:center;gap:6px;
  background:color-mix(in srgb,var(--magenta) 14%,var(--surface));color:#c4006a;
  font-size:.68rem;font-weight:800;padding:5px 10px;border-radius:9px}
:root[data-theme=dark] .shpromo{color:#ff86bf}
.shpromo[hidden]{display:none}
.shdesc{margin-top:7px;font-size:.78rem;line-height:1.5;color:var(--text-2)}
.shdesc[hidden]{display:none}
.shact{display:grid;gap:9px;padding:16px 18px 8px}
.btnwa{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--green);
  color:#fff;text-decoration:none;font-weight:800;font-size:.9rem;padding:15px;border-radius:13px;
  box-shadow:0 8px 22px -10px color-mix(in srgb,var(--green) 80%,transparent);transition:transform .15s}
.btnwa:active{transform:scale(.97)}
.btnadd{background:var(--surface-2);color:var(--text);font-weight:700;font-size:.86rem;
  padding:14px;border-radius:13px;border:1px solid var(--line);transition:transform .15s,background .2s}
.btnadd:active{transform:scale(.97)}
.btnadd.on{background:var(--btn);color:var(--btn-fg);border-color:transparent}
#toast{position:fixed;left:50%;bottom:calc(88px + var(--safe));transform:translate(-50%,20px);z-index:99;
  background:var(--btn);color:var(--btn-fg);font-size:.78rem;font-weight:700;padding:11px 18px;
  border-radius:24px;opacity:0;pointer-events:none;
  transition:opacity .25s,transform .3s cubic-bezier(.2,1.2,.4,1);white-space:nowrap;
  box-shadow:0 12px 30px -10px rgba(0,0,0,.5);max-width:calc(100vw - 32px);overflow:hidden;text-overflow:ellipsis}
#toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- 13. BARRA INSTALAR ---------- */
.installbar{position:fixed;left:12px;right:12px;bottom:calc(84px + var(--safe));z-index:86;
  display:flex;align-items:center;gap:10px;padding:10px;border-radius:16px;
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--pop-sh);
  animation:slideUp .4s var(--ease) both}
.installbar[hidden]{display:none}
.installbar img{border-radius:10px;flex:0 0 auto}
.ib-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.ib-txt b{font-size:.78rem}
.ib-sub{font-size:.64rem;color:var(--text-3);line-height:1.25}
.ib-go{background:var(--btn);color:var(--btn-fg);font-weight:800;font-size:.74rem;
  padding:9px 14px;border-radius:10px;flex:0 0 auto}
.ib-x{width:26px;height:26px;border-radius:50%;background:var(--surface-2);color:var(--text-3);
  font-size:.7rem;display:grid;place-items:center;flex:0 0 auto}

/* ---------- 14. FOOTER ---------- */
footer{background:#080b12;color:#aeb7c6;font-size:.8rem;line-height:1.7;position:relative;
  padding-top:4px;overflow:hidden}
footer::before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);
  background-size:46px 46px;
  mask-image:radial-gradient(80% 60% at 50% 0%,#000,transparent 75%)}
.cmyk-bar{display:flex;height:4px;position:relative;z-index:1}
.cmyk-bar div{flex:1}
.cb1{background:#111}.cb2{background:var(--cyan)}.cb3{background:var(--yellow)}.cb4{background:var(--magenta)}
.foot-in{position:relative;z-index:1;display:grid;gap:26px;padding:30px 0 22px}
.fbrand .lg{height:56px;width:auto;margin-bottom:10px}
.fbrand .lema{font-style:italic;color:#dfe4ee;font-size:.76rem;letter-spacing:.3px}
.fcol h4{font-size:.66rem;text-transform:uppercase;letter-spacing:1.3px;color:#7f8a9d;
  margin-bottom:10px;font-weight:800}
.flinks{display:flex;flex-direction:column;gap:8px}
.flinks a,.flinks span{color:#b8c1d0;font-size:.79rem;text-decoration:none}
.flinks a:hover{color:#fff}
.flinks a::after{content:'';display:block;height:1px;width:0;background:var(--cyan);transition:width .25s}
.flinks a:hover::after{width:100%}
.foot-bottom{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;
  align-items:center;padding:14px 0 22px;border-top:1px solid rgba(255,255,255,.08);
  font-size:.7rem;color:#7f8a9d}
.foot-bottom b{color:#dfe4ee;letter-spacing:1.4px;font-size:.72rem}
.foot-bottom .rif{color:#68727f}

/* transición de tema (View Transitions API) */
::view-transition-old(root),::view-transition-new(root){animation-duration:.32s}


/* ---------- UBICACIÓN / CÓMO LLEGAR ---------- */
#ubicacion{padding-bottom:26px}
.ubi{display:grid;gap:14px;margin-top:12px}
.ubi-map{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);
  background:var(--surface-2);min-height:240px;box-shadow:var(--card-sh)}
.ubi-map iframe{width:100%;height:100%;min-height:240px;border:0;display:block}
/* mapa en modo oscuro: se invierte para integrarse con el tema */
:root[data-theme=dark] .ubi-map iframe{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.92) saturate(.75)}
@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]) .ubi-map iframe{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.92) saturate(.75)}
}
.ubi-pin{position:absolute;left:10px;top:10px;display:flex;align-items:center;gap:7px;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 12px;
  font-size:.72rem;font-weight:800;text-decoration:none;color:var(--text);
  box-shadow:0 8px 20px -10px rgba(0,0,0,.5)}
.ubi-pin .pin-ico{font-size:1rem}
.ubi-info h3{font-size:1.05rem;font-weight:800}
.ubi-dir{margin-top:4px;font-size:.86rem;color:var(--text-2)}
.ubi-ref{margin-top:8px;font-size:.78rem;color:var(--text-3);line-height:1.55}
.ubi-list{list-style:none;margin-top:12px;display:grid;gap:10px}
.ubi-list li{display:flex;gap:10px;align-items:flex-start}
.ubi-list li>span{width:30px;height:30px;border-radius:9px;background:var(--surface-2);
  display:grid;place-items:center;font-size:.9rem;flex:0 0 auto;border:1px solid var(--line)}
.ubi-list b{display:block;font-size:.64rem;text-transform:uppercase;letter-spacing:.8px;color:var(--text-3)}
.ubi-list a{font-size:.8rem;font-weight:600;color:var(--text);text-decoration:none;
  border-bottom:1px solid color-mix(in srgb,var(--cyan) 45%,transparent)}
.ubi-actions{display:grid;gap:8px;margin-top:16px}
.btn-solid,.btn-ghost{display:flex;align-items:center;justify-content:center;gap:8px;
  font-weight:800;font-size:.85rem;padding:13px;border-radius:12px;text-decoration:none;transition:transform .15s}
.btn-solid{background:var(--btn);color:var(--btn-fg)}
.btn-ghost{background:var(--surface);color:var(--text);border:1px solid var(--line)}
.btn-solid:active,.btn-ghost:active{transform:scale(.97)}

/* ---------- 15. ANIMACIONES ---------- */
@keyframes float{0%,100%{transform:translate3d(0,0,0) scale(1)}
  33%{transform:translate3d(28px,-20px,0) scale(1.07)}
  66%{transform:translate3d(-20px,16px,0) scale(.95)}}
@keyframes gridPan{to{background-position:46px 46px,46px 46px}}
@keyframes pop{from{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:none}}
@keyframes riseUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes blink{0%,49%{opacity:1}50%,100%{opacity:0}}
@keyframes fadeLine{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@keyframes marquee{to{transform:translateX(-50%)}}
@keyframes shine{0%{transform:translateX(-120%)}55%,100%{transform:translateX(120%)}}
@keyframes shimmer{to{transform:translateX(100%)}}
@keyframes pulseDot{0%{box-shadow:0 0 0 0 rgba(37,211,102,.55)}70%{box-shadow:0 0 0 7px rgba(37,211,102,0)}
  100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}
@keyframes salePulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes beat{0%{transform:scale(1)}35%{transform:scale(1.42)}70%{transform:scale(.92)}100%{transform:scale(1)}}
@keyframes bump{0%{transform:scale(1)}40%{transform:scale(1.45)}100%{transform:scale(1)}}
@keyframes sugIn{from{opacity:0;transform:translateY(-6px) scale(.985)}to{opacity:1;transform:none}}
@keyframes slideUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes gradSlide{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}

/* pantallas bajas: hero compacto para que asome el catálogo */
@media (min-width:900px) and (max-height:860px){
  .lockup{margin:8px 0 2px}
  .lockup .lg{height:clamp(104px,10vw,132px)}
  .hero h1{font-size:clamp(1.6rem,3vw,2.15rem)}
  .hero h1::after{margin-top:10px}
  .sub{margin-top:9px}
  .sw{margin-top:14px}
  .stats{margin-top:16px}
  .hero{padding-bottom:20px}
}

/* ---------- 16. BREAKPOINTS ---------- */
@media (min-width:520px){
  .wall{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  .promo{flex-basis:62%}
  .famcard{flex-basis:118px}
}
@media (min-width:560px){
  .hnav{display:flex}
  .hero{padding-top:calc(var(--hdh) + env(safe-area-inset-top,0px) + 26px);padding-bottom:38px}
  .installbar{left:auto;right:16px;width:max-content;max-width:380px}
}
@media (min-width:760px){
  .wall{grid-template-columns:repeat(4,minmax(0,1fr))}
  .foot-in{grid-template-columns:1.2fr 1fr 1fr;gap:34px}
  .promo{flex-basis:46%;max-width:none}
}
@media (min-width:700px){.ubi-actions{grid-template-columns:1fr 1fr}}
@media (min-width:900px){
  .hwrap{min-height:64px}
  .brand .lg{height:34px}
  .ubi{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:22px;align-items:start}
  .ubi-map,.ubi-map iframe{min-height:330px}
  .ubi-actions{grid-template-columns:1fr}
  .hero-in{grid-template-columns:minmax(0,1.05fr) 420px;align-items:center;gap:44px}
  .hero-copy{text-align:left;align-items:flex-start}
  .lockup .lg{height:clamp(130px,13vw,190px);margin-inline:0}
  .hero h1{max-width:20ch}
  .hero h1::after{margin-left:0}
  .sub{max-width:46ch}
  .sw{margin-left:0}
  .stats{max-width:520px;gap:16px;margin-top:26px}
  .stat{text-align:left}
  .hvisual{display:block}
  .famscroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;overflow:visible;
    padding-inline:max(var(--pad),calc((100% - 1240px)/2))}
  .famcard{flex:none}
  .promos{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;
    overflow:visible;padding-inline:max(var(--pad),calc((100% - 1240px)/2))}
  .promo{flex:none;max-width:none}
  #sheet{left:50%;right:auto;bottom:auto;top:50%;width:min(860px,94vw);max-height:90vh;
    border-radius:20px;border-bottom:1px solid var(--line);overflow:hidden;padding-bottom:0;
    display:grid;grid-template-columns:minmax(0,44%) minmax(0,56%);
    grid-template-areas:"img body" "img act";align-content:start;
    transform:translate(-50%,-46%) scale(.97);opacity:0;
    transition:transform .3s var(--ease),opacity .22s}
  #sheet.on{transform:translate(-50%,-50%) scale(1);opacity:1}
  .grab{display:none}
  #shimg,#shph{grid-area:img;width:100%;height:100%;min-height:300px;aspect-ratio:auto;
    object-fit:contain;margin:0;border-radius:0;background:var(--surface-2);padding:18px}
  #shgal{grid-area:img;height:100%;min-height:320px;aspect-ratio:auto;background:var(--surface-2)}
  #shgaltrack img{object-fit:contain;padding:18px}
  .shbody{grid-area:body;padding:40px 26px 6px}
  .shact{grid-area:act;padding:8px 26px 26px;grid-template-columns:1fr}
  .shname{font-size:1.15rem;padding-right:30px}
  .shprice{font-size:1.6rem}
  .shclose{top:12px;right:12px}
  #toast{bottom:calc(26px + var(--safe))}
  .installbar{bottom:16px}
}
@media (min-width:1120px){
  .wall{grid-template-columns:repeat(5,minmax(0,1fr))}
  .brand .lg{height:40px}
  .hero-in{grid-template-columns:minmax(0,1.05fr) 460px;gap:52px}
}
@media (min-width:1400px){
  .wall{grid-template-columns:repeat(6,minmax(0,1fr))}
}
@media (hover:hover) and (pointer:fine){
  .card:hover{transform:translateY(-4px);box-shadow:var(--card-sh-h);border-color:color-mix(in srgb,var(--cyan) 40%,var(--line))}
  .card:hover .ph img{transform:scale(1.05)}
  .card:hover .add{opacity:1;transform:none}
  .promo:hover{transform:translateY(-2px)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important}
  .card.reveal{opacity:1;transform:none}
  .cl{opacity:1}
  .tk{animation:none}
  html{scroll-behavior:auto}
}

/* ---------- 17. MÓVIL: ahorro de pintado (fluidez) ---------- */
@media (max-width:820px){
  .grid-bg{animation:none!important}
  .blob{filter:blur(48px);animation:none!important;will-change:auto}
  #hdr{backdrop-filter:none;-webkit-backdrop-filter:none}
  :root{--hd-bg:rgba(255,255,255,.97)}
  :root[data-theme=dark]{--hd-bg:rgba(12,14,20,.97)}
  @media (prefers-color-scheme:dark){:root:not([data-theme=light]){--hd-bg:rgba(12,14,20,.97)}}
  #sheet{will-change:auto}
  .card.reveal{opacity:1!important;transform:none!important;transition:none!important}
}

/* piezas del muro paginado */
.feed{grid-column:1/-1;height:1px;width:100%}
#prog{will-change:width}

/* ---------- 18. BURBUJA «CÓMO LLEGAR» (va directo a #ubicacion) ---------- */
#ubifab{position:fixed;right:16px;bottom:calc(84px + var(--safe));z-index:84;
  display:flex;align-items:center;gap:7px;padding:0 16px 0 13px;height:46px;border-radius:23px;
  background:linear-gradient(135deg,var(--cyan),#0a7ec4);color:#fff;text-decoration:none;
  font-weight:800;font-size:.78rem;letter-spacing:.2px;border:1px solid rgba(255,255,255,.14);
  box-shadow:0 10px 24px -10px rgba(3,60,95,.65),0 2px 6px rgba(3,60,95,.22);
  opacity:0;transform:translateY(10px) scale(.9);pointer-events:none;
  transition:opacity .22s ease,transform .32s cubic-bezier(.2,1.4,.4,1),bottom .28s var(--ease)}
#ubifab.on{opacity:1;transform:none;pointer-events:auto}
#ubifab:active{transform:scale(.94)}
#ubifab .uf-ico{font-size:1rem;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25))}
/* no estorbar cuando ya estás en la zona, hay ficha abierta o aparece la barra de instalar */
#ubifab.on.ubi-here,body.ficha-abierta #ubifab{opacity:0;transform:translateY(10px) scale(.9);pointer-events:none}
body.instalar-on #ubifab{bottom:calc(158px + var(--safe))}   /* encima de la barra «Instalá la app» */
@media (max-width:400px){#ubifab{height:44px;font-size:.74rem;padding:0 14px 0 11px}}
@media (prefers-reduced-motion:reduce){#ubifab{transition:opacity .15s}}
