html,body{margin:0;height:100%;background:#03040a;overflow:hidden;font-family:ui-monospace,Menlo,Consolas,monospace;color:#cfe8ff;-webkit-user-select:none;user-select:none;touch-action:none}
canvas{display:block}
#hud{position:fixed;left:10px;top:10px;background:rgba(4,8,20,.74);border:1px solid #1f6feb55;border-radius:10px;padding:8px 12px;font-size:11.5px;width:290px;backdrop-filter:blur(6px);box-shadow:0 0 22px #1f6feb33;z-index:5}
.hdr{font-size:14px;color:#7ee0ff;letter-spacing:2px;text-shadow:0 0 8px #0ff;cursor:pointer}.hdr span{float:right;font-size:10px;opacity:.6;letter-spacing:0}
#hudBody>div{margin-top:6px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
select,input[type=range]{background:#081428;color:#7ee0ff;border:1px solid #2bd9ff66;border-radius:6px;font:inherit;font-size:11px}
input[type=range]{width:110px}
.legend div{margin:2px 0}.legend i{display:inline-block;width:11px;height:11px;border-radius:2px;margin:0 5px 0 0;vertical-align:-1px}.legend i.dash{border:1px dashed;width:9px;height:9px}
.dim{opacity:.65}
#mood{padding:5px 7px;border-radius:6px;background:#0a1530;border:1px solid #2bd9ff33}
#btns{position:fixed;right:10px;top:10px;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;z-index:5;max-width:60vw}
button{background:#081428cc;color:#7ee0ff;border:1px solid #2bd9ff88;border-radius:8px;padding:7px 11px;font:inherit;font-size:12px;cursor:pointer;box-shadow:0 0 12px #00e5ff33}
button:hover,button.on{background:#0c2a4a;color:#fff;border-color:#7ee0ff}
#info{position:fixed;right:10px;bottom:10px;background:rgba(4,8,20,.88);border:1px solid #ff7a1866;border-radius:10px;padding:10px 13px;font-size:12px;width:300px;display:none;box-shadow:0 0 22px #ff7a1833;z-index:6}
#info h2{margin:0 0 6px;font-size:14px;color:#ffb36b}#info td{padding:1px 8px 1px 0}#info .x{float:right;cursor:pointer;opacity:.7}
#tip{position:fixed;pointer-events:none;background:#000c;padding:4px 8px;border-radius:6px;font-size:11px;display:none;border:1px solid #2bd9ff55;z-index:7}
#labels{position:fixed;inset:0;pointer-events:none;z-index:2}
.lbl{position:absolute;left:0;top:0;will-change:transform;font-weight:bold;font-size:13px;color:#fff;white-space:nowrap;padding:1px 6px;border-radius:4px;background:rgba(0,0,0,.35);border:1px solid var(--c);text-shadow:0 0 6px var(--c),0 0 12px var(--c)}
.lbl.minor{font-size:10px;opacity:.85}.lbl small{display:block;font-size:9px;font-weight:normal;opacity:.8;text-align:center}
#banner{position:fixed;left:50%;top:18%;transform:translateX(-50%);font-size:26px;letter-spacing:6px;color:#fff;opacity:0;transition:opacity .6s;pointer-events:none;text-align:center;z-index:4}
#banner small{display:block;font-size:12px;letter-spacing:2px;opacity:.75}
#prompt{position:fixed;left:50%;bottom:22%;transform:translateX(-50%);background:#000a;border:1px solid #7ee0ff88;border-radius:8px;padding:6px 12px;font-size:13px;display:none;z-index:4}
#minimap{position:fixed;left:10px;bottom:10px;border-radius:50%;border:1px solid #2bd9ff66;background:rgba(2,6,16,.75);box-shadow:0 0 16px #00e5ff33;z-index:4}
#help{position:fixed;left:50%;bottom:6px;transform:translateX(-50%);font-size:10.5px;opacity:.55;text-align:center;pointer-events:none;z-index:3;width:60vw}
#touch{display:none}#touch.on{display:block}
#joy{position:fixed;left:24px;bottom:210px;width:120px;height:120px;border-radius:50%;border:2px solid #7ee0ff66;background:#0a183055;z-index:6}
#knob{position:absolute;left:35px;top:35px;width:50px;height:50px;border-radius:50%;background:#7ee0ff66;box-shadow:0 0 14px #7ee0ff}
#tbtns{position:fixed;right:16px;bottom:120px;display:grid;grid-template-columns:repeat(2,58px);gap:10px;z-index:6}#tbtns button{height:58px;font-size:20px;border-radius:50%}
#chat{position:fixed;left:200px;bottom:10px;width:280px;display:none;z-index:4}#chat.on{display:block}
#chatLog{font-size:11px;max-height:110px;overflow:hidden;text-shadow:0 0 4px #000}#chatIn{width:100%;background:#081428cc;color:#cfe8ff;border:1px solid #2bd9ff55;border-radius:6px;padding:4px;font:inherit;font-size:11px}
@media (max-width:700px){#hud{width:auto;max-width:62vw;font-size:10.5px}#hudBody{display:none}#hud.open #hudBody{display:block}#minimap{width:120px;height:120px}#help{display:none}#info{left:10px;right:10px;width:auto;bottom:140px}#chat{left:140px;width:auto;right:10px}#btns button{padding:6px 8px;font-size:11px}}

#loader{position:fixed;inset:0;z-index:50;background:radial-gradient(ellipse at 50% 60%,#0d1636,#03050d 70%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:#cfe9ff;font:13px ui-monospace,Menlo,monospace;transition:opacity .9s ease,visibility .9s}
#loader.done{opacity:0;visibility:hidden}#loader .lt{font-size:22px;letter-spacing:8px;color:#3cf3ff;text-shadow:0 0 18px #3cf3ff88}
#loader .bar{width:min(320px,70vw);height:3px;background:#ffffff14;border-radius:3px;overflow:hidden}#loader .bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#ff7a1a,#3cf3ff);transition:width .4s ease}
#loader .lsrc{font-size:11px;opacity:.55}
#live{position:fixed;right:12px;top:52px;z-index:6;font:11px ui-monospace,Menlo,monospace;color:#9fb6d6;background:#050a18b0;padding:4px 9px;border-radius:12px;border:1px solid #ffffff14;display:flex;align-items:center;gap:6px}
#live i{width:7px;height:7px;border-radius:50%;background:#888}#live.live i{background:#3dff8a;box-shadow:0 0 6px #3dff8a88}#live.connecting i,#live.reconnecting i{background:#ffb000;animation:breathe 2.4s ease-in-out infinite}#live.demo i{background:#b48cff}#live.offline i{background:#667}
@keyframes breathe{0%,100%{opacity:.35}50%{opacity:1}}
#evbanner{position:fixed;left:50%;top:13%;padding:10px 22px 9px;border-radius:14px;background:radial-gradient(ellipse at center,#050a18d8 0%,#050a18a0 60%,#050a1800 100%);transform:translate(-50%,-6px);font-size:24px;letter-spacing:3px;color:#fff;text-shadow:0 0 16px var(--c,#ff8a2a);opacity:0;transition:opacity .8s ease,transform .8s ease;pointer-events:none;text-align:center;z-index:5;max-width:92vw}
#evbanner.show{opacity:1;transform:translate(-50%,0)}#evbanner small{display:block;font-size:11px;letter-spacing:1px;opacity:.8;margin-top:4px;pointer-events:auto}#evbanner a,.toast a{color:#9ffcff}
#toasts{position:fixed;right:12px;top:84px;z-index:6;display:flex;flex-direction:column;gap:6px;width:min(280px,70vw)}
.toast{font:11px ui-monospace,Menlo,monospace;color:#dff6ff;background:#050a18d0;border-left:2px solid var(--c);border-radius:6px;padding:6px 9px;opacity:0;transform:translateX(12px);transition:opacity .6s ease,transform .6s ease}.toast.in{opacity:1;transform:none}
i.demo{font-style:normal;font-size:.55em;letter-spacing:1px;background:#b48cff33;color:#d8c4ff;padding:1px 5px;border-radius:4px;vertical-align:middle}i.est{font-style:normal;color:#ffcf6a}
#burnCount{margin:4px 0;font-size:11px}#src{margin-top:6px;font-size:10px;line-height:1.45}#src a{color:#9ffcff}
.row.tl{display:flex;align-items:center;gap:4px}.row.tl input{flex:1;min-width:60px}.row.tl button{background:#0b1430;color:#cfe9ff;border:1px solid #2bd9ff44;border-radius:4px;padding:1px 6px;font:inherit;cursor:pointer}
body.replay #tlDate{color:#ffcf6a}
@media (max-width:700px){#live{top:auto;bottom:10px;right:10px}#toasts{top:auto;bottom:40px}#evbanner{font-size:14px;top:19%;letter-spacing:1px}#hud{max-width:44vw}}

#tourCap{position:fixed;left:50%;bottom:9%;transform:translateX(-50%);font:13px ui-monospace,Menlo,monospace;color:#e6f6ff;background:#050a18b8;padding:7px 14px;border-radius:10px;opacity:0;transition:opacity .45s ease;pointer-events:none;z-index:5;max-width:86vw;text-align:center}#tourCap.show{opacity:1}
/* PWA install UI */
#installBtn[hidden]{display:none}#installBtn{border-color:#ff8a2a88!important;color:#ffd2a8}
#iosHint{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:20;background:#050a18ee;border:1px solid #ff8a2a66;color:#ffe;border-radius:12px;padding:9px 12px;font:12px system-ui,sans-serif;max-width:92vw;box-shadow:0 0 18px #ff5a1a44}
#iosHint button{background:none;border:0;color:#9fb6d6;font-size:14px;margin-left:6px;cursor:pointer}
/* Mobile crowding fix: HUD title on its own left column, buttons to the right, event banner below both, safe areas */
#hud{top:calc(10px + env(safe-area-inset-top));left:calc(10px + env(safe-area-inset-left))}
#btns{top:calc(10px + env(safe-area-inset-top));right:calc(10px + env(safe-area-inset-right))}
@media (max-width:700px){
 #hud{max-width:38vw;padding:6px 9px}#hud .hdr{font-size:10px;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 #hud.open{max-width:calc(100vw - 20px);z-index:7}
 #btns{max-width:58vw;gap:4px}#btns button{padding:5px 7px;font-size:10.5px}
 #evbanner{top:calc(118px + env(safe-area-inset-top));font-size:13px;max-width:94vw}
 #banner{top:calc(160px + env(safe-area-inset-top));font-size:18px;letter-spacing:3px}
}
@media (max-width:700px){#hud{box-sizing:border-box;max-width:34vw}#hud.open{max-width:calc(100vw - 20px)}#btns{max-width:calc(66vw - 30px)}}
#iosHint{bottom:calc(150px + env(safe-area-inset-bottom))}
/* v4: guide, token card buttons, music */
#btns #guideBtn,#btns #musicBtn{min-width:30px}#btns #musicBtn.on{color:#ffb36b;border-color:#ff7a18}
#info .x,#music .x{float:right;background:none;border:0;color:inherit;font-size:14px;cursor:pointer;opacity:.75;padding:0 2px}
.cardBtns{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.cardBtns a{flex:1;text-align:center;padding:7px 8px;border-radius:7px;border:1px solid #ff7a1866;color:#ffd2a8;text-decoration:none;font-size:12px;background:#ff7a1814}
.cardBtns a.trade{flex:2;background:linear-gradient(90deg,#ff5a1a,#ff9a2a);color:#120600;font-weight:700;border:0}
#guide{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:rgba(2,4,12,.55);backdrop-filter:blur(2px)}#guide[hidden]{display:none}
#guide .gbox{width:min(360px,calc(100vw - 32px));background:rgba(6,10,24,.95);border:1px solid #ff7a1877;border-radius:14px;padding:18px 18px 12px;text-align:center;box-shadow:0 0 40px #ff5a1a44;color:#e8eefc;font-size:13px}
#guide .gico{font-size:34px}#guide h3{margin:6px 0;color:#ffb36b;font-size:16px}#guide p{min-height:60px;line-height:1.45;margin:0 0 10px}
#guide .gdots{display:flex;gap:6px;justify-content:center;margin-bottom:10px}#guide .gdots i{width:7px;height:7px;border-radius:50%;background:#ffffff33}#guide .gdots i.on{background:#ff8a2a}
#guide .gnav{display:flex;justify-content:space-between}#guide button{background:#ff7a1822;border:1px solid #ff7a1866;color:#ffd2a8;border-radius:7px;padding:7px 14px;cursor:pointer;font:inherit}
#guide .gnext{background:#ff7a18;color:#120600;font-weight:700}#guide .gbar{height:2px;background:#ffffff14;margin-top:10px;border-radius:2px;overflow:hidden}#guide .gbar i{display:block;height:100%;width:0;background:#ff8a2a}
#music{position:fixed;right:10px;top:calc(56px + env(safe-area-inset-top));width:260px;z-index:7;background:rgba(4,8,20,.92);border:1px solid #ff7a1866;border-radius:10px;padding:10px 12px;font-size:12px;box-shadow:0 0 22px #ff7a1833}#music[hidden]{display:none}
#music h2{margin:0 0 4px;font-size:14px;color:#ffb36b}.mnow{opacity:.85;min-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mctl{display:flex;gap:8px;justify-content:center;margin:6px 0}.mctl button{background:#ff7a1822;border:1px solid #ff7a1866;color:#ffd2a8;border-radius:50%;width:36px;height:36px;cursor:pointer;font-size:14px}.mctl .mplay{background:#ff7a18;color:#120600}
.mprog{height:3px;background:#ffffff18;border-radius:2px;overflow:hidden}.mprog i{display:block;height:100%;width:0;background:#ff8a2a}
.mlist{margin:6px 0;padding-left:18px;max-height:140px;overflow:auto}.mlist button{background:none;border:0;color:#cfd8ef;cursor:pointer;padding:3px 0;font:inherit;text-align:left}.mlist li.cur button{color:#ff9a3a;font-weight:700}
.mlinks{opacity:.7}.mlinks a{color:#ffb36b}
@media (max-width:700px){#music{left:10px;right:10px;width:auto;top:auto;bottom:140px}}

.spons{display:inline-block;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;background:#ff7a18;color:#120600;border-radius:4px;padding:1px 6px;margin-bottom:4px}

#guide .gstep{font-size:11px;color:#ffb36baa;letter-spacing:.05em}#guide .gdots i.done{background:#ff8a2a88}#guide .gback:disabled{opacity:.35;cursor:default}#guide .gpause{font-size:10px;color:#ffffff66;margin-top:4px;visibility:hidden}#guide.paused .gpause{visibility:visible}
/* v5: bigger touch targets — ≥40px desktop, ≥44px touch/mobile */
#btns button,#guide button,#info .x,.mctl button,#iosHint button,.row.tl button{min-height:40px;min-width:40px;font-size:14px;box-sizing:border-box}
#btns button{padding:8px 12px}#btns #guideBtn,#btns #musicBtn,#btns #audio{min-width:40px;font-size:17px}
#info .x,#music .x{width:40px;height:40px;font-size:18px;display:flex;align-items:center;justify-content:center;padding:0}
.mctl button{width:44px;height:44px;font-size:17px}
#hudToggle{min-height:40px;display:flex;align-items:center;gap:6px;cursor:pointer;box-sizing:border-box}
#hud select{min-height:36px;font-size:13px}#hud input[type=checkbox]{width:20px;height:20px;vertical-align:middle}#hud label{display:inline-flex;align-items:center;gap:4px;min-height:32px}
.row.tl button{padding:0 10px}
@media (max-width:700px),(pointer:coarse){
 #btns{gap:5px}#btns button{min-height:44px;min-width:44px;padding:6px 9px;font-size:13px}#btns #guideBtn,#btns #musicBtn,#btns #audio{font-size:18px}
 #guide button,#iosHint button,.row.tl button{min-height:44px;min-width:44px}#info .x,#music .x{width:44px;height:44px}
 #hudToggle{min-height:44px}#hud select{min-height:44px}#hud input[type=checkbox]{width:24px;height:24px}#hud label{min-height:44px}
 .mlist button{min-height:40px}}
@media (min-width:701px){#hud{max-height:calc(100vh - 240px);overflow-y:auto;box-sizing:border-box}}
/* ---- interactive city: token card v2, player tags, city chat ---- */
#info.v2{width:340px}
#info .chead{display:flex;align-items:center;gap:10px;margin:0 44px 8px 0}#info .chead h2{margin:0;font-size:17px}
#info .tk{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-weight:800;color:#0a0f1e;background:radial-gradient(circle at 30% 30%,#fff8,transparent 60%),var(--tc);box-shadow:0 0 14px var(--tc);flex:none}
#info .chg{margin-left:auto;font-weight:700;font-size:12px;padding:3px 7px;border-radius:8px}#info .chg.up{color:#4dff9a;background:#4dff9a18}#info .chg.dn{color:#ff6b5a;background:#ff6b5a18}
#info .kpis{display:grid;grid-template-columns:1fr 1fr;gap:6px}#info .kpi{background:#ffffff08;border:1px solid #ffffff12;border-radius:9px;padding:6px 8px;display:flex;flex-direction:column;min-width:0}
#info .kpi span{font-size:10.5px;opacity:.65;text-transform:uppercase;letter-spacing:.04em}#info .kpi b{font-size:14px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#info .kpi i{font-size:10.5px;opacity:.55;font-style:normal}
#info .kpi:last-child:nth-child(odd){grid-column:span 2}
#info .rb{margin-top:8px;background:#ff5a1a0d;border:1px solid #ff7a1830;border-radius:9px;padding:6px 8px}#info .rbh{font-weight:700;color:#ffb36b;margin-bottom:3px}
#info .rbi{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:5px 0;color:#ffe0c4;text-decoration:none;border-top:1px solid #ffffff0d;min-height:28px;align-items:center}#info .rbi:first-child{border-top:0}
#info .cardBtns a{min-height:46px;display:flex;align-items:center;justify-content:center;font-size:14px;border-radius:10px}
#info details.more{margin-top:8px}#info details.more summary{cursor:pointer;padding:8px 0;min-height:30px;opacity:.8}
#info .attr{margin-top:6px;font-size:10.5px}#info .attr a{color:#9fd8ff}
@media (max-width:700px){#info{max-height:calc(100vh - 230px);overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border-radius:14px;padding:12px 14px}#info.v2{width:auto}#info .kpi b{font-size:15px}}
#ptags{position:fixed;inset:0;pointer-events:none;z-index:3;overflow:hidden}
.ptag{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center;will-change:transform;transform-origin:50% 100%}
.ptag .pn{font:600 11px/1.2 system-ui,-apple-system,sans-serif;color:#fff;padding:2px 7px;border-radius:9px;background:rgba(4,8,20,.7);border:1px solid var(--c);box-shadow:0 0 8px var(--c);white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}
.pbub{position:relative;max-width:190px;margin-bottom:7px;padding:6px 10px;border-radius:12px;background:rgba(248,250,255,.95);color:#0b1222;font:500 12.5px/1.3 system-ui,-apple-system,sans-serif;box-shadow:0 4px 16px #0008;animation:bubIn .25s ease-out;word-wrap:break-word;transition:opacity .35s,transform .35s}
.pbub::after{content:'';position:absolute;left:50%;bottom:-6px;margin-left:-6px;border:6px solid transparent;border-bottom:0;border-top-color:rgba(248,250,255,.95)}
.pbub.out{opacity:0;transform:translateY(-6px)}@keyframes bubIn{from{opacity:0;transform:translateY(6px) scale(.9)}to{opacity:1;transform:none}}
#cityChat{position:fixed;left:200px;bottom:10px;width:320px;z-index:6;display:none;font-size:13px}#cityChat.on{display:block}
#cityChat .cch{display:flex;align-items:center;gap:7px;width:100%;min-height:44px;padding:0 12px;border-radius:12px;border:1px solid #2bd9ff55;background:rgba(4,10,24,.88);color:#cfe8ff;font:600 13px system-ui,-apple-system,sans-serif;cursor:pointer;box-shadow:0 0 14px #00e5ff22}
#cityChat .cdot{width:8px;height:8px;border-radius:50%;background:#4dff9a;box-shadow:0 0 8px #4dff9a}#cityChat .cn{opacity:.65;font-weight:500}#cityChat .car{margin-left:auto;transition:transform .2s}#cityChat.open .car{transform:rotate(180deg)}
#cityChat .cun{background:#ff5a1a;color:#fff;border-radius:10px;padding:1px 7px;font-size:11px}
#cityChat .cbody{display:none;margin-top:6px;background:rgba(4,8,20,.92);border:1px solid #2bd9ff40;border-radius:12px;overflow:hidden}#cityChat.open .cbody{display:block}
#cityChat .clog{max-height:240px;min-height:90px;overflow-y:auto;padding:8px 10px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
#cityChat .cm{display:flex;gap:6px;align-items:baseline;padding:3px 0;line-height:1.35}#cityChat .cm b{flex:none;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#cityChat .ct{flex:1;word-break:break-word;color:#e6f2ff}#cityChat .cm i{font-size:10px;font-style:normal;flex:none}
#cityChat .crep{flex:none;background:none;border:0;color:#ff9a7a;opacity:.55;cursor:pointer;min-width:32px;min-height:28px;font-size:13px}#cityChat .crep:hover{opacity:1}
#cityChat .cfoot{border-top:1px solid #ffffff12;padding:8px}#cityChat .cform{display:flex;gap:6px}
#cityChat .cform input{flex:1;min-width:0;min-height:44px;border-radius:10px;border:1px solid #2bd9ff55;background:#081428;color:#e6f2ff;padding:0 10px;font-size:16px}
#cityChat .cform button,#cityChat .csign{min-height:44px;border-radius:10px;border:0;background:linear-gradient(90deg,#ff5a1a,#ff9a2a);color:#120600;font-weight:700;padding:0 14px;cursor:pointer;display:flex;align-items:center;justify-content:center;text-decoration:none}
#cityChat .cnft{margin-top:6px;width:100%;min-height:40px;border-radius:10px;border:1px solid #ffb06088;background:#2a0d00;color:#ffd9a0;font:600 14px system-ui;cursor:pointer}
#cityChat .cnote{margin-top:6px;font-size:11px;text-align:center}
#cityChat .ctoast{position:absolute;bottom:100%;left:0;right:0;margin-bottom:6px;background:#0b1630;border:1px solid #ff7a1866;border-radius:9px;padding:7px 10px;color:#ffd2a8}
@media (max-width:700px){#cityChat{left:140px;right:10px;width:auto;bottom:calc(10px + env(safe-area-inset-bottom))}#cityChat .cch{min-height:48px}#cityChat.open{left:10px}#cityChat .clog{max-height:34vh}}
.actLeg{display:flex;align-items:center;gap:6px;margin:6px 0 2px;font-size:11px;opacity:.9}.actLeg i{flex:1;height:6px;border-radius:3px;background:linear-gradient(90deg,#2f7bff,#9a4bff 45%,#ff8a2a 75%,#ff3d14);box-shadow:0 0 8px #ff5a1a55}
.feat{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-top:6px}.feat label{margin:0!important;padding:0!important}.feat label{display:flex;align-items:center;gap:6px;min-height:30px}.feat input{width:18px;height:18px}
.alertPill{position:fixed;left:50%;top:calc(64px + env(safe-area-inset-top));transform:translateX(-50%);z-index:8;min-height:44px;padding:0 18px;border-radius:22px;border:1px solid #ff7a18aa;background:rgba(20,6,0,.85);color:#ffd2a8;font:600 14px system-ui,-apple-system,sans-serif;box-shadow:0 0 20px #ff5a1a66;cursor:pointer;animation:bubIn .3s ease-out}
#bagBtn.on{background:#7dffcf33;border-color:#7dffcf}
.lbl.held{border-color:#7dffcf!important;box-shadow:0 0 10px #7dffcf}body.bag .lbl:not(.held){opacity:.25}
#bagList{position:fixed;right:10px;top:calc(110px + env(safe-area-inset-top));z-index:6;width:230px;background:rgba(4,12,20,.92);border:1px solid #7dffcf66;border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:4px;max-height:50vh;overflow:auto}
#bagList .bh{font-weight:700;color:#7dffcf;padding:2px 4px 4px}#bagList button{display:flex;justify-content:space-between;gap:8px;min-height:44px;align-items:center;border-radius:9px;border:1px solid #ffffff14;background:#ffffff08;color:#e6f2ff;padding:0 10px;cursor:pointer;font:inherit}
#recap{position:fixed;left:0;right:0;margin:0 auto;box-sizing:border-box;max-width:calc(100vw - 20px - env(safe-area-inset-left) - env(safe-area-inset-right));top:calc(70px + env(safe-area-inset-top));z-index:7;width:min(340px,calc(100vw - 20px));background:rgba(4,8,20,.94);border:1px solid #ff7a1866;border-radius:14px;padding:12px 14px;box-shadow:0 0 26px #ff7a1833;animation:bubIn .35s ease-out;font-size:13px}
#recap h3{margin:0 44px 8px 0;font-size:15px;color:#ffb36b}#recap .x{position:absolute;right:6px;top:6px;width:44px;height:44px;background:none;border:0;color:#cfe8ff;font-size:18px;cursor:pointer}
#recap .rr{display:grid;grid-template-columns:24px auto 1fr;gap:8px;align-items:center;width:100%;min-height:44px;border:0;border-top:1px solid #ffffff10;background:none;color:#e6f2ff;font:inherit;text-align:left;padding:0}#recap button.rr{cursor:pointer}#recap .rr b{text-align:right}#recap .rl{opacity:.7}#recap .rs{margin-top:6px;font-size:10.5px}
@media (max-width:700px){#bagList{left:10px;right:10px;width:auto;top:auto;bottom:140px}}

[hidden]{display:none!important}
#bagList{position:fixed;right:calc(10px + env(safe-area-inset-right));left:auto;bottom:auto;top:calc(110px + env(safe-area-inset-top));width:min(320px,calc(100vw - 20px));max-height:min(60vh,520px);padding:0;gap:0;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 28px #000a}
#bagList .bhd{display:flex;align-items:center;gap:6px;padding:6px 6px 6px 12px;border-bottom:1px solid #ffffff14;flex:none}
#bagList .bt{flex:1;color:#7dffcf;font-size:14px;white-space:nowrap}
#bagList .bdim{min-height:40px;padding:0 10px;border-radius:9px;border:1px solid #7dffcf55;background:none;color:#cfeee4;font:inherit;font-size:12px;cursor:pointer}#bagList .bdim.on{background:#7dffcf33;border-color:#7dffcf}
#bagList .bx{width:44px;height:44px;flex:none;border-radius:10px;border:1px solid #ffffff22;background:#ffffff0d;color:#fff;font-size:20px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
#bagList .bl{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:6px;display:flex;flex-direction:column;gap:4px;min-height:0}
@media (max-width:700px){#bagList{left:auto;right:10px;width:min(300px,calc(100vw - 20px));top:auto;bottom:calc(66px + env(safe-area-inset-bottom));max-height:40vh}}
#dbgPanel{position:fixed;left:10px;top:calc(60px + env(safe-area-inset-top));z-index:20;width:min(330px,calc(100vw - 20px));max-height:70vh;overflow:auto;background:rgba(0,0,0,.88);border:1px solid #ff0;border-radius:10px;padding:10px;color:#ffc;font:12px ui-monospace,Menlo,monospace}
#dbgPanel label{display:flex;gap:6px;align-items:center;min-height:30px}#dbgPanel input{width:18px;height:18px}#dbgPanel pre{white-space:pre-wrap;word-break:break-all;font-size:10.5px;opacity:.85}
#dbgPanel button{min-height:40px;padding:0 12px;border-radius:8px;border:1px solid #ff08;background:#222;color:#ffc;cursor:pointer}#dbgPanel.min .dl,#dbgPanel.min .dp,#dbgPanel.min pre{display:none}
.dp{border-top:1px solid #ff04;margin-top:6px;padding-top:6px}

/* city chat v2: floating corner button, compact panel above it, auto-hidden in tour/replay/first-person/alerts */
#cityChat{left:auto!important;right:calc(12px + env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom))!important;width:auto!important;display:none;flex-direction:column-reverse;align-items:flex-end}
#cityChat.on{display:flex}#cityChat.autohide{display:none!important}
#cityChat:not(.open) .cch{width:52px;height:52px;min-height:52px;padding:0;border-radius:50%;justify-content:center;position:relative}
#cityChat:not(.open) .cch>:not(.cic):not(.cun){display:none}
#cityChat .cic{font-size:20px}#cityChat.open .cic{font-size:15px}
#cityChat:not(.open) .cun{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;line-height:20px;padding:0 5px;text-align:center}
#cityChat.open .cch{width:min(320px,calc(100vw - 24px));border-radius:12px 12px 0 0}#cityChat.open .cbody{width:min(320px,calc(100vw - 24px));margin:0 0 0 0;border-radius:12px 12px 0 0;order:0}
#cityChat.open{gap:0}#cityChat.open .cch{border-radius:0 0 12px 12px}
#cityChat .clog{max-height:min(240px,32vh)}
#cityChat .ctoast{right:0;left:auto;width:min(300px,calc(100vw - 24px))}
@media (max-width:700px){#cityChat{bottom:calc(52px + env(safe-area-inset-bottom))!important;right:10px}#live{bottom:calc(10px + env(safe-area-inset-bottom));right:10px;top:auto}#toasts{bottom:calc(120px + env(safe-area-inset-bottom))}#bagList{bottom:calc(120px + env(safe-area-inset-bottom))}}
@media (min-width:701px){#info{bottom:74px}}
@media (max-width:700px){#toasts{width:min(250px,calc(100vw - 150px))}}
#wchip{position:fixed;right:12px;top:calc(84px + env(safe-area-inset-top));z-index:5;min-height:36px;padding:0 14px;border-radius:18px;border:1px solid #ffffff22;background:rgba(5,10,24,.72);color:#e6f2ff;font:600 12.5px system-ui,-apple-system,sans-serif;cursor:pointer;white-space:nowrap;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
@media (max-width:700px){#wchip{right:auto;left:10px;transform:none;top:calc(64px + env(safe-area-inset-top));font-size:11.5px;min-height:32px}}
body.replay #wchip{opacity:.6}
@media (min-width:701px){#toasts{top:126px}}
#info{z-index:75!important}

.bamm .bah{font:700 12px system-ui;opacity:.8;margin:8px 0 4px}#bagBtn.dimOn::after{content:' · dim';opacity:.8}.bdim.on{background:#7dffcf33;border-color:#7dffcf;color:#dfffee}

.pbub{background:#101826e6!important;color:#eef!important;border:1.5px solid var(--c,#7cf);font-size:12px}.pbub::after{border-top-color:var(--c,#7cf)!important}.pself{position:fixed!important;left:0;top:0;pointer-events:none;z-index:4;--c:#ffd27a;transition:opacity .45s}@media (max-width:600px){.pbub{max-width:150px;font-size:10.5px;padding:4px 7px}}
