.mason-shell{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:980;font-family:Inter,Arial,sans-serif}.mason-launcher{display:flex;align-items:center;gap:9px;min-height:58px;padding:6px 13px 6px 6px;border:1px solid rgba(255,255,255,.28);color:#fff;background:#0a0c0e;box-shadow:7px 7px 0 rgba(255,101,0,.42);cursor:pointer}.mason-launcher img{width:46px;height:46px;object-fit:cover}.mason-launcher span{display:grid;gap:3px;text-align:left}.mason-launcher b{font-size:10px;letter-spacing:.1em}.mason-launcher small{color:#ff6500;font-size:7px;font-weight:900;letter-spacing:.14em}.mason-launcher i{width:7px;height:7px;margin-left:4px;border-radius:50%;background:#b9f227;box-shadow:0 0 12px #b9f227}.mason-panel{position:absolute;right:0;bottom:72px;width:min(390px,calc(100vw - 24px));overflow:hidden;border:1px solid rgba(255,255,255,.22);color:#f7f5ec;background:#0b0e10;box-shadow:12px 12px 0 rgba(255,101,0,.25)}.mason-panel header{display:flex;align-items:center;gap:10px;padding:10px;border-bottom:1px solid rgba(255,255,255,.14);background:linear-gradient(90deg,rgba(255,101,0,.2),transparent)}.mason-panel header img{width:54px;height:54px;object-fit:cover}.mason-panel header span{display:grid;gap:4px}.mason-panel header small{color:#ff6500;font-size:7px;font-weight:950;letter-spacing:.12em}.mason-panel header b{font-size:13px;letter-spacing:.05em}.mason-panel header button{margin-left:auto;border:0;color:#fff;background:transparent;font-size:24px;cursor:pointer}.mason-log{display:grid;gap:9px;max-height:310px;min-height:180px;overflow:auto;padding:14px;background:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px);background-size:100% 24px}.mason-log article{max-width:88%;padding:10px 12px;border:1px solid rgba(255,255,255,.16);background:#13171a}.mason-log article p{margin:0;font-size:11px;line-height:1.55}.mason-log article small{display:block;margin-bottom:5px;color:#ff6500;font-size:7px;font-weight:950;letter-spacing:.13em}.mason-log article a{display:inline-grid;min-height:32px;margin-top:9px;place-items:center;padding:0 10px;color:#08090a;background:#ff6500;font-size:7px;font-weight:1000;letter-spacing:.1em;text-decoration:none}.mason-log .from-rider{justify-self:end;border-color:rgba(0,184,179,.4);background:rgba(0,184,179,.12)}.mason-log .is-thinking{opacity:.65}.mason-log .is-error{border-color:#ff5b5b;color:#ffb1b1}.mason-chips{display:flex;gap:5px;overflow:auto;padding:0 14px 9px}.mason-chips button{min-height:30px;padding:0 9px;border:1px solid rgba(255,255,255,.18);color:#fff;background:transparent;font-size:7px;font-weight:950;white-space:nowrap;cursor:pointer}.mason-panel form{display:grid;gap:6px;padding:12px 14px 14px;border-top:1px solid rgba(255,255,255,.14)}.mason-panel form label{color:#a8afb4;font-size:7px;font-weight:950;letter-spacing:.12em}.mason-panel form>div{display:grid;grid-template-columns:1fr auto}.mason-panel input{min-width:0;min-height:42px;padding:8px 10px;border:1px solid rgba(255,255,255,.2);border-right:0;color:#fff;background:#07090b}.mason-panel form button{border:1px solid #ff6500;color:#08090a;background:#ff6500;font-size:8px;font-weight:1000;letter-spacing:.1em}.mason-panel form>small{color:#737b81;font-size:7px;line-height:1.4}@media(max-width:540px){.mason-shell{right:10px;bottom:10px}.mason-launcher span{display:none}.mason-panel{position:fixed;right:8px;bottom:76px;left:8px;width:auto}.mason-log{max-height:40vh}}@media(prefers-reduced-motion:reduce){.mason-shell *{scroll-behavior:auto!important}}

.city-utility-dock{position:fixed;z-index:980;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));display:flex;align-items:stretch;gap:9px;transition:opacity .25s ease,transform .25s ease}
.city-utility-dock .mason-shell{position:relative;right:auto;bottom:auto;z-index:2}
.city-utility-dock .mason-launcher b{font-size:11px;letter-spacing:.08em}
.city-utility-dock .mason-launcher small{font-size:9px;letter-spacing:.1em}
.mason-panel header small,.mason-log article small,.mason-panel form label,.mason-panel form>small{font-size:9px}
.mason-log article p{font-size:13px;line-height:1.55}
.mason-log article a,.mason-chips button,.mason-panel form button{font-size:10px}
.mason-followups{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px;padding-top:9px;border-top:1px dashed rgba(255,255,255,.16)}
.mason-followups span{flex:0 0 100%;color:#7f878d;font-size:8px;font-weight:900;letter-spacing:.1em}
.mason-followups button{min-height:28px;padding:0 8px;border:1px solid rgba(185,242,39,.34);color:#b9f227;background:rgba(185,242,39,.06);cursor:pointer;font-size:8px;font-weight:900;text-transform:uppercase}
.mason-followups button:hover,.mason-followups button:focus-visible{color:#08090a;background:#b9f227}
@media(max-width:540px){.city-utility-dock{right:10px;bottom:10px;gap:7px}.city-utility-dock .mason-shell{right:auto;bottom:auto}.mason-panel{bottom:82px}}

/* Viewport-safe guide panel with keyboard-sized controls. */
.mason-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;max-height:calc(100vh - 104px);max-height:calc(100dvh - 104px - env(safe-area-inset-bottom));overscroll-behavior:contain}
.mason-panel[hidden]{display:none}
.mason-panel header button{width:44px;height:44px;padding:0;touch-action:manipulation}
.mason-log{min-height:0;max-height:none;overscroll-behavior:contain}
.mason-log article a,.mason-chips button,.mason-followups button{min-height:44px;touch-action:manipulation}
.mason-panel input{min-height:48px;font-size:16px}
.mason-panel form button{min-width:54px;min-height:44px;touch-action:manipulation}

@media(max-width:540px){
  .city-utility-dock{right:max(10px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom))}
  .mason-panel{position:fixed;top:max(8px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));bottom:max(82px,calc(env(safe-area-inset-bottom) + 72px));left:max(8px,env(safe-area-inset-left));width:auto;max-height:none}
}

