:root{--w1:#1e0f00;--w2:#3d1e08;--w3:#5a3010;--cl:#dab870;--cr:#fdf6e0;--cr2:#f0e4c0;--ink:#1a0e00;--g:#3d6b42;--bl:#2c5f8a;--go:#b8860b;--re:#c0392b;--pu:#6a4e7a;--br:#7a5230;--cr8:#8B0000;--wn:#6b1e3c;--pk:#5a8c3a;}
*{box-sizing:border-box;margin:0;padding:0;}
html{overflow-x:hidden;}
body{font-family:'Libre Franklin',sans-serif;color:var(--ink);background:#1a0800;min-height:100vh;}
.bg{position:fixed;inset:0;z-index:0;background:linear-gradient(180deg,rgba(15,8,0,.5),rgba(20,10,0,.28) 50%,rgba(12,6,0,.52)),url('../img/background.jpg') center/cover fixed;background-color:#2a1400;filter:grayscale(1) contrast(1.12) brightness(1.1);transform-origin:center center;transition:transform .5s cubic-bezier(.2,.7,.3,1),background-image .4s ease;will-change:transform;}
.page{position:relative;z-index:1;}
.nav{position:sticky;top:0;z-index:900;background:rgba(12,6,0,.97);backdrop-filter:blur(14px);border-bottom:1px solid rgba(218,184,112,.18);display:flex;align-items:center;gap:10px;padding:10px 16px;flex-wrap:wrap;}
.logo{font-family:'Special Elite',monospace;font-size:22px;color:var(--cl);letter-spacing:2px;flex-shrink:0;display:flex;align-items:center;gap:7px;}
.logo .pinicon{flex-shrink:0;}
.navbtns{display:flex;gap:5px;flex-wrap:wrap;}
.nb{font-family:'Special Elite',monospace;font-size:11px;background:rgba(255,255,255,.07);color:rgba(218,184,112,.8);border:1px solid rgba(218,184,112,.22);padding:6px 14px;border-radius:16px;cursor:pointer;transition:all .2s;}
.nb:hover,.nb.on{background:var(--go);color:#fff;border-color:var(--go);}
.csel{margin-left:auto;position:relative;flex-shrink:0;}
.csel select{font-family:'Special Elite',monospace;font-size:12px;background:rgba(218,184,112,.12);color:var(--cl);border:1px solid rgba(218,184,112,.3);padding:7px 28px 7px 12px;border-radius:16px;cursor:pointer;outline:none;appearance:none;}
.carr{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--cl);pointer-events:none;font-size:10px;}
.pbtn{font-family:'Special Elite',monospace;background:var(--g);color:#fff;border:none;padding:7px 14px;border-radius:16px;cursor:pointer;font-size:11px;flex-shrink:0;}
.bgctrl{position:relative;flex-shrink:0;}
.bgbtn{width:30px;height:30px;border-radius:50%;background:rgba(218,184,112,.12);border:1px solid rgba(218,184,112,.3);color:var(--cl);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;}
.bgbtn:hover{background:rgba(218,184,112,.25);}
.bgbtn.custom{border-color:var(--go);box-shadow:0 0 0 1px var(--go);}
.bgxbtn{position:absolute;top:-5px;right:-5px;width:16px;height:16px;border-radius:50%;background:var(--cr8);color:#fff;border:2px solid #1a0e00;font-size:8px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}
/* Mini-city (neighborhood) row - same pill pattern/interaction as
   baypinnedmap1's .hoodrow, sitting between the main nav and the category
   bar so the two sticky rows stack the same way the map's city/hood rows
   do. Empty (no children) and collapses to 0 height on cities that don't
   have neighborhoods wired up yet. */
.hoodrow{position:sticky;top:var(--nav-h,52px);z-index:899;background:rgba(10,5,0,.96);border-bottom:1px solid rgba(218,184,112,.12);display:flex;gap:8px;padding:0 14px;overflow-x:auto;scrollbar-width:none;transition:padding .15s;}
.hoodrow:empty{padding:0;border-bottom:none;}
.hoodrow::-webkit-scrollbar{display:none;}
.hoodrow:not(:empty){padding:8px 14px;}
.hoodbtn{flex-shrink:0;font-family:'Special Elite',monospace;font-size:11.5px;background:rgba(255,255,255,.05);color:rgba(218,184,112,.75);border:1px solid rgba(218,184,112,.22);padding:6px 14px;border-radius:15px;cursor:pointer;white-space:nowrap;transition:all .2s;}
.hoodbtn:hover{border-color:rgba(218,184,112,.5);}
.hoodbtn.on{background:var(--go);color:#fff;border-color:var(--go);}

.cnav{position:sticky;top:calc(var(--nav-h,52px) + var(--hood-h,0px));z-index:898;background:rgba(8,4,0,.95);border-bottom:1px solid rgba(218,184,112,.12);display:flex;gap:6px;padding:8px 14px;overflow-x:auto;scrollbar-width:none;}
.cnav::-webkit-scrollbar{display:none;}
.cc{flex-shrink:0;padding:5px 13px;border-radius:13px;border:none;cursor:pointer;font-size:11px;font-weight:700;color:#fff;opacity:.82;white-space:nowrap;transition:transform .15s,opacity .15s;}
.cc:hover{transform:scale(1.07);opacity:1;}
.cc.on{opacity:1;box-shadow:0 0 0 2px rgba(255,255,255,.6) inset,0 3px 10px rgba(0,0,0,.4);}
.cc.market{background:var(--g);}.cc.foodhall{background:var(--go);}.cc.bars{background:var(--wn);}.cc.artwalk{background:var(--bl);}.cc.cityart{background:var(--pu);}.cc.parks{background:var(--pk);}.cc.venue{background:var(--br);}.cc.seasonal{background:var(--cr8);}.cc.shop{background:var(--re);}
.hero{text-align:center;padding:38px 20px 24px;background:radial-gradient(ellipse at 50% 0%,rgba(218,184,112,.14),transparent 65%);}
.hero h1{font-family:'Special Elite',monospace;font-size:clamp(36px,9vw,64px);color:var(--cl);letter-spacing:3px;text-shadow:0 0 50px rgba(218,184,112,.35),2px 3px 0 rgba(0,0,0,.6);}
.hero .sub{font-style:italic;color:rgba(218,184,112,.65);font-size:16px;margin-top:5px;}
.clbl{display:inline-block;background:rgba(218,184,112,.12);border:1px solid rgba(218,184,112,.22);border-radius:20px;padding:4px 14px;color:var(--cl);font-size:13px;font-family:'Special Elite',monospace;margin-top:10px;}
.tag{display:inline-block;margin-top:12px;border:1px solid rgba(218,184,112,.28);border-radius:20px;padding:5px 18px;color:rgba(218,184,112,.72);font-size:12px;}
.tdwrap{max-width:1060px;margin:24px auto 0;padding:0 14px;}
.sh{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.sh h2{font-family:'Special Elite',monospace;font-size:19px;color:var(--cl);letter-spacing:1px;}
.live{background:var(--cr8);color:#fff;font-size:9px;font-weight:700;padding:3px 9px;border-radius:10px;letter-spacing:1.5px;animation:blink 2s infinite;}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:.6;}}
.tscr{display:flex;gap:12px;overflow-x:auto;scrollbar-width:none;padding:3px 2px 14px;}
.tscr::-webkit-scrollbar{display:none;}
.tc{flex-shrink:0;width:180px;background:linear-gradient(145deg,var(--cr),var(--cr2));border-radius:5px;overflow:hidden;cursor:pointer;box-shadow:0 5px 18px rgba(0,0,0,.42);transition:transform .2s;}
.tc:hover{transform:translateY(-4px);}
.tcimg{width:100%;height:90px;background:linear-gradient(135deg,#e8d8a0,#d0c080);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;font-size:28px;}
.tcbody{padding:9px 10px 11px;}
.tcbody h4{font-family:'Special Elite',monospace;font-size:12px;color:var(--ink);margin-bottom:3px;line-height:1.3;}
.tcbody .tw{font-size:10.5px;font-weight:700;color:#8B2500;}
.boards{max-width:1060px;margin:4px auto;padding:0 14px 20px;}
.bsec{margin-bottom:44px;animation:bi .55s ease both;}
@keyframes bi{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:none;}}
.blbl{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-left:2px;}
.blbl .dot{width:11px;height:11px;border-radius:50%;flex-shrink:0;}
.blbl h2{font-family:'Special Elite',monospace;color:var(--cl);font-size:15px;letter-spacing:1.5px;text-transform:uppercase;}
.blbl .bi{margin-left:auto;font-size:10.5px;color:rgba(218,184,112,.38);}
.dot.market{background:var(--g);}.dot.foodhall{background:var(--go);}.dot.bars{background:var(--wn);}.dot.artwalk{background:var(--bl);}.dot.cityart{background:var(--pu);}.dot.parks{background:var(--pk);}.dot.venue{background:var(--br);}.dot.seasonal{background:var(--cr8);}.dot.shop{background:var(--re);}
.frame{background:repeating-linear-gradient(180deg,#1a0800 0,#2e1504 4px,#1a0800 7px,#3a1c08 10px);border-radius:7px;padding:16px;box-shadow:0 0 0 3px #5a3010,0 0 0 6px #1a0800,0 18px 50px rgba(0,0,0,.62);}
.frame.compact{max-width:624px;margin:0 auto;}
.cork{background-color:#b8843a;background-image:linear-gradient(rgba(20,10,0,.32),rgba(20,10,0,.32)),url('../img/cork-texture.jpg');background-size:auto,260px 260px;background-repeat:no-repeat,repeat;border-radius:3px;position:relative;overflow:hidden;padding:0 0 18px;}
.hu{display:flex;flex-direction:column;align-items:center;min-width:0;}
.thr{width:2px;height:14px;background:linear-gradient(to bottom,#9a6828,#c09050);flex-shrink:0;}
.rope{position:absolute;left:0;right:0;top:40px;height:3px;z-index:2;background:linear-gradient(90deg,#5a3408,#b07028 8%,#e0a840 25%,#c8903a 50%,#dca838 78%,#b07028 94%,#5a3408);box-shadow:0 2px 7px rgba(0,0,0,.5);}
.strip-wrap{position:relative;padding:22px 4px 0;max-width:592px;margin:0 auto;}
.string-line{position:absolute;left:14px;right:14px;top:14px;height:2px;z-index:1;background:linear-gradient(90deg,#5a3408,#b07028 8%,#e0a840 25%,#c8903a 50%,#dca838 78%,#b07028 94%,#5a3408);box-shadow:0 2px 5px rgba(0,0,0,.5);}
.fstrip{position:relative;z-index:2;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 14px 16px;}
.fstrip::-webkit-scrollbar{display:none;}
.pin-slot{flex:0 0 176px;width:176px;scroll-snap-align:start;position:relative;padding-top:15px;}
.clothespin{position:absolute;top:0;left:50%;transform:translateX(-50%);width:13px;height:24px;background:linear-gradient(90deg,#c9a06a,#a97c48 46%,#8a6236 50%,#a97c48 54%,#c9a06a);border-radius:3px;box-shadow:0 2px 4px rgba(0,0,0,.45);z-index:3;}
.clothespin::after{content:'';position:absolute;left:50%;top:38%;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:#5a4020;}
.fc{width:100%;height:210px;background:#fff;box-shadow:0 2px 0 rgba(0,0,0,.15),0 6px 18px rgba(0,0,0,.38);cursor:pointer;overflow:hidden;transition:transform .22s,box-shadow .22s;position:relative;display:flex;flex-direction:column;}
.fc:hover{transform:scale(1.05) rotate(0deg) translateY(-5px)!important;box-shadow:0 2px 0 rgba(0,0,0,.1),0 16px 40px rgba(0,0,0,.55);z-index:10;}
.fc.exp{opacity:.38;filter:grayscale(75%);}
@keyframes livepulse{0%,100%{border-color:#22c55e;box-shadow:0 0 0 0 rgba(34,197,94,.55),0 2px 0 rgba(0,0,0,.15),0 6px 18px rgba(0,0,0,.38);}50%{border-color:#8ff0ae;box-shadow:0 0 12px 3px rgba(34,197,94,.75),0 2px 0 rgba(0,0,0,.15),0 6px 18px rgba(0,0,0,.38);}}
.fc.live-now{border:3px solid #22c55e;animation:livepulse 1.4s ease-in-out infinite;}
.tc.live-now{border:3px solid #22c55e;border-radius:5px;animation:livepulse 1.4s ease-in-out infinite;}
.fimg{width:100%;height:100px;flex-shrink:0;background:linear-gradient(135deg,#e8d8a0,#d0c080);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;font-size:26px;position:relative;overflow:hidden;}
.fimg.hp{font-size:0;}
.etag{position:absolute;top:6px;left:0;background:var(--cr8);color:#fff;font-size:8px;font-weight:700;padding:2px 8px;letter-spacing:1px;}
.fb{padding:9px 10px 11px;background:#fff;flex:1;display:flex;flex-direction:column;min-height:0;}
.rib{font-family:'Special Elite',monospace;font-size:8px;text-transform:uppercase;letter-spacing:1.5px;padding:2px 6px;color:#fff;display:inline-block;margin-bottom:5px;border-radius:1px;}
.rib.market{background:var(--g);}.rib.foodhall{background:var(--go);}.rib.bars{background:var(--wn);}.rib.artwalk{background:var(--bl);}.rib.cityart{background:var(--pu);}.rib.parks{background:var(--pk);}.rib.venue{background:var(--br);}.rib.seasonal{background:var(--cr8);}.rib.shop{background:var(--re);}
.fc h3{font-family:'Special Elite',monospace;font-size:12px;line-height:1.25;color:#1a0800;margin-bottom:3px;}
.fc .fw{font-size:10px;font-weight:700;color:#8B2500;margin-bottom:1px;}
.fc .fa{font-size:9.5px;color:#5a4030;opacity:.85;}
.afc{width:100%;min-height:165px;border:2px dashed rgba(255,255,255,.35);background:rgba(0,0,0,.15);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;cursor:pointer;color:rgba(255,255,255,.45);transition:all .2s;}
.afc:hover{background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);}
.afc .ap{font-size:24px;font-family:'Special Elite',monospace;}
.afc .al{font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;}
.fc-empty{width:100%;min-height:165px;border:2px dashed rgba(255,255,255,.22);background:rgba(0,0,0,.08);border-radius:2px;cursor:pointer;transition:background .2s;}
.fc-empty:hover{background:rgba(255,255,255,.05);}

#mapSec{max-width:1060px;margin:0 auto 60px;padding:0 14px;display:none;}
.mframe{background:repeating-linear-gradient(180deg,var(--w1) 0,var(--w2) 4px,var(--w1) 7px,var(--w3) 10px);border-radius:7px;padding:14px;box-shadow:0 0 0 3px var(--w3),0 0 0 6px var(--w1),0 22px 55px rgba(0,0,0,.65);}
.mvp{overflow:hidden;border-radius:3px;height:520px;cursor:grab;user-select:none;position:relative;}
.mvp.gr{cursor:grabbing;}
#mainMap{display:block;transform-origin:0 0;transition:transform .08s;}
.mlg{position:absolute;bottom:12px;right:12px;background:rgba(253,246,220,.95);border:1px solid rgba(90,60,20,.28);border-radius:4px;padding:9px 11px;min-width:110px;}
.mlg h4{font-family:'Special Elite',monospace;font-size:9px;text-transform:uppercase;letter-spacing:1px;color:#3a2010;margin-bottom:6px;}
.li{display:flex;align-items:center;gap:5px;font-size:9px;color:#3a2010;margin-bottom:3px;}
.ld{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.mcomp{position:absolute;bottom:12px;left:12px;width:38px;height:38px;border:2px solid rgba(90,60,20,.45);border-radius:50%;background:rgba(253,246,220,.88);display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-weight:700;font-size:14px;color:#3a2010;}
.ov{position:fixed;inset:0;background:rgba(6,3,0,.88);display:none;align-items:center;justify-content:center;padding:16px;z-index:1000;backdrop-filter:blur(7px);}
.ov.on{display:flex;}
.dpanel,.fpanel{background:linear-gradient(158deg,#fdf6e0,#f0e2ba);max-width:500px;width:100%;max-height:93vh;overflow-y:auto;border-radius:4px;position:relative;box-shadow:0 32px 80px rgba(0,0,0,.7);border-top:4px solid var(--go);}
.xbtn{position:absolute;top:11px;right:11px;width:35px;height:35px;border-radius:50%;background:#c0392b;color:#fff;border:3px solid #fff;font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:5;}
.vhbtn{position:absolute;top:11px;left:11px;background:var(--g);color:#fff;border:2px solid #fff;border-radius:20px;padding:8px 14px;font-family:'Special Elite',monospace;font-size:12px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px;z-index:5;box-shadow:0 3px 10px rgba(0,0,0,.4);white-space:nowrap;}
.vhbtn.back{background:var(--go);}
.dpanel{transition:transform .17s ease,opacity .17s ease;}
.dpanel.flip-out{transform:scaleX(.06);opacity:.35;}
.dhero{width:100%;height:200px;background:linear-gradient(135deg,#e0d0a0,#c8b880);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;font-size:56px;position:relative;}
.dhero.hp{font-size:0;}
.photozoom{position:absolute;bottom:11px;right:11px;width:35px;height:35px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;border:2px solid #fff;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:5;}
.photozoom:hover{background:rgba(0,0,0,.75);}
.zov-close{position:absolute;top:16px;right:16px;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.15);color:#fff;border:2px solid #fff;font-size:18px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2001;}
.zov-close:hover{background:rgba(255,255,255,.28);}
.dbody{padding:18px 20px 28px;}
.dbody h2{font-family:'Special Elite',monospace;font-size:21px;color:#1a0800;margin-bottom:6px;}
.dw{font-weight:700;font-size:14px;color:#8B2500;margin-bottom:5px;}
.dloc{display:flex;align-items:flex-start;gap:10px;margin:6px 0 15px;flex-wrap:wrap;}
.dadr{font-size:13px;color:#5a4030;flex:1;}
.ab{display:inline-block;padding:7px 13px;border-radius:4px;font-size:11px;font-weight:700;cursor:pointer;text-decoration:none;border:none;color:#fff;}
.ab.blue{background:var(--bl);}.ab.green{background:var(--g);}.ab.gray{background:#6a5040;}.ab.dark{background:var(--cr8);}
.ddesc{font-size:13.5px;line-height:1.65;color:#2a1800;margin-bottom:15px;}
.dtags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:15px;}
.dtag{font-size:10.5px;border:1px solid rgba(90,65,30,.28);border-radius:13px;padding:3px 10px;color:#5a4030;}
.igrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:15px;}
.ibox{background:rgba(0,0,0,.04);border:1px solid rgba(90,65,30,.14);border-radius:4px;padding:10px;}
.ibox h4{font-family:'Special Elite',monospace;font-size:9.5px;text-transform:uppercase;letter-spacing:1px;color:#8a6030;margin-bottom:4px;}
.ibox p{font-size:11.5px;color:#3a2810;line-height:1.5;}
.warn{font-size:12px;background:#fef3cd;border-left:4px solid var(--go);padding:8px 11px;margin-bottom:12px;border-radius:0 4px 4px 0;color:#5a4000;font-style:italic;}
.warn.r{border-left-color:var(--cr8);background:#fff5f5;color:#5a0000;}
.vhub-list{margin:12px 0;}
.vhub-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 2px;border-bottom:1px solid rgba(0,0,0,.06);font-size:13px;color:#2a1800;cursor:pointer;}
.vhub-row:hover{background:rgba(0,0,0,.03);}
.vhub-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.vhub-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 8px;border-radius:10px;color:#fff;background:var(--go);flex-shrink:0;}
.vhub-none{font-size:12px;color:rgba(90,65,30,.55);font-style:italic;padding:10px 2px;}
.vhub-spot-head{font-family:'Special Elite',monospace;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--go);margin:14px 0 4px;}
.vhub-list.spotlight{background:#fdf6e0;border:1px solid rgba(184,134,11,.3);border-radius:6px;padding:2px 10px;margin:6px 0 4px;}
.vhub-list.spotlight .vhub-row{border-bottom-color:rgba(184,134,11,.18);}
.vhub-rank{font-family:'Special Elite',monospace;font-size:11px;font-weight:700;color:var(--go);flex-shrink:0;width:22px;}
.vhub-cta{font-size:11.5px;line-height:1.4;color:#8a6030;font-style:italic;padding:8px 0;border-top:1px dashed rgba(90,65,30,.22);margin-top:6px;}
.vsec{margin-top:15px;border-top:1px dashed rgba(160,120,50,.38);padding-top:12px;}
.vsec h3{font-family:'Special Elite',monospace;font-size:13px;color:var(--g);margin-bottom:10px;}
.vfilts{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:9px;}
.vbtn{font-size:10px;font-weight:700;background:#e8d890;border:none;border-radius:12px;padding:4px 9px;cursor:pointer;color:#3a2810;}
.vbtn.on{background:var(--go);color:#fff;}
.vgrp h4{font-family:'Special Elite',monospace;font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:var(--g);margin:11px 0 5px;}
.vi{font-size:12.5px;line-height:1.6;color:#2a1800;padding:2px 0;border-bottom:1px solid rgba(0,0,0,.05);}
.vi:last-child{border:none;}
.vi.hidden{display:none;}
.vgrp.hidden h4{display:none;}
.sugbtn{width:100%;margin-top:11px;padding:9px;background:#f5edd0;border:1px dashed var(--go);border-radius:4px;cursor:pointer;font-size:11.5px;color:#5a4000;text-align:left;}
.uplbl{display:inline-block;margin:10px 0 4px;background:var(--g);color:#fff;font-family:'Special Elite',monospace;font-size:10.5px;padding:7px 13px;border-radius:4px;cursor:pointer;}
.dbtnrow{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px;}
.fpanel{padding:0;}
.fi{padding:24px 22px 28px;}
.fi h2{font-family:'Special Elite',monospace;font-size:20px;color:#1a0800;margin-bottom:16px;}
.fi label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#5a4030;margin:11px 0 3px;}
.fi input,.fi textarea,.fi select{width:100%;padding:8px 10px;border:1.5px solid #c4a060;background:#fffef8;font-family:'Libre Franklin',sans-serif;font-size:13.5px;color:#1a0800;border-radius:3px;outline:none;}
.fi textarea{resize:vertical;min-height:60px;}
.facts{display:flex;gap:8px;justify-content:flex-end;margin-top:18px;}
.bsub{font-family:'Special Elite',monospace;background:var(--g);color:#fff;border:none;padding:10px 18px;cursor:pointer;font-size:12.5px;border-radius:4px;}
.bcan{font-family:'Special Elite',monospace;background:transparent;color:#5a4030;border:1.5px solid #c4a060;padding:10px 15px;cursor:pointer;font-size:12.5px;border-radius:4px;}
.zov{position:fixed;inset:0;background:rgba(0,0,0,.95);display:none;align-items:center;justify-content:center;z-index:2000;cursor:zoom-out;padding:16px;}
.zov.on{display:flex;}
.zov img{max-width:100%;max-height:100%;border-radius:4px;}
.soon{text-align:center;padding:60px 20px;color:rgba(218,184,112,.45);font-family:'Special Elite',monospace;font-size:18px;}
.soon p{font-size:13px;margin-top:10px;color:rgba(218,184,112,.3);font-family:'Libre Franklin',sans-serif;}
footer{text-align:center;color:rgba(200,160,70,.35);font-size:12px;padding:20px 14px 42px;border-top:1px solid rgba(255,255,255,.04);}
.hidden{display:none!important;}
.totop{position:fixed;right:16px;bottom:20px;width:44px;height:44px;border-radius:50%;background:rgba(15,8,0,.88);border:1px solid rgba(218,184,112,.4);color:var(--cl);font-size:15px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:850;opacity:0;pointer-events:none;transform:translateY(12px);transition:opacity .25s,transform .25s,background .2s,color .2s;box-shadow:0 8px 22px rgba(0,0,0,.55);}
.totop.show{opacity:1;pointer-events:auto;transform:translateY(0);}
.totop:hover{background:var(--go);color:#fff;}

/* ── Vendor Hub: promotion picker / mock checkout (cream panel, same
   family as .fi flyer forms) ── */
.fpanel.wide{max-width:760px;}
.promo-step{padding:22px 22px 28px;}
.promo-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.promo-head h2{font-family:'Special Elite',monospace;font-size:19px;color:#1a0800;}
.promo-back{background:none;border:none;color:#5a4030;font-size:18px;cursor:pointer;padding:2px 8px 2px 0;line-height:1;}
.promo-sub{font-size:12.5px;color:#5a4030;margin-bottom:14px;}
.promo-cards{display:flex;flex-direction:column;gap:12px;margin:14px 0;}
.promo-card{border:2px solid #c4a060;border-radius:8px;padding:14px 16px;cursor:pointer;transition:border-color .15s,background .15s;background:#fffef8;}
.promo-card:hover{border-color:var(--go);background:#fff8e6;}
.promo-card h3{font-family:'Special Elite',monospace;font-size:15px;color:#1a0800;display:inline-block;}
.promo-card .pc-price{font-size:19px;font-weight:700;color:#8B2500;float:right;}
.promo-card p{font-size:12.5px;color:#5a4030;line-height:1.5;margin-top:5px;clear:both;}
.hourgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(66px,1fr));gap:8px;margin:12px 0;}
.hourbtn{padding:9px 6px;border-radius:6px;border:1.5px solid #c4a060;background:#fffef8;font-family:'Special Elite',monospace;font-size:12px;cursor:pointer;text-align:center;color:#1a0800;}
.hourbtn .hbstat{display:block;font-size:8.5px;font-weight:400;margin-top:2px;text-transform:uppercase;letter-spacing:.4px;opacity:.65;font-family:'Libre Franklin',sans-serif;}
.hourbtn.full,.hourbtn.closed{opacity:.4;cursor:not-allowed;background:#ececec;}
.hourbtn.closed{text-decoration:line-through;}
.hourbtn.on{background:var(--go);color:#fff;border-color:var(--go);}
.slotgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0;}
.slotgrid.slotgrid-2{grid-template-columns:repeat(2,1fr);}
.slotbtn{padding:10px 6px;border-radius:6px;border:1.5px solid #c4a060;background:#fffef8;font-size:11.5px;cursor:pointer;text-align:center;color:#1a0800;}
.slotbtn.taken{opacity:.35;cursor:not-allowed;background:#ececec;text-decoration:line-through;}
.slotbtn.on{background:var(--g);color:#fff;border-color:var(--g);}
.promo-summary{background:#f5edd0;border:1px dashed var(--go);border-radius:6px;padding:12px 14px;margin:14px 0;font-size:13px;color:#3a2810;line-height:1.6;}
.promo-summary b{color:#8B2500;}
.checkout-demo-banner{background:#fef3cd;border-left:4px solid var(--go);padding:8px 12px;font-size:12px;font-style:italic;color:#5a4000;border-radius:0 4px 4px 0;margin-bottom:14px;}
.promo-err{background:#fff5f5;border-left:4px solid var(--cr8);padding:8px 12px;font-size:12px;color:#5a0000;border-radius:0 4px 4px 0;margin-bottom:14px;}
.promo-ok{background:#eefbf3;border-left:4px solid var(--g);padding:12px 14px;font-size:13.5px;color:#12351d;border-radius:0 4px 4px 0;margin-bottom:14px;line-height:1.6;}

/* Promo badges wherever a vendor is listed */
.promo-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 8px;border-radius:10px;color:#fff;display:inline-block;}
.promo-badge.featured{background:var(--go);}
.promo-badge.boost{background:var(--g);}
.promo-badge.upcoming{background:#8a6030;}
.countdown{font-family:'Special Elite',monospace;font-size:12.5px;color:#8B2500;font-weight:700;}

/* Vendor Dashboard */
.dash-sec{margin-bottom:20px;}
.dash-sec h3{font-family:'Special Elite',monospace;font-size:15px;color:var(--g);margin-bottom:10px;}
.dash-listing{border:1px solid rgba(90,65,30,.2);border-radius:6px;padding:12px 14px;margin-bottom:10px;}
.dash-listing h4{font-family:'Special Elite',monospace;font-size:13.5px;color:#1a0800;margin-bottom:4px;}
.dash-row{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;}
.dash-table-wrap{overflow-x:auto;}
.dash-table{width:100%;border-collapse:collapse;font-size:12px;min-width:480px;}
.dash-table th{text-align:left;font-family:'Special Elite',monospace;font-size:9.5px;text-transform:uppercase;letter-spacing:.5px;color:#8a6030;padding:6px 8px;border-bottom:1.5px solid rgba(90,65,30,.25);white-space:nowrap;}
.dash-table td{padding:7px 8px;border-bottom:1px solid rgba(90,65,30,.1);color:#2a1800;white-space:nowrap;}
.dash-empty{font-size:12.5px;color:rgba(90,65,30,.55);font-style:italic;padding:10px 0;}

/* ── Admin Dashboard tabs (dark panel, matches the sibling map repo's
   admin.html visual language, same CSS variables) ── */
.admintabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;}
.admintab{font-family:'Special Elite',monospace;font-size:12px;background:rgba(255,255,255,.05);color:rgba(218,184,112,.75);border:1px solid rgba(218,184,112,.25);padding:8px 15px;border-radius:8px 8px 0 0;cursor:pointer;}
.admintab.on{background:rgba(218,184,112,.14);color:var(--cl);border-color:var(--go);}
.admintabpanel{background:rgba(255,255,255,.03);border:1px solid rgba(218,184,112,.15);border-radius:0 8px 8px 8px;padding:16px;}
.aformgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:9px 14px;margin-bottom:4px;}
.aformgrid label{display:flex;flex-direction:column;gap:4px;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:rgba(218,184,112,.7);}
.aformgrid input,.aformgrid select{background:#1f2937;border:1px solid rgba(218,184,112,.28);color:#fff;padding:7px 9px;border-radius:4px;font-size:12.5px;font-family:'Libre Franklin',sans-serif;}
.abkrow{background:rgba(255,255,255,.05);border:1px solid rgba(218,184,112,.2);border-radius:6px;padding:10px 14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:rgba(255,255,255,.85);}
.abkrow .abk-amt{font-weight:700;color:var(--cl);}
.aempty{font-size:12.5px;color:rgba(218,184,112,.5);font-style:italic;}

@media(max-width:480px){
  .fstrip{gap:8px;padding:0 10px 14px;}
  .pin-slot{flex:0 0 148px;width:148px;}
  .fimg{height:80px;}
  .igrid{grid-template-columns:1fr;}
  .boards{padding:0 6px 20px;}
  .frame.compact{max-width:none;}
  #mapSec{padding:0 6px;margin:0 auto 30px;}
  .mframe{padding:6px;}
  .mvp{height:calc(100vh - 210px);min-height:360px;}
  .totop{right:12px;bottom:14px;width:40px;height:40px;font-size:13px;}
  .hourgrid{grid-template-columns:repeat(3,1fr);}
  .slotgrid{grid-template-columns:repeat(2,1fr);}
  .promo-card .pc-price{float:none;display:block;margin-top:4px;}
}
