/* ============================================================
   City Care — app-like UI (mobile-first, scales to desktop)
   ============================================================ */
:root{
  --brand:#6C5CE7;
  --brand2:#00CEC9;
  --accent:#FF7A59;
  --ink:#171d33;
  --muted:#71809e;
  --bg:#eef1f9;
  --card:#ffffff;
  --line:#e5e9f4;
  --ok:#00b894;
  --danger:#e74c3c;
  --grad:linear-gradient(135deg,#6C5CE7 0%,#8E7BFF 45%,#00CEC9 100%);
  --shadow:0 6px 24px rgba(23,29,51,.08);
  --shadow-lg:0 18px 44px rgba(23,29,51,.16);
  --r:20px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{
  font-family:'Hind Siliguri','Segoe UI',system-ui,sans-serif;
  background:var(--bg);color:var(--ink);
  min-height:100vh;padding-bottom:92px;
}
img{max-width:100%;display:block}
button{font-family:inherit;cursor:pointer;border:0;background:none}
input,select,textarea{font-family:inherit;font-size:15px}
a{color:inherit;text-decoration:none}
::selection{background:#c9c2ff}

.wrap{max-width:1180px;margin:0 auto;padding:0 16px}

/* ------------------------------------------------ svg icons */
.i{width:1.1em;height:1.1em;fill:none;stroke:currentColor;stroke-width:2;
   stroke-linecap:round;stroke-linejoin:round;vertical-align:-.16em;flex:none}
.i.big{width:2.2em;height:2.2em;stroke-width:2.4}

/* ------------------------------------------------ call-centre strip */
.callbar{background:var(--ink);color:#cdd4ea;font-size:12.5px}
.callbar-in{display:flex;align-items:center;justify-content:space-between;gap:10px;height:36px}
.cb-left{display:flex;align-items:center;gap:7px;font-weight:600;letter-spacing:.2px}
.cb-num{
  display:flex;align-items:center;gap:6px;font-weight:800;color:#fff;font-size:13px;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);
  padding:4px 13px;border-radius:999px;transition:.2s;
}
.cb-num:hover{background:var(--grad);border-color:transparent}

/* ------------------------------------------------ top bar */
.topbar{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.82);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-bottom:1px solid rgba(229,233,244,.8);
}
.topbar-in{display:flex;align-items:center;gap:10px;height:62px}
.logo{display:flex;align-items:center;gap:9px;font-weight:800;font-size:19px;letter-spacing:.2px}
.logo .mark{
  width:38px;height:38px;border-radius:12px;background:var(--grad);
  display:grid;place-items:center;color:#fff;
  box-shadow:0 6px 16px rgba(108,92,231,.35);
  animation:markFloat 4s ease-in-out infinite;
}
.logo .mark .i{width:20px;height:20px}
@keyframes markFloat{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-3px) rotate(-4deg)}}
.logo b{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.logoimg{height:42px;width:auto;max-width:190px;object-fit:contain}
.spacer{flex:1}
.citybtn{
  display:flex;align-items:center;gap:7px;padding:9px 15px;border-radius:999px;
  background:#fff;border:1.5px solid var(--line);font-weight:700;font-size:14px;color:var(--ink);
  box-shadow:var(--shadow);transition:.25s;white-space:nowrap;max-width:46vw;overflow:hidden;
}
.citybtn:hover{border-color:var(--brand);transform:translateY(-1px)}
.citybtn .dot{width:8px;height:8px;border-radius:50%;background:var(--ok);flex:none;animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(0,184,148,.5)}70%{box-shadow:0 0 0 7px rgba(0,184,148,0)}100%{box-shadow:0 0 0 0 rgba(0,184,148,0)}}
.iconbtn{
  width:40px;height:40px;border-radius:13px;display:grid;place-items:center;font-size:18px;
  background:#fff;border:1.5px solid var(--line);transition:.2s;flex:none;
}
.iconbtn:hover{border-color:var(--brand);transform:translateY(-1px)}

/* ------------------------------------------------ hero */
.hero{
  position:relative;overflow:hidden;color:#fff;
  background:linear-gradient(120deg,#6C5CE7,#8E7BFF,#00CEC9,#6C5CE7);
  background-size:300% 300%;animation:heroShift 14s ease infinite;
}
@keyframes heroShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.hero .blob{position:absolute;border-radius:50%;filter:blur(2px);opacity:.16;background:#fff;animation:blob 14s ease-in-out infinite}
.hero .b1{width:280px;height:280px;top:-120px;right:-70px}
.hero .b2{width:180px;height:180px;bottom:-80px;left:-40px;animation-delay:-5s}
.hero .b3{width:90px;height:90px;top:30%;left:12%;animation-delay:-9s;opacity:.12}
@keyframes blob{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(26px,-18px) scale(1.08)}66%{transform:translate(-16px,14px) scale(.94)}}
.hero .skyline{position:absolute;bottom:-2px;left:0;right:0;opacity:.22}
.hero-in{position:relative;padding:34px 0 44px;text-align:center}
.hero h1{font-size:clamp(24px,5vw,40px);font-weight:800;line-height:1.25;animation:rise .7s ease both}
.hero p{margin-top:8px;font-size:clamp(14px,2.4vw,17px);opacity:.92;animation:rise .7s .12s ease both}
.hero-stats{display:flex;justify-content:center;gap:26px;margin-top:20px;animation:rise .7s .22s ease both;flex-wrap:wrap}
.hstat{text-align:center}
.hstat b{font-size:21px;display:block}
.hstat span{font-size:12.5px;opacity:.85}
.hstat.live b{display:flex;align-items:center;gap:6px;justify-content:center}
.livedot{width:9px;height:9px;border-radius:50%;background:#2ec96b;box-shadow:0 0 0 0 rgba(46,201,107,.7);animation:pulse 2s infinite}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}

/* search inside hero */
.searchbar{
  max-width:560px;margin:22px auto 0;display:flex;align-items:center;gap:10px;
  background:rgba(255,255,255,.97);border-radius:999px;padding:6px 8px 6px 20px;
  box-shadow:0 16px 40px rgba(20,20,60,.25);animation:rise .7s .3s ease both;
}
.searchbar input{flex:1;border:0;outline:0;background:none;font-size:15px;color:var(--ink);min-width:0}
.searchbar .go{
  background:var(--grad);color:#fff;font-weight:700;border-radius:999px;padding:11px 22px;font-size:14px;
  transition:.2s;flex:none;
}
.searchbar .go:hover{transform:scale(1.04)}

/* ------------------------------------------------ nav tabs (desktop) + bottom nav (mobile) */
.navtabs{
  position:sticky;top:62px;z-index:40;background:rgba(238,241,249,.9);backdrop-filter:blur(12px);
  padding:14px 0 4px;
}
.navtabs-in{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none}
.navtabs-in::-webkit-scrollbar{display:none}
.tab{
  display:flex;align-items:center;gap:8px;padding:11px 20px;border-radius:16px;font-weight:700;font-size:14.5px;
  background:#fff;color:var(--muted);border:1.5px solid var(--line);white-space:nowrap;transition:.25s;
}
.tab .i{width:17px;height:17px}
.tab:hover{transform:translateY(-2px);border-color:#c9c2ff}
.tab.on{background:var(--grad);color:#fff;border-color:transparent;box-shadow:0 10px 22px rgba(108,92,231,.35)}
.tab.danger{color:#c0392b;border-color:#f5c9c4}
.tab.danger:hover{background:#c0392b;color:#fff;border-color:transparent;box-shadow:0 10px 22px rgba(192,57,43,.3)}
.tab.manual{color:#0b7a53;border-color:#a7e4cd}
.tab.manual:hover{background:linear-gradient(135deg,#00b894,#00cec9);color:#fff;border-color:transparent;box-shadow:0 10px 22px rgba(0,184,148,.3)}
.tab.mapbtn{color:#4756ca;border-color:#c3caf5}
.tab.mapbtn:hover{background:linear-gradient(135deg,#6C5CE7,#4756ca);color:#fff;border-color:transparent;box-shadow:0 10px 22px rgba(108,92,231,.3)}
.tab.cityinfo{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff;border-color:transparent;box-shadow:0 8px 18px rgba(230,126,34,.3)}
.tab.cityinfo:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(230,126,34,.42)}

/* city-info banner variant */
.infobanner{background:linear-gradient(120deg,#7a4a10,#e67e22 55%,#f39c12);box-shadow:0 12px 30px rgba(230,126,34,.28)}
.infobanner:hover{box-shadow:0 16px 38px rgba(230,126,34,.42)}
.infobanner .mb-go{color:#c0620a}

/* view-count pills/badges */
.badge.views{left:auto;right:10px;top:auto;bottom:10px;background:rgba(23,29,51,.72);display:inline-flex;align-items:center;gap:3px}
.badge.views .i{width:12px;height:12px}
.badge.city{top:10px}
.viewpill{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--muted);font-weight:600}
.viewpill .i{width:12px;height:12px}
.vpill.v{background:#fff1e0;color:#c0620a;display:inline-flex;align-items:center;gap:3px}
.vpill.v .i{width:12px;height:12px}

/* city info modal */
.ihero{position:relative;border-radius:18px;overflow:hidden;margin-bottom:14px;height:180px;background:linear-gradient(135deg,#e67e22,#f39c12)}
.ihero img{width:100%;height:100%;object-fit:cover}
.ihero.noimg{display:grid;place-items:center}
.ihero-t{position:absolute;left:16px;bottom:12px;color:#fff;font-size:24px;font-weight:800;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.ihero.noimg .ihero-t{position:static;text-shadow:none}
.istats{display:flex;gap:12px;margin-bottom:14px}
.istat{flex:1;background:#fafbff;border:1px solid var(--line);border-radius:14px;padding:14px;text-align:center}
.istat b{font-size:22px;display:block;color:var(--brand)}
.istat span{font-size:12.5px;color:var(--muted);font-weight:600}
.ifacts{display:flex;flex-direction:column;gap:9px;margin-bottom:16px}
.ifact{display:flex;align-items:center;gap:12px;background:#fff8ef;border:1px solid #fbe4c6;border-radius:13px;padding:11px 14px}
.ifact .i{width:20px;height:20px;color:#e67e22;flex:none}
.ifact span{display:block;font-size:11.5px;color:var(--muted);font-weight:600}
.ifact b{font-size:14px}
.iblock{margin-bottom:15px}
.iblock h4{display:flex;align-items:center;gap:7px;font-size:15px;font-weight:800;margin-bottom:6px}
.iblock h4 .i{width:17px;height:17px;color:#e67e22}
.iblock p{color:#3d475f;font-size:14px;line-height:1.8;white-space:pre-line}

/* map banner variant */
.mapbanner{background:linear-gradient(120deg,#241a54,#4756ca 55%,#6C5CE7);box-shadow:0 12px 30px rgba(80,80,200,.28)}
.mapbanner:hover{box-shadow:0 16px 38px rgba(80,80,200,.42)}
.mapbanner .mb-go{color:#4756ca}

/* card city badge + vendor city line */
.badge.city{display:inline-flex;align-items:center;gap:3px}
.badge.city .i{width:12px;height:12px}
.vcity{display:flex;align-items:center;justify-content:center;gap:4px;font-size:11.5px;color:#0b7a53;font-weight:600;margin-top:3px}
.vcity .i{width:13px;height:13px}

/* cart FAB */
.cartfab{
  position:fixed;left:18px;bottom:86px;z-index:55;width:56px;height:56px;border-radius:18px;
  background:linear-gradient(135deg,#00b894,#00cec9);color:#fff;display:grid;place-items:center;
  box-shadow:0 14px 32px rgba(0,184,148,.45);transition:.25s;
}
.cartfab:hover{transform:scale(1.08)}
.cartfab .i{width:24px;height:24px}
.cartfab-badge{
  position:absolute;top:-6px;right:-6px;min-width:22px;height:22px;padding:0 5px;border-radius:999px;
  background:#e74c3c;color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center;border:2px solid #fff;
}
@media(min-width:900px){.cartfab{left:30px;bottom:30px}}

/* cart lines */
.cartlines{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}
.cartline{display:flex;align-items:center;gap:11px;background:#fafbff;border:1px solid var(--line);border-radius:14px;padding:9px 11px}
.cartline img{width:52px;height:52px;border-radius:11px;object-fit:cover;flex:none}
.cl-info{flex:1;min-width:0}
.cl-title{font-size:13.5px;font-weight:700;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cl-price{font-size:12px;color:var(--muted);margin-top:2px}
.cl-price b{color:var(--brand)}
.stepper.sm{padding:4px;gap:8px}
.stepper.sm button{width:30px;height:30px;font-size:15px}
.stepper.sm b{min-width:22px;font-size:14px}
.cartgrand{text-align:right;font-size:15px;font-weight:700;margin:6px 2px 4px;color:var(--ink)}
.cartgrand b{color:var(--brand);font-size:18px}

/* city request */
.cityreq{margin-top:14px;padding:14px;border-radius:14px;background:#f6f4ff;border:1px dashed #c3b8ff;font-size:13.5px;line-height:1.7}
.cityreq b{color:var(--brand)}
.cityreq .f-row{margin-top:8px}

/* footer apply buttons */
.fbtns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:14px 0}
.fbtn{
  display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);
  color:#e8ecfb;font-weight:700;font-size:13px;padding:10px 18px;border-radius:12px;transition:.2s;
}
.fbtn:hover{background:var(--grad);border-color:transparent;transform:translateY(-2px)}
.fbtn .i{width:16px;height:16px}

/* geolocation hint */
.geohint{font-size:12px;color:var(--muted);margin-top:7px;line-height:1.5}

/* map sheet + filters */
.mapsheet{max-width:820px}
.mapfilters{display:flex;gap:8px;overflow-x:auto;padding:6px 0 12px;scrollbar-width:none}
.mapfilters::-webkit-scrollbar{display:none}
.mchip{display:inline-flex;align-items:center;gap:5px;padding:8px 15px;border-radius:999px;font-size:13px;font-weight:600;background:#fff;border:1.5px solid var(--line);color:var(--ink);white-space:nowrap;flex:none;transition:.2s}
.mchip .i{width:15px;height:15px}
.mchip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
#cityMap{width:100%;height:60vh;min-height:360px;border-radius:16px;overflow:hidden;z-index:1}
.leaflet-popup-content{font-family:'Hind Siliguri',sans-serif;font-size:13px}
.leaflet-popup-content a{color:var(--brand);font-weight:700}

/* manual-order banner */
.manualbanner{
  width:100%;display:flex;align-items:center;gap:14px;text-align:right;
  margin:16px 0 2px;padding:15px 18px;border-radius:var(--r);cursor:pointer;
  background:linear-gradient(120deg,#063d2e,#0b7a53 55%,#00b894);color:#fff;
  box-shadow:0 12px 30px rgba(0,150,110,.28);border:0;transition:.25s;position:relative;overflow:hidden;
}
.manualbanner:hover{transform:translateY(-2px);box-shadow:0 16px 38px rgba(0,150,110,.4)}
.manualbanner::after{content:'';position:absolute;inset:0;background:radial-gradient(400px 120px at 90% 0,rgba(255,255,255,.18),transparent 70%);pointer-events:none}
.manualbanner .mb-ico{width:46px;height:46px;border-radius:14px;background:rgba(255,255,255,.18);display:grid;place-items:center;flex:none}
.manualbanner .mb-ico .i{width:24px;height:24px}
.manualbanner .mb-txt{flex:1;text-align:left;display:flex;flex-direction:column;gap:2px}
.manualbanner .mb-txt b{font-size:15.5px;font-weight:800}
.manualbanner .mb-txt small{font-size:12px;opacity:.9;line-height:1.4}
.manualbanner .mb-go{background:#fff;color:#0b7a53;font-weight:800;font-size:13px;padding:9px 16px;border-radius:999px;white-space:nowrap;flex:none}
@media(max-width:520px){.manualbanner .mb-go{display:none}}

.bottomnav{
  position:fixed;bottom:0;left:0;right:0;z-index:60;display:none;
  background:rgba(255,255,255,.94);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-top:1px solid var(--line);padding:7px 6px calc(7px + env(safe-area-inset-bottom));
}
.bottomnav-in{display:flex;justify-content:space-around;max-width:560px;margin:0 auto}
.bn{
  display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 10px;border-radius:14px;
  font-size:10.5px;font-weight:700;color:var(--muted);transition:.2s;position:relative;min-width:58px;
}
.bn .ico{display:grid;place-items:center;transition:.25s}
.bn .ico .i{width:21px;height:21px}
.bn.on{color:var(--brand)}
.bn.on .ico{transform:translateY(-3px) scale(1.12)}
.bn.on::after{content:'';position:absolute;bottom:1px;width:16px;height:3px;border-radius:3px;background:var(--grad)}
.bn-add{color:var(--brand)}
.bn-add .ico{width:34px;height:34px;border-radius:12px;background:var(--grad);color:#fff;margin-top:-10px;box-shadow:0 8px 18px rgba(108,92,231,.4)}
.bn-danger{color:#c0392b}

/* ------------------------------------------------ chips */
.chipswrap{padding:14px 0 4px}
.chips{display:flex;gap:9px;overflow-x:auto;scrollbar-width:none;padding-bottom:6px}
.chips::-webkit-scrollbar{display:none}
.chip{
  display:flex;align-items:center;gap:6px;padding:8px 16px;border-radius:999px;font-size:13.5px;font-weight:600;
  background:#fff;border:1.5px solid var(--line);color:var(--ink);white-space:nowrap;transition:.22s;flex:none;
}
.chip:hover{border-color:#c9c2ff;transform:translateY(-1px)}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}

/* ------------------------------------------------ section head */
.sechead{display:flex;align-items:center;gap:10px;margin:16px 0 4px}
.sechead h2{font-size:19px;font-weight:800}
.sechead .count{
  background:#fff;border:1.5px solid var(--line);border-radius:999px;padding:3px 12px;
  font-size:12.5px;font-weight:700;color:var(--muted);
}
.sechead .addlink{
  margin-left:auto;display:flex;align-items:center;gap:6px;background:var(--grad);color:#fff;
  font-weight:700;font-size:13.5px;padding:9px 17px;border-radius:999px;transition:.2s;
  box-shadow:0 8px 18px rgba(108,92,231,.3);
}
.sechead .addlink:hover{transform:translateY(-2px) scale(1.02)}

/* ------------------------------------------------ cards grid */
.grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));
  gap:14px;padding:14px 0 30px;
}
@media(min-width:720px){.grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}}

.card{
  background:var(--card);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);
  border:1px solid rgba(229,233,244,.6);display:flex;flex-direction:column;
  transition:transform .28s cubic-bezier(.2,.9,.3,1.4),box-shadow .28s;cursor:pointer;position:relative;
  opacity:0;transform:translateY(22px);
}
.card.in{opacity:1;transform:translateY(0);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.9,.3,1.2),box-shadow .28s}
.card.in:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.card .thumb{position:relative;aspect-ratio:4/3;overflow:hidden;background:#eceef8}
.card .thumb img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.card.in:hover .thumb img{transform:scale(1.07)}
.badge{
  position:absolute;top:10px;left:10px;background:rgba(23,29,51,.72);color:#fff;backdrop-filter:blur(6px);
  font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;
}
.badge.city{left:auto;right:10px;background:rgba(0,184,148,.85)}
.card .body{padding:12px 13px 13px;display:flex;flex-direction:column;gap:6px;flex:1}
.card h3{font-size:14.5px;font-weight:700;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.75em}
.vline{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);font-weight:600}
.vline img{width:20px;height:20px;border-radius:50%;object-fit:cover;flex:none}
.vline span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card .foot{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:4px}
.price{font-size:16.5px;font-weight:800;color:var(--brand)}
.price small{font-size:11px;color:var(--muted);font-weight:600}
.mini{
  margin-left:auto;background:var(--grad);color:#fff;font-size:12.5px;font-weight:700;
  padding:8px 15px;border-radius:12px;transition:.2s;flex:none;
}
.mini:hover{transform:scale(1.06)}
.mini.ghost{background:#f0eefe;color:var(--brand)}
.actrow{display:flex;gap:7px;margin-top:auto;padding-top:6px}
.act{
  flex:1;display:flex;align-items:center;justify-content:center;gap:5px;padding:9px 4px;border-radius:12px;
  font-size:12px;font-weight:700;transition:.2s;
}
.act:hover{transform:translateY(-1px)}
.act.call{background:#e8f8f3;color:#00845f}
.act.wa{background:#e7f9ec;color:#128c4b}
.act.map{background:#eef2ff;color:#4756ca}

/* vendor cards */
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:14px;padding:14px 0 30px}
@media(min-width:720px){.vgrid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px}}
.vcard{
  background:#fff;border-radius:var(--r);padding:22px 14px 16px;text-align:center;box-shadow:var(--shadow);
  border:1px solid rgba(229,233,244,.6);cursor:pointer;position:relative;overflow:hidden;
  transition:transform .28s,box-shadow .28s;opacity:0;transform:translateY(22px);
}
.vcard.in{opacity:1;transform:translateY(0);transition:opacity .5s,transform .5s cubic-bezier(.2,.9,.3,1.2),box-shadow .28s}
.vcard.in:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.vcard::before{content:'';position:absolute;top:0;left:0;right:0;height:58px;background:var(--grad);opacity:.14}
.vcard .avatar{
  width:72px;height:72px;border-radius:50%;object-fit:cover;margin:0 auto 10px;position:relative;
  border:3px solid #fff;box-shadow:0 6px 16px rgba(23,29,51,.18);
}
.vcard h3{font-size:14.5px;font-weight:700;line-height:1.35}
.vcard .vtype{font-size:11.5px;color:var(--muted);font-weight:600;margin-top:2px}
.vcard .vstats{display:flex;justify-content:center;gap:7px;margin-top:10px;flex-wrap:wrap}
.vpill{background:#f2f0ff;color:var(--brand);font-size:11px;font-weight:700;padding:4px 11px;border-radius:999px}
.vpill.s{background:#e6faf6;color:#00845f}

/* ------------------------------------------------ empty / skeleton */
.empty{text-align:center;padding:54px 16px;color:var(--muted)}
.empty .big{
  width:76px;height:76px;border-radius:24px;background:#fff;box-shadow:var(--shadow);
  display:grid;place-items:center;margin:0 auto 14px;color:#b6bfda;
  animation:markFloat 3s ease-in-out infinite;
}
.empty .big .i{width:32px;height:32px}
.empty h3{color:var(--ink);font-size:17px;margin-bottom:4px}
.skel{border-radius:var(--r);overflow:hidden;background:#fff;box-shadow:var(--shadow)}
.skel .ph{aspect-ratio:4/3}
.skel .ln{height:13px;border-radius:7px;margin:11px 13px}
.skel .ln.s{width:55%}
.shimmer{background:linear-gradient(90deg,#edf0f8 25%,#f8fafe 50%,#edf0f8 75%);background-size:400% 100%;animation:shim 1.3s infinite}
@keyframes shim{0%{background-position:100% 0}100%{background-position:-100% 0}}

/* ------------------------------------------------ FAB */
.fab{
  position:fixed;right:18px;bottom:86px;z-index:55;width:58px;height:58px;border-radius:19px;
  background:var(--grad);color:#fff;display:grid;place-items:center;
  box-shadow:0 14px 32px rgba(108,92,231,.45);transition:.25s;animation:fabIn .6s .8s cubic-bezier(.2,.9,.3,1.6) both;
}
.fab .i{width:24px;height:24px}
@keyframes fabIn{from{transform:scale(0) rotate(-90deg)}to{transform:scale(1) rotate(0)}}
.fab:hover{transform:scale(1.09) rotate(90deg)}
@media(min-width:900px){.fab{bottom:30px;right:30px}}

/* ------------------------------------------------ sheets (bottom sheet mobile / dialog desktop) */
.overlay{
  position:fixed;inset:0;z-index:90;background:rgba(15,18,38,.55);backdrop-filter:blur(5px);
  opacity:0;pointer-events:none;transition:opacity .3s;display:flex;align-items:flex-end;justify-content:center;
}
.overlay.open{opacity:1;pointer-events:auto}
.sheet{
  background:#fff;width:100%;max-width:600px;max-height:92vh;overflow-y:auto;overscroll-behavior:contain;
  border-radius:26px 26px 0 0;padding:10px 20px 30px;transform:translateY(100%);transition:transform .38s cubic-bezier(.2,.9,.25,1);
}
.overlay.open .sheet{transform:translateY(0)}
.sheet .grab{width:44px;height:5px;border-radius:3px;background:#dfe3f0;margin:6px auto 14px}
@media(min-width:720px){
  .overlay{align-items:center;padding:24px}
  .sheet{border-radius:26px;max-height:86vh;transform:translateY(26px) scale(.96);opacity:0;transition:.32s cubic-bezier(.2,.9,.3,1.2)}
  .overlay.open .sheet{transform:none;opacity:1}
}
.sheet h2{font-size:19px;font-weight:800;margin-bottom:4px}
.sheet .sub{color:var(--muted);font-size:13.5px;margin-bottom:14px}
.sheet-close{
  position:sticky;top:2px;margin-left:auto;display:grid;place-items:center;width:34px;height:34px;z-index:5;
  border-radius:50%;background:#f1f3fa;font-size:15px;color:var(--muted);float:right;transition:.2s;
}
.sheet-close:hover{background:#e74c3c;color:#fff;transform:rotate(90deg)}

/* detail sheet */
.dimg{border-radius:18px;overflow:hidden;margin-bottom:14px;position:relative}
.dimg img{width:100%;max-height:300px;object-fit:cover}
.dtitle{font-size:20px;font-weight:800;line-height:1.35}
.dmeta{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.dpill{background:#f2f4fb;border:1px solid var(--line);border-radius:999px;padding:5px 13px;font-size:12.5px;font-weight:600;color:var(--muted)}
.dprice{font-size:24px;font-weight:800;color:var(--brand);margin:6px 0}
.ddesc{color:#3d475f;font-size:14.5px;line-height:1.8;white-space:pre-line}
.dvendor{
  display:flex;align-items:center;gap:12px;background:#f7f8fd;border:1px solid var(--line);
  border-radius:16px;padding:12px 14px;margin:14px 0;
}
.dvendor img{width:46px;height:46px;border-radius:50%;object-fit:cover}
.dvendor .nm{font-weight:700;font-size:14.5px}
.dvendor .tp{font-size:12px;color:var(--muted)}

/* ------------------------------------------------ forms */
.f-label{display:block;font-size:13px;font-weight:700;color:var(--ink);margin:13px 0 6px}
.f-in,.f-sel,.f-ta{
  width:100%;padding:13px 15px;border-radius:14px;border:1.6px solid var(--line);outline:0;background:#fafbff;
  transition:.2s;color:var(--ink);
}
.f-in:focus,.f-sel:focus,.f-ta:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 4px rgba(108,92,231,.12)}
.f-ta{min-height:96px;resize:vertical}
.f-row{display:flex;gap:10px}
.f-row>*{flex:1;min-width:0}
.f-err{color:var(--danger);font-size:13px;font-weight:600;margin-top:10px;display:none}
.f-err.show{display:block;animation:shake .4s}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

/* selectable option cards */
.optrow{display:flex;gap:10px}
.opt{
  flex:1;border:2px solid var(--line);border-radius:16px;padding:15px 10px;text-align:center;cursor:pointer;
  transition:.22s;background:#fff;
}
.opt .ico{display:grid;place-items:center;margin-bottom:7px;color:var(--brand)}
.opt .ico .i{width:24px;height:24px}
.opt b{font-size:13.5px}
.opt small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.opt:hover{transform:translateY(-2px)}
.opt.on{border-color:var(--brand);background:#f6f4ff;box-shadow:0 8px 20px rgba(108,92,231,.18)}

/* image picker */
.imgpick{
  border:2px dashed #c9cfe4;border-radius:16px;padding:16px;text-align:center;color:var(--muted);
  cursor:pointer;transition:.2s;font-size:13.5px;font-weight:600;position:relative;overflow:hidden;background:#fafbff;
}
.imgpick:hover{border-color:var(--brand);color:var(--brand)}
.imgpick input{position:absolute;inset:0;opacity:0;cursor:pointer}
.imgpick img.prev{max-height:130px;margin:0 auto 8px;border-radius:12px}

/* wizard steps */
.steps{display:flex;gap:6px;margin:6px 0 18px}
.steps i{flex:1;height:5px;border-radius:3px;background:#e6e9f5;transition:.35s}
.steps i.on{background:var(--grad)}
.wstep{display:none;animation:stepIn .35s ease}
.wstep.on{display:block}
@keyframes stepIn{from{opacity:0;transform:translateX(26px)}to{opacity:1;transform:translateX(0)}}

/* buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:15px;
  border-radius:16px;background:var(--grad);color:#fff;font-weight:800;font-size:15px;transition:.22s;margin-top:16px;
  box-shadow:0 10px 24px rgba(108,92,231,.3);
}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(108,92,231,.42)}
.btn:disabled{opacity:.6;transform:none;cursor:wait}
.btn.line{background:#fff;color:var(--ink);border:1.6px solid var(--line);box-shadow:none}
.btn.half{width:calc(50% - 5px)}
.btnrow{display:flex;gap:10px}
.btnrow .btn{flex:1;width:auto}

/* qty stepper */
.stepper{display:flex;align-items:center;gap:14px;background:#fafbff;border:1.6px solid var(--line);border-radius:14px;padding:7px;width:max-content}
.stepper button{width:36px;height:36px;border-radius:11px;background:#fff;border:1.5px solid var(--line);font-size:17px;font-weight:800;color:var(--brand);transition:.15s}
.stepper button:hover{background:var(--brand);color:#fff}
.stepper b{min-width:28px;text-align:center;font-size:16px}

/* payment choice */
.payopt{border:2px solid var(--line);border-radius:16px;padding:13px 15px;display:flex;gap:12px;align-items:flex-start;cursor:pointer;transition:.2s;margin-top:10px;background:#fff}
.payopt.on{border-color:var(--brand);background:#f6f4ff}
.payopt>span{flex:1;min-width:0}
.payopt b{font-size:14px;display:block}
.payopt small{color:var(--muted);font-size:12px;line-height:1.5;display:block}
.mfslist{display:flex;flex-direction:column;gap:5px;margin:8px 0 4px}
.mfsnum{background:#fff;border:1px dashed #c9cfe4;border-radius:10px;padding:6px 10px;font-weight:600;font-size:12.5px;display:block}
.mfsnum b{display:inline;font-size:12.5px;color:var(--brand)}
.mfsnum.pay{border-color:#f0b268;background:#fffaf2}
.mfsnum.pay b{color:#c07a12}
.wa-btn{background:#25D366;box-shadow:0 10px 24px rgba(37,211,102,.3)}

/* city modal */
.citysearch{position:sticky;top:0;background:#fff;padding:4px 0 10px;z-index:2}
.citygrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:8px;padding-bottom:8px}
.citycell{
  border:1.5px solid var(--line);border-radius:12px;padding:10px 6px;text-align:center;font-size:13px;font-weight:600;
  cursor:pointer;transition:.16s;background:#fff;
}
.citycell:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}
.citycell.on{background:var(--grad);color:#fff;border-color:transparent}

/* success screen */
.done{text-align:center;padding:26px 8px}
.done .ring{
  width:96px;height:96px;border-radius:50%;margin:0 auto 18px;background:var(--grad);
  display:grid;place-items:center;color:#fff;animation:ringPop .6s cubic-bezier(.2,.9,.3,1.6) both;
  box-shadow:0 16px 40px rgba(108,92,231,.4);
}
@keyframes ringPop{from{transform:scale(0) rotate(-30deg)}to{transform:scale(1) rotate(0)}}
.done h3{font-size:20px;font-weight:800;margin-bottom:8px}
.done p{color:var(--muted);font-size:14px;line-height:1.8}

/* toast */
.toast{
  position:fixed;bottom:104px;left:50%;transform:translate(-50%,20px);z-index:120;
  background:var(--ink);color:#fff;padding:13px 22px;border-radius:999px;font-size:14px;font-weight:600;
  box-shadow:0 14px 34px rgba(0,0,0,.3);opacity:0;pointer-events:none;transition:.35s;max-width:88vw;text-align:center;
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.err{background:var(--danger)}
@media(min-width:900px){.toast{bottom:34px}}

/* ------------------------------------------------ emergency section */
.emgsec{
  position:relative;overflow:hidden;margin-top:26px;padding:34px 0 38px;color:#fff;
  background:linear-gradient(135deg,#1b2340 0%,#3d1d55 55%,#6e1030 100%);
}
.emgsec::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(600px 300px at 85% 10%,rgba(255,90,90,.22),transparent 65%),
             radial-gradient(500px 260px at 10% 90%,rgba(108,92,231,.25),transparent 65%);
}
.emghead{position:relative;display:flex;align-items:center;gap:14px;margin-bottom:20px}
.emghead .siren{
  width:56px;height:56px;border-radius:18px;display:grid;place-items:center;flex:none;color:#fff;
  background:linear-gradient(135deg,#ff5a5a,#ff8a5c);box-shadow:0 10px 26px rgba(255,90,90,.45);
  animation:sirenPulse 1.8s ease-in-out infinite;
}
.emghead .siren .i{width:26px;height:26px}
@keyframes sirenPulse{0%,100%{transform:scale(1);box-shadow:0 10px 26px rgba(255,90,90,.45)}
  50%{transform:scale(1.07);box-shadow:0 10px 36px rgba(255,90,90,.75)}}
.emghead h2{font-size:21px;font-weight:800}
.emghead p{font-size:13px;color:#c4cbe8;margin-top:2px}
.emggrid{
  position:relative;display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:12px;
}
@media(min-width:720px){.emggrid{grid-template-columns:repeat(auto-fill,minmax(185px,1fr))}}
.emgcard{
  display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);border-radius:18px;
  padding:17px 10px 13px;backdrop-filter:blur(8px);transition:.25s;
}
.emgcard:hover{transform:translateY(-5px);background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.3)}
.emgcard .eico{
  width:44px;height:44px;border-radius:14px;display:grid;place-items:center;margin-bottom:6px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);color:#ffb3a6;
}
.emgcard .eico .i{width:21px;height:21px}
.emgcard.local .eico{color:#7ee8d8}
.emgcard .enm{font-size:12.5px;font-weight:600;color:#c4cbe8;line-height:1.3}
.emgcard .enum{font-size:19px;font-weight:800;letter-spacing:.5px}
.emgcard .ecall{
  margin-top:8px;font-size:11.5px;font-weight:700;padding:6px 14px;border-radius:999px;
  background:linear-gradient(135deg,#ff5a5a,#ff8a5c);box-shadow:0 6px 16px rgba(255,90,90,.35);transition:.2s;
}
.emgcard:hover .ecall{transform:scale(1.07)}
.emgcard.local .ecall{background:linear-gradient(135deg,#00b894,#00cec9);box-shadow:0 6px 16px rgba(0,184,148,.35)}
.emgcityhead{position:relative;font-size:15.5px;font-weight:800;margin:22px 0 12px;display:flex;align-items:center;gap:8px}
.emgcityhint{
  position:relative;background:rgba(255,255,255,.06);border:1px dashed rgba(255,255,255,.25);border-radius:14px;
  padding:14px 18px;font-size:13.5px;color:#c4cbe8;margin-top:18px;line-height:1.7;
}
.emglink{color:#7ee8d8;font-weight:700;text-decoration:underline;font-size:13.5px}

/* footer */
/* SEO crawlable links */
.seolinks{background:#e9edf7;border-top:1px solid var(--line);padding:30px 0 20px;color:var(--muted)}
.seolinks h2{font-size:17px;font-weight:800;color:var(--ink);margin-bottom:6px}
.seolinks h3{font-size:14.5px;font-weight:700;color:var(--ink);margin:18px 0 8px}
.seolinks p{font-size:13px;line-height:1.7;margin-bottom:12px;max-width:820px}
.seogrid{display:flex;flex-wrap:wrap;gap:7px}
.seogrid a{font-size:12px;color:#5c6784;background:#fff;border:1px solid var(--line);border-radius:8px;padding:5px 11px;transition:.18s}
.seogrid a:hover{color:#fff;background:var(--brand);border-color:transparent}

.footer{background:var(--ink);color:#aab3cf;padding:36px 0 110px;text-align:center}
.footer .fl{font-weight:800;color:#fff;font-size:18px;margin-bottom:6px}
.footer p{font-size:13px;line-height:1.8}
.footer a{color:#8f9dff}
.footer .fcall{margin-top:10px;font-weight:700;color:#e8ecfb}
.footer .fpower{
  margin-top:18px;padding-top:16px;border-top:1px solid rgba(255,255,255,.1);
  font-size:12px;color:#8b94b5;line-height:2;
}
.footer .fpower b{color:#c9d1ee}
@media(min-width:900px){.footer{padding-bottom:36px}}

/* responsive switches */
@media(max-width:899px){
  .bottomnav{display:block}
  .navtabs{display:none}
}
@media(min-width:900px){
  body{padding-bottom:0}
}

/* reduce motion */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
