:root{--flower:#2e9d4f;--pre:#2f6fd6;--edible:#8a3fd1;--red:#d32f2f;--bg:#f6f7f4;--card:#fff;--line:#e3e5df}
*{box-sizing:border-box}body{margin:0;font:15px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:#1d211b}
header{display:flex;align-items:baseline;gap:.7em;padding:.6em 1em;background:#16341f;color:#fff;position:sticky;top:0;z-index:1000}
header h1{margin:0;font-size:1.3em}header .muted{color:#b9d3bf}
.muted{color:#6b7268}small{font-weight:normal}
section{padding:.4em 1em}h2{font-size:1.05em;margin:.6em 0 .4em;display:flex;gap:.6em;align-items:center;flex-wrap:wrap}
#controls{display:flex;flex-wrap:wrap;gap:.6em 1em;align-items:center;padding:.6em 1em;background:#fff;border-bottom:1px solid var(--line)}
.seg button{border:1px solid #16341f;background:#fff;padding:.35em .9em;cursor:pointer}.seg button.on{background:#16341f;color:#fff}
.seg button:first-child{border-radius:6px 0 0 6px}.seg button:last-child{border-radius:0 6px 6px 0}
input,select{font:inherit;padding:.35em .5em;border:1px solid #c9cdc4;border-radius:6px}.row{display:flex;gap:.5em;flex-wrap:wrap}.row input{flex:1;min-width:12em}
#flashBanner{position:sticky;top:2.6em;z-index:999;background:#fff4f4;border-bottom:2px solid var(--red);padding:.5em 1em;display:flex;gap:.6em;overflow-x:auto}
.flash{min-width:16em;background:#fff;border:1px solid #f1c4c4;border-radius:8px;padding:.5em}
.badge{display:inline-block;padding:.1em .45em;border-radius:4px;font-size:.75em;font-weight:700;text-transform:uppercase}
.b-today{background:var(--red);color:#fff}.b-trap{background:#ffe08a;color:#5a4300}.b-flower{background:var(--flower);color:#fff}.b-pre-roll{background:var(--pre);color:#fff}.b-edible{background:var(--edible);color:#fff}
.chips{display:flex;gap:.5em;overflow-x:auto;padding-bottom:.3em}.chip{display:flex;align-items:center;gap:.4em;background:#fff;border:1px solid var(--line);border-radius:999px;padding:.2em .7em .2em .2em;white-space:nowrap;cursor:pointer}
.logo{width:34px;height:34px;border-radius:50%;object-fit:contain;background:#fff;border:1px solid var(--line);flex:none}.logo.ph{display:grid;place-items:center;background:#e8f3ea;font-size:18px}
.store{display:flex;gap:.7em;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.6em;margin:.4em 0;cursor:pointer}
.store .grow{flex:1;min-width:0}.store b{display:block}.dots span{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:3px}
.fav{border:none;background:none;font-size:1.3em;cursor:pointer;color:#c9a400}
#map{height:60vh;border-radius:10px;border:1px solid var(--line)}
table{width:100%;border-collapse:collapse;background:#fff;font-size:.92em}th,td{padding:.35em .4em;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{position:sticky;top:0;background:#f0f2ec}th:nth-child(n+3){text-align:right}td.n{text-align:right;white-space:nowrap}
.tablewrap{max-height:55vh;overflow:auto;border:1px solid var(--line);border-radius:8px}
.modal{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;background:#0007;z-index:2000;display:flex;align-items:flex-end;justify-content:center}.modal[hidden]{display:none}
.sheet{background:#fff;width:min(900px,100%);max-height:88vh;overflow:auto;border-radius:14px 14px 0 0;padding:1em;position:relative}
#closeCard{position:absolute;right:.6em;top:.5em;border:none;background:none;font-size:1.3em;cursor:pointer}
.pin{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 4px #0006;position:relative}.pin::after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:50%;background:#fff}
.alert{background:#fff;border:1px solid var(--line);border-left:4px solid var(--flower);border-radius:8px;padding:.5em;margin:.3em 0}
.drop{color:var(--flower);font-weight:700}s{color:#888}
footer{padding:1em;font-size:.85em}
#flashBanner[hidden]{display:none}
@media (max-width:600px){th:nth-child(8),td:nth-child(8),th:nth-child(4),td:nth-child(4),th:nth-child(6),td:nth-child(6){display:none}header{flex-wrap:wrap;gap:.2em .7em}header .muted{font-size:.8em}th:nth-child(2),td:nth-child(2){display:none}.pricecell .sub{display:block}td.pricecell{white-space:normal}table{font-size:.85em}.sheet{max-height:92vh}}

.favbtn{border:1px solid #c9a400;background:#fff;color:#7a6200;border-radius:6px;padding:.35em .8em;cursor:pointer;font:inherit}.favbtn.on{background:#c9a400;color:#fff}
.contacts{display:flex;gap:.4em;flex-wrap:wrap;margin-top:.3em}.contacts:empty{display:none}
.cbtn{display:inline-block;font-size:.82em;padding:.2em .6em;border-radius:999px;border:1px solid #16341f;color:#16341f;text-decoration:none;white-space:nowrap}.cbtn.order{background:#16341f;color:#fff}
.cityhdr{font-size:.95em;margin:.8em 0 .2em;color:#16341f}#favBar{margin:.2em 0 .5em;align-items:center}
.pop .fav{font-size:1.1em;padding:0}.pop .openCard{margin-top:.4em;border:1px solid #16341f;background:#fff;border-radius:6px;padding:.25em .7em;cursor:pointer}
#favBar[hidden]{display:none}

#splash{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:5000;background:#0b0f0c;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity .5s ease}
#splash.out{opacity:0;pointer-events:none}
#splash video,#splash img{max-width:100vw;max-height:100vh;max-height:100dvh;width:auto;height:auto;object-fit:contain;box-shadow:0 0 40px #000}
#splash img[hidden]{display:none}
#splash video{width:100vw;height:100vh;height:100dvh;object-fit:contain;max-width:none;max-height:none;box-shadow:none;background:#0b0f0c}
#splash .hint{z-index:1;position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);color:#e8efe9;background:#0009;padding:.3em .9em;border-radius:999px;font-size:.85em;letter-spacing:.03em;animation:bwpulse 1.4s ease-in-out infinite}
@keyframes bwpulse{50%{opacity:.55}}

/* --- compatibility & touch pass --- */
html{-webkit-text-size-adjust:100%}
header{padding-top:calc(.6em + env(safe-area-inset-top,0px));padding-left:calc(1em + env(safe-area-inset-left,0px));padding-right:calc(1em + env(safe-area-inset-right,0px))}
#controls,section,footer{padding-left:calc(1em + env(safe-area-inset-left,0px));padding-right:calc(1em + env(safe-area-inset-right,0px))}
footer{padding-bottom:calc(1em + env(safe-area-inset-bottom,0px))}
.sheet{padding-bottom:calc(1em + env(safe-area-inset-bottom,0px))}
#flashBanner{top:calc(2.6em + env(safe-area-inset-top,0px))}
button,select,input,.cbtn,label.tog,.seg button,.favbtn,.chip{min-height:44px}
.fav,#closeCard{min-width:44px;min-height:44px}
.cbtn{display:inline-flex;align-items:center;padding:.2em .8em}
label.tog{display:inline-flex;align-items:center;gap:.3em}
label.tog input{width:22px;height:22px;min-height:0}
.no-flexgap #controls>*,.no-flexgap .row>*,.no-flexgap .contacts>*,.no-flexgap .chips>*,.no-flexgap #flashBanner>*{margin-right:.6em;margin-bottom:.4em}
.no-flexgap .store>*{margin-right:.7em}

/* --- dark neon theme (matches the Bud card: navy, pink, cyan, orange) --- */
:root{--bg:#0b1030;--card:#141b45;--line:#27307a;--ink:#e9ecff;--mut:#9aa3d6;--pink:#ff3ea5;--cyan:#22e3ff;--orange:#ff9a1f;--green:#3ef08a}
body{background:var(--bg);color:var(--ink)}
.muted{color:var(--mut)}a{color:var(--cyan)}
header{background:#070b24;border-bottom:1px solid var(--line)}header h1{color:#fff;text-shadow:0 0 10px var(--pink)}header .muted{color:var(--mut)}
#controls{background:#0f1540;border-bottom:1px solid var(--line)}
input,select{background:#0f1540;color:var(--ink);border-color:var(--line)}
.seg button{background:transparent;color:var(--ink);border-color:var(--cyan)}.seg button.on{background:var(--cyan);color:#06102a}
.favbtn{background:transparent;border-color:var(--orange);color:var(--orange)}.favbtn.on{background:var(--orange);color:#1a0d00}
.cbtn{border-color:var(--cyan);color:var(--cyan)}.cbtn.order{background:var(--pink);border-color:var(--pink);color:#fff}
.chip,.alert,.flash,.store{background:var(--card);border-color:var(--line);color:var(--ink)}
.logo{background:#fff}.logo.ph{background:#1d2660}
table{background:var(--card)}th{background:#1b2358;color:var(--ink)}th,td{border-color:var(--line)}
.tablewrap{border-color:var(--line)}.sheet{background:#0f1540;color:var(--ink)}#closeCard{color:var(--ink)}
.cityhdr{color:var(--cyan)}.drop{color:var(--green)}s{color:#7880b0}
#flashBanner{background:#2a0b2a;border-color:var(--pink)}.flash{border-color:var(--pink)}
.leaflet-popup-content{color:#111}.pop .openCard{color:#111}
.openCard{min-height:44px;border:1px solid var(--cyan);background:transparent;color:var(--cyan);border-radius:10px;padding:.3em .9em;cursor:pointer;font:inherit}
/* back bar */
#backBar{position:sticky;top:calc(2.6em + env(safe-area-inset-top,0px));z-index:998;display:flex;align-items:center;gap:.8em;background:#0b1030ee;border-bottom:1px solid var(--line);padding:.3em calc(1em + env(safe-area-inset-left,0px))}
#backBar[hidden]{display:none}
.backbtn{display:inline-flex;align-items:center;min-height:44px;padding:0 1em;border-radius:999px;border:1px solid var(--pink);color:var(--pink);text-decoration:none;font-weight:700}
/* home */
#home{padding:1.2em calc(1em + env(safe-area-inset-left,0px)) 1em;max-width:960px;margin:0 auto}
#home[hidden],#browse[hidden],#dealsView[hidden]{display:none}
#homeSearch{display:flex;margin:.2em 0 1.2em;border:2px solid var(--cyan);border-radius:16px;overflow:hidden;box-shadow:0 0 18px #22e3ff44}
#homeQ{flex:1;min-width:0;border:none;border-radius:0;font-size:1.15em;padding:.7em .9em;min-height:56px;background:#0f1540}
#homeSearch button{border:none;background:var(--cyan);color:#06102a;font-weight:700;padding:0 1.2em;font-size:1em;min-height:56px;cursor:pointer}
.tiles{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.8em;gap:.8em}
@media (min-width:700px){.tiles{grid-template-columns:repeat(4,1fr)}}
.tile{display:flex;flex-direction:column;justify-content:flex-end;min-height:110px;padding:.9em;border-radius:18px;background:var(--card);border:2px solid var(--line);color:var(--ink);text-decoration:none;position:relative;overflow:hidden}
.tile .ti{font-size:2em;line-height:1;margin-bottom:auto}.tile b{font-size:1.08em;margin-top:.5em}.tile small{color:var(--mut)}
.tile:active{transform:scale(.98)}
.t-green{border-color:var(--green);box-shadow:0 0 14px #3ef08a33}.t-cyan{border-color:var(--cyan);box-shadow:0 0 14px #22e3ff33}
.t-pink{border-color:var(--pink);box-shadow:0 0 14px #ff3ea533}.t-orange{border-color:var(--orange);box-shadow:0 0 14px #ff9a1f33}
#homeExtras section{padding-left:0;padding-right:0}
.browseall{text-align:center;margin:1.4em 0 .4em}.browseall a{display:inline-flex;align-items:center;min-height:44px;padding:0 1em;color:var(--mut)}
/* deals */
#dealsView{padding:1em calc(1em + env(safe-area-inset-left,0px));max-width:960px;margin:0 auto}
.dealgrid{display:grid;grid-template-columns:1fr;grid-gap:.8em;gap:.8em}@media (min-width:700px){.dealgrid{grid-template-columns:repeat(2,1fr)}}
.dealcard{background:var(--card);border:2px solid var(--pink);border-radius:16px;padding:.9em;display:flex;flex-direction:column}
.dealcard>*+*{margin-top:.3em}.dealcard .lbl{color:var(--orange);text-transform:uppercase;letter-spacing:.05em;font-weight:700}
.dealprice{font-size:1.4em;font-weight:800;color:var(--cyan)}.dealprice span{font-size:.6em;font-weight:600}
.dealcard .openCard{align-self:flex-start;margin-top:.6em}
.no-flexgap .tiles>*{margin:0}

#skipBtn{position:absolute;z-index:2;top:calc(18px + env(safe-area-inset-top,0px));right:calc(14px + env(safe-area-inset-right,0px));min-height:44px;min-width:72px;padding:0 1em;border-radius:999px;border:1px solid #ffffff66;background:#0b1030cc;color:#fff;font:600 .95em system-ui,-apple-system,sans-serif;cursor:pointer}
#splashHint{font-size:1.05em;font-weight:700;border:2px solid #ff3ea5;box-shadow:0 0 18px #ff3ea588;padding:.5em 1.2em}
.tile.wide{grid-column:1/-1;min-height:96px;flex-direction:row;align-items:center;justify-content:flex-start;gap:.8em}.tile.wide .ti{margin:0;font-size:2.4em}.tile.wide b{margin:0;font-size:1.25em}.tile.wide small{margin-left:auto;text-align:right}
.no-flexgap .tile.wide>*{margin-right:.8em}
select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0f1540;color:#e9ecff;padding-right:2em;background-image:linear-gradient(45deg,transparent 50%,#22e3ff 50%),linear-gradient(135deg,#22e3ff 50%,transparent 50%);background-position:calc(100% - 15px) 50%,calc(100% - 10px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
select option{background:#0f1540;color:#e9ecff}
#favBar label.tog{justify-content:flex-start}
.row label.tog input{flex:none;min-width:0}

/* favorites strip */
.favstrip{position:sticky;top:3.2em;z-index:997;display:flex;gap:.5em;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:-1.2em -1em 1em;padding:.6em calc(1em + env(safe-area-inset-left,0px));background:#0b1030f2;border-bottom:1px solid var(--line)}
.fchip{flex:none;display:inline-flex;align-items:center;gap:.45em;min-height:44px;padding:.2em .8em .2em .25em;border-radius:999px;border:1.5px solid var(--orange);background:var(--card);color:var(--ink);font:inherit;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer;max-width:16em}
.fchip .logo{width:30px;height:30px}.fchip .fname{overflow:hidden;text-overflow:ellipsis}
.fchip.fempty{max-width:100%;white-space:normal;text-align:center;line-height:1.25}.fchip.fempty span{min-width:0}
.fchip.fall{padding:.2em .9em;background:var(--orange);color:#1a0d00;border-color:var(--orange)}.fchip.fempty{background:transparent;color:var(--orange)}
.fbadge{display:inline-block;min-width:1.5em;padding:0 .4em;border-radius:999px;background:var(--pink);color:#fff;font-size:.78em;text-align:center;line-height:1.5em}
.fall .fbadge{background:#1a0d00;color:var(--orange)}
.no-flexgap .favstrip>*{margin-right:.5em}.no-flexgap .fchip>*{margin-right:.4em}
.favgroup{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:.7em;margin:.8em 0}
.favhead{display:flex;align-items:center;gap:.7em;margin-bottom:.5em}.favhead .grow{flex:1;min-width:0}.favhead b{display:block}
.no-flexgap .favhead>*{margin-right:.7em}

/* price cell: total (+ struck regular price); weight · $/g line shown on narrow screens */
.pricecell .tot{font-size:1.05em}.pricecell .was,.dealprice .was{color:#8e96c8;font-weight:400;font-size:.85em}
.pricecell .sub{display:none;color:var(--mut);font-size:.82em;white-space:nowrap;margin-top:.15em}
/* music toggle */
header{padding-right:calc(60px + env(safe-area-inset-right,0px))}
@media (max-width:600px){.pricecell .sub{display:block}.tablewrap{overflow-x:hidden}td:first-child{word-break:break-word}}

/* sortable headers */
th{padding:3px 2px;vertical-align:bottom}
button.sorth{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;width:100%;padding:0 .45em;margin:0;border:1px solid #22e3ff55;border-radius:9px;background:#141a44;color:#dfe6ff;font:inherit;font-weight:700;font-size:.92em;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent}
button.sorth:active{background:#1f2766}
button.sorth.on{border-color:var(--pink);color:#fff;background:#2a1240;box-shadow:0 0 8px #ff3ea566}
button.sorth .arr{color:var(--pink);margin-left:.25em}
@media (max-width:600px){button.sorth{font-size:.85em;padding:0 .3em}}

/* dispensary name -> store website (new tab) */
a.slink{color:inherit;text-decoration:none;border-bottom:1px dotted currentColor;cursor:pointer}
a.slink:hover,a.slink:focus{border-bottom-style:solid;color:var(--cyan)}
a.slink .ext{display:inline-block;font-size:.72em;margin-left:.2em;opacity:.65;vertical-align:.15em;text-decoration:none;font-weight:400}
.fchip a.slink{border-bottom:0}
.fchip a.slink .ext{margin-left:.15em}

/* ---------- Bud portrait (header, upper right) ---------- */
.budpic{position:absolute;top:50%;margin-top:-21px;right:calc(10px + env(safe-area-inset-right,0px));width:42px;height:42px;border-radius:50%;object-fit:cover;border:2px solid var(--orange);box-shadow:0 0 0 2px #070b24,0 0 12px #ff3ea5aa;background:#141b45}
.budpic.under{visibility:hidden}
/* thumbs-up overlay (bud-thumbs.png 229x216, 132px circle at 83,8 -> scaled 42/132): transparent PNG whose circle sits exactly on #budPic; the big paw spills out of the frame */
.budcheer{position:absolute;top:50%;right:calc(5.55px + env(safe-area-inset-right,0px));width:72.9px;height:68.7px;margin-top:-23.5px;z-index:2;pointer-events:none;visibility:hidden;opacity:0;-webkit-transform-origin:65% 34%;transform-origin:65% 34%}
.budcheer.on{visibility:visible;opacity:1;-webkit-filter:drop-shadow(0 0 6px #ffd54a88);filter:drop-shadow(0 0 6px #ffd54a88);-webkit-animation:budbounce .9s ease-in-out 3;animation:budbounce .9s ease-in-out 3}
.badge.b-bud{white-space:normal;cursor:help;text-transform:none;letter-spacing:0}
.budwhy{display:block;margin:.3em 0 .1em;padding:.35em .55em;border-radius:8px;background:#ff9a1f1a;border:1px solid #ff9a1f66;color:#ffd9a0;font-size:.82em;line-height:1.35}
@-webkit-keyframes budbounce{0%,100%{-webkit-transform:translateY(0) scale(1)}25%{-webkit-transform:translateY(-7px) scale(1.12) rotate(-6deg)}50%{-webkit-transform:translateY(0) scale(.96)}75%{-webkit-transform:translateY(-3px) scale(1.06) rotate(4deg)}}
@keyframes budbounce{0%,100%{transform:translateY(0) scale(1)}25%{transform:translateY(-7px) scale(1.12) rotate(-6deg)}50%{transform:translateY(0) scale(.96)}75%{transform:translateY(-3px) scale(1.06) rotate(4deg)}}
tr.lrow{cursor:pointer;-webkit-tap-highlight-color:transparent}tr.lrow.sel td{background:#22e3ff1f}
tr.budok td:first-child{box-shadow:inset 3px 0 0 var(--orange)}
.badge.b-bud{background:#ff9a1f22;color:#ffc46b;border:1px solid #ff9a1f;font-weight:700}

/* ---------- jukebox (docked bottom; Wurlitzer arch: stacked neon bands, chrome trim, spinning record) ---------- */
.jb{position:fixed;z-index:1400;left:0;right:0;bottom:0;max-width:760px;margin:0 auto;padding:0 6px;padding-bottom:env(safe-area-inset-bottom,0px);pointer-events:none;font-size:14px}
.jb>*{pointer-events:auto}
.jb-cab{position:relative;border-radius:50% 50% 0 0/28px 28px 0 0;padding:8px 8px 5px;background:radial-gradient(ellipse at 50% 0,#4a1660 0,#1b0f3d 55%,#0b0a24 100%);
  box-shadow:inset 0 3px 0 #ffd36b,inset 0 6px 0 #ff3ea5,inset 0 9px 0 #22e3ff,0 -4px 18px #ff3ea566,0 -1px 0 #000;color:#fff}
.jb.playing .jb-cab{-webkit-animation:jbglow 2.4s ease-in-out infinite;animation:jbglow 2.4s ease-in-out infinite}
@-webkit-keyframes jbglow{50%{box-shadow:inset 0 3px 0 #ffe9a8,inset 0 6px 0 #ff6cbc,inset 0 9px 0 #6ff0ff,0 -6px 26px #ff3ea599,0 -1px 0 #000}}
@keyframes jbglow{50%{box-shadow:inset 0 3px 0 #ffe9a8,inset 0 6px 0 #ff6cbc,inset 0 9px 0 #6ff0ff,0 -6px 26px #ff3ea599,0 -1px 0 #000}}
.jb-arch{display:flex;align-items:center;padding:3px 4px 0 6px;min-height:34px}
.jb-arch>*+*{margin-left:8px}
.jb-disc{flex:none;width:30px;height:30px;border-radius:50%;background:repeating-radial-gradient(circle,#0d0d0d 0,#0d0d0d 1px,#2b2b2b 2px,#0d0d0d 3px);border:1px solid #9aa0c8;position:relative;box-shadow:0 0 6px #22e3ff88}
.jb-disc i{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:radial-gradient(circle,#fff 0,#fff 1px,#ff3ea5 2px,#ff9a1f 5px)}
.jb.playing .jb-disc{-webkit-animation:jbspin 3s linear infinite;animation:jbspin 3s linear infinite}
@-webkit-keyframes jbspin{to{-webkit-transform:rotate(360deg)}}@keyframes jbspin{to{transform:rotate(360deg)}}
.jb-now{flex:1;min-width:0;line-height:1.2}
.jb-title{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;text-shadow:0 0 8px #ff3ea5}
.jb-comp{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#ffd36b}
.jb-chrome{height:3px;margin:4px 8px 5px;border-radius:2px;background:linear-gradient(#ffffff,#8d93b5 45%,#4b4f6e 55%,#e9ebf5)}
.jb-row{display:flex;align-items:center;justify-content:center}
.jb-row>*+*{margin-left:6px}
.jb-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:46px;height:38px;min-height:38px;padding:0;border-radius:12px;border:1px solid #9aa0c8;
  background:linear-gradient(#3a4078,#171c45 60%,#232a63);color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;box-shadow:inset 0 1px 0 #ffffff55,0 1px 0 #000}
.jb-btn svg{fill:currentColor;display:block}
.jb-btn:active{background:linear-gradient(#171c45,#2b3270)}
.jb-btn.jb-play{border-color:var(--pink);box-shadow:inset 0 1px 0 #ffffff66,0 0 10px #ff3ea588}
.jb-btn.on{border-color:var(--orange);color:var(--orange)}
.jb-btn.jb-sel{width:auto;padding:0 12px 0 10px;color:#ffd36b;border-color:#ff9a1f}
.jb-sel span{margin-left:5px;font:700 12.5px/1 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;letter-spacing:.04em;text-transform:uppercase}
.jb-min{width:40px;height:34px;min-height:34px;border-radius:10px}
.jb-mini{display:none;width:40px;height:34px;min-height:34px}
.jb-collapsed .jb-cab{padding:6px 8px 5px;border-radius:24px 24px 0 0;box-shadow:inset 0 2px 0 #ffd36b,inset 0 4px 0 #ff3ea5,0 -3px 12px #ff3ea555}
.jb-collapsed .jb-row,.jb-collapsed .jb-chrome,.jb-collapsed .jb-comp{display:none}
.jb-collapsed .jb-mini{display:inline-flex}
.jb-collapsed .jb-arch{min-height:34px;padding-top:2px}
.jb-collapsed .jb-disc{width:24px;height:24px}
.jb-list{position:absolute;left:10px;right:10px;bottom:100%;margin-bottom:-2px;max-height:55vh;max-height:min(55vh,440px);overflow:auto;-webkit-overflow-scrolling:touch;
  background:#0d1236f7;border:2px solid var(--pink);border-bottom:0;border-radius:16px 16px 0 0;box-shadow:0 -6px 24px #000a;padding:6px}
.jb-list[hidden]{display:none}
.jb-listhead{padding:4px 8px 6px;color:#ffd36b;border-bottom:1px solid #27307a;margin-bottom:4px}.jb-listhead small{color:var(--mut)}
.jb-list ol{list-style:none;margin:0;padding:0}
.jb-list li{display:flex;align-items:center;min-height:44px;padding:4px 8px;border-radius:10px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.jb-list li+li{margin-top:2px}.jb-list li:active,.jb-list li:hover{background:#1b2360}
.jb-list li.now{background:#22e3ff22;box-shadow:inset 3px 0 0 var(--cyan)}
.jb-code{flex:none;width:34px;margin-right:10px;text-align:center;font:700 12px/22px ui-monospace,Menlo,Consolas,monospace;color:#1a0d00;background:linear-gradient(#ffe39a,#ff9a1f);border-radius:6px}
.jb-it{min-width:0;display:flex;flex-direction:column}.jb-it b{font-size:13.5px;font-weight:600;color:#fff}.jb-it small{font-size:11.5px;color:var(--mut)}
@media (min-width:720px){.jb-cab{display:flex;flex-wrap:wrap;align-items:center;border-radius:50% 50% 0 0/26px 26px 0 0;padding:10px 14px 8px}
  .jb-arch{flex:1;min-width:0;order:1}.jb-row{order:2;margin-left:10px}.jb-chrome{order:3;flex:0 0 100%;height:3px;margin:6px 0 0}
  .jb-collapsed .jb-cab{display:block}}
@media (max-width:360px){.jb-btn{width:42px}.jb-row>*+*{margin-left:5px}.jb-btn.jb-sel{padding:0 9px}.jb-sel span{font-size:11.5px}}
.no-flexgap .jb-arch>*,.no-flexgap .jb-row>*{margin-right:0}
@media (prefers-reduced-motion:reduce){.jb.playing .jb-cab,.jb.playing .jb-disc,.budcheer.on{-webkit-animation:none;animation:none}}
footer{padding-bottom:1em}
/* --- list/map switch on every browse screen --- */
#controls [hidden],#mapWrap[hidden],#results[hidden],#stores[hidden]{display:none!important}
#mapWrap{margin:.5em 0 1em}
.mapbar{display:flex;align-items:center;justify-content:space-between;gap:.6em;margin:.2em 0 .5em;flex-wrap:wrap}
.mapbar .muted{flex:1 1 12em;min-width:0}
.mapback{min-height:44px;border:1px solid var(--cyan);background:transparent;color:var(--cyan);border-radius:10px;padding:.3em .9em;cursor:pointer;font:inherit;font-weight:600;flex:none}
#map{height:max(300px,min(560px,calc(100vh - var(--jbh,110px) - 190px)));background:#0f1540}
.pop{line-height:1.35}.pop .popbest{margin:.4em 0;padding:.35em .5em;border-radius:8px;background:#f1f6ff;border:1px solid #d6e2ff}
.pop .popbest .lbl{display:block;font-size:.72em;text-transform:uppercase;letter-spacing:.04em;color:#556}
.pop .popbest b{color:#0a7a3c;font-size:1.05em}.pop .popbest small{display:block}.pop .muted{color:#556}
.pop .contacts:empty{display:none}
.pop .popacts{display:flex;flex-wrap:wrap;gap:.35em;margin-top:.45em;align-items:center}.pop .popacts .openCard{margin:0;font-weight:600}
.pop .popacts .cbtn{margin:0}.leaflet-popup-scrolled{border:0!important}
@media (max-width:420px){.pop .popbest{margin:.3em 0;padding:.25em .4em}.pop .popbest b{font-size:1em}.leaflet-popup-content{margin:10px 12px}}
/* --- sticky stack offsets + floating map Back button --- */
#backBar{top:var(--hdrh,calc(2.6em + env(safe-area-inset-top,0px)))}#flashBanner{top:var(--stickyh,2.6em)}
#mapWrap,#browse,#dealsView,#results,#searchWrap,#storesWrap{scroll-margin-top:calc(var(--stickyh,100px) + 6px)}
.mapbox{position:relative}
.mapfloat{position:-webkit-sticky;position:sticky;top:calc(var(--stickyh,100px) + 10px);height:0;z-index:1001;pointer-events:none}
.mapbackfloat{position:absolute;top:10px;left:10px;pointer-events:auto;min-height:48px;min-width:96px;padding:0 1.1em;border-radius:999px;border:2px solid #fff;background:var(--pink,#ff3ea5);color:#fff;font:700 1.05em system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-shadow:0 2px 10px #0009;cursor:pointer;-webkit-tap-highlight-color:transparent}
.mapbackfloat:active{transform:scale(.97)}.mapbackfloat:focus-visible{outline:3px solid var(--cyan,#22e3ff);outline-offset:2px}
#map{height:max(300px,min(560px,calc(100vh - var(--jbh,110px) - var(--stickyh,100px) - 84px)))}

/* persistent price disclaimer: last line inside the sticky header, so the measured header height (--hdrh/--stickyh, favStrip top) includes it */
header{-webkit-flex-wrap:wrap;flex-wrap:wrap}
header .disclaimer{-webkit-flex:0 0 100%;flex:0 0 100%;width:100%;margin:.15em 0 0;font-size:11px;line-height:1.3;color:var(--mut,#9aa3b8);opacity:.85;font-weight:normal}

/* ---------- dispensary view (#store/<id>) ---------- */
.snamewrap{display:inline;white-space:normal}
a.extbtn{display:inline-block;min-width:1.6em;padding:0 .25em;margin-left:.15em;text-align:center;text-decoration:none;color:var(--cyan,#3cf);opacity:.8;font-size:.85em;border-radius:4px}
a.extbtn:hover,a.extbtn:focus{opacity:1;background:rgba(255,255,255,.08)}
.svtop{margin:0 0 .6em}
.svback{background:transparent;color:var(--cyan,#3cf);border:1px solid var(--line,#334);border-radius:999px;padding:.35em 1em;font-weight:600;cursor:pointer}
.svhead{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;gap:.7em;margin-bottom:.7em}
.no-flexgap .svhead>*{margin-right:.7em}
.svhead .grow{-webkit-flex:1;flex:1;min-width:0}.svhead .grow>span{display:block;font-size:.9em}
.svhead .svname{display:block;font-size:1.25em;line-height:1.2;margin-bottom:.15em}
.svhead .logo{width:56px;height:56px}
.svchips{display:-webkit-flex;display:flex;gap:.45em;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:.2em 0 .5em;margin-bottom:.4em}
.no-flexgap .svchips>*{margin-right:.45em}
.svchip{-webkit-flex:0 0 auto;flex:0 0 auto;white-space:nowrap;background:transparent;color:inherit;border:1px solid var(--line,#334);border-radius:999px;padding:.3em .8em;cursor:pointer}
.svchip.on{background:var(--cyan,#3cf);color:#070b24;border-color:var(--cyan,#3cf);font-weight:700}
.svsec{scroll-margin-top:calc(var(--stickyh,100px) + 6px);margin-bottom:1.2em}
.svsec h2{margin:.6em 0 .4em}
.badge.b-drop{background:#0a7a3c;color:#fff}
.storeq{width:100%;box-sizing:border-box;margin:0 0 .6em;padding:.5em .8em;border-radius:10px;border:1px solid var(--line,#334);background:transparent;color:inherit;font-size:16px}

/* ---------- More apps (#apps) ---------- */
.applist{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;gap:.6em;max-width:560px}
.no-flexgap .applist>*{margin-bottom:.6em}
a.appitem{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:.8em;min-height:56px;padding:.6em .9em;border:1px solid var(--line,#334);border-radius:14px;color:inherit;text-decoration:none;background:rgba(255,255,255,.03)}
.no-flexgap a.appitem>*{margin-right:.8em}
a.appitem:hover,a.appitem:focus{border-color:var(--cyan,#3cf)}
a.appitem .ai{font-size:1.5em;width:1.6em;text-align:center}
a.appitem .grow{-webkit-flex:1;flex:1;min-width:0}a.appitem b{display:block}a.appitem small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
a.appitem.allapps{border-style:dashed}

/* ---------- size chips + Size column on phones ---------- */
.sizechips{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:.35em;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:.2em 0 .5em}
.no-flexgap .sizechips>*{margin-right:.35em}
.sizechips .muted{font-size:.85em;-webkit-flex:0 0 auto;flex:0 0 auto}
.szchip{-webkit-flex:0 0 auto;flex:0 0 auto;white-space:nowrap;background:transparent;color:inherit;border:1px solid var(--line,#334);border-radius:999px;padding:.2em .65em;font-size:.88em;min-height:36px;cursor:pointer}
.szchip.on{background:var(--green,#2e9d4f);border-color:var(--green,#2e9d4f);color:#fff;font-weight:700}
@media (max-width:600px){th:nth-child(4),td:nth-child(4){display:table-cell}th,td{padding:.3em .25em}}
/* ---- Today in Prescott popup ---- */
.pz-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9000;background:rgba(5,8,25,.72);overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 10px;box-sizing:border-box;animation:pzFade .3s ease both}
.pz-sheet{position:relative;max-width:560px;margin:0 auto;background:#fffdf5;color:#1d2233;border-radius:18px;padding:16px 14px 14px;box-shadow:0 12px 40px rgba(0,0,0,.45);animation:pzPop .45s cubic-bezier(.2,1.4,.4,1) both}
.pz-x{position:absolute;top:8px;right:8px;width:40px;height:40px;border:0;border-radius:50%;background:#eee6cf;color:#1d2233;font-size:18px;cursor:pointer}
.pz-head{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;padding-right:40px}
.pz-bud{width:84px;height:84px;border-radius:50%;object-fit:cover;border:4px solid #2e9d58;margin-right:12px;-webkit-flex:none;flex:none;animation:pzBud 1s cubic-bezier(.3,1.5,.5,1) .1s both}
.pz-bang{font-weight:800;color:#e0532b;font-size:22px;animation:pzBang .6s ease .35s both}
.pz-head h2{margin:2px 0;font-size:21px;color:#1d2233}
.pz-sub{margin:0;font-size:13px;color:#555}
.pz-cat{margin:14px 0 6px;font-size:16px;color:#2e7d4a;border-bottom:2px solid #e3dcc2;padding-bottom:3px}
.pz-list{list-style:none;margin:0;padding:0}
.pz-card{background:#fff;border:1px solid #e6dfc8;border-radius:12px;padding:9px 11px;margin:0 0 7px;animation:pzCard .4s cubic-bezier(.2,1.3,.4,1) both}
.pz-top{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;justify-content:space-between}
.pz-prod{font-size:14px;margin-right:8px}
.pz-price{font-weight:800;color:#2e9d58;font-size:17px;white-space:nowrap}
.pz-price s{color:#999;font-weight:400;font-size:12px}
.pz-meta{font-size:12px;color:#444;margin-top:2px}
.pz-deal{font-size:12px;color:#8a4b00;margin-top:2px}
.pz-store{display:inline-block;margin-top:4px;font-size:13px;color:#1a5fb4;font-weight:600}
.pz-note{font-size:12px;color:#555;margin:10px 0}
.pz-ok{display:block;width:100%;padding:11px;border:0;border-radius:10px;background:#2e9d58;color:#fff;font-size:16px;font-weight:700;cursor:pointer}
.pz-tile{display:block;width:100%;margin:8px 0;padding:10px 12px;border:2px solid #2e9d58;border-radius:12px;background:#fffdf5;color:#1d2233;font-size:15px;font-weight:700;text-align:left;cursor:pointer}
.pz-tile img{width:28px;height:28px;border-radius:50%;vertical-align:middle;margin-right:6px;object-fit:cover}
.pz-tile small{color:#e0532b;margin-left:4px}
@keyframes pzFade{from{opacity:0}to{opacity:1}}
@keyframes pzPop{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
@keyframes pzBud{0%{opacity:0;transform:translateX(-140%) rotate(-25deg)}60%{opacity:1;transform:translateX(8%) rotate(6deg)}80%{transform:translateY(-8px)}100%{transform:none}}
@keyframes pzBang{0%{opacity:0;transform:scale(.3)}70%{transform:scale(1.25)}100%{opacity:1;transform:none}}
@keyframes pzCard{from{opacity:0;transform:translateY(14px) scale(.92)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){.pz-modal,.pz-sheet,.pz-bud,.pz-bang,.pz-card{animation:none!important}}

.linkbtn{background:none;border:0;padding:0;margin-left:.35em;color:var(--accent,#2f9e6e);text-decoration:underline;font:inherit;cursor:pointer}
