/* AE TacMap */
:root{ --bg:#0b0d0a; --pnl:#12150f; --pnl2:#171b13; --ln:#2b3220; --tx:#e4e8d8; --mut:#8b9280; --acc:#c8b273;
  --blue:#3b82f6; --red:#ef4444; --green:#22c55e; --amber:#f59e0b; --grid:#5f6b4a; }
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tx);font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;overflow:hidden}
#tm-app{position:fixed;inset:0;display:flex;flex-direction:column}
button{font-family:inherit}

/* top nav */
#tm-top{height:52px;flex:0 0 52px;display:flex;align-items:center;gap:18px;padding:0 16px;background:var(--pnl);border-bottom:1px solid var(--ln);z-index:1200}
#tm-brand{font:800 17px/1 'Inter';letter-spacing:.12em;text-transform:uppercase;color:#fff;white-space:nowrap}
#tm-brand b{color:var(--acc)}
#tm-nav{display:flex;gap:2px}
#tm-nav a{color:var(--mut);text-decoration:none;font:600 12px/1 'Inter';letter-spacing:.07em;text-transform:uppercase;padding:8px 11px;border-radius:6px}
#tm-nav a:hover{color:var(--tx);background:var(--pnl2)}
#tm-nav a.active{color:var(--acc);background:var(--pnl2)}
#tm-top .sp{flex:1}
#tm-actions{display:flex;gap:5px;margin-right:6px}
#tm-actions button{background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);font:600 11px/1 'Inter';letter-spacing:.05em;text-transform:uppercase;padding:8px 11px;border-radius:6px;cursor:pointer}
#tm-actions button:hover{border-color:var(--acc);color:var(--acc)}
#tm-mapsel{display:flex;gap:3px;background:var(--pnl2);border:1px solid var(--ln);border-radius:8px;padding:3px}
#tm-mapsel button{background:none;border:none;color:var(--mut);font:600 12px/1 'Inter';letter-spacing:.05em;text-transform:uppercase;padding:7px 12px;border-radius:6px;cursor:pointer}
#tm-mapsel button.active{background:var(--acc);color:#1a1c14}

