/* BRO2KIT CITY2: BRO City, bro.com black + gold. */
:root{--bg:#070B12;--s1:#101826;--s2:#182233;--line:rgba(212,168,75,.28);--hair:rgba(243,238,228,.14);--text:#F3EEE4;--muted:#B4AEA3;--gold:#E0AD48;--gold2:#F6D27A;--ok:#7DDBB5;--warn:#F6C975;--bad:#FF8A8A;--r:18px;color-scheme:dark}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--gold2)}h1,h2,p{margin:0}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--gold2);outline-offset:2px}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;background:var(--gold);color:#14100A;padding:8px 12px;border-radius:999px;z-index:99}
.grow{flex:1}
.btn,.gold,.hb{font:inherit;font-weight:700;border-radius:999px;padding:10px 16px;min-height:44px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--s2);color:var(--text)}
.btn:hover,.hb:hover{border-color:var(--gold)}
.gold{background:linear-gradient(180deg,#F6D27A,#E0AD48 50%,#C48E2F);color:#14100A;border:0}
.gold:hover{filter:brightness(1.06)}.gold:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.bad{color:var(--bad);border-color:rgba(255,138,138,.45)}
.wide{width:100%}.big{font-size:19px;padding:14px 34px;min-height:54px}
input[type=text],select,textarea{font:inherit;color:var(--text);background:#0B111C;border:1px solid var(--hair);border-radius:12px;padding:10px 12px;min-height:44px;width:100%}
textarea{resize:vertical}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row input{flex:1;min-width:0}

/* ---------- setup screen ---------- */
#pre{min-height:100%;background:radial-gradient(1200px 500px at 50% -120px,rgba(212,168,75,.16),transparent 70%),var(--bg)}
.top{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--text)}.brand img{display:block}.brand .sub{color:var(--gold2);font-weight:800;letter-spacing:.04em;text-transform:uppercase;font-size:14px}
#main{max-width:1120px;margin:0 auto;padding:0 16px 24px}
.hero{padding:30px 0 20px;text-align:center}.eyebrow{color:var(--gold2);text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:800}
h1{font-size:clamp(30px,5.4vw,54px);line-height:1.05;margin:6px 0 10px;letter-spacing:-.01em}
.lead{color:var(--muted);max-width:720px;margin:0 auto;font-size:17px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;grid-template-areas:'city av' 'set av' 'rules av';align-items:start}.g-city{grid-area:city}.g-av{grid-area:av}.g-set{grid-area:set}.g-rules{grid-area:rules}
.card{background:linear-gradient(180deg,var(--s1),#0c1320);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:flex;flex-direction:column;gap:12px;min-width:0}
.card h2{font-size:19px;display:flex;align-items:center;gap:10px}
.num{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--gold);color:#14100A;font-size:15px;font-weight:800;flex:none}
.signin{margin:0 auto 16px;max-width:560px;text-align:center;align-items:center}
.pick{font-weight:700;color:var(--gold2)}.note{color:var(--warn);min-height:1.2em;font-size:14px}.fine{color:var(--muted);font-size:13px}
.list{display:grid;gap:6px}.list button{text-align:left;justify-content:flex-start;border-radius:12px}
.list button[aria-pressed=true]{border-color:var(--gold);background:rgba(212,168,75,.16)}
.av{display:grid;grid-template-columns:200px 1fr;gap:14px;align-items:start}
#avCanvas{width:200px;height:250px;border-radius:14px;background:linear-gradient(180deg,#7fb6e6,#cfe6f5 62%,#9aa79a 62%,#7d8b7d);display:block}
.avo{display:grid;gap:8px;min-width:0}.fld{font-size:13px;color:var(--muted);font-weight:700}
.opt{display:grid;gap:4px}.opt .sw{display:flex;gap:6px;flex-wrap:wrap}
.sw button{font:inherit;font-size:13px;min-width:34px;height:34px;border-radius:10px;border:2px solid transparent;background:var(--s2);color:var(--text);cursor:pointer;padding:0 9px}
.sw button.c{width:34px;padding:0;border-color:rgba(255,255,255,.18)}
.sw button[aria-pressed=true]{border-color:var(--gold2);box-shadow:0 0 0 2px rgba(246,210,122,.35)}
.ctl{color:var(--text);background:#0B111C;border:1px solid var(--hair);border-radius:12px;padding:10px 12px;font-size:15px}
.tog{display:flex;gap:10px;align-items:flex-start;cursor:pointer}.tog input{width:22px;height:22px;accent-color:var(--gold);flex:none;margin-top:1px}
.two{display:grid;grid-template-columns:auto 1fr;gap:8px 12px;align-items:center}
.rules{margin:0;padding-left:20px;color:var(--text);display:grid;gap:4px;font-size:15px}
.enterbar{display:grid;justify-items:center;gap:8px;padding:22px 0 14px;position:sticky;bottom:0;z-index:3;background:linear-gradient(180deg,rgba(7,11,18,0),var(--bg) 34%)}
.foot{text-align:center;color:var(--muted);font-size:13px;padding:14px 16px 90px}
@media (max-width:820px){.grid{grid-template-columns:1fr;grid-template-areas:'city' 'av' 'set' 'rules'}.av{grid-template-columns:130px 1fr}#avCanvas{width:130px;height:163px}.hero{padding:20px 0 14px}.lead{font-size:16px}}

/* ---------- loading ---------- */
#load{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:rgba(7,11,18,.94)}
.loadbox{display:grid;justify-items:center;gap:14px;text-align:center;padding:24px;max-width:420px}
.bar{width:220px;height:6px;border-radius:6px;background:var(--s2);overflow:hidden}.bar i{display:block;width:40%;height:100%;background:var(--gold);border-radius:6px;animation:slide 1.2s ease-in-out infinite}
@keyframes slide{0%{transform:translateX(-100%)}100%{transform:translateX(250%)}}
@media (prefers-reduced-motion:reduce){.bar i{animation:none;width:100%}}

/* ---------- the city ---------- */
#game{position:fixed;inset:0;overflow:hidden;background:#0b1220;touch-action:none;user-select:none;-webkit-user-select:none}
#c{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
#labels{position:absolute;z-index:2;inset:0;pointer-events:none;overflow:hidden}
.tag{position:absolute;left:0;top:0;transform:translate(-50%,-100%);display:grid;justify-items:center;gap:3px;pointer-events:none;will-change:transform}
.tag button{pointer-events:auto;font:inherit;font-size:13px;font-weight:800;color:#fff;background:rgba(7,11,18,.72);border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:3px 10px;cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}
.tag.me button{border-color:var(--gold);color:var(--gold2)}
.tag .bub{background:#fff;color:#14100A;font-size:14px;line-height:1.3;border-radius:14px;padding:6px 10px;max-width:220px;box-shadow:0 4px 14px rgba(0,0,0,.35);overflow-wrap:anywhere}
.tag .emo{font-size:30px;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));animation:pop 1.6s ease-out forwards}
@keyframes pop{0%{transform:translateY(8px) scale(.6);opacity:0}15%{transform:none;opacity:1}80%{opacity:1}100%{transform:translateY(-14px);opacity:0}}
.spot{position:absolute;left:0;top:0;transform:translate(-50%,-100%);pointer-events:none;font-size:12px;font-weight:800;color:#14100A;border-radius:999px;padding:2px 9px;white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.35);max-width:200px;overflow:hidden;text-overflow:ellipsis}
.hud{position:absolute;z-index:5}
.top2{left:0;right:0;top:0;display:flex;align-items:center;gap:8px;padding:8px 10px;padding-top:max(8px,env(safe-area-inset-top));background:linear-gradient(180deg,rgba(7,11,18,.82),rgba(7,11,18,0))}
.crest img{display:block}.where{display:grid;line-height:1.15;min-width:0}.where b{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.where span{font-size:12px;color:var(--gold2);font-weight:700}
.hb{padding:6px 12px;min-height:40px;font-size:14px;background:rgba(16,24,38,.86)}
.here{position:absolute;z-index:4;left:50%;top:58px;transform:translateX(-50%);background:rgba(7,11,18,.82);border:1px solid var(--line);border-radius:999px;padding:5px 14px;font-size:14px;font-weight:700;max-width:92vw;text-align:center}
.here.warn{top:118px;border-radius:14px;color:var(--warn);font-weight:600;width:min(420px,88vw)}
.chat{left:10px;bottom:max(12px,env(safe-area-inset-bottom));width:min(400px,calc(100vw - 20px));display:grid;gap:6px}
#chatLog{max-height:168px;overflow-y:auto;display:grid;gap:3px;align-content:end;font-size:14px;line-height:1.35;text-shadow:0 1px 2px #000;scrollbar-width:thin}
#chatLog p,#dmLog p{background:rgba(7,11,18,.66);border-radius:10px;padding:3px 9px;width:fit-content;max-width:100%;overflow-wrap:anywhere}
#chatLog b,#dmLog b{color:var(--gold2)}#chatLog .sys{color:var(--muted);font-style:italic}#chatLog .warnline{color:var(--warn)}
#chatForm,#dmForm{display:flex;gap:6px}#chatForm input,#dmForm input{background:rgba(11,17,28,.92);border-color:var(--line)}
.stick{position:absolute;z-index:6;left:18px;bottom:max(84px,calc(env(safe-area-inset-bottom) + 84px));width:116px;height:116px;border-radius:50%;background:rgba(16,24,38,.5);border:2px solid rgba(246,210,122,.5);display:none;touch-action:none}
.stick i{position:absolute;left:50%;top:50%;width:50px;height:50px;margin:-25px;border-radius:50%;background:rgba(246,210,122,.85)}
.acts{position:absolute;z-index:6;right:12px;bottom:max(92px,calc(env(safe-area-inset-bottom) + 92px));display:grid;gap:10px}
.rb{width:54px;height:54px;border-radius:50%;font-size:24px;border:1px solid var(--line);background:rgba(16,24,38,.9);color:var(--text);cursor:pointer}
#bChat{display:none}
.pop{position:absolute;z-index:8;right:76px;bottom:max(92px,calc(env(safe-area-inset-bottom) + 92px));background:var(--s1);border:1px solid var(--line);border-radius:16px;padding:8px;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.pop button{font:inherit;font-size:24px;background:var(--s2);color:var(--text);border:1px solid var(--hair);border-radius:12px;padding:6px 8px;min-width:76px;cursor:pointer;display:grid;justify-items:center}
.pop button span{font-size:11px;font-weight:700;color:var(--muted)}
.panel{position:absolute;z-index:9;right:44px;top:58px;bottom:12px;width:min(340px,calc(100vw - 56px));background:rgba(16,24,38,.97);border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column;min-height:0}
.ph{display:flex;align-items:center;gap:8px;padding:12px 14px 8px}.ph h2{font-size:17px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.x{font:inherit;font-size:24px;line-height:1;width:40px;height:40px;border-radius:50%;border:1px solid var(--hair);background:var(--s2);color:var(--text);cursor:pointer}
.pb{padding:4px 14px 14px;overflow-y:auto;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-content:start}
.pb .it{display:flex;min-width:0;align-items:center;gap:8px;background:var(--s2);border-radius:12px;padding:8px 10px}.pb .it .nm{flex:1;min-width:0}.pb .it .nm b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pb .it .nm span{font-size:12px;color:var(--muted)}
.pb .it .btn{min-height:36px;padding:5px 12px;font-size:13px}.pb h3{font-size:14px;margin:8px 0 0;color:var(--gold2)}.pb .links{display:grid;gap:6px}
.dot{width:12px;height:12px;border-radius:50%;flex:none}
.pcard{position:absolute;z-index:12;left:50%;top:50%;transform:translate(-50%,-50%);width:min(340px,calc(100vw - 24px));background:rgba(16,24,38,.98);border:1px solid var(--line);border-radius:var(--r);padding:0 14px 14px;box-shadow:0 24px 80px rgba(0,0,0,.5)}
.pcard .ph{padding:12px 0 6px}.cbtns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.cbtns .btn{font-size:14px;padding:8px 10px}
#repForm{display:grid;gap:8px}
.dm{position:absolute;z-index:10;right:44px;bottom:12px;width:min(320px,calc(100vw - 56px));background:rgba(16,24,38,.98);border:1px solid var(--gold);border-radius:var(--r);padding:0 12px 12px;display:grid;gap:6px}
.dm .ph{padding:10px 0 2px}#dmLog{height:150px;overflow-y:auto;display:grid;gap:3px;align-content:end;font-size:14px}
.asks{position:absolute;z-index:11;left:50%;top:64px;transform:translateX(-50%);display:grid;gap:8px;width:min(360px,calc(100vw - 24px))}
.ask{background:rgba(16,24,38,.98);border:1px solid var(--gold);border-radius:16px;padding:10px 12px;display:grid;gap:8px;box-shadow:0 10px 40px rgba(0,0,0,.45)}.ask p{font-weight:700}.ask .row .btn,.ask .row .gold{min-height:40px;padding:6px 14px;font-size:14px}
.toasts{position:absolute;z-index:13;left:50%;top:110px;transform:translateX(-50%);display:grid;gap:6px;justify-items:center;width:min(380px,calc(100vw - 24px));pointer-events:none}
.toast{background:rgba(7,11,18,.92);border:1px solid var(--line);border-radius:14px;padding:8px 14px;font-size:14px;font-weight:600;text-align:center}
.toast.w{color:var(--warn)}
.osm{position:absolute;z-index:3;left:50%;transform:translateX(-50%);bottom:2px;font-size:10px;color:rgba(255,255,255,.75);text-shadow:0 1px 2px #000;white-space:nowrap}.osm a{color:inherit}
body.touch .stick{display:block}
body.touch #bChat{display:block}
body.touch .chat{bottom:auto;top:56px;width:min(300px,calc(100vw - 132px))}
body.touch #chatLog{max-height:112px;font-size:13px}
body.touch #chatForm{display:none}
body.touch.typing #chatForm{display:flex;position:fixed;left:8px;right:8px;top:auto;bottom:max(8px,env(safe-area-inset-bottom));z-index:20}
body.touch .here:not(.warn){top:auto;bottom:214px}body.touch .here.warn{top:178px}body.touch .dm{bottom:auto;top:54px}
body.touch .panel{top:54px}
@media (max-width:520px){.hb{padding:6px 10px;font-size:13px}.where b{font-size:14px;max-width:34vw}.pop{right:74px}}
/* CITY2: mini-map */
.mini{position:absolute;z-index:4;right:12px;top:60px;width:172px;height:172px;padding:0;border-radius:50%;border:2px solid var(--gold);background:#0d131d;overflow:hidden;cursor:pointer;box-shadow:0 8px 28px rgba(0,0,0,.5),inset 0 0 0 1px rgba(0,0,0,.6);transition:width .18s ease,height .18s ease}
.mini canvas{display:block;width:100%;height:100%;border-radius:50%}
.mini.big{width:min(430px,calc(100vw - 24px),calc(100vh - 150px));height:min(430px,calc(100vw - 24px),calc(100vh - 150px));z-index:8}
.mini:hover{border-color:var(--gold2)}
body.touch .mini{right:8px;top:58px;width:108px;height:108px}
body.touch .mini.big{width:min(430px,calc(100vw - 16px));height:min(430px,calc(100vw - 16px))}
@media (max-width:520px){.mini{width:108px;height:108px;right:8px;top:58px}}
@media (prefers-reduced-motion:reduce){.mini{transition:none}}
#game:has(#panel:not([hidden])) .mini,body.touch #game:has(#dm:not([hidden])) .mini,#game:has(#card:not([hidden])) .mini.big,#game:has(#report:not([hidden])) .mini.big{display:none}

/* BRO2KIT CITY3: the Live chip (the weather now; opens the list of what is live), live bus tags, closed places, the Live list */
.live{position:absolute;z-index:4;left:10px;top:58px;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:rgba(7,11,18,.84);color:#fff;font:inherit;font-size:14px;font-weight:700;cursor:pointer;max-width:calc(100vw - 136px);white-space:nowrap;overflow:hidden}
.live span{overflow:hidden;text-overflow:ellipsis}
.live i{flex:none;width:9px;height:9px;border-radius:50%;background:#59d98e;animation:livep 2.2s infinite}
.live:hover{border-color:var(--gold)}
@keyframes livep{0%{box-shadow:0 0 0 0 rgba(89,217,142,.7)}70%{box-shadow:0 0 0 8px rgba(89,217,142,0)}100%{box-shadow:0 0 0 0 rgba(89,217,142,0)}}
@media (prefers-reduced-motion:reduce){.live i{animation:none}}
body.touch .live{top:172px;left:auto;right:8px;max-width:calc(100vw - 16px);min-height:40px;font-size:13px;padding:5px 12px}body.touch #game:has(#dm:not([hidden])) .live{display:none}
@media (max-width:760px){body:not(.touch) .here:not(.warn){top:108px}}
.spot.bus{background:#6fb6ff}.spot.shut{opacity:.62}
.livekey{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;margin:0}.livekey span{white-space:nowrap}.livekey .dot{display:inline-block;margin-right:6px;vertical-align:-1px}
#game:has(#panel:not([hidden])) .live{max-width:calc(100vw - 420px)}
@media (max-width:820px){#game:has(#panel:not([hidden])) .live{display:none}}
#game:has(.mini.big) .live{display:none}body.touch .here.warn{top:222px}
/* BRO2KIT CITY5: Photo-real mode. The setup tick box, and Google's logo and data credits, which stay on screen the whole time the photo scenery is shown. */
.photobox{margin-top:14px;padding-top:12px;border-top:1px solid var(--hair);display:grid;gap:6px}.photobox .pp{color:var(--gold2);font-weight:600;font-size:14px;margin-left:4px}.photobox input:disabled+span{opacity:.6}
.gattr{position:absolute;z-index:14;left:50%;transform:translateX(-50%);bottom:max(4px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;max-width:calc(100vw - 16px);padding:3px 10px;border-radius:999px;background:rgba(7,11,18,.62);font-size:10px;line-height:1.2;color:#fff;pointer-events:none;white-space:nowrap}
.gattr[hidden]{display:none}.gattr img{height:18px;width:auto;flex:none;display:block}.gattr .gword{font-size:15px;font-weight:600;letter-spacing:.2px}.gattr span{overflow:hidden;text-overflow:ellipsis}
#game.photo .osm{bottom:calc(max(4px,env(safe-area-inset-bottom)) + 28px)}
