/* ===== Fly your ad over SF ===== */
.fly-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:1.25rem;align-items:stretch}
.fly-stage{position:relative;border-radius:var(--radius,18px);overflow:hidden;min-height:520px;background:#e8eef3;box-shadow:0 10px 30px rgba(11,58,91,.10);border:1px solid #DCE7EF}
.fly-map{position:absolute;inset:0;z-index:1}
.fly-map:focus-visible{outline:3px solid #2B8FCB;outline-offset:-3px}
.fly-fx{position:absolute;inset:0;z-index:450;pointer-events:none}
.fly-blimp,.fly-shadow{position:absolute;left:0;top:0;z-index:460;pointer-events:none;will-change:transform}
.fly-shadow{z-index:455;width:120px;height:26px;margin:-13px 0 0 -60px;border-radius:50%;background:radial-gradient(closest-side,rgba(11,34,51,.38),rgba(11,34,51,0));filter:blur(2px)}
.fly-blimp{width:180px;height:84px;margin:-42px 0 0 -90px}
.fly-blimp svg{width:100%;height:100%;display:block;overflow:visible}
.fly-hull{transform-origin:50% 50%;transition:transform .25s}
.fly-banner{position:absolute;left:31%;top:31%;width:38%;height:36%;display:flex;align-items:center;justify-content:center;border-radius:5px;overflow:hidden;font:700 15px/1 "Space Grotesk",system-ui,sans-serif;white-space:nowrap;text-align:center;padding:0 4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.fly-banner img{max-width:100%;max-height:100%;object-fit:contain}
.fly-hud{position:absolute;left:12px;bottom:28px;z-index:500;background:rgba(11,58,91,.92);color:#fff;border-radius:12px;padding:.55rem .8rem;font-size:.82rem;line-height:1.45;min-width:180px;pointer-events:none}
.fly-hud b{color:#8FD0F5;font-weight:600}
.fly-badge{position:absolute;right:12px;top:12px;z-index:500;background:#fff;color:#0B3A5B;border-radius:999px;padding:.3rem .7rem;font-size:.75rem;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.fly-layer{position:absolute;right:12px;top:48px;z-index:500}
.fly-joy{position:absolute;right:18px;bottom:34px;z-index:520;width:110px;height:110px;border-radius:50%;background:rgba(11,58,91,.25);border:2px solid rgba(255,255,255,.8);touch-action:none;display:none}
.fly-joy span{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;background:#C8401F;box-shadow:0 3px 10px rgba(0,0,0,.3)}
.fly-free .fly-joy{display:block}
@media (hover:hover) and (pointer:fine){.fly-joy{display:none!important}}
.fly-panel{display:flex;flex-direction:column;gap:.8rem;padding:1.1rem;border-radius:var(--radius,18px);background:#fff;border:1px solid #DCE7EF;box-shadow:0 10px 30px rgba(11,58,91,.10);font-size:.92rem}
.fly-panel h3{margin:0;font-size:1.05rem}
.fly-panel label{display:flex;flex-direction:column;gap:.25rem;font-weight:600;color:#0F2233}
.fly-panel input[type=text],.fly-panel select{font:inherit;padding:.5rem .6rem;border:1px solid #9FB3C3;border-radius:10px;background:#fff;color:#0F2233}
.fly-row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}
.fly-row>label{flex:1}
.fly-panel input[type=color]{width:100%;height:36px;border:1px solid #9FB3C3;border-radius:10px;padding:2px;background:#fff}
.fly-panel input[type=range]{width:100%;accent-color:#C8401F}
.fly-btns{display:flex;gap:.45rem;flex-wrap:wrap}
.fly-btns .btn{padding:.5rem .85rem;font-size:.86rem}
.fly-panel .btn[aria-pressed=true]{background:#0B3A5B;color:#fff;border-color:#0B3A5B}
.fly-note{font-size:.78rem;color:#4A5B6B;margin:0;line-height:1.45}
.fly-disclaimer{margin:1rem auto 0;max-width:900px;text-align:center;font-size:.85rem;color:#4A5B6B}
.fly-hint{font-size:.78rem;color:#4A5B6B;margin:0}
.fly-status{font-size:.8rem;color:#0B3A5B;min-height:1.1em;margin:0}
.leaflet-container{font-family:inherit}
@media (max-width:900px){.fly-wrap{grid-template-columns:1fr}.fly-stage{min-height:420px}.fly-blimp{width:140px;height:66px;margin:-33px 0 0 -70px}.fly-banner{font-size:10px}}
/* standalone page */
.fly-page{margin:0;height:100vh;height:100dvh;overflow:hidden;font-family:"Inter",system-ui,sans-serif}
.fly-page .fly-top{position:absolute;left:0;right:0;top:0;height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 1rem;background:#0B3A5B;color:#fff;z-index:10}
.fly-page .fly-top a{color:#fff;text-decoration:none;font-weight:700;font-family:"Space Grotesk",system-ui,sans-serif}
.fly-page .fly-top .btn{color:#fff}
.fly-page .fly-wrap{position:absolute;top:54px;left:0;right:0;bottom:0;gap:0;grid-template-columns:minmax(0,1fr) 340px}
.fly-page .fly-stage{border-radius:0;min-height:0;border:0;box-shadow:none}
.fly-page .fly-panel{border-radius:0;border:0;border-left:1px solid #DCE7EF;overflow:auto;box-shadow:none}
@media (max-width:900px){.fly-page{overflow:auto;height:auto}.fly-page .fly-wrap{position:static;margin-top:54px;display:block}.fly-page .fly-stage{height:62vh;height:62dvh}.fly-page .fly-panel{border-left:0}}

.fly-panel [hidden]{display:none!important}
.fly-osm{filter:saturate(.55) brightness(1.04)}
