/* Readable placement forms; transparent monochrome street HUD.
   Bold sans-serif action labels / SF Mono keyboard legends. */
:root{--cloud:#f5f7fb;--paper:#fff;--ink:#25344a;--muted:#617088;--accent:#526bd5;--line:#dce3ee;color-scheme:light}
#ad-ui{font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}
#ad-ui *{box-sizing:border-box}
#ad-ui button,#ad-ui input,#ad-ui select{font:inherit}
#ad-ui button{cursor:pointer}
#ad-ui [hidden]{display:none!important}
#ad-ui :focus-visible{outline:3px solid var(--accent);outline-offset:3px}
#ad-ui button:disabled{opacity:.5;cursor:wait}
#ad-ui h2{font:600 30px/1.15 "Avenir Next",Avenir,sans-serif;letter-spacing:-1px;margin:7px 0 9px}
#ad-ui p{margin:0}
#ad-ui .eyebrow{font:600 10px/1.5 "SF Mono",Menlo,monospace;letter-spacing:1.6px;color:var(--muted)}
#ad-ui .muted{color:var(--muted);font-size:13px}
#ad-ui kbd{font:600 11px/1.5 "SF Mono",monospace;border:1px solid var(--line);padding:2px 6px;border-radius:5px;background:var(--paper);color:var(--ink)}
#ad-toggle{position:fixed;left:22px;top:55px;z-index:50;display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid #000;border-radius:3px;background:transparent;color:#fff;box-shadow:none;font-weight:700!important;text-shadow:var(--hud-shadow)}
#ad-toggle:hover{background:transparent;border-color:#fff}
#ad-toggle:focus-visible{outline:2px solid #fff;outline-offset:3px}
.ad-sheet{color:var(--ink);background:var(--cloud);border:1px solid #ffffffc9;box-shadow:0 24px 90px #14233c40;border-radius:24px}
#ad-panel{position:fixed;left:22px;top:119px;bottom:24px;width:370px;max-width:calc(100vw - 32px);z-index:60;padding:24px;display:flex;flex-direction:column;gap:15px}
.ad-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
#ad-ui .icon-button{border:1px solid var(--line);background:var(--paper);border-radius:50%;width:32px;height:32px;flex-shrink:0;color:var(--muted);font-size:22px;line-height:1}
#ad-ui .icon-button:hover{color:var(--ink);background:#e6ebfc}
.search-label{font-size:12px;font-weight:600;margin-bottom:-10px}
#ad-ui input[type=search],#ad-ui input[type=url],#ad-ui select{width:100%;min-height:44px;padding:11px 12px;background:var(--paper);border:1px solid var(--line);color:var(--ink);border-radius:10px;outline-offset:2px}
#ad-ui input::placeholder{color:#748198}
#ad-ui .list{overflow-y:auto;min-height:0;flex:1;margin:0 -8px;padding:2px 8px;overscroll-behavior:contain;scrollbar-width:thin}
#ad-ui .item{background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:16px;margin-bottom:10px}
#ad-ui .item .row{margin-top:14px}
.item-heading{display:flex;gap:11px;align-items:center}
#ad-ui h3{font:600 14px/1.4 "Avenir Next",sans-serif;margin:0;overflow-wrap:anywhere}
.placement-symbol{display:grid;place-items:center;flex-shrink:0;width:35px;height:43px;border-radius:7px;background:#e9edf7;font-size:23px;color:var(--accent)}
.placement-status{font-size:11px;color:var(--muted);overflow-wrap:anywhere}
#ad-ui .row{display:flex;gap:8px;align-items:center}
#ad-ui .btn{border:1px solid transparent;border-radius:10px;padding:10px 14px;font-size:12px;font-weight:600;white-space:nowrap;transition:background .15s,box-shadow .15s;min-height:40px}
#ad-ui .btn.p{background:var(--accent);color:white;box-shadow:0 3px 8px #526bd525}
#ad-ui .btn.p:hover{background:#4159be;box-shadow:0 5px 15px #526bd535}
#ad-ui .btn.g{background:var(--paper);border-color:var(--line);color:var(--ink)}
#ad-ui .btn.g:hover{background:#e9edf7}
#ad-ui .local-note{font-size:11px;color:var(--muted);line-height:1.5}
#ad-editor{position:fixed;inset:0;margin:auto;padding:30px;width:850px;max-width:calc(100vw - 40px);max-height:calc(100dvh - 40px);overflow:auto;z-index:70;overscroll-behavior:contain}
#ad-editor:not([open]){display:none}
#ad-editor::backdrop{background:#12203970;backdrop-filter:blur(5px)}
.editor-close{position:absolute;right:22px;top:22px}
.editor-intro{padding-right:26px;margin-bottom:24px}
.editor-columns{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.creative-stage{border:1px solid var(--line);border-radius:18px;background:#e9edf7;display:flex;flex-direction:column;min-height:330px;overflow:hidden}
.preview-top{display:flex;justify-content:space-between;align-items:center;padding:17px}
.preview-kind{font:9px "SF Mono",monospace;letter-spacing:1px;padding:5px 7px;border:1px solid #c6d0e5;border-radius:5px;color:var(--muted)}
#ad-preview{flex:1;display:flex;justify-content:center;align-items:center;min-height:220px;padding:20px;background:radial-gradient(ellipse at center,#ffffff88,transparent 75%)}
#ad-preview img,#ad-preview video{display:block;max-width:100%;max-height:300px;min-height:0;width:auto;height:auto;background:#25344a;box-shadow:0 12px 22px #25344a20;border-radius:3px}
.preview-empty{text-align:center;color:var(--muted)}
.preview-empty>span{display:block;margin:0 auto 22px;width:100px;height:130px;background:linear-gradient(145deg,#dae2f7,#c5d0f1);border:4px solid #fff;box-shadow:9px 12px 0 #b8c4e144,0 8px 30px #25344a12;border-radius:5px;color:var(--accent);font:60px/120px "Avenir Next",sans-serif;transform:rotate(-6deg)}
.preview-empty strong{display:block;color:var(--ink);font:600 19px "Avenir Next",sans-serif;margin-bottom:8px}
.preview-empty p{font-size:12px}
#ad-ui .preview-caption{text-align:center;font-size:10px;color:var(--muted);padding:15px}
.field-title{display:block;font-weight:600;font-size:13px;margin-bottom:10px}
.field-title>span{font:10px "SF Mono",monospace;color:var(--accent);margin-right:7px}
.field-title.small{font-size:12px;margin-top:18px}
.upload-zone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:1px dashed #aebcda;background:var(--paper);border-radius:12px;padding:15px 10px;cursor:pointer;min-height:110px;overflow:hidden}
.upload-zone:hover,.upload-zone:focus-within{background:#edf1ff;border-color:var(--accent)}
.upload-zone strong{font-size:12px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.upload-zone>span:not(.upload-icon){font-size:10px;color:var(--muted)}
.upload-icon{color:var(--accent);font-size:23px}
.upload-zone input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
#ad-ui .field-help{font-size:11px;line-height:1.55;color:var(--muted);margin:8px 0 20px}
#ad-ui #ad-resolution:empty{display:none}
#ad-ui .err{display:none;font-size:12px;line-height:1.5;background:#f9e9ed;color:#913848;border:1px solid #e6b6c1;border-radius:8px;padding:10px;margin-top:12px}
#ad-ui .err.on{display:block}
.placement-details{font-size:11px;color:var(--muted);margin:20px 0;overflow-wrap:anywhere}
.placement-details summary{cursor:pointer;font-weight:600;padding:6px 0}
.placement-details p{padding-top:6px}
.editor-footer{border-top:1px solid var(--line);padding-top:20px;display:flex;justify-content:space-between;align-items:center;gap:16px}
.reset-link{border:0;padding:0;background:none;color:var(--muted);font-size:11px!important;text-decoration:underline;text-underline-offset:3px;margin-top:15px}
#ad-reticle{position:fixed;left:50%;top:50%;width:5px;height:5px;transform:translate(-50%,-50%);z-index:40;border-radius:50%;background:#fff;box-shadow:0 0 0 1px #000;pointer-events:none;transition:.15s}
#ad-reticle.lit{width:8px;height:8px;background:#fff;box-shadow:0 0 0 2px #000,0 0 0 3px #fff}
#ad-hint{position:fixed;left:50%;top:calc(50% + 25px);transform:translateX(-50%);z-index:40;background:transparent;color:#fff;border:1px solid #000;border-radius:3px;padding:10px 14px;text-align:center;opacity:0;pointer-events:none;box-shadow:none;text-shadow:var(--hud-shadow);max-width:min(420px,90vw);transition:opacity .15s}
#ad-hint.on{opacity:1}
#ad-hint strong{display:block;font-size:12px;font-weight:700;overflow-wrap:anywhere}
#ad-hint small{display:block;color:#eee;font-size:11px;margin-top:3px;overflow-wrap:anywhere}
.hint-actions{display:flex;justify-content:center;gap:16px;font-size:12px;color:#fff;margin-top:9px;white-space:nowrap}
.hint-actions kbd{margin-right:4px}
#ad-hint .visit-action{color:#fff;font-weight:700}
#ad-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);padding:12px 18px;border:1px solid #000;border-radius:3px;background:transparent;color:#fff;text-shadow:var(--hud-shadow);box-shadow:none;z-index:80;opacity:0;pointer-events:none;transition:opacity .15s;max-width:90vw}
#ad-toast.on{opacity:1}
/* GTA-inspired keyboard HUD: no tinted panels, blur or coloured accents. */
:root{--hud-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000,0 2px 3px #000}
.hud{color:#fff;text-shadow:var(--hud-shadow)}
#title{font:600 15px "Avenir Next",sans-serif;letter-spacing:3px;color:#fff;opacity:1;top:23px;left:24px}
#title b,#lock h1 span{color:#fff}
#stats{padding:8px 12px;border:1px solid #000;border-radius:3px;background:transparent;top:19px;opacity:1;font-size:10px}
#chars{padding:0;border-radius:0;background:transparent;backdrop-filter:none;bottom:18px}
#chars .lbl{opacity:1;color:#eee}
#chars .c{display:flex;align-items:center;gap:6px;border:1px solid #000;border-radius:3px;background:transparent;padding:6px 8px;color:#eee;font:12px "Avenir Next",sans-serif;text-shadow:var(--hud-shadow)}
#chars .c:hover{background:transparent;border-color:#fff}
#chars .c.active{background:transparent;color:#fff;border-color:#000;box-shadow:inset 0 -2px 0 #fff;font-weight:700}
#chars .c:focus-visible{outline:2px solid #fff;outline-offset:3px}
#help{font-size:10px;max-width:calc(100vw - 475px);bottom:20px;line-height:1.9}
#ad-toggle kbd,#ad-hint kbd,#help kbd,#chars kbd{display:inline-block;min-width:23px;text-align:center;font:700 11px/1.5 "SF Mono",Menlo,monospace;padding:2px 5px;border:1px solid #000;border-radius:3px;background:transparent;color:#fff;text-shadow:var(--hud-shadow);box-shadow:inset 0 0 0 1px #ffffffa6}
#help kbd{font-size:9px;padding:1px 4px;min-width:18px}
#vehicle-hint{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);z-index:45;max-width:80vw;padding:10px 16px;border:1px solid #000;border-radius:3px;background:transparent;text-align:center;pointer-events:none;font:13px/1.7 "Avenir Next",sans-serif;text-shadow:var(--hud-shadow)}
#vehicle-hint[hidden]{display:none}
#vehicle-hint strong{display:block;font-size:12px;letter-spacing:.5px}
#vehicle-hint kbd{display:inline-block;min-width:23px;padding:2px 5px;border:1px solid #000;border-radius:3px;box-shadow:inset 0 0 0 1px #ffffffa6;color:#fff;font:700 11px/1.5 "SF Mono",Menlo,monospace}
body[data-driving="true"] #chars{display:none}
#minimap{border-radius:4px;border-color:#000;bottom:80px;width:145px;height:145px;box-shadow:0 0 0 1px #ffffff80}
#lock .panel{font-family:"Avenir Next",sans-serif;max-width:90vw}
#lock h1{font-size:48px;font-weight:600;letter-spacing:-2px}
#lock .cta{background:transparent;border:1px solid #000;color:#fff;text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000,0 3px 3px #000,0 0 12px #000,0 0 24px #000;box-shadow:0 4px 18px #0009,inset 0 0 0 1px #ffffff60;border-radius:3px;font-size:17px;font-weight:800;letter-spacing:.2px;padding:16px 28px}
#lock .panel{text-shadow:0 2px 4px #000,0 0 20px #000}
#lock .cta{font-family:inherit;cursor:pointer}
#lock .cta:hover,#lock .cta:focus-visible{outline:2px solid #fff;outline-offset:4px}
#lock p{opacity:1;color:#fff}
body:has(#ad-panel.open) #lock{opacity:0;pointer-events:none}
#loading{color:#fff}.spinner{border-color:#ffffff33;border-top-color:#fff}
@media(max-width:700px){
  #ad-editor{padding:22px;max-width:calc(100vw - 20px);max-height:calc(100dvh - 20px);border-radius:18px}
  #ad-ui h2{font-size:25px}.editor-columns{grid-template-columns:1fr;gap:20px}.creative-stage{min-height:220px}#ad-preview{min-height:150px;padding:10px}#ad-preview img,#ad-preview video{max-height:200px}.preview-empty>span{width:60px;height:80px;font-size:40px;line-height:72px;margin-bottom:12px}.preview-empty p{display:none}
  .editor-footer{align-items:stretch;flex-direction:column}.editor-footer .row>*{flex:1}.editor-intro{margin-bottom:18px}
  #ad-panel{left:12px;top:110px;bottom:12px;padding:20px}#ad-toggle{left:14px}#title{left:16px}
  #help{display:none}#chars .lbl{display:none}#chars{right:12px;bottom:12px}#chars .c{font-size:10px;padding:7px}
  #stats{max-width:45vw;font-size:9px}#minimap{right:12px;bottom:70px;width:110px;height:110px}
}
@media(prefers-reduced-motion:reduce){#ad-ui *,#minimap,#lock,#loading{transition:none!important;animation:none!important}}

/* Shared BB identity; compact HUD mark stays above the ad controls. */
.brand-logo{display:block;object-fit:contain;max-width:100%;height:auto}
#lock .brand-logo{margin:0 auto}
#title{top:0}

/* Character selection uses the same outlined, transparent game HUD as ad controls. */
#chars{left:22px;top:105px;right:auto;bottom:auto;padding:0;display:block}
#character-toggle{display:flex;align-items:center;gap:10px;padding:9px 12px;background:transparent;border:1px solid #000;border-radius:3px;color:#fff;font:700 14px "Avenir Next",Arial,sans-serif;text-shadow:var(--hud-shadow);cursor:pointer}
#character-toggle:hover{border-color:#fff}
#character-toggle:focus-visible{outline:2px solid #fff;outline-offset:3px}
#social-ui{left:22px;top:156px;width:min(320px,calc(100vw - 44px));padding:0;border:0;border-radius:0;background:transparent;pointer-events:none;text-shadow:var(--hud-shadow);font:600 12px/1.6 "Avenir Next",Arial,sans-serif}
#social-ui #connection-status{color:#fff}
#social-ui .payment-success{color:#fff}
#social-ui #connection-status:empty,#social-ui .session-error:empty,#join-feed:empty{display:none}
#join-feed{margin:0;list-style:none}#join-feed li{margin-bottom:5px}#join-feed time{color:#ddd}
.player-name{background:transparent;border-radius:0;padding:0 4px;color:#fff;font:700 12px/1.2 "Avenir Next",Arial,sans-serif;text-shadow:var(--hud-shadow)}
body:has(#character-picker[open]) #lock{opacity:0;pointer-events:none}
body:has(#character-picker[open]) #ad-reticle,body:has(#character-picker[open]) #ad-hint{visibility:hidden}
body:has(#character-picker[open]) :is(.hud,#ad-toggle,#social-ui,#minimap,.player-name){visibility:hidden}
#character-picker{position:fixed;inset:0;margin:auto;width:660px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);padding:24px;background:transparent;color:#fff;border:2px solid #fff;border-radius:4px;box-shadow:0 0 0 2px #000,6px 6px 0 #000,8px 8px 0 #ff604b;text-shadow:var(--hud-shadow);font:14px/1.4 "Avenir Next",Arial,sans-serif;overflow:auto;color-scheme:dark}
#character-picker::backdrop{background:#0005}
#character-picker:not([open]){display:none}
#character-picker header{display:flex;align-items:flex-start;gap:16px}
#character-picker h2{font:900 26px/1.1 Impact,"Arial Black",sans-serif;margin:4px 0 0;letter-spacing:.3px}
#character-picker .picker-eyebrow,#character-picker .picker-count{font:700 10px/1.4 "Courier New",monospace;letter-spacing:1.5px}
#character-picker button{font:700 13px/1.3 "Avenir Next",Arial,sans-serif;color:#fff;text-shadow:var(--hud-shadow);background:transparent;border:1px solid #fff;border-radius:2px;box-shadow:0 0 0 1px #000;cursor:pointer;min-height:40px;padding:9px 12px}
#character-picker button:hover:not(:disabled){border-color:#ff604b;color:#ff8978}
#character-picker button:focus-visible{outline:2px solid #ff604b;outline-offset:4px}
#character-picker button:disabled{opacity:.5;cursor:wait}
#character-picker .picker-add{margin-left:auto;white-space:nowrap}
#character-picker .picker-close{font:26px/1 Arial,sans-serif;width:36px;min-height:36px;padding:0;border:0;box-shadow:none}
#character-picker .picker-limits{margin:14px 0 0;text-align:right;font-size:11px;color:#eee}
#character-picker .picker-stage{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:8px}
#character-picker .picker-preview{height:clamp(180px,45dvh,360px);min-width:0}
#character-picker canvas{width:100%;height:100%;display:block}
#character-picker .picker-prev,#character-picker .picker-next{padding:0;width:44px;height:44px;font-size:24px}
#character-picker footer{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-top:16px;border-top:1px solid #ffffff75}
#character-picker h3{font:900 28px/1.2 Impact,"Arial Black",sans-serif;text-transform:uppercase;margin-top:4px}
#character-picker .picker-use{border-color:#ff604b;padding:12px 20px;box-shadow:2px 2px 0 #ff604b}
#character-picker .picker-status{font-size:12px;min-height:17px;margin-top:12px;color:#fff}
@media(max-width:600px){#chars{left:14px;top:105px}#social-ui{left:14px;top:156px}#character-picker{padding:16px}#character-picker header{flex-wrap:wrap;gap:12px}#character-picker header>div{flex:1}#character-picker h2{font-size:23px}#character-picker .picker-add{order:3;margin-left:auto}#character-picker .picker-limits{font-size:10px}#character-picker .picker-stage{grid-template-columns:40px minmax(0,1fr) 40px;gap:0}#character-picker .picker-prev,#character-picker .picker-next{width:40px}#character-picker .picker-use{padding:10px 12px}}
