/* BloodCrimes City V2 — experimental interactive 2.5D city (Downtown slice). */

.bc-city-v2-page{max-width:1600px!important;margin:0 auto;padding:1.1rem clamp(.8rem,2vw,2rem) 2rem;color:#f4f4f5}
.bc-city-v2-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.9rem;flex-wrap:wrap}
.bc-city-v2-head{display:flex;align-items:baseline;gap:.6rem;margin-right:.4rem;white-space:nowrap;line-height:1}
.bc-city-v2-head .bc-page-title{margin:0;font-size:1.35rem;letter-spacing:.04em;text-transform:uppercase}
.bc-city-v2-head .bc-page-sub{margin:0;font-size:.7rem;color:#8d9098;letter-spacing:.06em;text-transform:uppercase}
.bc-city-v2-tools{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.bc-city-v2-event{font:700 .68rem 'Barlow Condensed',sans-serif;letter-spacing:.14em;color:#9a9ca5;border:1px solid rgba(255,255,255,.1);background:rgba(12,13,17,.7);padding:.32rem .6rem;border-radius:.3rem;min-height:38px;display:inline-flex;align-items:center;max-width:320px}
/* the public-events toast window is disabled by request */
#bc-city-v2-event{display:none!important}
/* the in-world minimap is disabled by request */
.bc-engine-minimap{display:none!important}
/* weather + city-properties pills (top-left) are disabled by request */
#bc-city-v2-weather,#bc-city-v2-market{display:none!important}
.bc-city-v2-event.is-live{color:#f0d899;border-color:rgba(214,173,98,.55);box-shadow:0 0 14px rgba(214,173,98,.25)}
.bc-city-v2-weather{display:inline-flex;align-items:center;gap:.45rem;min-height:38px;padding:.32rem .7rem;border:1px solid rgba(255,255,255,.12);background:rgba(12,16,20,.72);border-radius:.3rem;color:#9ec8e4;font:700 .72rem 'Barlow Condensed',sans-serif;letter-spacing:.1em}
.bc-city-v2-weather i{color:#6fb0d8}
.bc-city-v2-weather.is-storm i{color:#ffd166}
.bc-city-v2-weather.is-fog i{color:#c9d2dd}
.bc-city-v2-mission{display:inline-flex;align-items:center;gap:.6rem;min-height:38px;padding:.3rem .7rem;border:1px solid rgba(241,202,110,.6);background:rgba(30,24,8,.85);border-radius:.3rem;color:#f1ca6e;font:700 .68rem 'Barlow Condensed',sans-serif;letter-spacing:.1em;box-shadow:0 0 16px rgba(241,202,110,.25)}
.bc-city-v2-mission[hidden]{display:none}
.bc-city-v2-mission .m-title{color:#fff}
.bc-city-v2-mission .m-step{color:#b9a05e}
.bc-city-v2-mission .m-go{color:#0a0a0c;background:#f1ca6e;padding:.18rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:700;letter-spacing:.08em}
.bc-city-v2-mission .m-go:hover{background:#ffd98a;color:#0a0a0c;text-decoration:none}
.bc-city-v2-market{display:inline-flex;align-items:center;gap:.45rem;min-height:38px;padding:.32rem .7rem;border:1px solid rgba(126,200,245,.35);background:rgba(14,20,30,.7);border-radius:.3rem;color:#7ec8f5;font:700 .78rem 'Barlow Condensed',sans-serif;letter-spacing:.08em;cursor:pointer;transition:border-color .15s}
.bc-city-v2-market:hover{border-color:#7ec8f5}
.bc-city-v2-market b{font-size:.95rem;color:#bfe3ff}
.bc-city-v2-market .bc-mkt-sub{display:block;font-size:.56rem;letter-spacing:.16em;color:#6b9fc4;line-height:1}
.bc-city-v2-market.is-claimed b{color:#ffb6c6}
.bc-city-v2-fps{font:700 .7rem 'Barlow Condensed',sans-serif;color:#71e5b1;letter-spacing:.1em;min-width:54px;text-align:right}

.bc-city-v2-stage-wrap{background:#090a0d;border:1px solid rgba(214,173,98,.3);box-shadow:0 20px 55px rgba(0,0,0,.4);overflow:hidden}
.bc-city-v2-stage{position:relative;height:calc(100dvh - 260px);height:calc(100vh - 260px);min-height:460px;background:#0b0c10;touch-action:none;overflow:hidden;overscroll-behavior:contain}
.bc-city-v2-stage canvas{display:block;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.bc-city-v2-tint{position:absolute;inset:0;z-index:5;pointer-events:none;transition:background .6s ease}
.bc-city-v2-minimap{position:absolute;z-index:6;top:.6rem;left:.6rem;width:168px;height:120px;background:rgba(8,9,13,.82);border:1px solid rgba(214,173,98,.4);border-radius:8px;box-shadow:0 6px 22px rgba(0,0,0,.5);cursor:pointer;overflow:hidden;pointer-events:auto;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.bc-city-v2-minimap canvas{display:block;width:100%;height:100%}
.bc-city-v2-minimap:hover{border-color:#d6ad62}
.bc-city-v2-loader{position:absolute;inset:0;z-index:10;display:none;align-items:center;justify-content:center;background:rgba(9,10,13,.38)}
.bc-city-v2-loader.is-visible{display:flex}
.bc-loader-box{flex-direction:column;gap:.5rem;font:700 .9rem 'Barlow Condensed',sans-serif;letter-spacing:.22em;color:#d6ad62;display:flex;align-items:center;background:rgba(9,10,13,.82);padding:.7rem 1.1rem;border-radius:.7rem;border:1px solid rgba(214,173,98,.25)}
.bc-loader-dots:after{content:'';animation:bc-v2-dots 1.2s steps(4) infinite}
.bc-loader-track{width:min(46vw,340px);height:6px;background:rgba(214,173,98,.18);border-radius:6px;overflow:hidden}
.bc-loader-fill{display:block;height:100%;width:0;background:linear-gradient(90deg,#d6ad62,#f0d899);border-radius:6px;transition:width .2s ease}
.bc-loader-pct{font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.18em;color:#8d9098}
@keyframes bc-v2-dots{0%{content:''}25%{content:'.'}50%{content:'..'}75%{content:'...'}}
.bc-v2-fallback{display:grid;place-items:center;height:100%;color:#9a9ca5;font:700 .9rem 'Barlow Condensed',sans-serif;letter-spacing:.1em;text-transform:uppercase}

.bc-city-v2-toolbar{display:flex;align-items:center;gap:1rem;padding:.6rem .8rem;background:#0c0d10;border-top:1px solid rgba(255,255,255,.08);flex-wrap:wrap}
.bc-v2-legend-item{display:inline-flex;align-items:center;gap:.35rem;color:#8d9098;font:600 .7rem 'Barlow Condensed',sans-serif;letter-spacing:.08em;text-transform:uppercase}
.bc-v2-legend-item b{font-size:.85rem}
.bc-v2-legend-item .is-location{color:#d6ad62}
.bc-v2-legend-item .is-property{color:#7ec8f5}
.bc-v2-legend-item .is-sponsored{color:#ffb6c6}
.bc-v2-legend-item i{color:#e0e2e8}
.bc-v2-legend-spacer{flex:1}
.bc-v2-credit{color:#5b5e66;font:600 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.18em}

.bc-city-v2-debug{position:fixed;z-index:60;left:.6rem;bottom:.6rem;background:#050505;color:#71e5b1;padding:.4rem .5rem;font:12px monospace;border:1px solid rgba(113,229,177,.4)}

/* Panel — dark glass noir (desktop side panel / mobile bottom sheet) */
.bc-city-v2-panel{display:none;position:fixed;z-index:1200;right:1.6rem;top:50%;transform:translateY(-50%);width:min(380px,calc(100vw - 2rem));background:rgba(17,18,23,.96);border:1px solid rgba(214,173,98,.5);box-shadow:0 18px 60px #000;padding:1.4rem;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.bc-city-v2-panel.is-open{display:block}
.bc-v2-eyebrow{color:#d6ad62;font:700 .66rem 'Barlow Condensed',sans-serif;letter-spacing:.2em;text-transform:uppercase;display:block;margin-bottom:.2rem}
.bc-v2-title{margin:.3rem 0 .5rem;font:700 2rem 'Barlow Condensed',sans-serif;text-transform:uppercase;line-height:1}
.bc-v2-copy{color:#aeb0b8;font-size:.86rem;line-height:1.45}
.bc-v2-meta{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin:.9rem 0}
.bc-v2-meta div{background:#1a1b20;padding:.55rem .6rem;border:1px solid rgba(255,255,255,.05)}
.bc-v2-meta span{display:block;color:#767a84;font-size:.66rem;text-transform:uppercase;letter-spacing:.06em}
.bc-v2-meta strong{color:#e4bd68;font-size:.9rem}
.bc-v2-meta strong.is-live{color:#66bb6a}
.bc-v2-meta strong.is-avail{color:#7ec8f5}
.bc-v2-meta strong.is-taken{color:#ffb6c6}
.bc-v2-badge{display:inline-block;background:#d11f36;color:#fff;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;padding:2px 8px;border-radius:4px;margin:.1rem 0 .4rem}
.bc-v2-cta{display:block;background:#bd1c33;color:#fff;text-align:center;padding:.75rem;margin-top:.9rem;font:700 .82rem 'Barlow Condensed',sans-serif;letter-spacing:.1em;text-transform:uppercase}
.bc-v2-cta:hover{color:#fff;text-decoration:none;background:#d72a42}
.bc-v2-link{display:block;margin-top:.7rem;color:#9a9ca5;font:600 .72rem 'Barlow Condensed',sans-serif;letter-spacing:.08em;text-transform:uppercase;text-align:center}
.bc-v2-link:hover{color:#d6ad62;text-decoration:none}
.bc-city-v2-panel .bc-city-panel-close{position:absolute;right:.65rem;top:.55rem;border:0;background:transparent;color:#a9abb3;cursor:pointer;font-size:1rem}
.bc-city-v2-panel .bc-city-panel-close:hover{color:#fff}

@media(max-width:900px){
 .bc-city-v2-stage{height:calc(100dvh - 190px);height:calc(100vh - 190px);min-height:420px}
 .bc-city-v2-tools{gap:.35rem}
 .bc-city-v2-event{max-width:200px}
 .bc-city-v2-panel{right:0;top:auto;bottom:0;transform:none;width:100%;max-width:none;padding:1.3rem 1.2rem 1.6rem;border-width:1px 0 0;border-radius:0;max-height:70vh;overflow:auto}
 .bc-v2-credit{display:none}
}

/* Bottom-sheet backdrop — only visible while a panel is open (never blocks the map) */
.bc-city-sheet-backdrop{display:none;position:fixed;inset:0;z-index:1100;background:rgba(0,0,0,.65)}
.bc-city-sheet-backdrop.is-open{display:block}
@media(max-width:520px){
 .bc-city-v2-page{padding:.7rem .5rem 1.5rem}
 .bc-city-v2-stage{height:calc(100dvh - 150px);height:calc(100vh - 150px);min-height:380px}
 .bc-city-v2-head .bc-page-title{font-size:1.15rem}
 .bc-city-v2-head .bc-page-sub{display:none}
 .bc-city-v2-event{display:none}
 .bc-v2-legend-item{font-size:.62rem}
 .bc-v2-legend-spacer{display:none}
}
@media(prefers-reduced-motion:reduce){.bc-city-v2-event{transition:none}.bc-loader-dots{animation:none}}
/* Gym interior overlay */
.bc-gym-overlay{position:fixed;inset:0;z-index:60;background:rgba(5,6,9,.82);display:flex;align-items:center;justify-content:center;padding:16px}
.bc-gym-overlay[hidden]{display:none}
.bc-gym-stage{position:relative;width:min(96vw,880px);height:min(80vh,540px);border-radius:10px;overflow:hidden;border:1px solid rgba(214,173,98,.35);box-shadow:0 10px 40px rgba(0,0,0,.6)}
.bc-gym-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.82)}
.bc-gym-eq{position:absolute;transform:translate(-50%,-50%);background:rgba(10,11,15,.78);border:1px solid rgba(214,173,98,.45);color:#e9d9a6;font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.14em;padding:.28rem .5rem;border-radius:.3rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.15rem;transition:transform .15s ease,border-color .15s ease}
.bc-gym-eq i{width:10px;height:10px;border-radius:50%;background:#d6ad62;box-shadow:0 0 8px #d6ad62;animation:bc-gym-pulse 1.4s infinite}
.bc-gym-eq:hover{transform:translate(-50%,-50%) scale(1.06);border-color:#f0d899}
@keyframes bc-gym-pulse{0%,100%{opacity:.5;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
.bc-gym-player{position:absolute;width:26px;height:44px;left:50%;top:50%;background:url('https://assets.bloodcrimes.pl/city-v2/npcs/npc_man.webp') no-repeat center/contain;transition:left 1.1s ease,top 1.1s ease;filter:drop-shadow(0 3px 2px rgba(0,0,0,.5));transform:translate(-50%,-100%)}
.bc-gym-player.is-busy{animation:bc-gym-bob .5s infinite alternate}
@keyframes bc-gym-bob{from{transform:translate(-50%,-100%)}to{transform:translate(-50%,calc(-100% - 4px))}}
.bc-gym-hud{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:.6rem;padding:.5rem .7rem;background:linear-gradient(rgba(5,6,9,.85),transparent)}
.bc-gym-hud>*{font:700 .68rem 'Barlow Condensed',sans-serif;letter-spacing:.12em;color:#c9ccd4}
.bc-gym-energy{color:#f0d899;margin-right:auto}
.bc-gym-quick{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;color:#9a9ca5}
.bc-gym-exit{margin-left:auto;background:rgba(12,13,17,.85);border:1px solid rgba(255,255,255,.18);color:#d6ad62;font:700 .68rem 'Barlow Condensed',sans-serif;letter-spacing:.12em;padding:.34rem .6rem;border-radius:.3rem;cursor:pointer}
.bc-gym-exit:hover{border-color:#f0d899}
.bc-gym-result{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);background:rgba(8,9,12,.92);border:1px solid rgba(214,173,98,.5);color:#e9d9a6;font:700 .72rem 'Barlow Condensed',sans-serif;letter-spacing:.08em;padding:.5rem .9rem;border-radius:.4rem;text-align:center;max-width:86%}
.bc-gym-result.is-err{border-color:rgba(220,70,70,.6);color:#ffb0a0}

/* Bank robbery state */
.bc-bank-alarm{position:absolute;inset:0;pointer-events:none}
.bc-bank-alarm[hidden]{display:none}
.bc-bank-red{position:absolute;inset:0;background:radial-gradient(circle,rgba(255,40,50,0) 40%,rgba(255,40,50,.4) 100%);animation:bc-bank-alarm-pulse 1s infinite}
@keyframes bc-bank-alarm-pulse{0%,100%{opacity:.5}50%{opacity:1}}
.bc-bank-banner{position:absolute;top:44px;left:50%;transform:translateX(-50%);background:rgba(120,10,16,.9);border:1px solid #ff5a5a;color:#ffd9d9;font:700 .8rem 'Barlow Condensed',sans-serif;letter-spacing:.18em;padding:.45rem .9rem;border-radius:.35rem;animation:bc-bank-blink .8s infinite}
@keyframes bc-bank-blink{0%,100%{opacity:1}50%{opacity:.45}}
.bc-bank-robber{position:absolute;left:44%;top:44%;width:44px;height:76px;background:url('https://assets.bloodcrimes.pl/city-v2/npcs/npc_gangster.webp') no-repeat center/contain;animation:bc-bank-robber 1.6s infinite}
@keyframes bc-bank-robber{from{transform:translate(-50%,-50%)}to{transform:translate(-50%,calc(-50% - 6px))}}
.bc-bank-note{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);background:rgba(8,9,12,.9);border:1px solid rgba(255,90,90,.5);color:#ffb0a0;font:700 .68rem 'Barlow Condensed',sans-serif;letter-spacing:.12em;padding:.4rem .7rem;border-radius:.35rem}

/* Game Shell frame (persistent city behind) */
.bc-shell-frame{position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;background:#0b0c10}
.bc-shell-frame[hidden]{display:none}
.bc-shell-bar{display:flex;align-items:center;gap:.6rem;padding:.3rem .8rem;background:rgba(11,12,16,.9);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-bottom:1px solid rgba(214,173,98,.18)}
.bc-shell-title{font:700 .78rem 'Barlow Condensed',sans-serif;letter-spacing:.18em;color:#d6ad62;text-transform:uppercase}
.bc-shell-back{margin-left:auto;background:rgba(12,13,17,.9);border:1px solid rgba(214,173,98,.5);color:#d6ad62;font:700 .72rem 'Barlow Condensed',sans-serif;letter-spacing:.14em;padding:.4rem .8rem;border-radius:.35rem;cursor:pointer}
.bc-shell-back:hover{border-color:#f0d899}
.bc-shell-iframe{flex:1;width:100%;border:0;background:#0b0c10}

/* Persistent app menu — the City is the background, the menu is the front */
.bc-app-nav{position:fixed;z-index:65;left:0;right:0;bottom:0;display:flex;align-items:stretch;gap:2px;background:rgba(13,15,20,.97);border-top:2px solid rgba(214,173,98,.55);padding:0 4px;backdrop-filter:blur(8px);box-shadow:0 -4px 20px rgba(0,0,0,.5)}
.bc-app-nav button{flex:1;min-width:0;background:transparent;border:0;color:#e6e8ee;font:700 .68rem 'Barlow Condensed',sans-serif;letter-spacing:.1em;padding:.6rem .2rem .55rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.2rem;white-space:nowrap;overflow:hidden}
.bc-app-nav button i{font-size:1.05rem;color:#d6ad62}
.bc-app-nav button:hover i,.bc-app-nav button:hover{color:#ffd98a;background:rgba(255,255,255,.05)}
.bc-app-nav-menu{position:absolute;bottom:100%;left:0;right:0;display:flex;flex-wrap:wrap;gap:2px;background:rgba(9,10,13,.96);border-top:1px solid rgba(214,173,98,.3);padding:6px 4px}
.bc-app-nav-menu[hidden]{display:none}
.bc-app-nav-menu button{flex:1 1 33%;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:.3rem;margin:2px}
/* Desktop: top bar, all items inline */
@media(min-width:768px){
 .bc-app-nav{top:0;bottom:auto;border-top:0;border-bottom:2px solid rgba(214,173,98,.55);padding:4px 12px;align-items:center;box-shadow:0 4px 20px rgba(0,0,0,.5)}
 .bc-app-nav button{flex:0 1 auto;flex-direction:row;gap:.45rem;padding:.55rem .8rem}
 .bc-app-nav button i{font-size:1rem}
 .bc-app-nav-menu{position:fixed;top:44px;bottom:auto;left:auto;right:10px;width:min(380px,calc(100vw - 2rem));max-height:min(70vh,560px);overflow-y:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:.3rem;border:1px solid rgba(214,173,98,.35);border-radius:.4rem;box-shadow:0 8px 24px rgba(0,0,0,.6);padding:.5rem;background:rgba(9,10,13,.98)}
 .bc-app-nav-menu[hidden]{display:none}
 .bc-app-nav-menu button{flex:1 1 auto;margin:0;min-height:52px;font-size:.6rem}
}
@media(min-width:768px){ .bc-city-v2-page{padding-top:48px} }
@media(max-width:859px){ .bc-city-v2-page{padding-bottom:52px} }

/* The persistent app nav is the real menu now — hide the old header quick-nav
   buttons (Safehouse/Casino/Gazette/Radio/Home/City) everywhere; the header
   keeps only the title, info chips and Reset. */
#bc-city-v2-header .bc-map-control:not(#bc-city-v2-reset){display:none}

/* Mobile: the minimap is a nav aid, not the screen - shrink it and tuck it */
@media(max-width:859px){
 .bc-city-v2-minimap{width:96px;height:69px;top:.4rem;left:.4rem;border-radius:6px}
}
@media(max-width:480px){
 .bc-city-v2-minimap{width:78px;height:56px;top:.35rem;left:.35rem}
}

/* Floating mini-controls (Reset + Sound) over the city - full-screen game */
/* Mobile: the city is full-screen - hide the old header entirely */
@media(max-width:859px){
 .bc-city-v2-header{display:none}
 }

/* FULL-BLEED: the City is the fixed full-screen background; every other
   element (menu, messages, panels) overlays it. The stage-wrap ignores the
   legacy centered .bc-page layout entirely. */
.bc-city-v2-page.bc-page{max-width:none;width:100%;margin:0;padding:0;min-height:100dvh;height:100dvh;overflow:hidden;background:#0b0c10}
.bc-city-v2-header{display:none}
.bc-city-v2-stage-wrap{position:fixed;left:0;right:0;top:0;bottom:0;background:#0b0c10;border:0;box-shadow:none}
.bc-city-v2-stage{position:absolute;inset:0;height:auto;min-height:0}
@media(min-width:768px){ .bc-city-v2-stage-wrap{top:42px} }
@media(max-width:859px){ .bc-city-v2-stage-wrap{bottom:52px} }

/* Live event banner floating over the city (header is hidden) */
#bc-city-v2-event{position:fixed;top:48px;left:50%;transform:translateX(-50%);z-index:68;max-width:min(90vw,420px);justify-content:center;white-space:normal;text-align:center}
@media(max-width:859px){ #bc-city-v2-event{top:8px;font-size:.62rem} }
.bc-city-v2-event.is-live{display:inline-flex}

/* More menu: a clear floating sheet, not a second row of the nav bar */
@media(max-width:859px){
 .bc-app-nav-menu{position:fixed;bottom:calc(56px + .5rem);left:50%;transform:translateX(-50%);width:min(340px,calc(100vw - 1rem));max-height:min(56vh,420px);overflow-y:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:.3rem;border:1px solid rgba(214,173,98,.45);border-radius:.65rem;box-shadow:0 -8px 32px rgba(0,0,0,.75);padding:.55rem;background:rgba(9,10,13,.98)}
 .bc-app-nav-menu[hidden]{display:none}
 .bc-app-nav-menu button{flex:1 1 auto;margin:0;min-height:52px;font-size:.6rem}
}

/* Legacy global mobile nav is injected by the old shell; City V2 has its own
   persistent app nav, so hide the duplicated bottom bar entirely. */
.bc-mobile-nav{display:none!important}

/* Floating info chips (weather + market) over the city, tucked under the
   minimap (top-left), small so they never cover the action. */
.bc-city-v2-weather,.bc-city-v2-market{position:absolute;z-index:6;left:.6rem;top:8.6rem;display:flex;align-items:center;gap:.3rem;background:rgba(8,9,13,.82);border:1px solid rgba(214,173,98,.35);color:#e8eaf0;border-radius:999px;padding:.22rem .6rem;font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.1em;text-transform:uppercase;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);white-space:nowrap;pointer-events:none}
.bc-city-v2-market{top:10.9rem}
.bc-city-v2-weather i,.bc-city-v2-market i{color:#d6ad62;font-size:.7rem}
.bc-city-v2-market .bc-mkt-sub{margin-left:.25rem;color:#8d9098;font-weight:400}
@media(max-width:859px){
 .bc-city-v2-weather{top:5.6rem;left:.4rem}
 .bc-city-v2-market{top:7.6rem;left:.4rem}
}
@media(max-width:520px){
 .bc-city-v2-market .bc-mkt-sub{display:none}
}
.bc-city-v2-weather,.bc-city-v2-market{min-height:0}
.bc-city-v2-market b{font-size:.68rem;color:#f0f2f6}
.bc-city-v2-market .bc-mkt-sub{display:inline}

/* SW update toast: keep it above the bottom app menu on mobile so it never
   covers the nav or reads as a second menu. */
#bc-update-toast{bottom:4.2rem!important}
@media(min-width:768px){ #bc-update-toast{bottom:1.2rem!important} }

/* More menu: categorized, color-coded tiles for readability */
.bc-mm-group{display:contents}
.bc-mm-cat{grid-column:1/-1;display:flex;align-items:center;gap:.4rem;margin:.25rem .1rem .05rem;font:700 .6rem 'Barlow Condensed',sans-serif;letter-spacing:.2em;text-transform:uppercase;color:#9a9ca5}
.bc-mm-cat:first-child{margin-top:0}
.bc-app-nav-menu button{position:relative;flex-direction:column;border-radius:.5rem;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09)}
.bc-app-nav-menu button i{font-size:1rem;margin-bottom:.1rem}
.bc-mm-group[data-cat="life"] .bc-mm-cat{color:#f0c76a}
.bc-mm-group[data-cat="life"] button{border-color:rgba(214,173,98,.32)}
.bc-mm-group[data-cat="life"] button i{color:#e3c57f}
.bc-mm-group[data-cat="crime"] .bc-mm-cat{color:#ff7a86}
.bc-mm-group[data-cat="crime"] button{border-color:rgba(209,31,54,.45)}
.bc-mm-group[data-cat="crime"] button i{color:#ff8d96}
.bc-mm-group[data-cat="money"] .bc-mm-cat{color:#7ec8f5}
.bc-mm-group[data-cat="money"] button{border-color:rgba(126,200,245,.35)}
.bc-mm-group[data-cat="money"] button i{color:#8ed4ff}
.bc-mm-group[data-cat="social"] .bc-mm-cat{color:#8fe0a8}
.bc-mm-group[data-cat="social"] button{border-color:rgba(127,224,168,.32)}
.bc-mm-group[data-cat="social"] button i{color:#9ceab4}
.bc-mm-group[data-cat="you"] .bc-mm-cat{color:#c9a7f0}
.bc-mm-group[data-cat="you"] button{border-color:rgba(201,167,240,.32)}
.bc-mm-group[data-cat="you"] button i{color:#d2b4f5}
/* District shortcuts (moved off the map overlay into the menu) */
.bc-mm-group[data-cat="districts"] .bc-mm-cat{color:#d6ad62}
.bc-mm-group[data-cat="districts"] button{border-color:rgba(214,173,98,.3)}
.bc-mm-group[data-cat="districts"] button i{color:#e3c57f}
.bc-mm-group button:hover{transform:translateY(-1px);border-color:#d6ad62;background:rgba(214,173,98,.12)}

/* Legacy shell sidebar (left menu) is not part of the City - hide it so the
   full-screen city is not squeezed by a 240px column. */
.bc-sidebar{display:none!important}

/* ── Living layer (Phase 1): contextual action panel + toasts ─────────────
   Adds the universal CityEntity actions UI on top of the existing noir panel.
   Colour language: primary = enter, danger = crime, gold = opportunity/scout,
   neutral = inspect/follow, muted = ignore. */
.bc-live-body{display:flex;flex-direction:column;gap:.42rem;margin:.8rem 0}
.bc-live-kv{display:flex;align-items:center;justify-content:space-between;gap:.6rem;background:#16171c;border:1px solid rgba(255,255,255,.06);padding:.42rem .55rem}
.bc-live-kv span{color:#767a84;font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.09em;text-transform:uppercase}
.bc-live-kv strong{color:#e4bd68;font:700 .82rem 'Barlow Condensed',sans-serif;letter-spacing:.04em}
.bc-live-kv strong.bc-live-ready{color:#9fe8b0}
.bc-live-copy{color:#aeb0b8;font-size:.8rem;line-height:1.45;margin:.2rem 0 0}
.bc-risk-low{color:#9fe8b0}
.bc-risk-medium{color:#e4bd68}
.bc-risk-high{color:#ff9a76}
.bc-risk-extreme{color:#ff6371}
.bc-live-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:.45rem;margin-top:1rem}
.bc-live-btn{border:1px solid rgba(255,255,255,.14);background:#121317;color:#e6e7eb;padding:.62rem .5rem;font:700 .74rem 'Barlow Condensed',sans-serif;letter-spacing:.09em;text-transform:uppercase;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}
.bc-live-btn:hover{background:#1b1d23;border-color:#d6ad62}
.bc-live-btn.is-primary{background:#1d2530;border-color:rgba(120,180,255,.45);color:#cfe2ff}
.bc-live-btn.is-primary:hover{background:#243040}
.bc-live-btn.is-danger{background:#2a0f14;border-color:rgba(209,31,54,.6);color:#ffb6c6}
.bc-live-btn.is-danger:hover{background:#3a1219;border-color:#ff4d63}
.bc-live-btn.is-gold{background:#241f10;border-color:rgba(214,173,98,.6);color:#f1d68f}
.bc-live-btn.is-gold:hover{background:#2f2814}
.bc-live-btn.is-muted{background:transparent;border-color:rgba(255,255,255,.1);color:#8b8e97}
.bc-live-note{margin-top:.8rem;color:#6d7079;font:600 .64rem 'Barlow Condensed',sans-serif;letter-spacing:.07em;text-transform:uppercase;text-align:center}

/* toasts (action feedback over the city) */
.bc-live-toasts{position:absolute;left:50%;bottom:3.4rem;transform:translateX(-50%);z-index:8;display:flex;flex-direction:column;gap:.35rem;align-items:center;pointer-events:none;width:min(420px,88%)}
.bc-live-toast{background:rgba(9,10,13,.94);border:1px solid rgba(214,173,98,.4);color:#e9eaee;padding:.5rem .85rem;font:700 .72rem 'Barlow Condensed',sans-serif;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 8px 26px rgba(0,0,0,.6);animation:bc-live-toast-in .18s ease-out}
.bc-live-toast.is-success{border-color:rgba(120,255,160,.55);color:#c8f5d5}
.bc-live-toast.is-danger,.bc-live-toast.is-error{border-color:rgba(209,31,54,.6);color:#ffb6c6}
.bc-live-toast.is-warn{border-color:rgba(255,180,120,.55);color:#ffd7b0}
.bc-live-toast.is-gold{border-color:rgba(214,173,98,.7);color:#f4dca0}
@keyframes bc-live-toast-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

@media(max-width:900px){
 .bc-live-actions{grid-template-columns:1fr 1fr}
 .bc-live-toasts{bottom:5.6rem}
}

/* ── Living city (Phase 2): City Feed, heat tint, rare-event accent ─────── */
.bc-live-heat-tint{position:absolute;inset:0;z-index:5;pointer-events:none;transition:background .8s ease}
:root{
  --bc-hud-w:92px;          /* shared column width          */
  --bc-hud-r:1.2rem;        /* shared right edge            */
  --bc-hud-gap:12px;        /* THE gap: same everywhere     */
  --bc-hud-step:2.3125rem;  /* row pitch = 25px row + gap   */
  /* First row (inside the stage): bell bottom + gap - stage offset.
     Mobile stage starts at 0 and the bell at 1rem  -> 70px.
     Desktop stage starts at 42px and the bell at 1.2rem -> 73.2-42 = 31.2px. */
  --bc-hud-top:4.375rem;
}
@media(max-width:859px){ :root{--bc-hud-w:78px;--bc-hud-r:.6rem;--bc-hud-step:2.3125rem;--bc-hud-top:4.375rem} }

/* Desktop: the stage starts 42px lower (app menu), so the first row moves up by
   the same amount — the gap under the bell stays identical to mobile's. */
@media(min-width:768px){ :root{--bc-hud-top:1.95rem} }

/* Right-hand HUD column: ONE stack under the notification bell.
   Order (top to bottom): bell (fixed, top-right) · FEED · FIND.
   Every element is positioned from the same top offset and the same width so
   they can never drift into each other on desktop or mobile. */
.bc-live-feed-btn{position:absolute;right:var(--bc-hud-r,.7rem);top:var(--bc-hud-top);z-index:8;display:flex;align-items:center;justify-content:center;gap:.32rem;width:var(--bc-hud-w,92px);box-sizing:border-box;background:rgba(9,10,13,.86);border:1px solid rgba(214,173,98,.4);color:#d6ad62;font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.12em;padding:.34rem .5rem;border-radius:999px;cursor:pointer;backdrop-filter:blur(3px)}
.bc-live-feed-btn:hover{border-color:#d6ad62;color:#f4dca0}
.bc-live-feed-btn b{position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:50%;background:#d11f36;box-shadow:0 0 8px #d11f36}
/* Desktop: the notification bell is fixed top-right (42x42 at 1.2rem) — sit the
   FEED pill beside it, never underneath. Placed AFTER the base rule on purpose:
   a media query does not add specificity, so source order decides here. */
/* Desktop: the bell sits at 1.2rem/right 1.2rem, so the stack starts below it
   and keeps the same right edge as the bell. */
@media(min-width:768px){
  /* the column is defined once in :root; only the panel needs a row here */
  .bc-live-search{position:absolute;right:var(--bc-hud-r,1.2rem);top:calc(var(--bc-hud-top) + var(--bc-hud-step) * 2);z-index:9}
}
.bc-live-feed{position:absolute;right:var(--bc-hud-r,1.2rem);top:calc(var(--bc-hud-top) + var(--bc-hud-step) * 4);z-index:9;width:min(320px,80vw);max-height:min(56vh,420px);display:flex;flex-direction:column;background:rgba(12,13,17,.96);border:1px solid rgba(214,173,98,.42);box-shadow:0 18px 50px rgba(0,0,0,.6);backdrop-filter:blur(6px)}
.bc-live-feed[hidden]{display:none}
.bc-live-feed-head{display:flex;align-items:center;justify-content:space-between;padding:.5rem .7rem;border-bottom:1px solid rgba(255,255,255,.08);color:#d6ad62;font:700 .66rem 'Barlow Condensed',sans-serif;letter-spacing:.16em}
.bc-live-feed-close{border:0;background:transparent;color:#a9abb3;cursor:pointer;font-size:1rem;line-height:1}
.bc-live-feed-close:hover{color:#fff}
.bc-live-feed-list{overflow:auto;display:flex;flex-direction:column}
.bc-live-feed-row{display:grid;grid-template-columns:18px 1fr 14px;gap:.5rem;align-items:center;text-align:left;border:0;background:transparent;color:#e6e7eb;padding:.55rem .7rem;border-bottom:1px solid rgba(255,255,255,.05);cursor:pointer}
.bc-live-feed-row:hover{background:#191b21}
.bc-live-feed-row:disabled{cursor:default;opacity:.7}
.bc-live-feed-row i{color:#d6ad62;font-size:.72rem}
.bc-live-feed-row .bc-live-feed-txt b{display:block;font:600 .76rem 'Barlow Condensed',sans-serif;line-height:1.25}
.bc-live-feed-row .bc-live-feed-txt small{display:block;color:#83868f;font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;margin-top:.12rem}
.bc-live-feed-pin{color:#7ec8f5!important}
.bc-live-feed-empty{padding:.8rem .7rem;color:#83868f;font-size:.72rem}
@media(max-width:900px){
 /* only the panel shrinks; the buttons stay in the ordered stack under the bell
    (the old rule dropped FEED to the bottom, which collided with FIND) */
 .bc-live-feed{width:min(300px,88vw);max-height:44vh}
}

/* Building history block (Phase 5 — city_location_stats) */
.bc-live-history{margin:.7rem 0;border-top:1px solid rgba(255,255,255,.07);padding-top:.6rem}
.bc-live-history-title{display:block;color:#9a7b3f;font:700 .6rem 'Barlow Condensed',sans-serif;letter-spacing:.16em;text-transform:uppercase;margin-bottom:.4rem}
.bc-live-history .bc-live-kv{background:#131418}

/* Location history: the durable trace of what happened at a place (Phase 5) */
.bc-live-happening{display:grid;grid-template-columns:12px 1fr auto;gap:.4rem;align-items:center;padding:.22rem 0;border-bottom:1px solid rgba(255,255,255,.045)}
.bc-live-happening i{font-size:.4rem;color:#d6ad62}
.bc-live-happening span{font:600 .72rem 'Barlow Condensed',sans-serif;color:#dfe1e6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bc-live-happening span b{color:#f4dca0;margin-left:.25rem}
.bc-live-happening em{font:600 .62rem 'Barlow Condensed',sans-serif;font-style:normal;color:#83868f;text-transform:uppercase;letter-spacing:.06em}

/* Chop shop: a row per sellable thing (Phase 6) */
.bc-live-fence-row{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:center;width:100%;text-align:left;background:rgba(255,255,255,.03);border:1px solid rgba(209,31,54,.28);border-radius:.35rem;padding:.4rem .5rem;margin:.22rem 0;color:#e6e7eb;cursor:pointer}
.bc-live-fence-row:hover{border-color:rgba(209,31,54,.6);background:rgba(209,31,54,.1)}
.bc-live-fence-row:disabled{opacity:.5;cursor:default}
.bc-live-fence-row span{font:600 .78rem 'Barlow Condensed',sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bc-live-fence-row span small{display:block;color:#8d909a;font-size:.62rem;font-weight:400;text-transform:uppercase;letter-spacing:.06em}
.bc-live-fence-row b{color:#ffb6c6;font:700 .82rem 'Barlow Condensed',sans-serif}

/* Find-a-place (search) — the City is the navigation layer (§376–384) */
.bc-live-search-btn{position:absolute;right:var(--bc-hud-r,.7rem);top:calc(var(--bc-hud-top) + var(--bc-hud-step));z-index:8;display:flex;align-items:center;justify-content:center;gap:.32rem;width:var(--bc-hud-w,92px);box-sizing:border-box;background:rgba(9,10,13,.86);border:1px solid rgba(214,173,98,.4);color:#d6ad62;font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.12em;padding:.34rem .5rem;border-radius:999px;cursor:pointer;backdrop-filter:blur(3px)}
.bc-live-search-btn:hover{border-color:#d6ad62;color:#f4dca0}
.bc-live-search{position:absolute;right:.6rem;top:4.1rem;z-index:9;width:min(300px,88vw);background:rgba(12,13,17,.97);border:1px solid rgba(214,173,98,.45);box-shadow:0 18px 50px rgba(0,0,0,.6);padding:.5rem;border-radius:.5rem}
.bc-live-search[hidden]{display:none}
.bc-live-search input{width:100%;background:#0d0f14;border:1px solid rgba(214,173,98,.35);color:#e9d9a6;padding:.5rem .6rem;border-radius:.35rem;font:600 .82rem 'Barlow Condensed',sans-serif}
.bc-live-search-quick{display:flex;flex-wrap:wrap;gap:.28rem;margin-top:.45rem}
.bc-live-search-chip{background:rgba(255,255,255,.04);border:1px solid rgba(214,173,98,.28);color:#e3c57f;font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .5rem;border-radius:.3rem;cursor:pointer;min-height:30px}
.bc-live-search-chip:hover{border-color:#d6ad62;color:#fff}
.bc-live-search-hint{margin-top:.4rem;color:#8d909a;font-size:.62rem}
@media(max-width:859px){
  /* mobile keeps the same ordered stack under the bell: no collision, and the
     bottom app nav stays clear */
  /* the column tops come from :root (--bc-hud-top / --bc-hud-step) */
  .bc-live-search{right:var(--bc-hud-r,.6rem);bottom:auto;left:auto;width:min(300px,calc(100vw - 1.2rem))}


}

/* Locked actions (§392-396): shown, not hidden, so the player learns the gate */
.bc-live-btn.is-locked{opacity:.45;cursor:not-allowed;border-style:dashed}
.bc-live-btn.is-locked i{font-size:.62rem;margin-right:.15rem}

/* WANTED badge (audit #11): the player's standing, from the real heat value */
.bc-live-wanted{position:absolute;right:var(--bc-hud-r,1.2rem);left:auto;top:calc(var(--bc-hud-top) + var(--bc-hud-step) * 2);z-index:8;display:flex;align-items:center;justify-content:space-between;gap:.35rem;width:var(--bc-hud-w,92px);box-sizing:border-box;background:rgba(9,10,13,.88);border:1px solid rgba(214,173,98,.4);color:#d6ad62;font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.1em;padding:.3rem .55rem;border-radius:999px;cursor:pointer;backdrop-filter:blur(3px)}
.bc-live-wanted b{color:inherit}
.bc-live-wanted-heat{background:rgba(255,255,255,.08);border-radius:999px;padding:.05rem .35rem;font-size:.58rem}
.bc-live-wanted.is-clean{border-color:rgba(120,200,140,.45);color:#9ce0b0}
.bc-live-wanted.is-low{border-color:rgba(214,173,98,.45);color:#d6ad62}
.bc-live-wanted.is-warm{border-color:rgba(255,180,120,.55);color:#ffd7b0}
.bc-live-wanted.is-high{border-color:rgba(209,31,54,.6);color:#ffb6c6}
.bc-live-wanted.is-critical{border-color:#ff4d63;color:#ffd9de;animation:bc-wanted-pulse 1.1s infinite}
@keyframes bc-wanted-pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,77,99,.0)}50%{box-shadow:0 0 0 4px rgba(255,77,99,.25)}}
.bc-live-wanted-panel{position:absolute;right:var(--bc-hud-r,1.2rem);left:auto;top:9rem;z-index:9;width:min(300px,88vw);background:rgba(12,13,17,.97);border:1px solid rgba(214,173,98,.45);box-shadow:0 18px 50px rgba(0,0,0,.6);border-radius:.5rem;padding:.2rem .6rem .6rem}
.bc-live-wanted-panel[hidden]{display:none}
@media(max-width:859px){
  /* ONE right-hand stack on mobile too: bell · FEED · FIND · WANTED · CHASE.
     (The badge used to float on the left at a stray offset.) */
  .bc-live-wanted{right:var(--bc-hud-r,.6rem);left:auto;bottom:auto;max-width:none}
  .bc-live-chase{right:var(--bc-hud-r,.6rem);left:auto;bottom:auto;max-width:none}
  .bc-live-wanted-panel{right:var(--bc-hud-r,.6rem);left:auto;bottom:auto}
}

/* Police chase readout (audit #14) */
.bc-live-chase{position:absolute;right:var(--bc-hud-r,1.2rem);left:auto;top:calc(var(--bc-hud-top) + var(--bc-hud-step) * 3);z-index:8;display:flex;align-items:center;justify-content:space-between;gap:.4rem;width:var(--bc-hud-w,92px);box-sizing:border-box;background:rgba(24,6,10,.9);border:1px solid rgba(255,77,99,.6);color:#ffb6c6;font:700 .62rem 'Barlow Condensed',sans-serif;letter-spacing:.1em;padding:.3rem .55rem;border-radius:999px;cursor:pointer;backdrop-filter:blur(3px)}
.bc-live-chase.is-hot{animation:bc-wanted-pulse 1s infinite}
.bc-live-chase-bar{display:block;width:74px;height:5px;border-radius:999px;background:rgba(255,255,255,.12);overflow:hidden}
.bc-live-chase-bar i{display:block;height:100%;background:linear-gradient(90deg,#ffd7b0,#ff4d63)}
.bc-live-chase em{font-style:normal;font-size:.58rem;color:#ffd9de}
/* CHASE now lives in the left column under WANTED (rule above) */