/* map */
#tm-body{flex:1;position:relative;min-height:0}
#map{position:absolute;inset:0;background:#0a0b08}
.leaflet-container{background:#0a0b08;font-family:inherit}
.leaflet-control-zoom{margin-left:64px !important}
.leaflet-control-zoom a{background:var(--pnl);color:var(--tx);border-color:var(--ln)}
.leaflet-control-zoom a:hover{background:var(--pnl2)}
.leaflet-control-zoom a.leaflet-disabled{background:var(--pnl2)!important;color:var(--mut)!important;opacity:.55}

/* left toolbar */
#tm-tools{position:absolute;left:10px;top:10px;z-index:1000;display:flex;flex-direction:column;gap:5px;background:rgba(11,13,10,.9);border:1px solid var(--ln);border-radius:10px;padding:6px}
.tm-tool{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--pnl2);border:1px solid transparent;border-radius:8px;color:var(--tx);font-size:17px;cursor:pointer}
.tm-tool:hover{border-color:var(--ln)}
.tm-tool.active{background:var(--acc);color:#1a1c14}

/* palette flyout */
#tm-palette{position:absolute;left:60px;top:10px;z-index:1001;width:250px;max-height:calc(100% - 24px);overflow:auto;background:rgba(14,17,11,.97);border:1px solid var(--ln);border-radius:10px;padding:12px}
.tm-pal-h{font:700 10px/1 'Inter';letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin:12px 0 7px}
.tm-pal-h:first-child{margin-top:0}
.tm-colors{display:flex;gap:6px}
.tm-sw{width:30px;height:24px;border-radius:6px;border:2px solid transparent;cursor:pointer}
.tm-sw.active{border-color:#fff}
.tm-pal-grid{display:grid;grid-template-columns:1fr;gap:4px}
.tm-pal-item{display:flex;align-items:center;gap:9px;background:var(--pnl2);border:1px solid transparent;border-radius:7px;color:var(--tx);font:500 12px/1.1 'Inter';padding:6px 8px;cursor:pointer;text-align:left}
.tm-pal-item:hover{border-color:var(--ln)}
.tm-pal-item.active{border-color:var(--acc)}
.tm-vic-mini{flex:0 0 auto;min-width:36px;text-align:center;font:700 10px/1 'JetBrains Mono',monospace;color:#cfe;background:#22304a;border:1px solid #34507e;border-radius:4px;padding:4px 5px}
.tm-vic-mini.tac{background:#2b2a1c;border-color:#5a5326;color:#e7d9a0}
.tm-vic-mini.air{background:#1c2b26;border-color:#2f6a54;color:#a7e7cf}

/* placed markers — round, with a bearing arrow that orbits the circle */
.tm-vic-wrap{position:relative;width:48px;height:48px}
.tm-vic-c{position:absolute;left:9px;top:9px;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--c) 26%,#0b0d0a);border:2.5px solid var(--c);box-shadow:0 1px 6px rgba(0,0,0,.7)}
.tm-vic-wrap.heli .tm-vic-c{border-style:dashed}
.tm-vic-c span{font:800 11px/1 'JetBrains Mono',monospace;color:#fff;letter-spacing:.02em}
.tm-arr{position:absolute;left:50%;top:-1px;margin-left:-7px;width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:13px solid var(--c);transform-origin:7px 25px;filter:drop-shadow(0 0 2px rgba(0,0,0,.7))}
.tm-vic-wrap + em{position:absolute;left:50%;top:48px;transform:translateX(-50%);white-space:nowrap;font:700 11px/1 'Inter';font-style:normal;color:#fff;text-shadow:0 1px 2px #000,0 0 4px #000;background:rgba(11,13,10,.78);border:1px solid var(--ln);padding:2px 6px;border-radius:4px}
/* arrow running the route + ETA label + callouts (self-sizing, centred on their point) */
.tm-heli{width:22px;height:22px;filter:drop-shadow(0 0 3px rgba(0,0,0,.85))}
.tm-eta{position:absolute;left:0;top:0;transform:translate(-50%,-50%);font:700 11px/1 'JetBrains Mono',ui-monospace,monospace;color:#fff;background:rgba(11,13,10,.86);border:1px solid var(--c,#2b3220);border-radius:5px;padding:4px 8px;white-space:nowrap;text-shadow:0 1px 2px #000;box-shadow:0 1px 5px rgba(0,0,0,.55)}
.tm-callout{position:absolute;left:0;top:0;transform:translate(-50%,-50%);font:600 12px/1.2 'Inter',system-ui,-apple-system,sans-serif;color:#fff;background:rgba(11,13,10,.9);border:1px solid var(--ln);border-left:3px solid var(--c,#c8b273);border-radius:5px;padding:5px 9px;white-space:nowrap;text-shadow:0 1px 2px #000;box-shadow:0 2px 6px rgba(0,0,0,.55);cursor:move}
/* tower owner picker */
.tm-poi.tower{cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.6)}
.tm-owner-row{display:flex;gap:8px;margin-top:8px}
.tm-owner-sw{width:36px;height:26px;border-radius:6px;border:2px solid rgba(255,255,255,.2);cursor:pointer;padding:0}
.tm-owner-sw.active{border-color:#fff;box-shadow:0 0 0 2px rgba(0,0,0,.45)}
/* zone centre handle (AO / Hot Zone) */
.tm-zone-h{display:flex;align-items:center;justify-content:center;height:20px;padding:0 8px;border-radius:10px;background:rgba(11,13,10,.82);border:1.5px solid var(--c);color:var(--c);font:800 10px/1 'JetBrains Mono',monospace;letter-spacing:.1em;cursor:move;white-space:nowrap}
/* geoman text label */
.tm-textlabel .leaflet-pm-text{font:700 15px 'Inter' !important;color:#fff !important;text-shadow:0 1px 3px #000,0 0 5px #000 !important}
.leaflet-pm-text{font:700 15px 'Inter';color:#fff;text-shadow:0 1px 3px #000,0 0 5px #000;background:rgba(11,13,10,.35);border-radius:4px;padding:1px 4px}

/* grid + poi */
.tm-grid-lbl{color:#c3cbb0;font:700 11px/1 'JetBrains Mono',monospace;text-shadow:0 1px 2px #000,0 0 4px #000;pointer-events:none;white-space:nowrap}
.tm-poi{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:5px;font:700 10px/1 'Inter';color:#fff;border:1px solid rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.5)}
.tm-poi.tower{background:#6b7280}.tm-poi.weapons_vendor{background:#b45309}.tm-poi.garage_vendor{background:#0e7490}
.tm-poi.spawn_board{background:#4b5563}.tm-poi.lonestar{background:var(--blue)}.tm-poi.valkyra{background:var(--red)}.tm-poi.manticore{background:var(--green)}
.leaflet-tooltip.tm-tt{background:var(--pnl);border:1px solid var(--ln);color:var(--tx);font:600 11px 'Inter'}

/* measure */
.tm-measure{font:700 12px/1 'JetBrains Mono',monospace;color:var(--acc);background:rgba(11,13,10,.9);border:1px solid var(--ln);border-radius:5px;padding:3px 6px;white-space:nowrap;box-shadow:0 1px 4px rgba(0,0,0,.5)}

/* right panel (artillery) */
#tm-panel{position:absolute;right:10px;top:10px;z-index:1001;width:250px;background:rgba(14,17,11,.97);border:1px solid var(--ln);border-radius:10px;padding:14px;max-height:calc(100% - 24px);overflow-y:auto;overscroll-behavior:contain}
#tm-panel::-webkit-scrollbar{width:8px}
#tm-panel::-webkit-scrollbar-thumb{background:var(--ln);border-radius:8px}
#tm-panel::-webkit-scrollbar-track{background:transparent}
#tm-panel{scrollbar-width:thin;scrollbar-color:var(--ln) transparent}
.tm-panel-h{display:flex;justify-content:space-between;align-items:center;font:700 12px/1 'Inter';letter-spacing:.1em;text-transform:uppercase;color:var(--acc);margin-bottom:12px}
.tm-panel-h button{background:none;border:none;color:var(--mut);font-size:18px;cursor:pointer;line-height:1}
.tm-fld{margin-bottom:10px}
.tm-fld label{display:block;font:600 10px/1 'Inter';letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:5px}
.tm-route-btns{display:flex;gap:8px;margin-top:10px}
.tm-mini-btn{flex:1;background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);font:600 10px/1 'Inter';letter-spacing:.06em;text-transform:uppercase;padding:9px 8px;border-radius:6px;cursor:pointer}
.tm-mini-btn:hover{border-color:var(--acc);color:var(--acc)}
.tm-fld select{width:100%;background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);border-radius:6px;padding:8px;font:500 13px 'Inter'}
.tm-arty-help{font:500 11px/1.4 'Inter';color:var(--mut);margin:6px 0 10px}
.tm-arty-help b{color:var(--tx)}
.tm-arty-out{background:var(--pnl2);border:1px solid var(--ln);border-radius:8px;padding:10px 12px;min-height:40px;font:500 12px 'Inter'}
.tm-sol{display:flex;justify-content:space-between;align-items:baseline;padding:4px 0}
.tm-sol span{color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.tm-sol b{font:700 15px 'JetBrains Mono',monospace;color:var(--acc)}
.tm-sol.oor b{color:var(--red);font-size:12px}
.tm-note{font:500 10px/1.4 'Inter';color:var(--mut);margin-top:10px;font-style:italic}

/* popup */
.tm-pop .leaflet-popup-content-wrapper{background:var(--pnl);color:var(--tx);border:1px solid var(--ln);border-radius:10px}
.tm-pop .leaflet-popup-tip{background:var(--pnl);border:1px solid var(--ln)}
.tm-pop .leaflet-popup-content{margin:12px 14px}
.tm-mp-t{font:700 12px 'Inter';color:var(--acc);margin-bottom:8px}
.tm-mp-in{width:150px;background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);border-radius:6px;padding:6px 8px;font:500 12px 'Inter';margin-bottom:8px}
.tm-mp-row{display:flex;align-items:center;gap:6px;font:600 11px 'Inter';color:var(--mut);margin-bottom:10px}
.tm-mp-h{flex:1}
.tm-mp-hv{font:700 11px 'JetBrains Mono',monospace;color:var(--acc)}
.tm-mp-del{background:rgba(192,106,92,.15);border:1px solid #5a2f28;color:#e0857a;border-radius:6px;padding:6px 12px;font:600 11px 'Inter';cursor:pointer}

/* coordinate readout */
#tm-coord{position:absolute;left:12px;bottom:12px;z-index:1000;background:rgba(11,13,10,.85);border:1px solid var(--ln);border-radius:8px;padding:8px 12px;font:600 13px/1.3 'JetBrains Mono',monospace;color:var(--acc);pointer-events:none}
#tm-coord .l{color:var(--mut);font-weight:500}
#tm-scale{position:absolute;right:12px;bottom:12px;z-index:1000;background:rgba(11,13,10,.85);border:1px solid var(--ln);border-radius:8px;padding:6px 10px;font:500 11px/1 'JetBrains Mono',monospace;color:var(--mut)}
#tm-flash{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);z-index:1400;background:var(--acc);color:#1a1c14;font:700 12px 'Inter';padding:9px 16px;border-radius:8px;opacity:0;transition:opacity .3s;pointer-events:none}
#tm-load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:1500;background:var(--bg);color:var(--mut);font:600 14px 'Inter';letter-spacing:.1em;text-transform:uppercase}

/* geoman dark */
.leaflet-pm-toolbar .leaflet-pm-icon{background-color:var(--pnl)}
.button-container a.leaflet-buttons-control-button{background-color:var(--pnl)}

/* overall faction / colour picker in the top bar */
#tm-faction{display:flex;gap:5px;align-items:center;margin:0 4px}
.tm-fsw{width:22px;height:22px;border-radius:6px;border:2px solid rgba(255,255,255,.15);cursor:pointer;padding:0}
.tm-fsw.active{border-color:#fff;box-shadow:0 0 0 2px rgba(0,0,0,.5),0 0 6px rgba(255,255,255,.25)}

/* screen-anchored coordinate axis labels */
#tm-axis{position:absolute;inset:0;pointer-events:none;z-index:640;overflow:hidden}
.tm-ax{position:absolute;font:700 11px/1 'JetBrains Mono',ui-monospace,monospace;color:#cbd3b6;text-shadow:0 1px 2px #000,0 0 4px #000;background:rgba(11,13,10,.6);border:1px solid rgba(43,50,32,.7);padding:2px 5px;border-radius:4px}
.tm-ax.x{top:6px;transform:translateX(-50%)}
.tm-ax.y{left:70px;transform:translateY(-50%)}

/* themed scrollbars */
#tm-palette{scrollbar-width:thin;scrollbar-color:#39432a #0e110c}
#tm-palette::-webkit-scrollbar{width:10px}
#tm-palette::-webkit-scrollbar-track{background:#0e110c;border-radius:8px}
#tm-palette::-webkit-scrollbar-thumb{background:#39432a;border-radius:8px;border:2px solid #0e110c}
#tm-palette::-webkit-scrollbar-thumb:hover{background:#4d5a37}

/* ===================== member auth (top-right) ===================== */
#tm-user{display:flex;align-items:center;gap:6px;margin-left:8px;position:relative}
.tm-login,.tm-steam{display:flex;align-items:center;gap:7px;border-radius:7px;cursor:pointer;font:600 12px/1 'Inter';letter-spacing:.02em;padding:9px 12px;white-space:nowrap}
.tm-login{background:#5865F2;border:1px solid #5865F2;color:#fff}
.tm-login:hover{background:#4854e0;border-color:#4854e0}
.tm-steam{background:var(--pnl2);border:1px solid var(--ln);color:var(--tx)}
.tm-steam:hover{border-color:var(--acc);color:var(--acc)}
.tm-user-chip{display:flex;align-items:center}
.tm-user-nm{font:600 12px/1 'Inter';color:var(--tx);white-space:nowrap;max-width:130px;overflow:hidden;text-overflow:ellipsis}
.tm-user-btn{display:flex;align-items:center;gap:7px;background:var(--pnl2);border:1px solid var(--ln);border-radius:8px;padding:5px 10px 5px 5px;cursor:pointer;color:var(--tx)}
.tm-user-btn:hover{border-color:var(--acc)}
.tm-user-av{width:24px;height:24px;border-radius:6px;object-fit:cover;flex:none}
.tm-user-cx{color:var(--mut);font-size:10px}
.tm-user-menu{position:absolute;top:46px;right:0;z-index:1300;width:252px;background:rgba(14,17,11,.98);border:1px solid var(--ln);border-radius:12px;padding:13px;box-shadow:0 10px 30px rgba(0,0,0,.62);opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity .15s ease,transform .15s ease}
#tm-user.open .tm-user-menu{opacity:1;transform:none;pointer-events:auto}
.tm-um-id{font:700 13px/1.2 'Inter';color:var(--tx);margin-bottom:13px}
.tm-um-id em{display:block;font:500 11px/1 'JetBrains Mono',monospace;color:var(--mut);font-style:normal;margin-top:5px}
.tm-um-h{font:700 10px/1 'Inter';letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin:0 0 9px}
.tm-um-mates{display:flex;flex-direction:column;gap:8px;max-height:190px;overflow:auto;margin-bottom:11px}
.tm-um-mate{display:flex;align-items:center;gap:9px;font:500 12px/1 'Inter';color:var(--tx)}
.tm-um-mate.me{color:var(--acc)}
.tm-um-mate img{width:22px;height:22px;border-radius:5px;object-fit:cover;flex:none}
.tm-um-dot{width:8px;height:8px;border-radius:50%;background:var(--mut);margin:7px}
.tm-um-empty{font:500 11px/1.4 'Inter';color:var(--mut);font-style:italic;margin-bottom:11px}
.tm-um-relink{display:block;text-align:center;color:var(--mut);text-decoration:none;font:500 11px/1 'Inter';padding:9px;margin-bottom:8px;border:1px dashed var(--ln);border-radius:8px}
.tm-um-relink:hover{color:var(--tx);border-color:var(--acc)}
.tm-um-toggle{width:100%;background:var(--pnl2);border:1px solid var(--ln);color:var(--mut);border-radius:8px;padding:10px;font:600 11px/1.3 'Inter';letter-spacing:.02em;cursor:pointer;margin-bottom:11px;text-align:left}
.tm-um-toggle.on{border-color:#3f7d4f;color:#7bd492;background:rgba(60,120,70,.12)}

/* shared live squad map */
#tm-squad{display:none;align-items:center;gap:8px;position:absolute;left:50%;transform:translateX(-50%);bottom:12px;z-index:1000;background:rgba(11,13,10,.92);border:1px solid var(--acc);border-radius:8px;padding:7px 14px;font:700 11px/1 'JetBrains Mono',monospace;letter-spacing:.09em;color:var(--acc);pointer-events:none;box-shadow:0 2px 10px rgba(0,0,0,.5)}
#tm-squad .dot{width:7px;height:7px;border-radius:50%;background:#7bff9e;box-shadow:0 0 7px #7bff9e;animation:tm-squad-pulse 2s infinite}
@keyframes tm-squad-pulse{0%,100%{opacity:1}50%{opacity:.3}}
.tm-vic-wrap.sq{opacity:.95}
.tm-vic-wrap.sq .tm-vic-c{border-style:dashed}
.tm-callout.sq{border-style:dashed}

/* squad ping / beacon */
.tm-ping{position:absolute;left:0;top:0;transform:translate(-50%,-50%);pointer-events:none}
.tm-ping .pd{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 7px var(--c)}
.tm-ping .r1,.tm-ping .r2{position:absolute;left:50%;top:50%;border:2px solid var(--c);border-radius:50%;transform:translate(-50%,-50%);animation:tm-ping-ring 1.6s ease-out infinite}
.tm-ping .r2{animation-delay:.8s}
.tm-ping em{position:absolute;left:15px;top:-8px;white-space:nowrap;font:700 10px/1 'JetBrains Mono',monospace;color:#fff;font-style:normal;text-shadow:0 1px 2px #000;background:rgba(11,13,10,.72);border:1px solid var(--c);padding:2px 6px;border-radius:4px}
@keyframes tm-ping-ring{0%{width:6px;height:6px;opacity:.9}100%{width:46px;height:46px;opacity:0}}

/* squad presence + post-to-Discord in the user dropdown */
.tm-um-mate.live .tm-um-dot{background:#7bff9e;box-shadow:0 0 5px #7bff9e}
.tm-um-mate.live img{outline:2px solid #7bff9e;outline-offset:1px}
.tm-um-live{margin-left:auto;font:600 9px/1 'JetBrains Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:#7bd492;background:rgba(60,120,70,.16);border-radius:4px;padding:3px 6px}
.tm-um-post{width:100%;background:rgba(88,101,242,.14);border:1px solid #3e47a8;color:#aab4ff;border-radius:8px;padding:10px;font:600 11px/1 'Inter';letter-spacing:.03em;cursor:pointer;margin-bottom:11px}
.tm-um-post:hover{background:rgba(88,101,242,.24)}

/* coming-soon map overlay */
#tm-soon{position:absolute;inset:0;z-index:1250;display:none;align-items:center;justify-content:center;padding:20px;background:radial-gradient(circle at 50% 38%, rgba(20,24,16,.84), rgba(8,10,7,.97))}
.tm-soon-card{max-width:430px;text-align:center;padding:38px 34px;background:rgba(14,17,11,.92);border:1px solid var(--ln);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.tm-soon-badge{display:inline-block;font:800 12px/1 'JetBrains Mono',monospace;letter-spacing:.24em;color:var(--acc);border:1px solid rgba(200,178,115,.4);border-radius:6px;padding:9px 15px;margin-bottom:22px}
.tm-soon-h{font:800 clamp(28px,5vw,36px)/1 'Inter';letter-spacing:.01em;color:#fff;margin-bottom:12px}
.tm-soon-card p{font:400 14px/1.55 'Inter';color:var(--mut);margin:0 0 24px}
.tm-soon-card p b{color:var(--tx)}
.tm-soon-back{background:var(--acc);color:#1a1c14;border:none;border-radius:8px;padding:12px 22px;font:700 12px/1 'Inter';letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.tm-soon-back:hover{background:#e6c14f}
.tm-um-logout{width:100%;background:rgba(192,106,92,.14);border:1px solid #5a2f28;color:#e0857a;border-radius:8px;padding:10px;font:600 12px/1 'Inter';cursor:pointer}
.tm-um-logout:hover{background:rgba(192,106,92,.24)}

/* ==================== responsive: compact bar + mobile / touch ==================== */
#tm-more{display:none}
#tm-menu{display:none}

/* TIER 1 — compact bar: below ~1240px (or short/landscape) the section anchors, faction
   swatches and plan actions collapse into a ⋯ menu so the bar never overflows. The
   Discord / Steam / user control keeps its label here — there's room without the action row. */
@media (max-width:1240px), (max-height:520px){
  #tm-nav{display:none}
  #tm-faction{display:none}
  #tm-actions{display:none}
  #tm-more{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:40px;height:34px;background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);border-radius:8px;font-size:20px;line-height:1;cursor:pointer;padding:0}
  #tm-app.menu-open #tm-more{border-color:var(--acc);color:var(--acc)}
  #tm-menu{display:block;position:absolute;top:56px;right:8px;z-index:1300;width:min(264px,calc(100vw - 16px));background:rgba(14,17,11,.98);border:1px solid var(--ln);border-radius:12px;padding:12px;box-shadow:0 10px 30px rgba(0,0,0,.62);transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .16s ease,transform .16s ease}
  #tm-app.menu-open #tm-menu{opacity:1;transform:none;pointer-events:auto}
  .tm-menu-lbl{font:700 10px/1 'Inter';letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin:0 0 8px}
  .tm-menu-lbl:not(:first-child){margin-top:14px}
  .tm-menu-fac{display:flex;gap:8px;flex-wrap:wrap}
  .tm-menu-fac .tm-fsw{width:36px;height:30px}
  .tm-menu-acts{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .tm-menu-acts button{background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);font:600 12px/1 'Inter';letter-spacing:.04em;text-transform:uppercase;padding:12px 8px;border-radius:8px;cursor:pointer}
  .tm-menu-acts button:active{border-color:var(--acc);color:var(--acc)}
  .tm-menu-home{display:block;margin-top:13px;text-align:center;color:var(--mut);text-decoration:none;font:600 12px/1 'Inter';letter-spacing:.06em;text-transform:uppercase;padding:11px;border:1px solid var(--ln);border-radius:8px}
}

/* TIER 2 — true mobile / short: icon-only auth control, tighter bar, bigger touch targets,
   flyout panels clamped inside the viewport. */
@media (max-width:640px), (max-height:520px){
  #tm-top{gap:9px;padding:0 10px}
  #tm-brand{font-size:15px;letter-spacing:.07em}
  #tm-mapsel{padding:2px}
  #tm-mapsel button{padding:7px 10px;font-size:11px}
  #tm-user{margin-left:3px}
  .tm-login span,.tm-steam span,.tm-user-btn .tm-user-nm,.tm-user-cx{display:none}
  .tm-login,.tm-steam{padding:9px}
  .tm-user-chip{display:none}
  .tm-user-btn{padding:5px}
  .tm-user-menu{position:fixed;top:56px;right:8px;width:min(252px,calc(100vw - 16px))}
  #tm-tools{gap:6px;padding:7px}
  .tm-tool{width:44px;height:44px;font-size:19px}
  .leaflet-control-zoom{margin-left:72px !important}
  .leaflet-touch .leaflet-control-zoom a{width:34px;height:34px;line-height:34px;font-size:20px}
  .tm-ax.y{left:78px}
  #tm-palette{left:62px;width:min(250px,calc(100vw - 74px));max-height:calc(100% - 20px)}
  #tm-panel{width:min(250px,calc(100vw - 20px));max-height:calc(100% - 20px)}
  #tm-coord{font-size:12px;padding:7px 10px}
  #tm-scale{font-size:10px;padding:5px 8px}
}

/* short / landscape phones: let the tool rail wrap into columns so it never runs off-screen */
@media (max-height:520px){
  #tm-tools{flex-wrap:wrap;max-height:calc(100% - 16px);align-content:flex-start}
}

/* FOB Builder markers (base snapshot / logistics request) sent from the builder */
.tm-fob{width:34px;height:34px;border-radius:8px;background:var(--pnl);border:2px solid var(--c,#e2ac2b);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.5)}
.tm-fob span{font:800 10px/1 'Inter';letter-spacing:.03em;color:var(--c,#e2ac2b)}
.tm-fob.logi{border-radius:50%}
.tm-fob.sq{border-style:dashed;opacity:.9}
.tm-fob+em{position:absolute;left:50%;top:38px;transform:translateX(-50%);white-space:nowrap;font:600 10px/1 'Inter';font-style:normal;color:var(--tx);background:rgba(11,13,10,.82);border:1px solid var(--ln);padding:2px 6px;border-radius:5px;pointer-events:none}
.tm-fobpop-wrap .leaflet-popup-content{margin:11px 12px;width:360px!important;max-height:min(78vh,580px);overflow-y:auto;overflow-x:hidden}
.tm-fobpop-wrap a.leaflet-popup-close-button{color:var(--mut);top:7px;right:8px;font:400 18px/1 'Inter';width:auto;height:auto;padding:0}
.tm-fobpop-wrap a.leaflet-popup-close-button:hover{color:var(--acc);background:none}
/* themed thin scrollbars inside the callout */
.tm-fobpop-wrap .leaflet-popup-content,.tm-fob-man{scrollbar-width:thin;scrollbar-color:var(--ln) transparent}
.tm-fobpop-wrap .leaflet-popup-content::-webkit-scrollbar,.tm-fob-man::-webkit-scrollbar{width:8px;height:8px}
.tm-fobpop-wrap .leaflet-popup-content::-webkit-scrollbar-track,.tm-fob-man::-webkit-scrollbar-track{background:transparent}
.tm-fobpop-wrap .leaflet-popup-content::-webkit-scrollbar-thumb,.tm-fob-man::-webkit-scrollbar-thumb{background:var(--ln);border-radius:6px;border:2px solid transparent;background-clip:padding-box}
.tm-fobpop-wrap .leaflet-popup-content::-webkit-scrollbar-thumb:hover,.tm-fob-man::-webkit-scrollbar-thumb:hover{background:var(--acc);background-clip:padding-box}
.tm-fob-badge{display:inline-block;font:800 8.5px/1 'Inter';letter-spacing:.12em;text-transform:uppercase;padding:4px 7px;border-radius:5px;margin-bottom:7px}
.tm-fob-badge.base{background:rgba(226,172,43,.16);color:#e2ac2b;border:1px solid #6b551f}
.tm-fob-badge.logi{background:rgba(59,130,246,.16);color:#7fb0ff;border:1px solid #2a4a7a}
.tm-fobpop .tm-mp-t{display:flex;flex-direction:column;gap:2px}
.tm-fob-own{font:500 10px 'Inter';color:var(--mut);text-transform:none;letter-spacing:0}
.tm-fob-img{display:block;width:100%;border-radius:8px;border:1px solid var(--ln);margin-bottom:8px}
.tm-fob-man{max-height:230px;overflow-y:auto;overflow-x:hidden;background:#0c0f09;border:1px solid var(--ln);border-radius:8px;padding:10px 11px;margin:0 0 9px;font:500 10.5px/1.5 'JetBrains Mono',monospace;color:var(--tx);white-space:pre}
.tm-fob-btns{display:flex;flex-wrap:wrap;gap:6px}
.tm-fob-load{background:var(--acc);color:#1a1c14;border:1px solid var(--acc);border-radius:6px;padding:7px 11px;font:700 11px 'Inter';text-decoration:none;cursor:pointer}
.tm-fob-load:hover{filter:brightness(1.08)}
.tm-fob-copy{background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);border-radius:6px;padding:7px 11px;font:600 11px 'Inter';cursor:pointer}
.tm-fob-copy:hover{border-color:var(--acc);color:var(--acc)}
.tm-fob-del{background:rgba(192,106,92,.15);border:1px solid #5a2f28;color:#e0857a;border-radius:6px;padding:7px 11px;font:600 11px 'Inter';cursor:pointer}

/* ---- support requests (map -> ACARS): shared markers + chooser popup ---- */
.tm-reqmk{position:absolute;left:0;top:0;transform:translate(-50%,-50%);pointer-events:auto;cursor:pointer}
.tm-reqmk .rr{position:absolute;left:50%;top:50%;width:12px;height:12px;border:2px solid var(--c);border-radius:50%;transform:translate(-50%,-50%);animation:tm-req-ring 1.8s ease-out infinite}
.tm-reqmk b{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:19px;height:19px;border-radius:50%;background:var(--c);color:#0b0d0a;font:800 11px/19px 'Inter';text-align:center;box-shadow:0 0 10px var(--c);font-style:normal}
.tm-reqmk em{position:absolute;left:16px;top:-9px;white-space:nowrap;font:800 10px/1 'JetBrains Mono',monospace;color:#fff;font-style:normal;text-shadow:0 1px 2px #000;background:rgba(11,13,10,.82);border:1px solid var(--c);border-left:3px solid var(--c);padding:3px 7px;border-radius:4px}
.tm-reqmk.act b{background:rgba(11,13,10,.92);color:var(--c);border:2px solid var(--c);line-height:15px}
.tm-reqmk.act .rr{animation:none;opacity:.45}
@keyframes tm-req-ring{0%{width:10px;height:10px;opacity:.85}100%{width:54px;height:54px;opacity:0}}
.tm-reqpop .leaflet-popup-content-wrapper{background:var(--pnl);color:var(--tx);border:1px solid var(--ln);border-radius:11px;box-shadow:0 12px 40px rgba(0,0,0,.6)}
.tm-reqpop .leaflet-popup-tip{background:var(--pnl);border:1px solid var(--ln)}
.tm-reqpop .leaflet-popup-content{margin:13px 15px}
.tm-reqpop a.leaflet-popup-close-button{color:var(--mut);padding:7px 8px 0 0}
.tm-req-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font:800 12px/1 'Inter';letter-spacing:.1em;text-transform:uppercase;color:var(--acc);margin-bottom:11px}
.tm-req-h span{font:600 11px 'JetBrains Mono',monospace;letter-spacing:0;color:var(--mut);text-transform:none}
.tm-req-types{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:10px}
.tm-req-types button{background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);border-radius:7px;padding:9px 6px;font:800 11px/1 'Inter';letter-spacing:.06em;cursor:pointer;transition:border-color .12s,background .12s,color .12s}
.tm-req-types button:hover{border-color:var(--rc)}
.tm-req-types button.on{background:var(--rc);border-color:var(--rc);color:#0b0d0a;box-shadow:0 0 12px -2px var(--rc)}
.tm-req-d{width:100%;box-sizing:border-box;background:var(--bg);border:1px solid var(--ln);color:var(--tx);border-radius:7px;padding:8px 10px;font:500 12px 'Inter';margin-bottom:10px}
.tm-req-d:focus{outline:none;border-color:var(--acc)}
.tm-req-d::placeholder{color:var(--mut)}
.tm-req-a{display:flex;gap:7px}
.tm-req-send{flex:1;background:var(--rc,var(--acc));border:none;color:#0b0d0a;border-radius:7px;padding:10px;font:800 11px/1 'Inter';letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.tm-req-send:disabled{background:var(--pnl2);color:var(--mut);cursor:default}
.tm-req-send.done{flex:0 0 auto;background:none;border:1px solid var(--ln);color:var(--mut)}
.tm-req-send.done:hover{border-color:#ff5656;color:#ff5656}
.tm-req-meta{font:600 11px/1.5 'JetBrains Mono',monospace;color:var(--mut);margin-bottom:11px}
.tm-req-man{width:100%;background:var(--pnl2);border:1px solid var(--ln);color:var(--tx);border-radius:6px;padding:7px 9px;font:700 10px/1 'JetBrains Mono',monospace;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;margin-bottom:9px;text-align:left}
.tm-req-man:hover{border-color:var(--acc);color:var(--acc)}
.tm-req-manbox{max-height:210px;overflow:auto;background:#0c0f09;border:1px solid var(--ln);border-radius:6px;padding:8px 10px;margin:0 0 10px;font:500 10px/1.45 'JetBrains Mono',monospace;color:var(--tx);white-space:pre}
.tm-req-manbox::-webkit-scrollbar{width:9px;height:9px}
.tm-req-manbox::-webkit-scrollbar-thumb{background:var(--ln);border-radius:5px}
.tm-req-manbox::-webkit-scrollbar-thumb:hover{background:var(--acc)}

/* road-route segmented toggles */
.tm-seg{display:flex;background:var(--pnl2);border:1px solid var(--ln);border-radius:6px;overflow:hidden}
.tm-seg button{flex:1;background:none;border:none;color:var(--mut);font:600 11px/1 'Inter';letter-spacing:.05em;text-transform:uppercase;padding:9px 8px;cursor:pointer;border-left:1px solid var(--ln)}
.tm-seg button:first-child{border-left:none}
.tm-seg button.active{background:var(--acc);color:#1a1c14}