@media(max-width:380px){
  .mason-panel form>div{grid-template-columns:1fr;gap:6px}
  .mason-panel form button{min-height:48px}
}

@media(hover:none),(pointer:coarse){
  .mason-launcher,.mason-panel button,.mason-panel a{touch-action:manipulation}
}

/* Selected City B identity: keep MASON's existing behavior. */
.mason-launcher{border-radius:999px;padding:4px 16px 4px 4px;gap:10px;background:#0a1430;border:1px solid #5473b0;box-shadow:0 6px 24px #060f3870;transition:transform .18s ease,box-shadow .18s ease}
.mason-launcher img{width:64px;height:64px;object-fit:contain;border-radius:50%}
.mason-panel header img{width:56px;height:56px;object-fit:contain;border-radius:50%}
.mason-launcher i{display:none}
.mason-launcher small{color:#8de3ff}
.mason-launcher:focus-visible{outline:3px solid #6fe6ff;outline-offset:5px}
@media(hover:hover){.mason-launcher:hover{transform:translateY(-4px);box-shadow:0 0 22px #30caff75}.mason-launcher:hover img{filter:drop-shadow(0 0 7px #3acaff80)}}
@media(max-width:540px){.mason-launcher{padding:3px}.mason-launcher img{width:62px;height:62px}.mason-panel{bottom:94px}}
@media(prefers-reduced-motion:reduce){.mason-launcher{transition:none}.mason-launcher:hover{transform:none}}

/* Preserve the selected badge through the older compact mobile dock rules. */
@media(max-width:900px){
  .city-utility-dock .mason-shell .mason-launcher{width:72px;height:72px;min-height:72px;padding:3px;border-radius:50%;background:#0a1430}
  .city-utility-dock .mason-launcher img{display:block!important;width:64px;height:64px}
  .city-utility-dock .mason-launcher::after{content:none}
}



