/* BLINK (Krishna t421u + t422u, 25 Oct 2026, TEST COPY): "full blink" + a guided blink path. store.js bkStep() sets html[data-bk] to the ONE
   next step: order (Order Form) -> size (sub-category strip) -> add (Add buttons) -> cart (Cart icon / cart bar / mini-cart button)
   -> checkout (cart page order button) -> submit (final send button). Only that target flashes, about once per second, alternating the brand
   colour and a bright yellow/orange highlight. Text colour switches together with the background so it is ALWAYS readable (never faded).
   Guests: the homepage Login button (and the header account icon on the homepage) blink as well. The sub-category strip stays pinned at the
   top while scrolling (store.js hvCatInit). prefers-reduced-motion: no animation, a static highlighted border instead. */
@keyframes bkOF{0%{background:#1e5bd8;border-color:#1e5bd8;color:#fff}50%{background:#ffc400;border-color:#ff8a00;color:#0a1630}}
@keyframes bkRing{0%{box-shadow:0 0 0 0 rgba(255,196,0,0)}50%{box-shadow:0 0 0 3px #ff8a00,0 0 18px 6px rgba(255,170,0,.75)}}
@keyframes bkNav{0%{background:#e8efff;color:#1e5bd8;box-shadow:inset 0 0 0 2px #1e5bd8}50%{background:#ffc400;color:#0a1630;box-shadow:inset 0 0 0 2px #ff8a00}}
@keyframes bkTop{0%{background:#1e5bd8;color:#fff}50%{background:#ffc400;color:#0a1630;box-shadow:0 0 12px 3px rgba(255,170,0,.7)}}
@keyframes bkLG{0%{background:#1e5bd8;border-color:#1e5bd8;color:#fff;box-shadow:0 0 0 0 rgba(255,196,0,0)}50%{background:#ffc400;border-color:#ff8a00;color:#0a1630;box-shadow:0 0 0 3px #ff8a00,0 0 16px 5px rgba(255,170,0,.7)}}
@keyframes bkLGi{0%{background:transparent;box-shadow:0 0 0 0 rgba(255,196,0,0)}50%{background:#ffc400;color:#0a1630;box-shadow:0 0 0 2px #ff8a00,0 0 12px 3px rgba(255,170,0,.7)}}
@keyframes bkSB{0%{box-shadow:inset 0 0 0 3px #1e5bd8}50%{box-shadow:inset 0 0 0 3px #ffb000,0 0 18px 2px rgba(255,170,0,.55)}}
@keyframes bkLbl{0%{background:#1e5bd8;color:#fff}50%{background:#ffc400;color:#0a1630}}
@keyframes bkChip{0%{background:#fff;border-color:#1e5bd8;color:#0a1630;box-shadow:0 2px 6px rgba(8,22,64,.18)}50%{background:#fff1b8;border-color:#ff8a00;color:#0a1630;box-shadow:0 0 0 3px rgba(255,170,0,.55)}}
@keyframes bkChipOn{0%{box-shadow:0 3px 10px rgba(194,65,12,.45)}50%{box-shadow:0 0 0 3px #ffc400,0 0 14px 4px rgba(255,170,0,.75)}}
@keyframes bkWA{0%{background:#16a34a;border-color:#16a34a;color:#fff;box-shadow:0 0 0 0 rgba(255,196,0,0)}50%{background:#ffc400;border-color:#ff8a00;color:#0a1630;box-shadow:0 0 0 3px #ff8a00,0 0 16px 5px rgba(255,170,0,.7)}}

/* step 'order' – 'Order Form': homepage big button, bottom nav (phone), desktop top menu */
html[data-bk=order] .hsbig .hsb.hsof,html.appx[data-hth][data-bk=order] .hsbig .hsb.hsof{animation:bkOF 1s steps(1,end) infinite}
.hsbig .hsb.hsof::after{animation:none!important;opacity:0}
html[data-bk=order] .hsbig .hsb.hsof::after{animation:bkRing 1s steps(1,end) infinite!important;opacity:1}
html.appx .bnav a[data-nav=shop]:not(.on) .ico{animation:none}
html .bnav a[data-nav=shop] .bnl2,html .hdr .nav a[data-nav=shop]{font-weight:800}
html[data-bk=order] .bnav a[data-nav=shop]:not(.on){animation:bkNav 1s steps(1,end) infinite;border-radius:12px}
html[data-bk=order] .hdr .nav a[data-nav=shop]{animation:bkTop 1s steps(1,end) infinite}

/* Login – guests: homepage login card button + header account icon on the homepage (html.me-out only while logged out) */
html .hsdash.out a.hslg,html .hsdash.out a.hslg.lgpulse{animation:bkLG 1s steps(1,end) infinite;font-weight:800}
html.me-out.bk-home .hdr .hact a[data-nav=account]{animation:bkLGi 1s steps(1,end) infinite;border-radius:12px}

/* sub-category strip – t423u: blinks ALL THE TIME on every page that has one (category pages #hvSB, search / brand / slider pages .utabs),
   also when a type/size is already chosen or after the first tap. 'CHOOSE SIZE' label, all chips and the strip frame flash together. */
.hvpf .hvlbl{display:inline-block;padding:4px 10px;border-radius:8px;font-size:13px;font-weight:900;background:#1e5bd8;color:#fff}
.hvpf .hvsb .hvc{font-weight:900}
.hvpf .hvsb .hvc:not(.on){border-color:#1e5bd8}
html .hvpf .hvsb,html #view .utabs{animation:bkSB 1s steps(1,end) infinite}
html .hvpf .hvlbl,html #view .utabs .uth{animation:bkLbl 1s steps(1,end) infinite}
html .hvpf .hvsb .hvc:not(.on),html #view .utabs .utab:not(.on){animation:bkChip 1s steps(1,end) infinite}
html .hvpf .hvsb .hvc.on,html #view .utabs .utab.on{animation:bkChipOn 1s steps(1,end) infinite}
/* t426u: every other chip row a customer may call 'sub category' blinks too: brand chips + 'All categories' chips on Order Form / home */
html #view .hv2chips{animation:bkSB 1s steps(1,end) infinite;border-radius:12px;padding:6px}
html #view .hv2chips .chip:not(.more){animation:bkChip 1s steps(1,end) infinite;font-weight:800}
#view .utabs{padding:6px 10px 8px;border-radius:12px;background:#f0f5fb}
#view .utabs .uth{display:inline-block;padding:3px 10px;border-radius:8px;font-weight:900}
#view .utabs .uth small{color:inherit}
#view .utabs .utab{font-weight:900;border:2px solid #1e5bd8}
#view .utabs .utab:not(.on) small{color:#33415e}
/* pinned strip: the label stays visible (was hidden) */
.hvsb.stuck .hvlbl,.hvsb.hvfx .hvlbl{display:inline-block;margin:4px 0 2px;font-size:11.5px;padding:2px 8px}

/* step 'add' – Add buttons on the list / product page */
html[data-bk=add] #view [data-add]{animation:bkOF 1s steps(1,end) infinite;font-weight:900}

/* step 'cart' – Cart icon (bottom nav + header), the sticky cart bar and the mini-cart 'Cart dekhein / Checkout' button */
html[data-bk=cart] .bnav a[data-nav=cart]{animation:bkNav 1s steps(1,end) infinite;border-radius:12px;font-weight:800}
html[data-bk=cart] .hdr .hcart{animation:bkTop 1s steps(1,end) infinite}
html[data-bk=cart] #cbar .cbgo,html[data-bk=cart] #dGo{animation:bkOF 1s steps(1,end) infinite;font-weight:900}

/* step 'checkout' – cart page order button (WhatsApp review or Send Quotation PDF) */
html[data-bk=checkout] #view a[href="#/checkout"].btn,html[data-bk=checkout] #view .sqbtn{animation:bkWA 1s steps(1,end) infinite;font-weight:900}
/* step 'submit' – final send button on the review screen */
html[data-bk=submit] #sendWa{animation:bkWA 1s steps(1,end) infinite;font-weight:900}

/* reduced motion: no flashing – static highlighted borders on the same targets */
@media(prefers-reduced-motion:reduce){
  html .hsbig .hsb.hsof,html.appx[data-hth] .hsbig .hsb.hsof,html .hsbig .hsb.hsof::after,html .bnav a,html .hdr .nav a,html .hdr .hcart,html .hdr .hact a,
  html .hsdash.out a.hslg,html .hsdash.out a.hslg.lgpulse,html .hvpf .hvsb,html .hvpf .hvlbl,html .hvpf .hvsb .hvc,html #view [data-add],
  html #cbar .cbgo,html #dGo,html #view a[href="#/checkout"].btn,html #view .sqbtn,html #sendWa{animation:none!important}
  html[data-bk=order] .hsbig .hsb.hsof,html .hsdash.out a.hslg,html[data-bk=add] #view [data-add],html[data-bk=cart] #cbar .cbgo,html[data-bk=cart] #dGo,
  html[data-bk=checkout] #view a[href="#/checkout"].btn,html[data-bk=checkout] #view .sqbtn,html[data-bk=submit] #sendWa{box-shadow:0 0 0 3px #ffb000!important}
  html[data-bk=order] .bnav a[data-nav=shop]:not(.on),html[data-bk=order] .hdr .nav a[data-nav=shop],html.me-out.bk-home .hdr .hact a[data-nav=account],
  html[data-bk=cart] .bnav a[data-nav=cart],html[data-bk=cart] .hdr .hcart{box-shadow:inset 0 0 0 2px #ffb000}
  html .hvpf .hvsb,html #view .utabs{box-shadow:inset 0 0 0 3px #ffb000}
  html .hvpf .hvsb .hvc:not(.on),html #view .utabs .utab:not(.on){border-color:#ff8a00}
  html #view .utabs,html #view .utabs .uth,html #view .utabs .utab,html #view .hv2chips,html #view .hv2chips .chip{animation:none!important}
  html #view .hv2chips{box-shadow:inset 0 0 0 3px #ffb000}
}

/* sticky strip (t422u/t423u). html.hvst is set by store.js hvStick() on every page with a strip (#hvSB or .utabs).
   overflow-x:clip instead of hidden so html/body are no scroll box and plain position:sticky works. If sticky still fails (old iOS / in-app
   web views) hvStick() detects it while scrolling and switches the strip to position:fixed + a spacer (.hvfx). */
html.hvst,html.hvst body{overflow-x:clip}
html.hvst .hvpf .hvsb,html.hvst #view .utabs.hvpin{position:-webkit-sticky;position:sticky;top:var(--hvtop,0px);z-index:25}
html.hvst .hvpf .hvsb.stuck{position:-webkit-sticky;position:sticky}
html.hvst .hvsb.hvfx,html.hvst #view .utabs.hvfx{position:fixed!important;margin:0!important;z-index:40;box-sizing:border-box;border-radius:0}
/* WebKit (iPhone Safari / WhatsApp in-app browser): dozens of blurred glass cards (.g backdrop-filter) under a sticky bar make WebKit stall /
   drop layers while scrolling – the bar 'disappears'. Strip pages get solid cards + a solid strip instead (same colours, no blur). */
html.hvst #view .g,html.hvst .hvpf .hvsb,html.hvst #view .utabs{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
/* t426u: also on pages WITHOUT a strip (search results): 45+ blurred glass cards stop iPhone WebKit from scrolling the page */
html #view .g{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
html.hvst .hvpf .hvsb{background:#06122c}
html.hvst[data-theme=light] .hvpf .hvsb,html.hvst:not([data-theme]) .hvpf .hvsb{background:#f0f5fb}
html[data-theme=dark] #view .utabs{background:#06122c}
