/* Theme tokens: base (dark) */
:root{
  --background:rgba(50, 63, 116, 0.65);
  --app-vh: 1vh;
  --bg-top:#070a14;
  --bg:#0b1020;
  --bg-bottom:#070a14;
  --surface:#0f172a;
  --surface2:#111c35;
  --color-chat:#967f4944;
  --text:#e8eefc;
  --muted:#9aa5bd;
  --input:#224a79;
  --border: rgba(255, 255, 255, 0.1);
  --pill:#1f2a44;
  --good:#42b72a;
  --warn:#fbbf24;
  --panel-shadow: 0 10px 22px rgba(0,0,0,.22);
  --openaip-layer-apt:#22c55e;
  --openaip-layer-nav:#a855f7;
  --openaip-layer-obs:#ef4444;
  --openaip-layer-rpp:#f59e0b;
  --openaip-layer-rwy:#60a5fa;
  --openaip-layer-rwy-our:#22c55e;
  --openaip-layer-rwy-fallback:#60a5fa;
  --openaip-asp-fill-default:#38bdf8;
  --openaip-asp-stroke-default:#38bdf8;
  --map-control-icon: #e8eefc;

  --openaip-asp-stroke-min:0.2;
  --openaip-asp-stroke-max:8;
  --openaip-asp-stroke-zoom-min:7;
  --openaip-asp-stroke-zoom-max:13;
  --openaip-asp-dash-base:4;

  --openaip-asp-label-base:0.1;

  --openaip-asp-fill-0:#cbd5e1;  --openaip-asp-stroke-0:#cbd5e1;  /* Other */
  --openaip-asp-fill-1:#f87171;  --openaip-asp-stroke-1:#f87171;  /* Restricted */
  --openaip-asp-fill-2:#fb923c;  --openaip-asp-stroke-2:#fb923c;  /* Danger */
  --openaip-asp-fill-3:#facc15;  --openaip-asp-stroke-3:#facc15;  /* Prohibited */
  --openaip-asp-fill-4:#818cf8;  --openaip-asp-stroke-4:#818cf8;  /* Controlled Tower Region (CTR) */
  --openaip-asp-fill-5:#2dd4bf;  --openaip-asp-stroke-5:#2dd4bf;  /* Transponder Mandatory Zone (TMZ) */
  --openaip-asp-fill-6:#38bdf8;  --openaip-asp-stroke-6:#38bdf8;  /* Radio Mandatory Zone (RMZ) */
  --openaip-asp-fill-7:#60a5fa;  --openaip-asp-stroke-7:#60a5fa;  /* Terminal Maneuvering Area (TMA) */
  --openaip-asp-fill-8:#a5b4fc;  --openaip-asp-stroke-8:#a5b4fc;  /* Temporary Reserved Area (TRA) */
  --openaip-asp-fill-9:#c4b5fd;  --openaip-asp-stroke-9:#c4b5fd;  /* Temporary Segregated Area (TSA) */
  --openaip-asp-fill-10:#d8b4fe; --openaip-asp-stroke-10:#d8b4fe; /* Flight Information Region (FIR) */
  --openaip-asp-fill-11:#f0abfc; --openaip-asp-stroke-11:#f0abfc; /* Upper Flight Information Region (UIR) */
  --openaip-asp-fill-12:#f9a8d4; --openaip-asp-stroke-12:#f9a8d4; /* Air Defense Identification Zone (ADIZ) */
  --openaip-asp-fill-13:#fca5a5; --openaip-asp-stroke-13:#fca5a5; /* Airport Traffic Zone (ATZ) */
  --openaip-asp-fill-14:#a5b4fc; --openaip-asp-stroke-14:#a5b4fc; /* Military Airport Traffic Zone (MATZ) */
  --openaip-asp-fill-15:#fecaca; --openaip-asp-stroke-15:#fecaca; /* Airway */
  --openaip-asp-fill-16:#bef264; --openaip-asp-stroke-16:#bef264; /* Military Training Route (MTR) */
  --openaip-asp-fill-17:#86efac; --openaip-asp-stroke-17:#86efac; /* Alert Area */
  --openaip-asp-fill-18:#807f4b; --openaip-asp-stroke-18:#8a843b; /* Warning Area */
  --openaip-asp-fill-19:#7dd3fc; --openaip-asp-stroke-19:#7dd3fc; /* Protected Area */
  --openaip-asp-fill-20:#93c5fd; --openaip-asp-stroke-20:#93c5fd; /* Helicopter Traffic Zone (HTZ) */
  --openaip-asp-fill-21:#c7d2fe; --openaip-asp-stroke-21:#c7d2fe; /* Gliding Sector */
  --openaip-asp-fill-22:#e9d5ff; --openaip-asp-stroke-22:#e9d5ff; /* Transponder Setting (TRP) */
  --openaip-asp-fill-23:#e9d5ff; --openaip-asp-stroke-23:#e9d5ff; /* Traffic Information Zone (TIZ) */
  --openaip-asp-fill-24:#f5d0fe; --openaip-asp-stroke-24:#f5d0fe; /* Traffic Information Area (TIA) */
  --openaip-asp-fill-25:#fbcfe8; --openaip-asp-stroke-25:#fbcfe8; /* Military Training Area (MTA) */
  --openaip-asp-fill-26:#fecdd3; --openaip-asp-stroke-26:#fecdd3; /* Control Area (CTA) */
  --openaip-asp-fill-27:#fecaca; --openaip-asp-stroke-27:#fecaca; /* ACC Sector (ACC) */
  --openaip-asp-fill-28:#93c5fd; --openaip-asp-stroke-28:#93c5fd; /* Aerial Sporting Or Recreational Activity */
  --openaip-asp-fill-29:#a7f3d0; --openaip-asp-stroke-29:#a7f3d0; /* Low Altitude Overflight Restriction */
  --openaip-asp-fill-30:#bfdbfe; --openaip-asp-stroke-30:#bfdbfe; /* Military Route (MRT) */
  --openaip-asp-dash-13:2 8; /* ATZ dotted */
  --openaip-asp-dash-14:2 8; /* MATZ dashed */

  --openaip-asp-dash-26:5 10; /* CTA dashed */
  --openaip-asp-dash-4:5 10; /* CTR dashed */
  --openaip-asp-dash-5:5 5; /* TMZ dashed */
  --openaip-asp-dash-6:5 5; /* RMZ dashed */
  --openaip-asp-dash-18:2 8;  /*Warning dashed */
  --openaip-asp-dash-0:20 10; /* Other dashed */

  --leg-overlay-bg: var(--surface);
  --leg-overlay-text: #e8eefc;
  --leg-overlay-border: #e2e8f0;

  --label-colour:#eceb74;
  --label-border:#888888;
  /* Fallback UI tokens (auth pages do not load variables.css) */
  --control-height-md: 40px;
  --control-height-sm: 32px;
  --control-padding-x: 12px;
  --control-font-size: 13px;
  --control-border: rgba(255, 255, 255, 0.18);
  --control-bg: var(--surface2);
  --control-text: var(--text);
  --focus-ring-color: rgba(11, 91, 255, 0.28);
  --btn-bg: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,.04));
  --btn-bg-hover: linear-gradient(180deg, rgba(255,255,255,.22), rgba(255,255,255,.06));
  --btn-border: #3d4c69;
  --btn-ghost-bg: rgba(19, 32, 54, 0.82);
  --btn-ghost-bg-hover: rgba(30, 46, 73, 0.92);
}

/* Theme tokens: light overrides */
:root[data-theme="light"]{
  --background:rgba(218, 218, 218, 0.65);
  --bg-top:#f7f8fb;
  --bg:#eef2f8;
  --bg-bottom:#e6ecf5;
  --surface:#ebebeb;
  --surface2:#f6f8fb;
  --text:#0b1222;
  --muted:#8591aa;
  --input:#fff2cf;
  --border: rgba(10,20,40,.14);
  --pill:#e9eef7;
  --good:#42b72a;
  --warn:#b45309;
  --panel-shadow: 0 10px 22px rgba(10,20,40,.12);
  --map-control-icon: #0f172a;

  --maroon-as:#8b1843;
  --blue-as:#193b63;
  --red-as:rgb(221, 25, 25);

  --openaip-asp-fill-0:#475569;  --openaip-asp-stroke-0:#475569;  /* Other */
  --openaip-asp-fill-1:var(--maroon-as);  --openaip-asp-stroke-1:var(--maroon-as);  /* Restricted */
  --openaip-asp-fill-2:var(--red-as);  --openaip-asp-stroke-2:var(--red-as);  /* Danger */
  --openaip-asp-fill-3:#a16207;  --openaip-asp-stroke-3:#a16207;  /* Prohibited */
  --openaip-asp-fill-4:var(--maroon-as);  --openaip-asp-stroke-4:var(--blue-as);  /* Controlled Tower Region (CTR) */
  --openaip-asp-fill-5:#0f766e;  --openaip-asp-stroke-5:#0f766e;  /* Transponder Mandatory Zone (TMZ) */
  --openaip-asp-fill-6:#0369a1;  --openaip-asp-stroke-6:#0369a1;  /* Radio Mandatory Zone (RMZ) */
  --openaip-asp-fill-7:#579dff;  --openaip-asp-stroke-7:#7b2142;  /* Terminal Maneuvering Area (TMA) */
  --openaip-asp-fill-8:#4338ca;  --openaip-asp-stroke-8:#4338ca;  /* Temporary Reserved Area (TRA) */
  --openaip-asp-fill-9:#6d28d9;  --openaip-asp-stroke-9:#6d28d9;  /* Temporary Segregated Area (TSA) */
  --openaip-asp-fill-10:#7e22ce; --openaip-asp-stroke-10:#7e22ce; /* Flight Information Region (FIR) */
  --openaip-asp-fill-11:#a21caf; --openaip-asp-stroke-11:#a21caf; /* Upper Flight Information Region (UIR) */
  --openaip-asp-fill-12:#be185d; --openaip-asp-stroke-12:#be185d; /* Air Defense Identification Zone (ADIZ) */
  --openaip-asp-fill-13:var(--maroon-as); --openaip-asp-stroke-13:var(--maroon-as); /* Airport Traffic Zone (ATZ) */
  --openaip-asp-fill-14:var(--blue-as); --openaip-asp-stroke-14:var(--blue-as); /* Military Airport Traffic Zone (MATZ) */
  --openaip-asp-fill-15:var(--red-as); --openaip-asp-stroke-15:var(--red-as); /* Airway */
  --openaip-asp-fill-16:#3f6212; --openaip-asp-stroke-16:#3f6212; /* Military Training Route (MTR) */
  --openaip-asp-fill-17:#15803d; --openaip-asp-stroke-17:#15803d; /* Alert Area */
  --openaip-asp-fill-18:#63760f; --openaip-asp-stroke-18:#80a51b; /* Warning Area */
  --openaip-asp-fill-19:#0369a1; --openaip-asp-stroke-19:#0369a1; /* Protected Area */
  --openaip-asp-fill-20:#1e3a8a; --openaip-asp-stroke-20:#1e3a8a; /* Helicopter Traffic Zone (HTZ) */
  --openaip-asp-fill-21:#4338ca; --openaip-asp-stroke-21:#4338ca; /* Gliding Sector */
  --openaip-asp-fill-22:#6d28d9; --openaip-asp-stroke-22:#6d28d9; /* Transponder Setting (TRP) */
  --openaip-asp-fill-23:#7e22ce; --openaip-asp-stroke-23:#7e22ce; /* Traffic Information Zone (TIZ) */
  --openaip-asp-fill-24:#a21caf; --openaip-asp-stroke-24:#a21caf; /* Traffic Information Area (TIA) */
  --openaip-asp-fill-25:#be185d; --openaip-asp-stroke-25:#be185d; /* Military Training Area (MTA) */
  --openaip-asp-fill-26:var(--blue-as); --openaip-asp-stroke-26:var(--blue-as); /* Control Area (CTA) */
  --openaip-asp-fill-27:var(--blue-as); --openaip-asp-stroke-27:var(--red-as); /* ACC Sector (ACC) */
  --openaip-asp-fill-28:#1d4ed8; --openaip-asp-stroke-28:#1d4ed8; /* Aerial Sporting Or Recreational Activity */
  --openaip-asp-fill-29:#047857; --openaip-asp-stroke-29:#047857; /* Low Altitude Overflight Restriction */
  --openaip-asp-fill-30:#1e40af; --openaip-asp-stroke-30:#1e40af; /* Military Route (MRT) */

  --leg-overlay-bg: var(--surface);
  --leg-overlay-text: #0b1222;
  --leg-overlay-border: #0f172a;
  --control-border: rgba(10,20,40,.14);
  --control-bg: #fff2cf;
  --control-text: #152033;
  --focus-ring-color: rgba(11, 91, 255, 0.28);
  --btn-bg: linear-gradient(180deg, #ffffff, #eaf0fa);
  --btn-bg-hover: linear-gradient(180deg, #ffffff, #e2ebf9);
  --btn-border: #bfcde2;
  --btn-ghost-bg: rgba(218, 229, 244, 0.7);
  --btn-ghost-bg-hover: rgba(205, 220, 240, 0.95);
}

/* Base reset */
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  background:linear-gradient(180deg, var(--bg-top), var(--bg) 45%, var(--bg-bottom));
  color:var(--text);
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
}

.app-shell {
  height: 100%;
}

/* Air-Plan overrides */
.logout-form .btn {
  padding: var(--auth-logout-btn-padding, 6px 10px);
}

/* Dashboard shell status row */
.dashboard-shell .status-pills {
  display: flex;
  gap: var(--shell-status-gap, 8px);
  flex-wrap: wrap;
}

.dashboard-shell .shell-status-row {
  padding: 0 var(--page-padding) var(--page-padding);
  display: flex;
  gap: var(--shell-status-gap, 8px);
  flex-wrap: wrap;
  align-items: center;
}

.dashboard-shell .shell-status-row .status-pills {
  margin-top: var(--shell-status-top-offset, 4px);
}

.auth-card {
  max-width: var(--auth-card-max-width, 420px);
  width: var(--auth-card-width, min(420px, calc(100vw - 48px)));
  margin: var(--auth-card-margin, 40px auto);
  background: var(--surface);
  padding: var(--auth-card-padding, 24px);
  border-radius: var(--auth-card-radius, 14px);
  border: 1px solid var(--border, rgba(255, 255, 255, 0.1));
}
.auth-card-hero h1{
  margin: var(--auth-hero-title-margin, 8px 0 4px);
  font-weight: 700;
}
.auth-subtitle{
  margin: var(--auth-subtitle-margin, 0 0 16px);
  color: var(--muted);
}
.auth-brand{
  display:flex;
  align-items:center;
  gap:var(--auth-brand-gap, 10px);
  margin-bottom:var(--auth-brand-margin-bottom, 6px);
}
.auth-logo{
  width:var(--auth-logo-size, 36px);
  height:var(--auth-logo-size, 36px);
  color: var(--auth-logo-color, #0866ff);
  fill: currentColor;
}
.auth-brand-text{
  font-weight:700;
  letter-spacing:var(--auth-brand-tracking, 0.02em);
  font-size:var(--auth-brand-size, 2rem);
}
.auth-card-hero .auth-brand{
  justify-content:center;
  width:var(--auth-full-width, 100%);
}
.auth-card-hero h1,
.auth-card-hero .auth-subtitle,
.auth-card-hero .muted{
  text-align:center;
  color: var(--auth-hero-accent, #4580df);
}
.verify-badge{
  display:inline-flex;
  align-items:center;
  gap:var(--auth-verify-badge-gap, 6px);
  padding:var(--auth-verify-badge-padding, 4px 10px);
  border-radius:var(--auth-pill-radius, 999px);
  background:var(--auth-verify-badge-bg, rgba(8, 102, 255, 0.12));
  color:var(--auth-verify-badge-text, #0a2f6b);
  font-size:var(--auth-verify-badge-size, 12px);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:var(--auth-verify-badge-tracking, 0.08em);
}
.auth-page {
  min-height: var(--auth-page-min-height, 100vh);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--auth-page-padding, 24px);
  position: relative;
  overflow: hidden;
}

.auth-plain {
  --background: rgba(246, 248, 252, 0.75);
  --bg-top: #f4f7fb;
  --bg: #eef2f7;
  --bg-bottom: #e7ecf3;
  --surface: rgba(255, 255, 255, 0.92);
  --surface2: rgba(255, 255, 255, 0.92);
  --text: #0f172a;
  --muted: #4b5563;
  --border: rgba(15, 23, 42, 0.12);
  background: var(--auth-plain-bg, #eef2f7);
  color: var(--text);
}
.auth-video {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
}
.auth-video-media {
  width: var(--auth-full-width, 100%);
  height: var(--auth-full-width, 100%);
  object-fit: cover;
  opacity: 0.9;
  display: block;
  filter: saturate(1.05);
}
.auth-video-overlay {
  position: absolute;
  inset: 0;
  background: transparent;
}
.auth-page .auth-card {
  position: relative;
  z-index: 1;
  backdrop-filter: blur(var(--auth-card-backdrop-blur, 18px));
  box-shadow: var(--auth-card-shadow, 0 20px 60px rgba(15, 23, 42, 0.747));
}
.auth-page .auth-card.auth-card-hero {
  max-width: var(--auth-hero-card-max-width, 560px);
  width: var(--auth-hero-card-width, min(560px, calc(100vw - 48px)));
  padding: var(--auth-hero-card-padding, 28px 30px);
}
@media (max-width: 640px) {
  .auth-page {
    padding: var(--auth-page-padding-mobile, 16px);
  }
  .auth-card {
    width: var(--auth-card-width-mobile, min(420px, calc(100vw - 32px)));
    margin: var(--auth-card-margin-mobile, 16px auto);
    padding: var(--auth-card-padding-mobile, 20px);
  }
  .auth-page .auth-card.auth-card-hero {
    width: var(--auth-hero-card-width-mobile, min(560px, calc(100vw - 32px)));
    padding: var(--auth-hero-card-padding-mobile, 22px 20px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .auth-video-media {
    opacity: 0.8;
  }
}

/* Terms page (plain) */
.terms-page{
  min-height: var(--terms-page-min-height, 100vh);
  background: var(--terms-page-bg, #f7f8fb);
  color: var(--terms-page-text, #0f172a);
  display: flex;
  justify-content: center;
  align-items: flex-start;
  padding: var(--terms-page-padding, 48px 20px);
}
.terms-card{
  width: var(--terms-card-width, min(860px, 96vw));
  background: var(--terms-card-bg, #ffffff);
  border: 1px solid var(--terms-card-border, rgba(15, 23, 42, 0.12));
  border-radius: var(--terms-card-radius, 16px);
  padding: var(--terms-card-padding, 28px);
  box-shadow: var(--terms-card-shadow, 0 12px 40px rgba(15, 23, 42, 0.08));
}
.terms-card h1{
  margin-top: 0;
}
.terms-card h2{
  margin-top: var(--terms-h2-margin-top, 20px);
}
.terms-card p{
  line-height: 1.6;
}
.terms-card ul{
  margin: var(--terms-list-margin, 6px 0 12px 20px);
}

.auth-card label {
  display: block;
  margin-top: var(--auth-label-margin-top, 12px);
  font-size: var(--auth-label-size, 14px);
}

.auth-card input {
  width: var(--auth-full-width, 100%);
  padding: var(--auth-input-padding, 10px);
  margin-top: var(--auth-input-margin-top, 6px);
  border: 1px solid var(--border, rgba(255, 255, 255, 0.1));
  border-radius: var(--auth-input-radius, 8px);
  background: var(--surface2, #111c35);
  color: var(--text, #e8eefc);
}

body.auth-light .auth-card input {
  background: var(--auth-input-bg-light, #ffffff);
  color: var(--auth-input-text-light, #152033);
  border-color: var(--auth-input-border-light, #c6d0e0);
}

.auth-card button {
  margin-top: var(--auth-button-margin-top, 16px);
  width: var(--auth-full-width, 100%);
  padding: var(--auth-button-padding, 10px);
  background: var(--good, #42b72a);
  color: var(--auth-btn-text, #fff);
  border: none;
  border-radius: var(--auth-button-radius, 8px);
  cursor: pointer;
}

.alert {
  background: var(--alert-bg, rgba(255, 80, 80, 0.2));
  padding: var(--alert-padding, 10px);
  border-radius: var(--alert-radius, 8px);
  margin-bottom: var(--alert-margin-bottom, 10px);
}

.muted {
  color: var(--muted, #a9b6d3);
  font-size: var(--muted-size, 13px);
}

.card {
  background: var(--surface);
  padding: var(--card-padding, 16px);
  border-radius: var(--card-radius, 12px);
  border: 1px solid var(--border, rgba(255, 255, 255, 0.1));
}

.user-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--user-pill-gap, 8px);
  padding: var(--user-pill-padding, 4px 8px);
  border-radius: var(--user-pill-radius, 999px);
  background: var(--pill, #1f2a44);
  font-size: var(--user-pill-size, 12px);
}

.user-role {
  opacity: 0.7;
  font-size: var(--user-role-size, 11px);
}

.user-grid {
  display: grid;
  grid-template-columns: var(--user-grid-columns, repeat(auto-fit, minmax(220px, 1fr)));
  gap: var(--user-grid-gap, 12px);
  margin-top: var(--user-grid-margin-top, 12px);
}

.user-card {
  background: var(--surface, #0f172a);
  border: 1px solid var(--border, rgba(255, 255, 255, 0.1));
  border-radius: var(--user-card-radius, 12px);
  padding: var(--user-card-padding, 12px);
  max-width: var(--user-card-max-width, 200px);
}

.user-card-body {
  text-align: center;
}

.user-avatar {
  width: var(--user-avatar-size, 150px);
  height: var(--user-avatar-size, 150px);
  border-radius: var(--user-avatar-radius, 20%);
  background: var(--user-avatar-bg, #1f2a44);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  margin-bottom: var(--user-avatar-margin-bottom, 8px);
  color: var(--user-avatar-text, #ffffff);
}
.user-avatar img {
  width: 100%;
  height: 100%;
  border-radius: var(--user-avatar-radius, 20%);
  object-fit: cover;
  display: block;
}


.user-title {
  font-weight: 600;
}

.user-sub {
  font-size: var(--user-sub-size, 12px);
  color: var(--muted, #a9b6d3);
  margin-bottom: var(--user-sub-margin-bottom, 6px);
}

.user-meta {
  font-size: var(--user-meta-size, 11px);
  color: var(--muted, #a9b6d3);
}
.user-perm-badge{
  display:inline-flex;
  align-items:center;
  gap:var(--user-perm-badge-gap, 6px);
  margin-top:var(--user-perm-badge-margin-top, 6px);
  padding:var(--user-perm-badge-padding, 4px 8px);
  border-radius:var(--user-perm-badge-radius, 999px);
  font-size:var(--user-perm-badge-font-size, 10px);
  font-weight:600;
  color:var(--user-perm-badge-text, #dbe7ff);
  background:var(--user-perm-badge-bg, rgba(90,162,255,.2));
  border:1px solid var(--user-perm-badge-border, rgba(90,162,255,.35));
  cursor:pointer;
}
.user-perm-badge:hover{
  background:var(--user-perm-badge-bg-hover, rgba(90,162,255,.3));
  border-color:var(--user-perm-badge-border-hover, rgba(90,162,255,.55));
}
:root[data-theme="light"] .user-perm-badge{
  color:var(--user-perm-badge-text-light, #1d3b63);
  background:var(--user-perm-badge-bg-light, rgba(90,162,255,.16));
  border:1px solid var(--user-perm-badge-border-light, rgba(90,162,255,.3));
}
:root[data-theme="light"] .user-perm-badge:hover{
  background:var(--user-perm-badge-bg-hover-light, rgba(90,162,255,.22));
  border-color:var(--user-perm-badge-border-hover-light, rgba(90,162,255,.45));
}
.user-filter{
  margin:var(--user-filter-margin, 6px 0 12px);
  gap:var(--user-filter-gap, 8px);
}
.toast-stack{
  position:fixed;
  top:var(--toast-stack-top, 24px);
  left:var(--toast-stack-left, 50%);
  transform:translateX(var(--toast-stack-shift-x, -50%));
  display:flex;
  flex-direction:column;
  gap:var(--toast-stack-gap, 8px);
  z-index:var(--toast-stack-z-index, 9999);
  pointer-events:none;
  width:var(--toast-stack-width, min(420px, 92vw));
}
.toast{
  position:relative;
  background:var(--toast-bg, rgba(16,20,30,.92));
  color:var(--toast-text, #f2f6ff);
  padding:var(--toast-padding, 10px 14px);
  border-radius:var(--toast-radius, 12px);
  border:1px solid var(--toast-border, rgba(255,255,255,.12));
  box-shadow:var(--toast-shadow, 0 12px 30px rgba(0,0,0,.28));
  opacity:var(--toast-opacity-hidden, 0);
  transform:translateY(var(--toast-offset-y, -6px));
  transition:opacity var(--toast-transition-duration, .22s) ease, transform var(--toast-transition-duration, .22s) ease, filter var(--toast-transition-duration, .22s) ease;
  font-size:var(--toast-font-size, 12px);
  pointer-events:auto;
  display:flex;
  align-items:center;
  gap:var(--toast-gap, 8px);
}
.toast .toast-icon{
  font-size:var(--toast-icon-size, 13px);
  opacity:var(--toast-icon-opacity, .9);
}
.toast .toast-text{
  flex:1;
}
.toast .toast-action{
  border:1px solid var(--toast-action-border, rgba(255,255,255,.18));
  background:var(--toast-action-bg, rgba(255,255,255,.1));
  color:inherit;
  border-radius:var(--toast-action-radius, 10px);
  padding:var(--toast-action-padding, 4px 8px);
  font-size:var(--toast-action-font-size, 11px);
  cursor:pointer;
}
.toast .toast-action:hover{
  background:var(--toast-action-bg-hover, rgba(255,255,255,.2));
}
:root[data-theme="light"] .toast .toast-action{
  border-color:var(--toast-action-border-light, rgba(10,20,40,.15));
  background:var(--toast-action-bg-light, rgba(10,20,40,.06));
}
.toast.show{
  opacity:1;
  transform:translateY(var(--toast-offset-y-show, 0));
}
.toast.stale{
  filter:saturate(var(--toast-stale-saturate, .9));
}
.toast.hiding{
  opacity:var(--toast-opacity-hidden, 0);
  transform:translateY(var(--toast-offset-y, -6px));
}
.toast.success{
  background:var(--toast-success-bg, rgba(20,80,40,.8));
  border-color:var(--toast-success-border, rgba(66,183,42,.5));
}
.toast.error{
  background:var(--toast-error-bg, rgba(90,20,30,.8));
  border-color:var(--toast-error-border, rgba(220,70,70,.5));
}
:root[data-theme="light"] .toast{
  background:var(--toast-bg-light, rgba(248,250,255,.8));
  color:var(--toast-text-light, #172235);
  border:1px solid var(--toast-border-light, rgba(12,18,38,.15));
  box-shadow:var(--toast-shadow-light, 0 12px 30px rgba(40,60,90,.18));
}
:root[data-theme="light"] .toast.success{
  background:var(--toast-success-bg-light, rgba(230,250,236,.8));
  border-color:var(--toast-success-border-light, rgba(66,183,42,.4));
}
:root[data-theme="light"] .toast.error{
  background:var(--toast-error-bg-light, rgba(255,235,235,.8));
  border-color:var(--toast-error-border-light, rgba(220,70,70,.4));
}
.input-error{
  border-color: var(--input-error-border, rgba(220,70,70,.6)) !important;
  box-shadow: var(--input-error-shadow, 0 0 0 2px rgba(220,70,70,.12));
}
.field-error{
  margin-left:var(--field-error-margin-left, 170px);
  margin-top:var(--field-error-margin-top, 4px);
  font-size:var(--field-error-font-size, 11px);
  color:var(--field-error-text, rgba(220,70,70,.95));
}

.diag-panel{
  position:fixed;
  right:var(--diag-panel-right, 16px);
  bottom:var(--diag-panel-bottom, 16px);
  width:var(--diag-panel-width, min(320px, 92vw));
  background:var(--diag-panel-bg, rgba(10,16,28,.92));
  color:var(--diag-panel-text, #e6f0ff);
  border:1px solid var(--diag-panel-border, rgba(255,255,255,.12));
  border-radius:var(--diag-panel-radius, 14px);
  padding:var(--diag-panel-padding, 12px);
  z-index:var(--diag-panel-z-index, 9999);
  box-shadow:var(--diag-panel-shadow, 0 18px 40px rgba(0,0,0,.35));
  font-size:var(--diag-panel-font-size, 12px);
}
.diag-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--diag-head-gap, 8px);
  margin-bottom:var(--diag-head-margin-bottom, 8px);
}
.diag-actions{
  display:flex;
  gap:var(--diag-actions-gap, 6px);
}
.diag-btn{
  border:var(--diag-btn-border, none);
  background:var(--diag-btn-bg, rgba(90,162,255,.18));
  color:var(--diag-btn-text, #e6f0ff);
  padding:var(--diag-btn-padding, 4px 8px);
  border-radius:var(--diag-btn-radius, 8px);
  cursor:pointer;
  font-size:var(--diag-btn-font-size, 11px);
}
.diag-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--diag-row-gap, 8px);
  padding:var(--diag-row-padding, 4px 0);
  border-bottom:1px solid var(--diag-row-border, rgba(255,255,255,.06));
}
.diag-row:last-child{
  border-bottom:var(--diag-row-border-last, none);
}
:root[data-theme="light"] .diag-panel{
  background:var(--diag-panel-bg-light, rgba(250,252,255,.98));
  color:var(--diag-panel-text-light, #1c2a44);
  border:1px solid var(--diag-panel-border-light, rgba(12,18,38,.14));
  box-shadow:var(--diag-panel-shadow-light, 0 18px 40px rgba(40,60,90,.18));
}
:root[data-theme="light"] .diag-btn{
  background:var(--diag-btn-bg-light, rgba(90,162,255,.2));
  color:var(--diag-btn-text-light, #1c2a44);
}

.reduce-effects .modal-card,
.reduce-effects .panel,
.reduce-effects .topbar,
.reduce-effects .sidebar,
.reduce-effects .panel-shell,
.reduce-effects .map-panel{
  backdrop-filter:none !important;
  box-shadow: none !important;
}
@media (hover:none) and (pointer:coarse){
  .touch .modal-card,
  .touch .panel,
  .touch .topbar,
  .touch .sidebar,
  .touch .panel-shell,
  .touch .map-panel{
    backdrop-filter:none;
  }
}

.user-card-actions {
  display: grid;
  gap: var(--user-card-actions-gap, 8px);
  margin-top: var(--user-card-actions-margin-top, 10px);
}
.user-toolbar{
  display:flex;
  align-items:center;
  gap:var(--user-toolbar-gap, 10px);
  margin-bottom:var(--user-toolbar-margin-bottom, 8px);
  flex-wrap:wrap;
}
.split-grid{
  display:grid;
  grid-template-columns: var(--split-grid-columns, repeat(2, minmax(0, 1fr)));
  gap:var(--split-grid-gap, 16px);
  align-items:start;
}
@media (max-width: 1100px){
  .split-grid{
    grid-template-columns: var(--split-grid-columns-mobile, 1fr);
  }
}

.perm-grid{
  display:flex;
  flex-direction:column;
  gap:var(--perm-grid-gap, 12px);
}
.perm-role{
  border:1px solid var(--perm-role-border, var(--border));
  border-radius:var(--perm-role-radius, 14px);
  padding:var(--perm-role-padding, 12px);
  background:var(--perm-role-bg, var(--surface2));
}
.perm-role[data-role="owner"]{
  border-color: var(--perm-role-owner-border, rgba(109,164,255,.45));
  box-shadow: var(--perm-role-owner-shadow, 0 8px 18px rgba(109,164,255,.12));
  background: var(--perm-role-owner-bg, rgba(109,164,255,.08));
}
.perm-role[data-role="admin"]{
  border-color: var(--perm-role-admin-border, rgba(251,191,36,.45));
  box-shadow: var(--perm-role-admin-shadow, 0 8px 18px rgba(251,191,36,.12));
  background: var(--perm-role-admin-bg, rgba(251,191,36,.10));
}
.perm-role[data-role="manager"]{
  border-color: var(--perm-role-manager-border, rgba(56,189,248,.45));
  box-shadow: var(--perm-role-manager-shadow, 0 8px 18px rgba(56,189,248,.12));
  background: var(--perm-role-manager-bg, rgba(56,189,248,.10));
}
.perm-role[data-role="member"]{
  border-color: var(--perm-role-member-border, rgba(148,163,184,.45));
  box-shadow: var(--perm-role-member-shadow, 0 8px 18px rgba(148,163,184,.12));
  background: var(--perm-role-member-bg, rgba(148,163,184,.10));
}
.perm-role-title{
  font-weight:var(--perm-role-title-weight, 700);
  margin-bottom:var(--perm-role-title-margin-bottom, 8px);
  text-transform:var(--perm-role-title-transform, capitalize);
}
.perm-role-grid{
  display:grid;
  grid-template-columns: var(--perm-role-grid-columns, repeat(1, minmax(0, 1fr)));
  gap:var(--perm-role-grid-gap, 10px);
}
.perm-catalog{
  display:grid;
  grid-template-columns: var(--perm-catalog-columns, repeat(1, minmax(0, 1fr)));
  gap:var(--perm-catalog-gap, 10px);
}
.perm-item{
  padding:var(--perm-item-padding, 6px 10px);
  border-radius:var(--perm-item-radius, 10px);
  border:1px solid var(--perm-item-border, var(--border));
  background:var(--perm-item-bg, var(--surface2));
  font-size:var(--perm-item-font-size, 12px);
}
.perm-row{
  display:flex;
  flex-direction:column;
  gap:var(--perm-row-gap, 4px);
  padding:var(--perm-row-padding, 8px 10px);
  border-radius:var(--perm-row-radius, 10px);
  border:1px solid var(--perm-row-border, var(--border));
  background:var(--perm-row-bg, rgba(255,255,255,.04));
  min-width:0;
}
.perm-label{
  display:flex;
  flex-direction:column;
  gap:var(--perm-label-gap, 2px);
}
.perm-name{
  font-size:var(--perm-name-size, 12px);
  font-weight:var(--perm-name-weight, 600);
  white-space:normal;
  word-break:break-word;
}
.perm-inherit{
  font-size:var(--perm-inherit-size, 10px);
  color:var(--perm-inherit-text, var(--muted));
}
.perm-override{
  width:100%;
  min-width:0;
}
.perm-savebar{
  position: sticky;
  bottom: var(--perm-savebar-bottom, 12px);
  margin: var(--perm-savebar-margin, 12px var(--page-padding) 0);
  z-index: var(--perm-savebar-z-index, 40);
}
.perm-savebar-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--perm-savebar-inner-gap, 12px);
  padding:var(--perm-savebar-inner-padding, 10px 14px);
  border-radius:var(--perm-savebar-inner-radius, 14px);
  border:1px solid var(--perm-savebar-inner-border, var(--border));
  background:var(--perm-savebar-inner-bg, var(--surface));
  box-shadow: var(--perm-savebar-inner-shadow, var(--shadow-md));
}
.perm-savebar .btn{
  background:var(--perm-savebar-btn-bg, #42b72a);
  border-color:var(--perm-savebar-btn-border, #42b72a);
  color:var(--perm-savebar-btn-text, #ffffff);
  box-shadow: var(--perm-savebar-btn-shadow, 0 8px 16px rgba(66,183,42,.25));
}
.perm-savebar .btn:hover{
  background:var(--perm-savebar-btn-bg-hover, #3aa625);
  border-color:var(--perm-savebar-btn-border-hover, #3aa625);
}
 :root[data-theme="light"] .perm-savebar .btn{
  background:var(--perm-savebar-btn-bg-light, #42b72a);
  border-color:var(--perm-savebar-btn-border-light, #42b72a);
  color:var(--perm-savebar-btn-text-light, #ffffff);
  box-shadow: var(--perm-savebar-btn-shadow-light, 0 8px 16px rgba(66,183,42,.25));
}
 :root[data-theme="light"] .perm-savebar .btn:hover{
  background:var(--perm-savebar-btn-bg-hover-light, #3aa625);
  border-color:var(--perm-savebar-btn-border-hover-light, #3aa625);
}
.perm-savebar-status{
  font-size:var(--perm-savebar-status-size, 12px);
  color:var(--perm-savebar-status-text, var(--muted));
}
.perm-savebar.dirty .perm-savebar-inner{
  border-color: var(--perm-savebar-inner-border-dirty, rgba(56,189,248,.45));
  box-shadow: var(--perm-savebar-inner-shadow-dirty, 0 8px 18px rgba(56,189,248,.18));
}
.perm-group{
  border:1px solid var(--perm-group-border, var(--border));
  border-radius:var(--perm-group-radius, 12px);
  padding:var(--perm-group-padding, 8px);
  background:var(--perm-group-bg, rgba(255,255,255,.04));
}
.perm-group-title{
  font-size:var(--perm-group-title-size, 11px);
  font-weight:var(--perm-group-title-weight, 700);
  text-transform:var(--perm-group-title-transform, uppercase);
  letter-spacing:var(--perm-group-title-tracking, .06em);
  color:var(--perm-group-title-text, var(--muted));
  margin-bottom:var(--perm-group-title-margin-bottom, 6px);
}
.perm-group-grid{
  display:grid;
  grid-template-columns: var(--perm-group-grid-columns, 1fr);
  gap:var(--perm-group-grid-gap, 8px);
}
@media (min-width: 700px){
  .perm-group-grid{
    grid-template-columns: var(--perm-group-grid-columns-sm, repeat(2, minmax(0, 1fr)));
  }
}
@media (min-width: 980px){
  .perm-group-grid{
    grid-template-columns: var(--perm-group-grid-columns-md, repeat(3, minmax(0, 1fr)));
  }
}
@media (min-width: 1300px){
  .perm-group-grid{
    grid-template-columns: var(--perm-group-grid-columns-lg, repeat(4, minmax(0, 1fr)));
  }
}

.modal-card .perm-grid{
  max-height: var(--modal-perm-grid-max-height, 60vh);
  overflow:auto;
  padding-right:var(--modal-perm-grid-padding-right, 6px);
}

.modal-card.modal-card-wide{
  width: var(--modal-card-width-xl);
}

.profile-page .profile-head{
  align-items:flex-start;
}
.profile-style-tabs .profile-topline{
  display:grid;
  grid-template-columns: var(--profile-tabs-topline-columns, auto 1fr auto);
  gap:var(--profile-tabs-topline-gap, 16px);
  align-items:center;
  padding:var(--profile-tabs-topline-padding, 12px);
  border:1px solid var(--profile-tabs-topline-border, var(--border));
  border-radius:var(--profile-tabs-topline-radius, 16px);
  background: var(--profile-tabs-topline-bg, var(--surface));
}
.profile-style-tabs .profile-top-left{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--profile-tabs-top-left-gap, 8px);
}
.profile-style-tabs .profile-top-center{
  display:flex;
  flex-direction:column;
  gap:var(--profile-tabs-top-center-gap, 6px);
}
.profile-style-tabs .profile-top-actions{
  display:flex;
  align-items:center;
}
.profile-style-tabs .profile-top-actions .btn{
  width:100%;
}
.profile-style-tabs .profile-tabs-layout{
  margin-top:var(--profile-tabs-layout-margin-top, 12px);
  display:grid;
  grid-template-columns: var(--profile-tabs-layout-columns, 180px 1fr);
  gap:var(--profile-tabs-layout-gap, 12px);
}
.profile-style-tabs .profile-tabs{
  display:flex;
  flex-direction:column;
  gap:var(--profile-tabs-list-gap, 8px);
}
.profile-style-tabs .tab-link{
  text-decoration:none;
  padding:var(--profile-tab-link-padding, 10px 12px);
  border-radius:var(--profile-tab-link-radius, 12px);
  border:1px solid var(--profile-tab-link-border, var(--border));
  background: var(--profile-tab-link-bg, var(--color-elevated));
  color: var(--profile-tab-link-text, var(--color-text));
  font-weight:var(--profile-tab-link-weight, 600);
  font-size:var(--profile-tab-link-size, 12px);
}
.profile-style-tabs .tab-link:hover{
  background: var(--profile-tab-link-bg-hover, var(--color-primary-soft));
}
.profile-style-tabs .profile-tabs-content{
  display:flex;
  flex-direction:column;
  gap:var(--profile-tabs-content-gap, 12px);
}
.profile-style-tabs .profile-block{
  padding:var(--profile-block-padding, 14px);
}
.profile-style-tabs .change-avatar-btn{
  margin: var(--profile-change-avatar-btn-margin, 0);
  width:100%;
}








.profile-style-stack .profile-stack{
  display:grid;
  gap:var(--profile-stack-gap, 12px);
  margin-top:var(--profile-stack-margin-top, 12px);
}
.profile-style-stack .profile-stack-identity{
  display:grid;
  grid-template-columns: var(--profile-stack-identity-columns, auto 1fr auto);
  gap:var(--profile-stack-identity-gap, 16px);
  align-items:center;
  padding:var(--profile-stack-identity-padding, 16px);
  background: var(--profile-stack-identity-bg, var(--surface));
}
.profile-style-stack .profile-stack-avatar{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--profile-stack-avatar-gap, 8px);
}
.profile-style-stack .profile-stack-details{
  display:flex;
  flex-direction:column;
  gap:var(--profile-stack-details-gap, 6px);
}
.profile-style-stack .profile-stack-actions{
  display:flex;
  align-items:center;
}
.profile-style-stack .profile-stack-actions .btn{
  width:100%;
}
.profile-style-stack .profile-stack-section{
  padding:var(--profile-stack-section-padding, 14px);
}
.profile-style-stack .row3{
  display:grid;
  grid-template-columns: var(--profile-stack-row3-columns, repeat(3, minmax(0, 1fr)));
  gap:var(--profile-stack-row3-gap, 12px);
}
.profile-style-accordion .profile-accordion-hero{
  display:grid;
  grid-template-columns: var(--profile-accordion-hero-columns, auto 1fr auto);
  gap:var(--profile-accordion-hero-gap, 16px);
  align-items:center;
  padding:var(--profile-accordion-hero-padding, 12px);
  border:1px solid var(--profile-accordion-hero-border, var(--border));
  border-radius:var(--profile-accordion-hero-radius, 16px);
  background: var(--profile-accordion-hero-bg, var(--surface));
}
.profile-style-accordion .profile-accordion-left{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--profile-accordion-left-gap, 8px);
}
.profile-style-accordion .profile-accordion-center{
  display:flex;
  flex-direction:column;
  gap:var(--profile-accordion-center-gap, 6px);
}
.profile-style-accordion .profile-accordion-actions{
  display:flex;
  align-items:center;
}
.profile-style-accordion .profile-accordion-actions .btn{
  width:100%;
}
.profile-style-accordion .profile-accordion{
  margin-top:var(--profile-accordion-margin-top, 12px);
  display:flex;
  flex-direction:column;
  gap:var(--profile-accordion-gap, 10px);
}
.profile-style-accordion .profile-accordion-item{
  border:1px solid var(--profile-accordion-item-border, var(--border));
  border-radius:var(--profile-accordion-item-radius, 14px);
  background: var(--profile-accordion-item-bg, var(--color-elevated));
  padding:0;
  overflow:hidden;
}
.profile-style-accordion .profile-accordion-item > summary{
  list-style:none;
  padding:var(--profile-accordion-summary-padding, 12px 16px);
  cursor:pointer;
  font-weight:var(--profile-accordion-summary-weight, 700);
}
.profile-style-accordion .profile-accordion-item > summary::-webkit-details-marker{
  display:none;
}
.profile-style-accordion .profile-accordion-item[open] > summary{
  border-bottom:1px solid var(--profile-accordion-summary-border-open, var(--border));
}
.profile-style-accordion .section-body{
  padding:var(--profile-accordion-section-body-padding, 14px 16px 16px);
  display:flex;
  flex-direction:column;
  gap:var(--profile-accordion-section-body-gap, 10px);
  max-height: var(--profile-accordion-section-body-max-height-closed, 0);
  opacity: 0;
  transition: max-height var(--profile-accordion-max-height-duration, 0.35s) ease, opacity var(--profile-accordion-opacity-duration, 0.25s) ease;
}
.profile-style-accordion .profile-accordion-item[open] .section-body{
  max-height: var(--profile-accordion-section-body-max-height-open, 900px);
  opacity: 1;
}
.profile-style-accordion .change-avatar-btn{
  margin:var(--profile-change-avatar-btn-margin, 0);
  width:100%;
}
.profile-style-exec .profile-layout{
  display:grid;
  grid-template-columns: var(--profile-exec-layout-columns, minmax(240px, 280px) minmax(0, 1fr));
  gap:var(--profile-exec-layout-gap, 16px);
  margin-top:var(--profile-exec-layout-margin-top, 12px);
}
.profile-style-exec .profile-side{
  position:sticky;
  top: var(--profile-exec-side-top, calc(var(--topbar-height) + 24px));
  height: fit-content;
  padding:var(--profile-exec-side-padding, 16px);
}
.profile-style-exec .profile-side .user-avatar{
  width:var(--profile-exec-avatar-size, 96px);
  height:var(--profile-exec-avatar-size, 96px);
  margin: var(--profile-exec-avatar-margin, 0 auto 8px);
}
.profile-style-exec .profile-side .user-card-body{
  text-align:center;
}
.profile-style-exec .profile-side .user-title{
  font-size:var(--profile-exec-user-title-size, 1rem);
}
.profile-style-exec .profile-side .user-sub{
  font-size:var(--profile-exec-user-sub-size, 0.8rem);
}
.profile-style-exec .profile-meta-list{
  display:grid;
  gap:var(--profile-exec-meta-list-gap, 8px);
  margin:var(--profile-exec-meta-list-margin, 12px 0 16px);
}
.profile-style-exec .profile-meta-list div{
  display:flex;
  justify-content:space-between;
  gap:var(--profile-exec-meta-item-gap, 12px);
  font-size:var(--profile-exec-meta-item-size, 12px);
}
.profile-style-exec .profile-main{
  display:grid;
  gap:var(--profile-exec-main-gap, 12px);
}
.profile-style-exec .profile-block{
  padding:var(--profile-block-padding, 14px);
}
.profile-style-legacy .profile-grid{
  display:grid;
  grid-template-columns: var(--profile-legacy-grid-columns, repeat(3, minmax(0, 300px)));
  gap:var(--profile-legacy-grid-gap, 12px);
  margin-top:var(--profile-legacy-grid-margin-top, 8px);
}
.profile-style-legacy .profile-summary{
  /*position:sticky;*/
  top: var(--profile-legacy-summary-top, calc(var(--topbar-height) + 24px));
  height: fit-content;
  max-width: var(--profile-legacy-summary-max-width, 300px);
}
.profile-style-legacy .profile-summary .btn{
  width: var(--profile-summary-btn-width, 100%);
}
.profile-style-legacy .profile-form{
  grid-column: var(--profile-legacy-form-grid-column, span 2);
}
.profile-style-legacy .profile-form-grid{
  display:grid;
  grid-template-columns: var(--profile-legacy-form-grid-columns, 1fr);
  gap:var(--profile-legacy-form-grid-gap, 10px);
}
.profile-style-legacy .profile-form .form-section{
  border-bottom:1px solid var(--profile-form-section-border, var(--border));
  padding-bottom:var(--profile-form-section-padding-bottom, 10px);
  margin-bottom:var(--profile-form-section-margin-bottom, 10px);
}

.form-section{
  border-bottom:1px solid var(--profile-form-section-border, var(--border));
  padding-bottom:var(--profile-form-section-padding-bottom, 10px);
  margin-bottom:var(--profile-form-section-margin-bottom, 10px);
}

.profile-style-legacy .profile-form .form-section:last-of-type{
  border-bottom:none;
  margin-bottom:0;
  padding-bottom:0;
}
.profile-style-legacy .form-section label:not(.row){
  display:var(--profile-legacy-label-display, inline-block);
  width:var(--profile-legacy-label-width, 160px);
  margin:var(--profile-legacy-label-margin, 6px 0);
  text-align:var(--profile-legacy-label-align, right);
  padding-right:var(--profile-legacy-label-padding-right, 10px);
}
.profile-style-legacy .form-section label:not(.row) + input,
.profile-style-legacy .form-section label:not(.row) + select{
  display:var(--profile-legacy-input-display, inline-block);
  width:var(--profile-legacy-input-width, calc(100% - 170px));
  vertical-align:middle;
  margin-bottom:var(--profile-legacy-input-margin-bottom, 10px);
}
.profile-style-legacy .field-row{
  display:var(--profile-legacy-field-row-display, block);
  margin:var(--profile-legacy-field-row-margin, 6px 0 10px);
  font-size:var(--profile-legacy-field-row-size, 12px);
}
.profile-style-legacy .field-row label{
  display:var(--profile-legacy-label-display, inline-block);
  width:var(--profile-legacy-label-width, 160px);
  margin:var(--profile-legacy-label-margin, 6px 0);
  text-align:var(--profile-legacy-label-align, right);
  padding-right:var(--profile-legacy-label-padding-right, 10px);
  font-size:var(--profile-legacy-field-label-size, 16px);
}
.profile-style-legacy .field-row .input{
  display:var(--profile-legacy-input-display, inline-block);
  width:var(--profile-legacy-input-width, calc(100% - 170px));
  vertical-align:middle;
}
@media (max-width: 900px){
  .profile-style-legacy .field-row label{
    font-size:var(--profile-legacy-field-label-size-mobile, 14px);
  }
}
details.section .field-row label{
  width:var(--profile-legacy-label-width, 160px);
  text-align:var(--profile-legacy-label-align, right);
  padding-right:var(--profile-legacy-label-padding-right, 10px);
}
.profile-style-legacy .form-section .row2 > div{
  display:var(--profile-legacy-row2-cell-display, block);
}
.profile-style-legacy .form-section .row2 label:not(.row){
  width:var(--profile-legacy-label-width, 160px);
  text-align:var(--profile-legacy-label-align, right);
  padding-right:var(--profile-legacy-label-padding-right, 10px);
}
.profile-style-legacy .form-section .row2 label:not(.row) + input,
.profile-style-legacy .form-section .row2 label:not(.row) + select{
  width:var(--profile-legacy-input-width, calc(100% - 170px));
}
.profile-style-legacy .profile-meta{
  display:grid;
  gap:var(--profile-legacy-meta-gap, 6px);
  margin-top:var(--profile-legacy-meta-margin-top, 10px);
}
.profile-style-legacy .profile-meta div{
  display:flex;
  justify-content:space-between;
  gap:var(--profile-legacy-meta-item-gap, 12px);
  font-size:var(--profile-legacy-meta-item-size, 12px);
}
.profile-hero{
  display:grid;
  grid-template-columns: var(--profile-hero-columns, auto 1fr auto);
  gap:var(--profile-hero-gap, 16px);
  align-items:center;
  padding: var(--profile-hero-padding, 12px);
  border:1px solid var(--profile-hero-border, var(--border));
  border-radius:var(--profile-hero-radius, 16px);
  background: var(--profile-hero-bg, var(--surface));
}
.profile-hero-left{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--profile-hero-left-gap, 8px);
}
.profile-hero-center{
  display:flex;
  flex-direction:column;
  gap:var(--profile-hero-center-gap, 6px);
}
.profile-hero-meta{
  display:flex;
  flex-wrap:wrap;
  gap:var(--profile-hero-meta-gap, 10px);
  font-size:var(--profile-hero-meta-size, 12px);
  color: var(--profile-hero-meta-text, var(--muted));
}
.profile-hero-actions{
  display:flex;
  align-items:center;
}
.profile-hero-actions .btn{
  width:var(--profile-summary-btn-width, 100%);
}
.profile-style-exec .change-avatar-btn{
  margin: var(--profile-exec-change-avatar-btn-margin, 8px 0 12px);
  width:100%;
}
.profile-tiles{
  margin-top:var(--profile-tiles-margin-top, 12px);
  display:grid;
  grid-template-columns: var(--profile-tiles-columns, repeat(auto-fit, minmax(260px, 1fr)));
  gap:var(--profile-tiles-gap, 12px);
}
.profile-tile{
  padding:var(--profile-tile-padding, 14px);
}
.profile-avatar-input{
  display:none;
}
.change-avatar-btn{
  margin: var(--profile-change-avatar-btn-margin, 0);
  text-align:var(--profile-change-avatar-btn-align, center);
  display:inline-flex;
  justify-content:center;
  white-space: var(--profile-change-avatar-btn-white-space, nowrap);
  width: var(--profile-summary-btn-width, 100%);
}
.profile-tiles .section-title{
  margin-bottom:var(--profile-tiles-section-title-margin-bottom, 10px);
}
.profile-form .form-section{
  border-bottom:var(--profile-form-section-border-reset, none);
  padding-bottom:var(--profile-form-section-padding-reset, 0);
  margin-bottom:var(--profile-form-section-margin-reset, 0);
}
.profile-form .form-section:last-of-type{
  border-bottom:var(--profile-form-section-border-reset, none);
  margin-bottom:var(--profile-form-section-margin-reset, 0);
  padding-bottom:var(--profile-form-section-padding-reset, 0);
}

@media (max-width: 900px){
  .profile-hero{
    grid-template-columns: var(--profile-hero-columns-mobile, 1fr);
    text-align:var(--profile-mobile-text-align, center);
  }
  .profile-hero-actions{
    width:var(--profile-summary-btn-width, 100%);
  }
  .profile-style-tabs .profile-topline{
    grid-template-columns: var(--profile-topline-columns-mobile, 1fr);
    text-align:var(--profile-mobile-text-align, center);
  }
  .profile-style-tabs .profile-tabs-layout{
    grid-template-columns: var(--profile-tabs-layout-columns-mobile, 1fr);
  }
  .profile-style-exec .profile-layout{
    grid-template-columns: var(--profile-exec-layout-columns-mobile, 1fr);
  }
  .profile-style-exec .profile-side{
    position:var(--profile-exec-side-position-mobile, static);
  }
  .profile-style-min .profile-strip{
    grid-template-columns: var(--profile-min-strip-columns-mobile, 1fr);
    text-align:var(--profile-mobile-text-align, center);
  }
  .profile-style-min .profile-strip-actions{
    width:var(--profile-summary-btn-width, 100%);
  }
  .profile-style-stack .profile-stack-identity{
    grid-template-columns: var(--profile-stack-identity-columns-mobile, 1fr);
    text-align:var(--profile-mobile-text-align, center);
  }
  .profile-style-stack .profile-stack-actions{
    width:var(--profile-summary-btn-width, 100%);
  }
  .profile-style-stack .row3{
    grid-template-columns: var(--profile-stack-row3-columns-mobile, 1fr);
  }
  .profile-style-accordion .profile-accordion-hero{
    grid-template-columns: var(--profile-accordion-hero-columns-mobile, 1fr);
    text-align:var(--profile-mobile-text-align, center);
  }
  .profile-style-accordion .profile-accordion-actions{
    width:var(--profile-summary-btn-width, 100%);
  }
  .profile-style-legacy .profile-grid{
    grid-template-columns: var(--profile-legacy-grid-columns-mobile, 1fr);
  }
  .profile-style-legacy .profile-summary{
    position:var(--profile-legacy-summary-position-mobile, static);
    max-width: var(--profile-legacy-summary-max-width-mobile, none);
  }
  .profile-style-legacy .profile-form{
    grid-column: var(--profile-legacy-form-grid-column-mobile, auto);
  }
  .profile-style-legacy .profile-form-grid{
    grid-template-columns: var(--profile-legacy-form-grid-columns-mobile, 1fr);
  }
}
.profile-style-min .profile-strip{
  display:grid;
  grid-template-columns: var(--profile-min-strip-columns, auto 1fr auto);
  gap:var(--profile-min-strip-gap, 16px);
  align-items:center;
  padding:var(--profile-min-strip-padding, 12px);
  border:1px solid var(--profile-min-strip-border, var(--border));
  border-radius:var(--profile-min-strip-radius, 16px);
  background: var(--profile-min-strip-bg, var(--surface));
}
.profile-style-min .profile-strip-left{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--profile-min-strip-left-gap, 8px);
}
.profile-style-min .profile-strip-center{
  display:flex;
  flex-direction:column;
  gap:var(--profile-min-strip-center-gap, 6px);
}
.profile-style-min .profile-strip-actions{
  display:flex;
  align-items:center;
}
.profile-style-min .profile-strip-actions .btn{
  width:var(--profile-summary-btn-width, 100%);
}
.profile-style-min .profile-min-grid{
  margin-top:var(--profile-min-grid-margin-top, 12px);
  display:grid;
  grid-template-columns: var(--profile-min-grid-columns, repeat(auto-fit, minmax(280px, 1fr)));
  gap:var(--profile-min-grid-gap, 12px);
}
.profile-style-min .profile-min-section{
  padding:var(--profile-min-section-padding, 14px);
}
.profile-style-min .change-avatar-btn{
  margin: var(--profile-change-avatar-btn-margin, 0);
  width:100%;
}
@media (max-width: 900px){
  .profile-style-min .profile-strip{
    grid-template-columns: var(--profile-min-strip-columns-mobile, 1fr);
    text-align:var(--profile-mobile-text-align, center);
  }
  .profile-style-min .profile-strip-actions{
    width:var(--profile-summary-btn-width, 100%);
  }
}

/* Pilot map UI */
.pilot-shell {
  height: var(--pilot-shell-height, 100vh);
  width: var(--pilot-shell-width, 100vw);
  overflow: hidden;
  position: relative;
}

.pilot-hud {
  position: absolute;
  top: var(--pilot-hud-top, 12px);
  left: var(--pilot-hud-left, 12px);
  right: var(--pilot-hud-right, 12px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--pilot-hud-gap, 8px);
  z-index: var(--pilot-hud-z-index, 20);
  pointer-events: none;
}

.pilot-hud .hud-btn,
.pilot-hud .hud-status {
  pointer-events: auto;
}

.hud-btn {
  border: 1px solid var(--border, rgba(255, 255, 255, 0.1));
  background: var(--surface, #0f172a);
  color: var(--text, #e8eefc);
  padding: var(--pilot-hud-btn-padding, 10px 12px);
  border-radius: var(--pilot-hud-btn-radius, 10px);
  font-size: var(--pilot-hud-btn-font-size, 16px);
}

.hud-status {
  background: var(--pill, #1f2a44);
  color: var(--text, #e8eefc);
  padding: var(--pilot-hud-status-padding, 8px 12px);
  border-radius: var(--pilot-hud-status-radius, 999px);
  font-size: var(--pilot-hud-status-font-size, 12px);
}

.pilot-sheet {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  background: var(--surface2, #111c35);
  color: var(--text, #e8eefc);
  border-top-left-radius: var(--pilot-sheet-radius, 18px);
  border-top-right-radius: var(--pilot-sheet-radius, 18px);
  transform: translateY(var(--pilot-sheet-closed-shift, 80%));
  transition: transform var(--pilot-sheet-transition-duration, 0.25s) ease;
  z-index: var(--pilot-sheet-z-index, 15);
  padding: var(--pilot-sheet-padding, 12px 16px 24px);
  max-height: var(--pilot-sheet-max-height, 70vh);
  overflow: auto;
}

.pilot-sheet.open {
  transform: translateY(var(--pilot-sheet-open-shift, 0));
}

.sheet-handle {
  width: var(--pilot-sheet-handle-width, 42px);
  height: var(--pilot-sheet-handle-height, 5px);
  background: var(--pilot-sheet-handle-bg, rgba(255, 255, 255, 0.2));
  border-radius: var(--pilot-sheet-handle-radius, 999px);
  margin: var(--pilot-sheet-handle-margin, 6px auto 10px);
}

.sheet-section {
  margin-bottom: var(--pilot-sheet-section-margin-bottom, 14px);
}

.sheet-title {
  font-weight: var(--pilot-sheet-title-weight, 600);
  margin-bottom: var(--pilot-sheet-title-margin-bottom, 8px);
}

/* Moving map layout */
body.fullpage-map .map-page.content-card{
  padding:0;
  overflow:hidden;
  border-radius:0;
  border:0;
  box-shadow:none;
  height: calc(var(--app-vh, 1vh) * 100);
  min-height: calc(var(--app-vh, 1vh) * 100);
}


.map-page .panel-toggle-icon:focus{outline:var(--map-panel-toggle-focus-outline, 2px solid rgba(56,189,248,.5)); outline-offset:var(--map-panel-toggle-focus-offset, 2px)}
.map-page .panel-toggle-icon.map-nav-home{
  font-size: var(--map-nav-home-font-size, 18px);
  font-weight: var(--map-nav-home-font-weight, 700);
  top: var(--map-nav-home-top, 56px) !important;
}

.pill{
  background:var(--pill);
  border:1px solid var(--border);
  padding:var(--pill-padding, 8px 10px);
  border-radius:var(--map-compass-needle-radius, 999px);
  font-size:var(--font-size-sm, 12px);
  color:var(--muted);
  max-width: var(--pill-max-width, 520px);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pill.live { background: var(--pill-live-bg, #1f7a4d); color: var(--pill-live-text, #ffffff); }
.pill.cached { background: var(--pill-cached-bg, #7a5a1f); color: var(--pill-cached-text, #ffffff); }
.pill.stale { background: var(--pill-stale-bg, #7a2b1f); color: var(--pill-stale-text, #ffffff); }
.pill.offline { background: var(--pill-offline-bg, #2f3a55); color: var(--pill-offline-text, var(--muted)); }

/* Buttons */
.btn{
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  border:1px solid var(--btn-border);
  background: var(--btn-bg);
  color:var(--control-text);
  min-height: var(--control-height-md);
  padding: 0 var(--control-padding-x);
  border-radius:var(--btn-radius);
  font-size: var(--control-font-size);
  font-weight:600;
  cursor:pointer;
  box-shadow: var(--btn-shadow, 0 4px 12px rgba(10,20,40,.12));
  transition: transform var(--btn-transform-duration, .08s) ease, box-shadow var(--btn-shadow-duration, .12s) ease, background var(--btn-bg-duration, .2s) ease, border-color var(--btn-border-duration, .2s) ease, color var(--btn-color-duration, .2s) ease;
  position:relative;
}
.btn.block{
  width:100%;
  display:flex;
  justify-content:center;
}
.btn:hover{
  transform: translateY(var(--btn-hover-shift-y, -1px));
  background: var(--btn-bg-hover);
  border-color: color-mix(in srgb, var(--btn-border) 72%, var(--color-primary) 28%);
  box-shadow: var(--btn-shadow-hover, 0 8px 18px rgba(10,20,40,.16));
}
.btn:disabled{opacity:.6; cursor:not-allowed}
.btn:active{
  transform: translateY(var(--btn-active-shift-y, 0));
  box-shadow: var(--btn-shadow-active, 0 4px 10px rgba(10,20,40,.14));
}
.btn-ghost{
  background: var(--btn-ghost-bg);
  min-height: var(--control-height-sm);
  padding: var(--btn-ghost-padding, 0 12px);
  font-size:var(--btn-ghost-font-size, 12px);
  border-color: color-mix(in srgb, var(--btn-border) 80%, transparent 20%);
}
.btn-ghost:hover{
  background: var(--btn-ghost-bg-hover);
}

/* Scrollbars */
*{
  scrollbar-width: thin;
  scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}
*::-webkit-scrollbar{
  width:var(--scrollbar-size, 10px);
  height:var(--scrollbar-size, 10px);
}
*::-webkit-scrollbar-track{
  background: var(--scrollbar-track);
  border-radius:var(--scrollbar-radius, 10px);
}
*::-webkit-scrollbar-thumb{
  background: var(--scrollbar-thumb);
  border-radius:var(--scrollbar-radius, 10px);
  border:var(--scrollbar-thumb-border-width, 2px) solid var(--scrollbar-track);
}
*::-webkit-scrollbar-thumb:hover{
  background: var(--scrollbar-thumb-hover);
}
:root[data-theme="light"] *{
  scrollbar-color: var(--scrollbar-thumb-light) var(--scrollbar-track-light);
}
:root[data-theme="light"] *::-webkit-scrollbar-track{
  background: var(--scrollbar-track-light);
}
:root[data-theme="light"] *::-webkit-scrollbar-thumb{
  background: var(--scrollbar-thumb-light);
  border:var(--scrollbar-thumb-border-width, 2px) solid var(--scrollbar-track-light);
}
:root[data-theme="light"] *::-webkit-scrollbar-thumb:hover{
  background: var(--scrollbar-thumb-hover-light);
}

/* Modals */
.modal{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  z-index:900;
}
.modal.open{ display:flex; }
.modal-backdrop{
  position:absolute;
  inset:0;
  background:var(--modal-backdrop);
}
.modal-card{
  position:relative;
  z-index:1;
  width:var(--modal-card-width);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--modal-card-radius);
  box-shadow: var(--modal-card-shadow);
}

.orgs-page{
  padding:var(--orgs-page-padding, 16px);
}
.orgs-hero{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:var(--orgs-hero-gap, 12px);
  margin-bottom:var(--orgs-hero-margin-bottom, 12px);
}
.orgs-toolbar{
  display:flex;
  gap:var(--orgs-toolbar-gap, 10px);
  align-items:center;
  margin-bottom:var(--poi-section-margin-bottom, 10px);
  flex-wrap:wrap;
}
.pagination{
  display:flex;
  gap:var(--poi-section-body-gap, 8px);
  align-items:center;
  margin-top:var(--pagination-margin-top, 10px);
}


:root[data-theme="light"] .map-page .panel-toggle-icon{
  background:var(--map-panel-toggle-bg-light, rgba(255,255,255,.9));
  box-shadow: var(--map-panel-toggle-shadow-light, inset 0 1px 0 rgba(255,255,255,.8));
}
:root[data-theme="light"] .map-page .panel-toggle-icon:hover{
  background:var(--map-panel-toggle-bg-hover-light, rgba(245,248,255,1));
}

:root[data-theme="light"] .btn{
  background: var(--btn-bg);
  box-shadow: var(--btn-shadow-light, 0 6px 14px rgba(10,20,40,.12));
}
:root[data-theme="light"] .btn:hover{
  background: var(--btn-bg-hover);
}
:root[data-theme="light"] .btn-ghost{
  background: var(--btn-ghost-bg);
  box-shadow: none;
}

.maplibregl-ctrl-top-left,
.maplibregl-ctrl-top-right,
.maplibregl-ctrl-bottom-left,
.maplibregl-ctrl-bottom-right{
  z-index:500;
}
.maplibregl-ctrl-group{
  background: var(--surface);
  border:1px solid var(--border);
  border-radius:var(--maplibre-ctrl-group-radius, 12px);
  box-shadow: var(--maplibre-ctrl-group-shadow, 0 10px 22px rgba(0,0,0,.25));
  overflow:hidden;
}
.maplibregl-ctrl-group button{
  width:var(--maplibre-ctrl-btn-size, 34px);
  height:var(--maplibre-ctrl-btn-size, 34px);
  background: transparent;
  color: var(--text);
}
.maplibregl-ctrl-group button + button{
  border-top:1px solid var(--border);
}
.maplibregl-ctrl-group button:hover{
  background: var(--pill);
}
.maplibregl-ctrl-group button:focus-visible{
  outline:var(--map-panel-toggle-focus-outline, 2px solid rgba(56,189,248,.5));
  outline-offset:var(--maplibre-ctrl-focus-offset, -2px);
}
.maplibregl-ctrl-scale{
  background: var(--surface);
  color: var(--text);
  border:1px solid var(--border);
  border-radius:var(--maplibre-scale-radius, 4px);
  padding:var(--maplibre-scale-padding, 4px 8px);
  font-size:var(--maplibre-scale-font-size, 11px);
  box-shadow: var(--maplibre-scale-shadow, 0 10px 20px rgba(0,0,0,.2));
}
.maplibregl-popup-content{
  background:var(--surface);
  color:var(--text);
  border:1px solid var(--border);
  border-radius:var(--maplibre-popup-radius, 12px);
  box-shadow:var(--maplibre-popup-shadow, 0 12px 24px rgba(0,0,0,.35));
  padding:var(--maplibre-popup-padding, 10px 12px);
  font-size:var(--maplibre-popup-font-size, 12px);
}
.maplibregl-popup-tip{
  border-top-color:var(--surface);
}
.maplibregl-popup-close-button{
  color:var(--muted);
}
/* Ops map layout */
.map-page .layout{
  display:grid;
  grid-template-columns: 1fr;
  grid-template-rows: minmax(0, 1fr);
  gap:var(--map-layout-gap, 12px);
  padding:0;
  height: 100%;
  min-height: 0;
}

.map-page.content-card{
  background: var(--color-elevated);
  box-shadow: var(--shadow-md);
  border: 1px solid var(--color-border);
  border-radius: 0;
  padding:0;
  height: calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - (var(--page-padding) * 2));
  min-height: calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - (var(--page-padding) * 2));
}

/* When inside the dashboard shell, size the map layout against the viewport minus shell padding. */
.dashboard-shell .map-page{
  height: calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - (var(--page-padding) * 2));
  min-height: calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - (var(--page-padding) * 2));
}
.dashboard-shell .map-page .layout{
  height: calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - (var(--page-padding) * 2));
  min-height: calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - (var(--page-padding) * 2));
}

.map-page .left{
  position:fixed;
  top:var(--map-left-top, 12px);
  left:var(--map-left-left, 12px);
  width:var(--map-left-width, var(--route-panel-width, min(360px, 92vw)));
  height:var(--map-left-height, var(--route-panel-height, calc((var(--app-vh, 1vh) * 100) - 24px)));
  background:var(--map-left-bg, var(--route-panel-bg, rgba(10,16,32,.96)));
  transition:var(--map-left-transition, none);
  will-change:transform;
  z-index:var(--map-left-z-index, 600);
  box-shadow: var(--map-left-shadow, var(--route-panel-shadow, 0 16px 36px rgba(0,0,0,.35)));
  overflow:hidden;
  padding:var(--map-left-padding, var(--route-panel-padding, 14px));
  display:flex;
  flex-direction:column;
  gap:var(--route-panel-gap, 12px);
  border:1px solid var(--border);
  border-radius: var(--map-left-radius, var(--route-panel-radius, 18px));
  backdrop-filter: blur(var(--map-left-blur, var(--route-panel-blur, 12px)));
  transform: translateX(var(--map-left-closed-shift, -120%));
  opacity:var(--map-left-opacity-closed, 0);
  pointer-events:none;
}
.map-page .left::after{
  content:"";
  position:sticky;
  top:0;
  display:block;
  height:0;
}
:root[data-theme="light"] .map-page .left{
  background: var(--map-left-bg-light, var(--route-panel-bg-light, rgba(248, 250, 255, 0.94)));
  box-shadow: var(--map-left-shadow-light, var(--route-panel-shadow-light, 0 16px 32px rgba(10,20,40,.18)));
}
.map-page .left::-webkit-scrollbar{width:var(--map-left-scrollbar-width, 8px)}
body.panel-ready .map-page .left{transition:transform var(--map-left-transform-duration, .3s) ease, opacity var(--map-left-opacity-duration, .2s) ease}
body.panel-open .map-page .left{
  transform: translateX(var(--map-left-open-shift, 0));
  opacity:var(--map-left-opacity-open, 1);
  pointer-events:auto;
}
.map-page .left > .settings-panel-body{
  flex:1;
  min-height:0;
  overflow:auto;
  padding-right:var(--map-left-body-padding-right, 6px);
  padding-left:var(--map-left-body-padding-left, 2px);
  border-top: 1px solid var(--color-border);
}
.map-page .left > .settings-panel-body .panel{
  margin-bottom:var(--map-left-panel-gap, 10px);
}
.map-page .left > .settings-panel-body .panel:last-child{
  margin-bottom:0;
}
.map-page .left > .settings-panel-body .panel-head{
  padding:var(--map-left-section-head-padding, 10px 12px);
}
.map-page .left > .settings-panel-body .panel > .controls{
  padding:var(--map-left-section-controls-padding, 8px 12px 10px);
}
.map-page .left > .settings-panel-body .section-title{
  padding:var(--map-left-section-title-padding, 4px 0);
}
.map-page .left > .settings-panel-body .panel-title{
  color:var(--text);
  font-weight:var(--panel-title-weight);
}
:root[data-theme="light"] .map-page .left > .settings-panel-body .panel-head{
  background:var(--map-left-section-head-bg-light, linear-gradient(180deg, rgba(255,255,255,.98), rgba(242,247,255,.92)));
}
.map-page .left > .route-panel-head{
  min-height:var(--map-left-head-min-height, 44px);
  align-items:flex-start;
  justify-content:space-between;
  gap:var(--route-panel-head-gap, 10px);
}
.map-page .left > .route-panel-head .panel-title{
  text-transform:none;
  letter-spacing:normal;
  font-size:inherit;
  font-weight:var(--panel-title-weight);
  color:var(--text);
}
.map-page .left > .route-panel-head .hint{
  margin-top:var(--map-left-head-hint-margin-top, 4px);
  font-size:var(--map-left-head-hint-size, 12px);
  line-height:var(--map-left-head-hint-line-height, 1.35);
  color:var(--muted);
}
#map{
  height:100%;
  min-height: 0;
  position: relative;
  overflow:hidden;
  background:var(--bg);
  border:1px solid var(--border);
  box-shadow: var(--panel-shadow);
}

.dashboard-shell .map-page .left{
  left: calc(var(--sidebar-current) + var(--map-left-offset, 12px));
}
.map-page .right{
  position: relative;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  height: 100%;
}
.map-page .right #map{
  flex: 1;
  min-height: 0;
  height: 100%;
}
.map-page #map .map-download-progress-overlay{
  position:absolute;
  top:14px;
  left:50%;
  transform:translateX(-50%);
  z-index:930;
  max-width:min(92%, 460px);
  width:max-content;
  padding:10px 14px;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(10,16,34,.88);
  color:var(--text);
  box-shadow:0 12px 26px rgba(0,0,0,.32);
  backdrop-filter:blur(8px);
  pointer-events:none;
  opacity:0;
  transition:opacity .16s ease;
}
.map-page #map .map-download-progress-overlay.show{
  opacity:1;
}
.map-page #map .map-download-progress-title{
  font-size:13px;
  font-weight:700;
  line-height:1.25;
  text-align:center;
}
.map-page #map .map-download-progress-detail{
  margin-top:2px;
  font-size:12px;
  color:var(--muted);
  line-height:1.25;
  text-align:center;
}
:root[data-theme="light"] .map-page #map .map-download-progress-overlay{
  background:rgba(255,255,255,.94);
  color:var(--text);
  box-shadow:0 12px 26px rgba(10,20,40,.18);
}
.map-page #map .terrain-mini-map{
  position:absolute;
  top:50%;
  transform:translateY(-50%) translateZ(0);
  right:calc(10px + env(safe-area-inset-right));
  z-index:540;
  width:min(240px, 42vw);
  display:grid;
  gap:6px;
  padding:8px;
  border-radius:14px;
  border:1px solid rgba(148,163,184,.34);
  background:rgba(8,13,26,.84);
  box-shadow:0 12px 24px rgba(0,0,0,.32);
  backdrop-filter:blur(8px);
  pointer-events:none;
}
.map-page #map .terrain-mini-map.hidden{
  display:none;
}
.map-page #map .terrain-mini-map-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
.map-page #map .terrain-mini-map-head-right{
  display:flex;
  align-items:center;
  gap:8px;
}
.map-page #map .terrain-mini-map-title{
  font-size:11px;
  font-weight:700;
  color:#eef4ff;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.map-page #map .terrain-mini-map-range{
  font-size:11px;
  font-weight:700;
  color:#c6ddff;
}
.map-page #map .terrain-mini-map-zoom{
  display:inline-flex;
  align-items:center;
  gap:4px;
  pointer-events:auto;
}
.map-page #map .terrain-mini-map-zoom-value{
  min-width:44px;
  text-align:center;
  font-size:10px;
  font-weight:700;
  color:#dbe7ff;
}
.map-page #map .terrain-mini-map-zoom-btn{
  width:20px;
  height:20px;
  border-radius:6px;
  border:1px solid rgba(148,163,184,.44);
  background:rgba(15,24,42,.86);
  color:#f4f8ff;
  font-size:13px;
  font-weight:700;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.map-page #map .terrain-mini-map-zoom-btn:disabled{
  opacity:.45;
  cursor:default;
}
.map-page #map .terrain-mini-map-canvas{
  display:block;
  width:100%;
  aspect-ratio:11 / 9;
  border-radius:10px;
  border:1px solid rgba(148,163,184,.32);
  background:#0b1220;
}
.map-page #map .terrain-mini-map-legend{
  display:grid;
  grid-template-columns:auto 1fr auto 1fr;
  align-items:center;
  gap:4px 8px;
  font-size:10px;
  color:#dbe7ff;
}
.map-page #map .terrain-mini-map-legend .swatch{
  width:9px;
  height:9px;
  border-radius:3px;
  border:1px solid rgba(255,255,255,.28);
}
.map-page #map .terrain-mini-map-legend .swatch-danger{ background:#cf1322; }
.map-page #map .terrain-mini-map-legend .swatch-warning{ background:#e9c21e; }
.map-page #map .terrain-mini-map-legend .swatch-caution{ background:#2f9b37; }
.map-page #map .terrain-mini-map-legend .swatch-safe{ background:#1f2937; }
.map-page #map .terrain-mini-map-banner{
  font-size:11px;
  font-weight:800;
  text-align:center;
  border-radius:8px;
  padding:4px 6px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:#041015;
  background:#cbd5e1;
}
.map-page #map .terrain-mini-map-banner.is-safe{
  background:#22c55e;
  color:#07240f;
}
.map-page #map .terrain-mini-map-banner.is-caution{
  background:#eab308;
  color:#241f04;
}
.map-page #map .terrain-mini-map-banner.is-warning{
  background:#f97316;
  color:#2e1403;
}
.map-page #map .terrain-mini-map-banner.is-danger{
  background:#ef4444;
  color:#320606;
}
.map-page #map .terrain-mini-map-status{
  font-size:10px;
  color:#9fb2d4;
  text-align:center;
}
:root[data-theme="light"] .map-page #map .terrain-mini-map{
  background:rgba(255,255,255,.93);
  border-color:rgba(15,23,42,.18);
  box-shadow:0 10px 22px rgba(10,20,40,.15);
}
:root[data-theme="light"] .map-page #map .terrain-mini-map-title{
  color:#10233f;
}
:root[data-theme="light"] .map-page #map .terrain-mini-map-range{
  color:#21456f;
}
:root[data-theme="light"] .map-page #map .terrain-mini-map-zoom-value{
  color:#21456f;
}
:root[data-theme="light"] .map-page #map .terrain-mini-map-zoom-btn{
  background:rgba(255,255,255,.95);
  color:#10233f;
  border-color:rgba(15,23,42,.24);
}
:root[data-theme="light"] .map-page #map .terrain-mini-map-canvas{
  border-color:rgba(15,23,42,.18);
}
:root[data-theme="light"] .map-page #map .terrain-mini-map-legend{
  color:#1f3d66;
}
:root[data-theme="light"] .map-page #map .terrain-mini-map-status{
  color:#3e5e88;
}
.map-page .map-data-bar{
  --map-data-bar-reserved-space: 72px;
  position:absolute;
  left:max(8px, calc(env(safe-area-inset-left) + 8px));
  right:max(8px, calc(env(safe-area-inset-right) + 8px));
  bottom:calc(8px + env(safe-area-inset-bottom));
  z-index:560;
  display:grid;
  grid-template-columns:repeat(7, minmax(0, 1fr));
  gap:6px;
  padding:8px;
  border-radius:12px;
  border:1px solid rgba(148,163,184,.34);
  background:rgba(8,13,26,.86);
  box-shadow:0 12px 22px rgba(0,0,0,.3);
  backdrop-filter:blur(8px);
  pointer-events:none;
}
.map-page .map-data-item{
  min-width:0;
  border-radius:8px;
  border:1px solid rgba(148,163,184,.2);
  background:rgba(15,23,42,.52);
  padding:4px 6px;
  text-align:center;
}
.map-page .map-data-label{
  display:block;
  font-size:10px;
  font-weight:700;
  letter-spacing:.08em;
  color:#9fb2d4;
  text-transform:uppercase;
}
.map-page .map-data-value{
  display:block;
  margin-top:2px;
  font-size:12px;
  font-weight:700;
  line-height:1.25;
  color:#eef4ff;
  font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.map-page #map .maplibregl-ctrl-bottom-left,
.map-page #map .maplibregl-ctrl-bottom-right{
  bottom:var(--map-data-bar-reserved-space, 72px);
}
.map-page #map .basemap-control{
  bottom:calc(var(--basemap-control-bottom) + var(--map-data-bar-reserved-space, 72px));
}
:root[data-theme="light"] .map-page .map-data-bar{
  background:rgba(255,255,255,.94);
  border-color:rgba(15,23,42,.18);
  box-shadow:0 10px 20px rgba(10,20,40,.14);
}
:root[data-theme="light"] .map-page .map-data-item{
  background:rgba(255,255,255,.74);
  border-color:rgba(15,23,42,.14);
}
:root[data-theme="light"] .map-page .map-data-label{
  color:#3e5e88;
}
:root[data-theme="light"] .map-page .map-data-value{
  color:#10233f;
}
.map-page .map-overlay{
  position: absolute;
  left: calc(var(--sidebar-current) + var(--map-overlay-left-offset));
  bottom: var(--map-overlay-bottom);
  display: flex;
  align-items: center;
  gap: var(--map-overlay-gap);
  padding: var(--map-overlay-padding);
  border-radius: var(--map-overlay-radius);
  background: var(--background);
  border: 1px solid var(--border);
  box-shadow: var(--map-overlay-shadow);
  backdrop-filter: blur(var(--map-overlay-blur));
  z-index: 900;
  pointer-events: auto;
}
.map-page .map-overlay .pill{
  padding: var(--map-overlay-pill-padding);
  font-size: var(--map-overlay-pill-font-size);
}
.map-page .map-zoom-display,.data-sync-page .map-zoom-display{
  position:static;
  z-index:5;
  background:var(--surface2);
  border:1px solid var(--border);
  color:var(--text);
  padding:0;
  border-radius:var(--map-zoom-display-radius);
  font-size:var(--map-zoom-display-font-size);
  width:var(--map-zoom-display-size);
  height:var(--map-zoom-display-size);
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow: var(--panel-shadow);
}
.runway-hover-popup .maplibregl-popup-content{
  background:rgba(12,18,32,.92);
  color:#f8fafc;
  border:0;
  border-radius:8px;
  padding:6px 8px;
  font-size:11px;
  font-weight:600;
  box-shadow:0 8px 18px rgba(0,0,0,.25);
}
.runway-hover-popup .aviation-hover-popup-inner{
  min-width:220px;
  max-width:300px;
}
.runway-hover-popup .aviation-hover-popup-inner.no-title{
  min-width:140px;
  max-width:190px;
  text-align:center;
}
.runway-hover-popup .aviation-hover-title{
  font-size:12px;
  font-weight:700;
  line-height:1.3;
  margin:0 0 4px 0;
  color:#f8fafc;
}
.runway-hover-popup .aviation-hover-row{
  display:flex;
  align-items:flex-start;
  gap:8px;
  line-height:1.3;
}
.runway-hover-popup .aviation-hover-label{
  flex:0 0 74px;
  color:rgba(226,232,240,.86);
  font-weight:600;
}
.runway-hover-popup .aviation-hover-value{
  flex:1 1 auto;
  color:#f8fafc;
  font-weight:500;
  word-break:break-word;
}
.runway-hover-popup .aviation-hover-row-plain{
  display:block;
}
.runway-hover-popup .aviation-hover-row-plain .aviation-hover-value{
  display:block;
  width:100%;
  font-weight:700;
  text-align:center;
  white-space:nowrap;
}
.runway-hover-popup .maplibregl-popup-tip{
  border-top-color:rgba(12,18,32,.92);
}
.basemap-control{
  position:absolute;
  right:var(--basemap-control-right);
  bottom:var(--basemap-control-bottom);
  z-index:var(--basemap-control-z-index, 520);
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:var(--basemap-control-gap);
  transform:translateZ(0);
}
.basemap-toggle{
  border:1px solid var(--border);
  background:var(--basemap-toggle-bg);
  color:var(--map-control-icon);
  width:var(--basemap-toggle-size);
  height:var(--basemap-toggle-size);
  border-radius:var(--basemap-toggle-radius);
  font-size:var(--basemap-toggle-font-size);
  cursor:pointer;
  box-shadow: var(--basemap-toggle-shadow);
  display:flex;
  align-items:center;
  justify-content:center;
}
.basemap-menu{
  display:none;
  flex-direction:column;
  gap:var(--basemap-menu-gap);
  padding:var(--basemap-menu-padding);
  min-width:var(--basemap-menu-min-width);
  background:var(--basemap-menu-bg);
  border:1px solid var(--border);
  border-radius:var(--basemap-menu-radius);
  box-shadow: var(--basemap-menu-shadow);
  backdrop-filter: blur(var(--basemap-menu-blur));
}
.basemap-control.open .basemap-menu{display:flex;}
.basemap-item{
  appearance:none;
  border:var(--border-transparent-1, 1px solid transparent);
  background:var(--basemap-item-bg, rgba(255,255,255,.04));
  color:var(--text);
  padding:var(--basemap-item-padding, 6px 8px);
  border-radius:var(--basemap-item-radius, 8px);
  text-align:left;
  font-size:var(--basemap-item-font-size, 12px);
  cursor:pointer;
}
.basemap-item:hover{border-color:var(--basemap-item-border-hover, rgba(148,163,184,.4));}
.basemap-item.active{
  background:var(--basemap-item-bg-active, rgba(56,189,248,.18));
  border-color:var(--basemap-item-border-active, rgba(56,189,248,.45));
}
:root[data-theme="light"] .basemap-toggle{
  background:var(--basemap-toggle-bg-light);
  color:var(--map-control-icon);
}
:root[data-theme="light"] .basemap-menu{
  background:var(--basemap-menu-bg-light);
}
body.map-page .shell-status-row{
  display: none;
}
.leaflet-top,
.leaflet-bottom{
  z-index:500;
}

/* Panel open/close behavior */
.map-page .panel-toggle{display:inline-flex}
body:not(.panel-open) .map-page .left{opacity:0; pointer-events:none}

/* Panels and controls */
.panel{
  background:var(--panel-bg, rgba(255,255,255,.06));
  border:1px solid var(--border);
  border-radius:var(--panel-radius, 16px);
  overflow:hidden;
  margin-bottom:var(--panel-margin-bottom, 10px);
  margin-left: var(--panel-margin-left, 10px);
}
:root[data-theme="light"] .panel{ background:var(--panel-bg-light, rgba(255,255,255,.85)); }
.panel-head{
  padding:var(--panel-head-padding);
  border-bottom:1px solid var(--border);
  background:var(--panel-head-bg, rgba(255,255,255,.04));
}
:root[data-theme="light"] .panel-head{ background:var(--panel-head-bg-light, rgba(255,255,255,.9)); }
.panel-title{font-weight:var(--panel-title-weight)}

.controls{padding:var(--panel-controls-padding)}
.section{border:1px solid var(--border); border-radius:var(--panel-section-radius); padding:var(--panel-section-padding); margin-bottom:var(--panel-section-margin-bottom); background:var(--panel-section-bg, rgba(255,255,255,.03))}
.section[open]{background:var(--panel-section-bg-open, rgba(255,255,255,.05))}
.section-title{cursor:pointer; font-weight:var(--panel-section-title-weight); font-size:var(--panel-section-title-size); color:var(--text); list-style:none}
.section-title::-webkit-details-marker{display:none}
.section-title::marker{content:""}
.section[open] .section-title::before{content:"v"}
.section-body{margin-top:var(--panel-section-body-margin-top)}
.row{display:flex; gap:10px; align-items:center; padding:4px 0; color:var(--text)}
.row input{transform: translateY(var(--row-input-shift-y, 1px))}
.remember-row{
  justify-content:flex-start;
}
.auth-page .remember-row{
  color:var(--auth-remember-text, #1a1f24);
  align-items: center;
  gap: var(--auth-remember-row-gap, 8px);
  margin-top: var(--auth-remember-row-margin-top, 10px);
  font-size: var(--auth-remember-row-size, 14px);
}
.auth-page .remember-row a{
  color:var(--auth-remember-link, #1f4fae);
  text-decoration: underline;
  text-underline-offset: var(--auth-remember-link-underline-offset, 2px);
}
.remember-row input{
  width:auto;
  margin:0;
  inline-size: var(--auth-remember-check-size, 16px);
  block-size: var(--auth-remember-check-size, 16px);
}
.row2{display:grid; grid-template-columns:1fr 1fr; gap:var(--poi-section-body-gap, 8px); margin-top:var(--poi-section-body-margin-top, 8px)}

.auth-page .row2{
  gap: var(--auth-row2-gap, 12px);
}

.auth-page .auth-card form > .btn.block{
  margin-top: var(--auth-form-submit-margin-top, 14px);
}

.auth-page .auth-card .muted{
  margin-top: var(--auth-muted-margin-top, 10px);
  text-align: center;
  font-size: var(--auth-muted-size, 13px);
}

.map-page .panel{
  background: var(--map-panel-bg-shell, rgba(14, 22, 44, 0.72));
  border-color: var(--map-panel-border-shell, rgba(148, 163, 184, 0.22));
  box-shadow: var(--map-panel-shadow-shell, 0 14px 28px rgba(4, 8, 18, 0.35));
}
:root[data-theme="light"] .map-page .panel{
  background: var(--map-panel-bg-shell-light, rgba(255,255,255,.92));
  border-color: var(--map-panel-border-shell-light, rgba(15,23,42,.12));
  box-shadow: var(--map-panel-shadow-shell-light, 0 12px 22px rgba(10,20,40,.12));
}
.map-page .panel-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--map-panel-head-gap);
  background: var(--map-panel-head-bg, linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,0)));
}
:root[data-theme="light"] .map-page .panel-head{
  background: var(--map-panel-head-bg-light, linear-gradient(180deg, rgba(255,255,255,.95), rgba(245,248,255,.9)));
}
.map-page .panel-title{
  font-size:var(--map-panel-title-size);
  font-weight:var(--panel-title-weight);
  text-transform:uppercase;
  letter-spacing:var(--map-panel-title-tracking);
  color: var(--muted);
}
.map-page .section-title{
  font-size:var(--map-panel-section-title-size, 13px);
  letter-spacing:var(--map-panel-section-title-tracking, 0.02em);
}
.map-page .panel.panel-collapsible .panel-head.panel-head-collapsible{
  cursor:pointer;
  user-select:none;
}
.map-page .panel.panel-collapsible .panel-head.panel-head-collapsible::after{
  content:'';
  width:var(--map-panel-caret-size, 8px);
  height:var(--map-panel-caret-size, 8px);
  border-right:var(--map-panel-caret-stroke, 2px solid rgba(148,163,184,.85));
  border-bottom:var(--map-panel-caret-stroke, 2px solid rgba(148,163,184,.85));
  transform:rotate(45deg);
  transition:transform var(--map-panel-caret-transition-duration, .16s) ease;
  margin-left:auto;
  margin-right:var(--map-panel-caret-margin-right, 2px);
}
:root[data-theme="light"] .map-page .panel.panel-collapsible .panel-head.panel-head-collapsible::after{
  border-right-color:var(--map-panel-caret-color-light, rgba(10,20,40,.7));
  border-bottom-color:var(--map-panel-caret-color-light, rgba(10,20,40,.7));
}
.map-page .panel.panel-collapsible.is-collapsed .panel-head.panel-head-collapsible::after{
  transform:rotate(-45deg);
  margin-top:var(--map-panel-caret-collapsed-offset, 3px);
}
.map-page .panel.panel-collapsible .controls{
  max-height:var(--map-panel-controls-max-height-open, 1600px);
  overflow:hidden;
  opacity:var(--map-panel-controls-opacity-open, 1);
  transition:max-height var(--map-panel-controls-max-height-duration, .22s) ease, opacity var(--map-panel-controls-opacity-duration, .16s) ease, padding-top var(--map-panel-controls-padding-duration, .16s) ease, padding-bottom var(--map-panel-controls-padding-duration, .16s) ease;
}
.map-page .panel.panel-collapsible.is-collapsed .controls{
  max-height:var(--map-panel-controls-max-height-closed, 0);
  opacity:var(--map-panel-controls-opacity-closed, 0);
  padding-top:0;
  padding-bottom:0;
}
.map-page .panel.panel-collapsible.is-collapsed .panel-head{
  border-bottom-color:transparent;
}
.map-page .controls{
  display:grid;
  gap:var(--map-controls-gap, 6px);
}
.map-page .controls .row{
  margin:0;
  padding:var(--map-controls-row-padding, 6px 8px);
  min-height:var(--map-controls-row-height, 34px);
  border-radius:var(--map-controls-row-radius, 10px);
  background: var(--map-controls-row-bg, rgba(255,255,255,.03));
  border:var(--border-transparent-1, 1px solid transparent);
  transition: background var(--map-controls-row-transition-duration, .15s) ease, border-color var(--map-controls-row-transition-duration, .15s) ease;
  justify-content:space-between;
}
.map-page .controls .row span{
  flex:1;
  font-size:var(--map-controls-row-label-size, 13px);
  font-weight:var(--map-controls-row-label-weight, 600);
  color:var(--text);
}
.map-page .controls .row:hover{
  background: var(--map-controls-row-bg-hover, rgba(255,255,255,.06));
  border-color: var(--map-controls-row-border-hover, rgba(148,163,184,.22));
}
.map-page .controls .row .btn{
  min-height:var(--route-panel-btn-height, 34px);
  height:var(--route-panel-btn-height, 34px);
  padding:var(--route-panel-btn-padding, 0 12px);
  font-size:var(--route-panel-btn-font-size, 12px);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  white-space:nowrap;
  border-color: var(--route-panel-btn-border-color, rgba(148, 163, 184, 0.45));
  color: var(--route-panel-btn-text, #f8fbff);
  background: var(--route-panel-btn-bg, linear-gradient(180deg, rgba(255,255,255,0.26), rgba(255,255,255,0.06) 46%, rgba(7,12,24,0.22) 100%), linear-gradient(180deg, rgba(30, 58, 104, 0.75), rgba(16, 34, 66, 0.82)));
  box-shadow: var(--route-panel-btn-shadow, inset 0 1px 0 rgba(255,255,255,0.34), inset 0 -1px 0 rgba(0,0,0,0.32), 0 6px 14px rgba(0,0,0,0.28));
}
.map-page .controls .row .btn + .btn{
  margin-left:0;
}
.map-page .controls .row .btn.btn-ghost{
  background: var(--route-panel-btn-ghost-bg, linear-gradient(180deg, rgba(255,255,255,0.22), rgba(255,255,255,0.05) 44%, rgba(8,12,24,0.24) 100%), linear-gradient(180deg, rgba(40, 72, 120, 0.72), rgba(20, 40, 74, 0.84)));
}
.map-page .controls .row .btn:hover{
  border-color: var(--route-panel-btn-border-hover, rgba(191, 219, 254, 0.9));
  filter: brightness(var(--route-panel-btn-brightness-hover, 1.08));
}
.map-page .controls .row .btn:active{
  filter: brightness(var(--route-panel-btn-brightness-active, 0.98));
  box-shadow: var(--route-panel-btn-shadow-active, inset 0 1px 0 rgba(255,255,255,0.24), inset 0 -1px 0 rgba(0,0,0,0.4), 0 3px 8px rgba(0,0,0,0.24));
}
:root[data-theme="light"] .map-page .controls .row .btn{
  color:var(--route-panel-btn-text-light, #0f1f36);
  border-color: var(--route-panel-btn-border-color-light, rgba(96, 124, 165, 0.45));
  background: var(--route-panel-btn-bg-light, linear-gradient(180deg, rgba(255,255,255,0.8), rgba(255,255,255,0.36) 48%, rgba(202, 219, 244, 0.72) 100%), linear-gradient(180deg, #f3f8ff, #dce9fb));
  box-shadow: var(--route-panel-btn-shadow-light, inset 0 1px 0 rgba(255,255,255,0.88), inset 0 -1px 0 rgba(146, 171, 210, 0.55), 0 5px 12px rgba(34, 64, 112, 0.16));
}
:root[data-theme="light"] .map-page .controls .row .btn.btn-ghost{
  background: var(--route-panel-btn-ghost-bg-light, linear-gradient(180deg, rgba(255,255,255,0.88), rgba(255,255,255,0.45) 48%, rgba(196, 214, 241, 0.7) 100%), linear-gradient(180deg, #f5f9ff, #deebfd));
}
:root[data-theme="light"] .map-page .controls .row .btn:hover{
  border-color: var(--route-panel-btn-border-hover-light, rgba(59, 130, 246, 0.6));
}
.map-page .controls input[type="checkbox"].toggle{
  margin-left:var(--map-controls-toggle-margin-left, 12px);
}

@supports selector(.map-page .controls .row:has(.btn)) {
  .map-page .controls .row:has(.btn){
    justify-content:flex-start;
    flex-wrap:wrap;
    gap:var(--poi-section-body-gap, 8px);
  }
  .map-page .controls .row:has(.btn) .btn{
    flex:0 1 auto;
  }
}

.map-page .controls .input{
  padding:var(--map-controls-input-padding, 8px 10px);
  min-height:var(--map-controls-input-height, 34px);
  height:var(--map-controls-input-height, 34px);
  font-size:var(--map-controls-input-size, 12px);
  border-radius:var(--map-controls-input-radius, 10px);
  background: var(--map-controls-input-bg, rgba(10,15,30,.5));
}
:root[data-theme="light"] .map-page .controls .input{
  background: var(--map-controls-input-bg-light, rgba(255,255,255,.95));
}
.map-page .pill-block{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
  letter-spacing:var(--map-pill-block-tracking, .02em);
  text-align:center;
}
.map-page .hint{
  margin-top:var(--map-hint-margin-top, 8px);
  font-size:var(--map-hint-font-size, 12px);
  color:var(--muted);
  line-height:var(--map-hint-line-height, 1.35);
}
.map-page .panel-toggle-icon{
  width:var(--map-panel-toggle-size, 28px);
  height:var(--map-panel-toggle-size, 28px);
  border-radius:var(--map-panel-toggle-radius, 8px);
  display:flex;
  align-items:center;
  justify-content:center;
  border:var(--map-panel-toggle-border, 1px solid rgba(148,163,184,.35));
  background:var(--map-panel-toggle-bg, rgba(8,12,24,.55));
  color:var(--text);
  cursor:pointer;
  font-size:var(--map-panel-toggle-font-size, 16px);
  line-height:1;
  box-shadow: var(--map-panel-toggle-shadow, inset 0 1px 0 rgba(255,255,255,.08));
  padding:0;
}
.map-page .panel-toggle-icon:hover{
  border-color: var(--map-panel-toggle-border-hover, rgba(148,163,184,.6));
  background:var(--map-panel-toggle-bg-hover, rgba(10,16,32,.7));
}
.map-page .left .panel-toggle-icon,
.route-panel .panel-toggle-icon{
  width:var(--map-panel-toggle-shell-size, 34px);
  height:var(--map-panel-toggle-shell-size, 34px);
  border-radius:var(--map-panel-toggle-shell-radius, 10px);
  border:1px solid var(--route-panel-btn-border-color, rgba(148, 163, 184, 0.45));
  color:var(--route-panel-btn-text, #f8fbff);
  background:var(--route-panel-btn-bg, linear-gradient(180deg, rgba(255,255,255,0.26), rgba(255,255,255,0.06) 46%, rgba(7,12,24,0.22) 100%), linear-gradient(180deg, rgba(30, 58, 104, 0.75), rgba(16, 34, 66, 0.82)));
  box-shadow:var(--route-panel-btn-shadow, inset 0 1px 0 rgba(255,255,255,0.34), inset 0 -1px 0 rgba(0,0,0,0.32), 0 6px 14px rgba(0,0,0,0.28));
}
.map-page .left .panel-toggle-icon:hover,
.route-panel .panel-toggle-icon:hover{
  border-color: var(--route-panel-btn-border-hover, rgba(191, 219, 254, 0.9));
  filter: brightness(var(--route-panel-btn-brightness-hover, 1.08));
}
:root[data-theme="light"] .map-page .left .panel-toggle-icon,
:root[data-theme="light"] .route-panel .panel-toggle-icon{
  color:var(--route-panel-btn-text-light, #0f1f36);
  border-color: var(--route-panel-btn-border-color-light, rgba(96, 124, 165, 0.45));
  background:var(--route-panel-btn-bg-light, linear-gradient(180deg, rgba(255,255,255,0.8), rgba(255,255,255,0.36) 48%, rgba(202, 219, 244, 0.72) 100%), linear-gradient(180deg, #f3f8ff, #dce9fb));
  box-shadow:var(--route-panel-btn-shadow-light, inset 0 1px 0 rgba(255,255,255,0.88), inset 0 -1px 0 rgba(146, 171, 210, 0.55), 0 5px 12px rgba(34, 64, 112, 0.16));
}
:root[data-theme="light"] .map-page .left .panel-toggle-icon:hover,
:root[data-theme="light"] .route-panel .panel-toggle-icon:hover{
  border-color: var(--route-panel-btn-border-hover-light, rgba(59, 130, 246, 0.6));
}

.route-list{
  display:flex;
  flex-direction:column;
  gap:var(--route-list-gap, 2px);
  margin-top:var(--route-list-margin-top, 10px);
}
.route-card{
  background:var(--route-card-bg, rgba(255,255,255,.06));
  border:1px solid var(--border);
  border-radius:var(--route-card-radius, 10px);
  padding:var(--route-card-padding, 6px);
  display:flex;
  flex-direction:column;
  gap:var(--route-card-gap, 6px);
  box-shadow: var(--route-card-shadow, 0 6px 14px rgba(0,0,0,.25));
}
.route-card-head{
  display:flex;
  align-items:center;
  gap:var(--route-card-head-gap, 8px);
}
.route-card-head-meta{
  font-size:var(--route-card-head-meta-size, 11px);
  color:var(--muted);
}
.route-modal{
  width:var(--modal-card-width-sm);
}
.map-disclaimer-card{
  width:var(--modal-card-width-sm);
}
.map-disclaimer-card .modal-head{
  border-bottom:var(--map-disclaimer-head-border-bottom, 1px solid var(--border));
}
.map-disclaimer-card .modal-body{
  display:flex;
  flex-direction:column;
  gap:var(--map-disclaimer-body-gap, 10px);
}
.route-modal-body{
  padding:var(--route-modal-body-padding, 14px);
  max-height:var(--route-modal-body-max-height, 70vh);
  overflow:auto;
}
.route-modal-panel{
  display:none;
  flex-direction:column;
  gap:var(--route-modal-panel-gap, 8px);
}
.route-modal-panel.active{
  display:flex;
}
.route-save-row{
  display:grid;
  grid-template-columns:var(--route-save-row-columns, minmax(0, 1fr) 148px);
  gap:var(--route-save-row-gap, 10px);
  align-items:end;
}
.route-save-name,
.route-save-scope{
  display:grid;
  gap:var(--route-save-field-gap, 4px);
}
.route-save-scope .input{
  max-width:var(--route-save-scope-width, 148px);
  min-height:var(--route-save-scope-height, 34px);
  height:var(--route-save-scope-height, 34px);
}
.route-modal-actions,
.modal-actions,
.modal-sub-actions{
  display:flex;
  justify-content:flex-end;
  gap:var(--modal-actions-gap);
  align-items:center;
  flex-wrap:wrap;
}
.route-modal-actions .btn{
  min-width:var(--modal-actions-min-width);
}
.modal-actions .btn,
.modal-sub-actions .btn{
  min-width:var(--modal-actions-min-width);
}
.point-intel-modal{
  width:var(--modal-card-width-md);
}
.point-intel-body{
  display:flex;
  flex-direction:column;
  gap:var(--point-intel-body-gap, 10px);
}
.point-intel-status{
  margin:0;
}
.point-intel-grid{
  display:grid;
  gap:var(--point-intel-grid-gap, 8px);
}
.point-intel-row{
  display:grid;
  grid-template-columns:var(--point-intel-row-columns, minmax(120px, 160px) 1fr);
  gap:var(--point-intel-row-gap, 8px);
  align-items:start;
  padding:var(--point-intel-row-padding, 8px 10px);
  border:1px solid var(--border);
  border-radius:var(--point-intel-row-radius, 10px);
  background:var(--point-intel-row-bg, rgba(255,255,255,.04));
}
.route-modal .input,
.point-intel-modal .input{
  min-height:var(--route-modal-input-height, 34px);
  height:var(--route-modal-input-height, 34px);
  padding:var(--route-modal-input-padding, 0 10px);
  font-size:var(--font-size-sm, 12px);
}
.route-modal textarea.input,
.point-intel-modal textarea.input{
  min-height:var(--route-modal-textarea-min-height, 88px);
  height:auto;
  padding-top:var(--poi-fields-padding-top, 10px);
  padding-bottom:var(--route-modal-textarea-padding-bottom, 10px);
}
.point-intel-label{
  font-size:var(--point-intel-label-size, 11px);
  color:var(--muted);
  font-weight:var(--point-intel-label-weight, 600);
}
.point-intel-value{
  font-size:var(--point-intel-value-size, 12px);
  color:var(--text);
  word-break:break-word;
}
.point-intel-value .hint{
  display:block;
  margin-top:var(--point-intel-value-hint-margin-top, 2px);
}
.point-intel-actions{
  margin-top:var(--point-intel-actions-margin-top, 2px);
}
@media (max-width: 640px){
  .point-intel-row{
    grid-template-columns:var(--point-intel-row-columns-mobile, 1fr);
    gap:var(--point-intel-row-gap-mobile, 4px);
  }
  .route-save-row{
    grid-template-columns:1fr;
  }
  .route-save-scope .input{
    max-width:none;
  }
  .route-modal-actions .btn{
    min-width:0;
    flex:1 1 0;
  }
  .route-load-actions .btn{
    min-width:0;
    flex:1 1 0;
  }
  .modal-actions .btn,
  .modal-sub-actions .btn{
    min-width:0;
    flex:1 1 0;
  }
}
.route-modal-list{
  display:flex;
  flex-direction:column;
  gap:var(--poi-section-body-gap, 8px);
  max-height:var(--route-modal-list-max-height, 50vh);
  overflow:auto;
}
.route-load-item{
  display:flex;
  justify-content:space-between;
  gap:var(--route-load-item-gap, 10px);
  padding:var(--route-load-item-padding, 10px);
  border-radius:var(--route-load-item-radius, 12px);
  border:1px solid var(--border);
  background:var(--route-load-item-bg, rgba(255,255,255,.06));
}
.route-load-actions{
  display:flex;
  gap:var(--route-load-actions-gap, 8px);
  align-items:center;
}
.route-load-actions .btn{
  min-width:var(--route-load-actions-btn-min-width, 96px);
}
.route-load-item strong{
  display:block;
  font-size:var(--route-load-item-title-size, 12px);
}
.route-load-item span{
  font-size:var(--route-load-item-meta-size, 11px);
  color:var(--muted);
}
.route-card-head strong{
  font-size:var(--route-card-title-size, 12px);
  color:var(--text);
}
.route-label-sub{
  font-size:var(--route-label-sub-size, 10px);
  color:var(--muted);
  font-weight:var(--route-label-sub-weight, 400);
}
.route-card-meta{
  font-size:var(--route-card-meta-size, 11px);
  color:var(--muted);
}
.route-card-actions{
  margin-left:auto;
  display:flex;
  gap:var(--route-card-actions-gap, 6px);
}
.route-leg{
  display:block;
  padding:var(--route-leg-padding, 4px 12px 4px 20px);
  margin:var(--route-leg-margin, 0 6px);
  border-left:var(--route-leg-border-width, 2px) dashed var(--route-leg-border-color, rgba(148,163,184,.45));
  color:var(--muted);
  font-size:var(--route-leg-font-size, 11px);
}
.route-leg-clearance{
  font-weight:700;
}
.route-leg-clearance-warning{
  color:#f59e0b;
}
.route-leg-clearance-critical{
  color:#ef4444;
}
.route-action{
  min-width:var(--route-action-min-width, 34px);
  height:var(--route-action-height, 26px);
  padding:var(--route-action-padding, 0 6px);
  border-radius:var(--route-action-radius, 6px);
  border:1px solid var(--border);
  background:var(--route-action-bg, rgba(255,255,255,.08));
  color:var(--text);
  font-size:var(--route-action-font-size, 12px);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.route-action:disabled{
  opacity:var(--route-action-disabled-opacity, 0.5);
  cursor:not-allowed;
}
.route-action.route-edit{
  background:var(--route-action-edit-bg, #1d4ed8);
  border-color:var(--route-action-edit-border, #1d4ed8);
  color:var(--route-action-edit-text, #fff);
}
.route-action.route-delete{
  background:var(--route-action-delete-bg, #ef4444);
  border-color:var(--route-action-delete-border, #ef4444);
  color:var(--route-action-delete-text, #fff);
  width:var(--route-delete-btn-size, 30px);
  min-width:var(--route-delete-btn-size, 30px);
  height:var(--route-delete-btn-size, 30px);
  padding:0;
}
.route-action.route-delete i{
  font-size:var(--route-action-icon-size, 16px);
  line-height:1;
}

.route-panel{
  position: fixed;
  top: var(--route-panel-top, 12px);
  right: var(--route-panel-right, 12px);
  width: var(--route-panel-width, min(360px, 92vw));
  height: var(--route-panel-height, calc((var(--app-vh, 1vh) * 100) - 24px));
  background: var(--route-panel-bg, rgba(10,16,32,.96));
  border: 1px solid var(--border);
  border-radius: var(--route-panel-radius, 18px);
  box-shadow: var(--route-panel-shadow, 0 16px 36px rgba(0,0,0,.35));
  padding: var(--route-panel-padding, 14px);
  display: flex;
  flex-direction: column;
  gap: var(--route-panel-gap, 12px);
  transform: translateX(var(--route-panel-closed-shift, 120%));
  opacity: var(--route-panel-opacity-closed, 0);
  pointer-events: none;
  z-index: var(--route-panel-z-index, 650);
  transition: transform var(--route-panel-transform-duration, .25s) ease, opacity var(--route-panel-opacity-duration, .2s) ease;
  backdrop-filter: blur(var(--route-panel-blur, 12px));
}
:root[data-theme="light"] .route-panel{
  background: var(--route-panel-bg-light, rgba(248, 250, 255, 0.94));
  border-color: var(--route-panel-border-light, rgba(148,163,184,.35));
  box-shadow: var(--route-panel-shadow-light, 0 16px 32px rgba(10,20,40,.18));
}
:root[data-theme="light"] .route-panel .route-card{
  background: var(--route-card-bg-light, rgba(255,255,255,.95));
  box-shadow: var(--route-card-shadow-light, 0 6px 14px rgba(10,20,40,.1));
}
:root[data-theme="light"] .route-card-meta::before{
  background: var(--route-card-meta-divider-bg-light, rgba(148,163,184,.5));
}
body.route-panel-open .route-panel{
  transform: translateX(var(--route-panel-open-shift, 0));
  opacity: var(--route-panel-opacity-open, 1);
  pointer-events: auto;
}
.route-panel-head{
  position:relative;
  display:flex;
  align-items:flex-start;
  justify-content:flex-start;
  gap:var(--route-panel-head-gap, 10px);
}
.route-panel-head > .panel-toggle-icon{
  position:absolute;
  top:0;
  right:0;
}
.route-panel-body{
  overflow:auto;
  padding-right:var(--route-panel-body-padding-right, 4px);
  border-top: 1px solid var(--color-border);
}
.route-panel .route-meta{
  font-size:var(--route-panel-meta-size, 12px);
  color:var(--muted);
  margin:var(--route-panel-meta-margin, 6px 0 8px);
}
.route-panel .route-aircraft{
  display:flex;
  flex-direction:column;
  gap:var(--route-panel-aircraft-gap, 6px);
  border: 1px solid var(--color-border);
  padding: var(--page-padding);
  border-radius: var(--radius-form);
}
.route-panel #routeAircraftMeta{
  text-align:center;
}
.route-panel .row{
  display:flex;
  flex-wrap:wrap;
  gap:var(--route-panel-row-gap, 8px);
}
.route-panel .route-panel-head > div{
  flex:1;
  width:100%;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:var(--route-panel-head-content-gap, 8px);
}
.route-panel .route-panel-head .panel-title,
.route-panel .route-panel-head #routeHint{
  padding-right:var(--route-panel-head-close-clearance, 44px);
}
.route-panel .route-panel-head .row{
  display:grid;
  grid-template-columns:var(--route-panel-head-row-columns, repeat(5, minmax(0, 1fr)));
  gap:var(--route-panel-head-row-gap, 8px);
  justify-content:flex-start;
  position:relative;
  z-index:1;
  overflow:visible;
}
.route-panel .route-panel-head .row:first-of-type{
  z-index:2;
}
.route-panel .route-panel-head .row .btn{
  width:100%;
  min-height:var(--route-panel-head-btn-size, 40px);
  height:var(--route-panel-head-btn-size, 40px);
  min-width:var(--route-panel-head-btn-size, 40px);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
}
.route-panel .route-panel-head .row .btn[data-tooltip]{
  overflow:visible;
}
.route-panel .route-panel-head .row .btn i{
  font-size:var(--route-panel-head-icon-size, 22px);
  line-height:1;
}
.route-panel .route-panel-body .row{
  display:grid;
  grid-template-columns:var(--route-panel-body-row-columns, repeat(auto-fit, minmax(110px, 1fr)));
  gap:var(--route-panel-body-row-gap, 8px);
}
.route-panel .route-panel-body .row .btn{
  width:100%;
  min-height:var(--route-panel-btn-height, 34px);
  height:var(--route-panel-btn-height, 34px);
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.route-summary-pill{
  padding:var(--route-summary-pill-padding, 8px 10px);
  border-radius: 8px;
}
.route-summary-table{
  display:flex;
  flex-direction:column;
  gap:var(--route-summary-table-gap, 4px);
}
.route-summary-row{
  display:grid;
  grid-template-columns:repeat(5, minmax(0, 1fr));
  gap:var(--route-summary-row-gap, 8px);
}
.route-summary-cell{
  min-width:0;
  text-align:center;
}
.route-summary-head{
  font-size:var(--route-summary-head-size, 10px);
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--muted);
}
.route-summary-value{
  font-size:var(--route-summary-value-size, 12px);
  font-weight:700;
  color:var(--text);
  white-space:nowrap;
}
.route-summary-value-muted{
  color:var(--muted);
}
.route-summary-value-warning{
  color:#f59e0b;
}
.route-summary-value-critical{
  color:#ef4444;
}
.route-altitude-input-row{
  display:flex;
  align-items:center;
  gap:8px;
}
.route-altitude-input-row .input{
  flex:1 1 auto;
}
.route-terrain-profile{
  margin-top:8px;
  padding:6px 8px;
  border:1px solid var(--border);
  border-radius:8px;
  background:rgba(148,163,184,.12);
}
.route-terrain-profile-svg{
  width:100%;
  height:78px;
  display:block;
}
.route-terrain-profile-baseline{
  stroke:rgba(148,163,184,.55);
  stroke-width:1;
}
.route-terrain-profile-planned{
  stroke:#22c55e;
  stroke-width:1.2;
  stroke-dasharray:4 3;
}
.route-terrain-profile-fill{
  fill:rgba(239,68,68,.18);
}
.route-terrain-profile-line{
  fill:none;
  stroke:#f97316;
  stroke-width:1.5;
}
.route-terrain-profile-meta{
  margin-top:4px;
  display:flex;
  justify-content:space-between;
  gap:8px;
  font-size:10px;
  color:var(--muted);
}
.route-terrain-profile-note{
  margin-top:8px;
  font-size:11px;
  color:var(--muted);
}
:root[data-theme="light"] .route-summary-head{
  color:var(--muted);
}
:root[data-theme="light"] .route-summary-value{
  color:#1f2d48;
}
.route-panel .btn,
.route-modal .btn{
  min-height:var(--route-panel-btn-height, 34px);
  padding:var(--route-panel-btn-padding, 0 12px);
  font-size:var(--route-panel-btn-font-size, 12px);
  border-color: var(--route-panel-btn-border-color, rgba(148, 163, 184, 0.45));
  color: var(--route-panel-btn-text, #f8fbff);
  background: var(--route-panel-btn-bg, linear-gradient(180deg, rgba(255,255,255,0.26), rgba(255,255,255,0.06) 46%, rgba(7,12,24,0.22) 100%), linear-gradient(180deg, rgba(30, 58, 104, 0.75), rgba(16, 34, 66, 0.82)));
  box-shadow: var(--route-panel-btn-shadow, inset 0 1px 0 rgba(255,255,255,0.34), inset 0 -1px 0 rgba(0,0,0,0.32), 0 6px 14px rgba(0,0,0,0.28));
}
.route-panel .btn.btn-ghost,
.route-modal .btn.btn-ghost{
  background: var(--route-panel-btn-ghost-bg, linear-gradient(180deg, rgba(255,255,255,0.22), rgba(255,255,255,0.05) 44%, rgba(8,12,24,0.24) 100%), linear-gradient(180deg, rgba(40, 72, 120, 0.72), rgba(20, 40, 74, 0.84)));
}
.route-panel .btn:hover,
.route-modal .btn:hover{
  border-color: var(--route-panel-btn-border-hover, rgba(191, 219, 254, 0.9));
  filter: brightness(var(--route-panel-btn-brightness-hover, 1.08));
}
.route-panel .btn:active,
.route-modal .btn:active{
  filter: brightness(var(--route-panel-btn-brightness-active, 0.98));
  box-shadow: var(--route-panel-btn-shadow-active, inset 0 1px 0 rgba(255,255,255,0.24), inset 0 -1px 0 rgba(0,0,0,0.4), 0 3px 8px rgba(0,0,0,0.24));
}
:root[data-theme="light"] .route-panel .btn,
:root[data-theme="light"] .route-modal .btn{
  color:var(--route-panel-btn-text-light, #0f1f36);
  border-color: var(--route-panel-btn-border-color-light, rgba(96, 124, 165, 0.45));
  background: var(--route-panel-btn-bg-light, linear-gradient(180deg, rgba(255,255,255,0.8), rgba(255,255,255,0.36) 48%, rgba(202, 219, 244, 0.72) 100%), linear-gradient(180deg, #f3f8ff, #dce9fb));
  box-shadow: var(--route-panel-btn-shadow-light, inset 0 1px 0 rgba(255,255,255,0.88), inset 0 -1px 0 rgba(146, 171, 210, 0.55), 0 5px 12px rgba(34, 64, 112, 0.16));
}
:root[data-theme="light"] .route-panel .btn.btn-ghost,
:root[data-theme="light"] .route-modal .btn.btn-ghost{
  background: var(--route-panel-btn-ghost-bg-light, linear-gradient(180deg, rgba(255,255,255,0.88), rgba(255,255,255,0.45) 48%, rgba(196, 214, 241, 0.7) 100%), linear-gradient(180deg, #f5f9ff, #deebfd));
}
:root[data-theme="light"] .route-panel .btn:hover,
:root[data-theme="light"] .route-modal .btn:hover{
  border-color: var(--route-panel-btn-border-hover-light, rgba(59, 130, 246, 0.6));
}
.map-page .panel-toggle-icon.map-route-toggle{
  font-weight:var(--map-route-toggle-weight, 700);
}
@media (pointer: coarse){
  .route-panel{
    top: var(--route-panel-top, 12px);
    right: var(--route-panel-right, 12px);
    height: var(--route-panel-height, calc((var(--app-vh, 1vh) * 100) - 24px));
  }
}
.filter-block{margin-top:var(--filter-block-margin-top, 8px);padding:var(--filter-block-padding, 5px);border-radius:var(--filter-block-radius, 6px);background:var(--filter-block-bg, var(--bg))}
.filter-title{font-size:var(--filter-title-font-size, 12px);font-weight:var(--filter-title-font-weight, 700);color:var(--filter-title-color, var(--muted));margin-bottom:var(--filter-title-margin-bottom, 6px)}
.filter-grid{
  display:grid;
  grid-template-columns:var(--filter-grid-columns, repeat(2, minmax(0, 1fr)));
  gap:var(--filter-grid-gap, 3px 5px);
  font-size:var(--filter-grid-font-size, 11px);
}
.filter-grid label{display:flex;gap:var(--filter-grid-label-gap, 6px);border-radius:var(--filter-grid-label-radius, 6px);background:var(--filter-grid-label-bg, var(--background))}
.country-list{
  margin-top:var(--country-list-margin-top, 8px);
  display:grid;
  gap:var(--country-list-gap, 6px);
  max-height:var(--country-list-max-height, 220px);
  overflow:auto;
  border:1px solid var(--border);
  border-radius:var(--country-list-radius, 12px);
  padding:var(--country-list-padding, 8px);
  background:var(--country-list-bg, rgba(255,255,255,.03));
}
:root[data-theme="light"] .country-list{ background:var(--country-list-bg-light, rgba(255,255,255,.9)); }
.map-page .openaip-controls .field-row{
  grid-template-columns:var(--openaip-field-row-columns, 110px 1fr);
}
.map-page .openaip-controls .country-search{
  padding:var(--openaip-country-search-padding, 8px 10px);
}
.map-page .country-list .row{
  display:grid;
  grid-template-columns:var(--country-list-row-columns, auto 1fr);
  align-items:center;
  gap:var(--country-list-row-gap, 10px);
  padding:var(--country-list-row-padding, 6px 8px);
  border-radius:var(--country-list-row-radius, 10px);
  background:var(--country-list-row-bg, var(--panel));
}
.map-page .country-list .row:hover{
  background:var(--country-list-row-bg-hover, var(--pill));
}
.map-page .country-list .row span{
  font-weight:var(--country-list-row-label-weight, 600);
}
.filter-actions{display:flex;gap:var(--filter-actions-gap, 6px);margin-bottom:var(--filter-actions-margin-bottom, 6px);flex-wrap:wrap}
.slider-row{
  display:grid;
  grid-template-columns: var(--slider-row-columns, 90px 1fr 80px 60px);
  gap:var(--slider-row-gap, 8px);
  align-items:center;
  font-size:var(--slider-row-font-size, 11px);
  margin-bottom:var(--slider-row-margin-bottom, 4px);
}
.slider-row input{width:100%}

.field-row{
  display:grid;
  grid-template-columns: var(--field-row-columns, 90px 1fr);
  gap:var(--field-row-gap, 8px);
  align-items:center;
  font-size:var(--field-row-font-size, 11px);
  margin-bottom:var(--field-row-margin-bottom, 4px);
}
.input{
  width:100%;
  min-height: var(--control-height-md);
  background:var(--control-bg);
  color:var(--control-text);
  border:1px solid var(--control-border);
  border-radius:var(--input-radius, var(--radius-form));
  padding:0 var(--control-padding-x);
  outline:none;
  transition: border-color var(--input-transition-duration, .2s) ease, box-shadow var(--input-transition-duration, .2s) ease, background var(--input-transition-duration, .2s) ease;
}
.input.has-options{
  color:var(--color-text);
}
.route-section .hint{
  color:var(--color-text);
}
.route-section select.input{
  color:var(--color-text);
}
:root[data-theme="light"] .input{ background:var(--input); }
.input::placeholder{
  color:var(--color-muted);
  font-style:italic;
}
.input:focus-visible,
select.input:focus-visible,
textarea.input:focus-visible{
  border-color: color-mix(in srgb, var(--control-border) 40%, var(--color-primary) 60%);
  box-shadow: var(--input-focus-shadow, 0 0 0 3px var(--focus-ring-color));
}
textarea.input{
  min-height: var(--textarea-input-min-height, 88px);
  padding-top: var(--textarea-input-padding-y, 10px);
  padding-bottom: var(--textarea-input-padding-y, 10px);
}
.input:not(:placeholder-shown){
  color:var(--color-text);
  font-style:normal;
}
.range-row{display:flex; align-items:center; gap:var(--range-row-gap, 8px)}
.range{width:100%; accent-color:var(--good)}
.sim-readout{
  min-width:var(--simulate-readout-min-width, 64px);
  text-align:right;
  font-variant-numeric: tabular-nums;
}

input[type="checkbox"].toggle{
  appearance:none;
  width:var(--toggle-width, 44px);
  height:var(--toggle-height, 26px);
  border-radius:var(--toggle-radius, 999px);
  background: var(--toggle-bg, rgba(255,255,255,.14));
  border:1px solid var(--toggle-border, rgba(148,163,184,.3));
  position:relative;
  cursor:pointer;
  transition: background var(--toggle-transition-duration, .2s) ease, border-color var(--toggle-transition-duration, .2s) ease;
  box-shadow: inset 0 var(--toggle-shadow-offset-y, 2px) var(--toggle-shadow-blur, 4px) var(--toggle-shadow-color, rgba(0,0,0,.25));
}
input[type="checkbox"].toggle::before{
  content:"";
  position:absolute;
  top:var(--toggle-knob-top, 1px);
  left:var(--toggle-knob-left, 1px);
  width:var(--toggle-knob-size, 22px);
  height:var(--toggle-knob-size, 22px);
  border-radius:var(--toggle-knob-radius, 50%);
  background:var(--toggle-knob-bg, #ffffff);
  box-shadow: 0 var(--toggle-knob-shadow-offset-y, 3px) var(--toggle-knob-shadow-blur, 8px) var(--toggle-knob-shadow-color, rgba(0,0,0,.3));
  transition: transform var(--toggle-transition-duration, .2s) ease;
}
input[type="checkbox"].toggle:checked{
  background:var(--toggle-checked-bg, #34c759);
  border-color:var(--toggle-checked-border, #34c759);
}
input[type="checkbox"].toggle:checked::before{
  transform: translateX(var(--toggle-knob-translate-x, 18px));
}
input[type="checkbox"].toggle:focus-visible{
  outline:var(--toggle-focus-outline-width, 2px) solid var(--toggle-focus-outline-color, rgba(56,189,248,.5));
  outline-offset:var(--toggle-focus-outline-offset, 2px);
}
:root[data-theme="light"] input[type="checkbox"].toggle:not(:checked){
  background: var(--toggle-bg-light, rgba(10,20,40,.12));
  border-color: var(--toggle-border-light, rgba(10,20,40,.2));
  box-shadow: inset 0 var(--toggle-shadow-offset-y, 2px) var(--toggle-shadow-blur, 4px) var(--toggle-shadow-color-light, rgba(10,20,40,.12));
}
input[type="checkbox"].toggle.toggle-sm{
  width:var(--toggle-sm-width, 34px);
  height:var(--toggle-sm-height, 20px);
}
input[type="checkbox"].toggle.toggle-sm::before{
  width:var(--toggle-sm-knob-size, 16px);
  height:var(--toggle-sm-knob-size, 16px);
}
input[type="checkbox"].toggle.toggle-sm:checked::before{
  transform: translateX(var(--toggle-sm-knob-translate-x, 14px));
}

/* Tables and helper text */
.divider{height:var(--divider-height, 1px);background:var(--divider-bg, var(--border));margin:var(--divider-margin, 10px 0)}
.hint{margin-top:var(--hint-margin-top, 10px);color:var(--hint-color, var(--muted));font-size:var(--hint-font-size, 12px)}
.hint-tight{line-height:var(--hint-tight-line-height, 1.35)}
.hint-meta{margin-top:var(--hint-meta-margin-top, 6px);line-height:var(--hint-meta-line-height, 1.35);opacity:var(--hint-meta-opacity, .95)}
.mt-4{margin-top:var(--space-4, 4px)}
.mt-6{margin-top:var(--space-6, 6px)}
.mt-8{margin-top:var(--space-8, 8px)}
.text-faint{opacity:var(--text-faint-opacity, .65)}
.text-muted{opacity:var(--text-muted-opacity, .7)}
.text-subtle{opacity:var(--text-subtle-opacity, .75)}
.text-soft{opacity:var(--text-soft-opacity, .85)}
.text-strong{opacity:var(--text-strong-opacity, .9)}
.popup-pre{white-space:var(--popup-pre-white-space, pre-wrap);margin:var(--popup-pre-margin, 0)}
.table-note{color:var(--table-note-color, rgba(233,238,252,.65))}
:root[data-theme="light"] .table-note{color:var(--table-note-color-light, rgba(10,20,40,.55))}
.profile-card .user-avatar{
  color: var(--profile-card-avatar-text, #ffffff);
}
:root[data-theme="light"] .user-avatar{
  background: var(--user-avatar-bg-light, rgba(210,220,235,.95));
  color: var(--user-avatar-text-light, #0b1222);
}
.compare-result{margin-top:var(--compare-result-margin-top, 10px)}
.compare-result table{width:100%; border-collapse:collapse; font-size:var(--compare-result-font-size, 12px)}
.compare-result th,.compare-result td{padding:var(--compare-result-cell-padding, 8px 8px); border-bottom:1px solid var(--compare-result-cell-border, rgba(255,255,255,.08)); vertical-align:top}
.compare-result th{text-align:left; font-weight:var(--compare-result-head-weight, 700)}
.compare-result .mono{font-family:var(--compare-result-mono-family, ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace); font-size:var(--compare-result-mono-size, 11px)}
:root[data-theme="light"] .compare-result th,
:root[data-theme="light"] .compare-result td{ border-bottom:1px solid var(--compare-result-cell-border-light, rgba(10,20,40,.10)); }

.table-wrap{max-height: var(--table-wrap-max-height); overflow:auto; border-top:1px solid var(--border); border-radius: var(--table-wrap-radius)}
.table{width:100%; border-collapse:collapse; font-size:var(--table-font-size)}
.table th,.table td{padding:var(--table-cell-padding); border-bottom:var(--table-cell-border); vertical-align:top}
.table th{position:sticky; top:var(--table-head-sticky-top); background:var(--table-head-bg); text-align:left; z-index: var(--table-head-z-index)}
:root[data-theme="light"] .table th{ background:var(--table-head-bg); }
.table tr:hover td{background:var(--table-row-hover)}
.table tr.is-clickable:hover td{cursor:pointer}
.table tr.is-clickable:focus-visible td{
  outline:var(--table-row-focus-outline, 2px solid var(--focus-ring-color));
  outline-offset:var(--table-row-focus-offset, -2px);
}
.table tr.is-unread td{font-weight:700}
.table-actions{white-space:nowrap}
.table-actions .btn{padding:var(--table-actions-btn-padding); font-size:var(--table-actions-btn-font-size)}
.aircraft-page{
  display:flex;
  flex-direction:column;
  gap:var(--aircraft-page-gap, 16px);
  padding: var(--aircraft-page-padding, 36px);
}
.aircraft-grid{
  display:grid;
  grid-template-columns: var(--aircraft-grid-columns, repeat(auto-fit, minmax(280px, 1fr)));
  gap:var(--aircraft-grid-gap, 16px);
}
.aircraft-card{
  display:flex;
  flex-direction:column;
  gap:var(--aircraft-card-gap, 12px);
}
.aircraft-full{
  grid-column: var(--aircraft-full-grid-column, 1 / -1);
}
.aircraft-form-row{
  display:flex;
  flex-wrap:wrap;
  gap:var(--aircraft-form-row-gap, 8px);
}
.aircraft-form-grid{
  display:grid;
  grid-template-columns: var(--aircraft-form-grid-columns, repeat(auto-fit, minmax(180px, 1fr)));
  gap:var(--aircraft-form-grid-gap, 8px);
}
.aircraft-form-actions{
  display:flex;
  gap:var(--aircraft-form-actions-gap, 8px);
  align-items:center;
}
.activity-table{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--activity-card-radius, 14px);
  padding: var(--activity-card-padding, 16px);
  display:flex;
  flex-direction:column;
  flex:var(--activity-table-flex, 1);
  min-height:var(--activity-table-min-height, 0);
  height:var(--activity-table-height, 100%);
}
.activity-grid{
  display:grid;
  grid-template-columns: var(--activity-grid-columns, minmax(0, 2.1fr) minmax(0, 1fr) minmax(0, 1fr));
  gap:var(--activity-grid-gap, 16px);
  flex:var(--activity-grid-flex, 1);
  min-height:var(--activity-grid-min-height, 0);
}
.activity-page{
  height: var(--activity-page-height, calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - (var(--page-padding) * 2)));
  display:flex;
  flex-direction:column;
}
.activity-table-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--activity-table-head-gap, 12px);
  margin-bottom:var(--activity-table-head-margin-bottom, 12px);
}
.activity-controls{
  display:flex;
  align-items:center;
  gap:var(--activity-controls-gap, 10px);
  margin-left:auto;
}
.activity-controls .input{
  width:var(--activity-controls-input-width, 240px);
  max-width:var(--activity-controls-input-max-width, 36vw);
}
.activity-controls .pagination{
  margin-top:0;
  gap:var(--activity-controls-pagination-gap, 6px);
}
.activity-chart{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--activity-card-radius, 14px);
  padding: var(--activity-card-padding, 16px);
  display:flex;
  flex-direction:column;
  min-height:0;
}
.activity-charts{
  display:flex;
  flex-direction:column;
  gap:var(--activity-charts-gap, 16px);
  min-height:0;
}
.activity-chart-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--activity-chart-head-gap, 8px);
  margin-bottom:var(--activity-chart-head-margin-bottom, 10px);
}
.activity-chart-head h2{
  font-size:var(--activity-chart-head-title-size, 14px);
  margin:0;
}
.activity-chart-canvas{
  flex:1;
  min-height:var(--activity-chart-canvas-min-height, 220px);
  border-radius:var(--activity-chart-canvas-radius, 12px);
  background:var(--activity-chart-canvas-bg, radial-gradient(120% 120% at 20% 0%, rgba(90,162,255,.18), rgba(10,16,30,0) 55%), linear-gradient(140deg, rgba(10,16,30,.6), rgba(12,18,38,.18)));
  padding:var(--activity-chart-canvas-padding, 12px);
}
:root[data-theme="light"] .activity-chart-canvas{
  background:var(--activity-chart-canvas-bg-light, radial-gradient(120% 120% at 20% 0%, rgba(64,129,255,.18), rgba(255,255,255,0) 55%), linear-gradient(140deg, rgba(248,251,255,.95), rgba(235,242,250,.8)));
}
.activity-chart-canvas canvas{
  width:100%;
  height:100%;
  display:block;
}
.chart-tooltip{
  position:fixed;
  padding:var(--chart-tooltip-padding, 6px 10px);
  border-radius:var(--chart-tooltip-radius, 10px);
  background:var(--chart-tooltip-bg, rgba(14,18,30,.92));
  color:var(--chart-tooltip-text, #e8f0ff);
  border:1px solid var(--chart-tooltip-border, rgba(255,255,255,.12));
  font-size:var(--chart-tooltip-font-size, 11px);
  pointer-events:none;
  opacity:0;
  transition:opacity var(--chart-tooltip-fade-duration, .12s) ease;
  z-index:var(--chart-tooltip-z-index, 9999);
  box-shadow:var(--chart-tooltip-shadow, 0 10px 24px rgba(0,0,0,.25));
}
:root[data-theme="light"] .chart-tooltip{
  background:var(--chart-tooltip-bg-light, rgba(250,252,255,.98));
  color:var(--chart-tooltip-text-light, #1b2a44);
  border:1px solid var(--chart-tooltip-border-light, rgba(12,18,38,.15));
  box-shadow:var(--chart-tooltip-shadow-light, 0 10px 24px rgba(40,60,90,.15));
}
@media (max-width: 1400px){
  .activity-grid{
    grid-template-columns: var(--activity-grid-columns-xl, minmax(0, 1.8fr) minmax(0, 1fr));
  }
  .activity-grid .activity-chart:last-child{
    grid-column: var(--activity-grid-last-chart-column-xl, 2);
  }
}
@media (max-width: 1200px){
  .activity-grid{
    grid-template-columns: var(--activity-grid-columns-lg, 1fr);
  }
  .activity-page{
    height:var(--activity-page-height-lg, auto);
  }
  .activity-table{
    min-height: var(--activity-table-min-height-lg, 0);
    padding:var(--activity-card-padding-lg, 12px);
  }
  .activity-table-head{
    flex-wrap:var(--activity-table-head-wrap-lg, wrap);
    margin-bottom:var(--activity-table-head-margin-bottom-lg, 8px);
  }
  .activity-controls{
    width:var(--activity-controls-width-lg, 100%);
    justify-content:var(--activity-controls-justify-lg, space-between);
    gap:var(--activity-controls-gap-lg, 8px);
  }
  .activity-controls .input{
    width:var(--activity-controls-input-width-lg, 200px);
    max-width:var(--activity-controls-input-max-width-lg, 50vw);
  }
  .activity-grid .activity-charts{
    display:grid;
    grid-template-columns: var(--activity-charts-columns-lg, repeat(2, minmax(0, 1fr)));
    gap:var(--activity-charts-gap-lg, 10px);
  }
  .activity-chart{
    padding:var(--activity-card-padding-chart-lg, 10px);
  }
  .activity-chart-canvas{
    min-height:var(--activity-chart-canvas-min-height-lg, 200px);
  }
}
@media (max-width: 980px){
  .activity-grid .activity-charts{
    grid-template-columns: var(--activity-charts-columns-md, repeat(2, minmax(0, 1fr)));
  }
  .activity-chart-canvas{
    min-height:var(--activity-chart-canvas-min-height-md, 220px);
  }
}
@media (max-width: 860px){
  .activity-chart-canvas{
    min-height:var(--activity-chart-canvas-min-height-sm, 240px);
  }
}
.activity-page .table-wrap{
  flex:1;
  min-height:0;
  overflow:auto;
  max-height: var(--activity-page-table-wrap-max-height, none);
}
.activity-page .table{
  width:var(--activity-page-table-width, 100%);
}
.activity-time{
  font-weight:var(--activity-time-font-weight, 600);
  color: var(--activity-time-text, var(--color-text));
}
.activity-meta{
  white-space: var(--activity-meta-white-space, pre-line);
  line-height: var(--activity-meta-line-height, 1.4);
  font-size: var(--activity-meta-font-size, 11px);
}
.activity-user{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--activity-user-gap, 10px);
}
.sparkline{
  display:flex;
  align-items:flex-end;
  gap:var(--sparkline-gap, 2px);
  height:var(--sparkline-height, 16px);
  min-width:var(--sparkline-min-width, 42px);
  opacity:var(--sparkline-opacity, .75);
}
.sparkline span{
  width:var(--sparkline-bar-width, 4px);
  border-radius:var(--sparkline-bar-radius, 3px);
  background:var(--sparkline-bar-bg, linear-gradient(180deg, rgba(112,170,255,.95), rgba(74,120,220,.5)));
}
:root[data-theme="light"] .sparkline span{
  background:var(--sparkline-bar-bg-light, linear-gradient(180deg, rgba(70,132,255,.95), rgba(42,90,200,.55)));
}
.activity-meta{
  white-space: var(--activity-meta-white-space, pre-line);
  line-height: var(--activity-meta-line-height, 1.4);
  font-size: var(--activity-meta-font-size, 11px);
}
.activity-details summary{
  cursor:pointer;
  color: var(--activity-details-summary-text, var(--color-muted));
  font-size:var(--activity-details-summary-font-size, 11px);
}
.activity-details[open] summary{
  color: var(--activity-details-summary-text-open, var(--color-text));
}

.message-compose .row{gap:var(--message-compose-row-gap, 12px)}
.pill-inline{margin-left:var(--pill-inline-margin-left, 6px);font-size:var(--pill-inline-font-size, 10px);padding:var(--pill-inline-padding, 4px 8px)}

.chat-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:var(--chat-header-gap, 8px);
}
.chat-header-left{
  display:flex;
  align-items:center;
  gap:var(--chat-header-left-gap, 8px);
}
.chat-header-avatar{
  width:var(--chat-header-avatar-size, 32px);
  height:var(--chat-header-avatar-size, 32px);
  border-radius:var(--chat-header-avatar-radius, 50%);
  background: var(--chat-header-avatar-bg, var(--color-primary-soft));
  color: var(--chat-header-avatar-text, var(--color-text));
  display:grid;
  place-items:center;
  font-weight:var(--chat-header-avatar-weight, 700);
  font-size:var(--chat-header-avatar-font-size, 12px);
}
.chat-header-avatar.has-image{
  background-size:var(--chat-header-avatar-image-size, cover);
  background-position:var(--chat-header-avatar-image-position, center);
  color: var(--chat-header-avatar-image-text, transparent);
}
.chat-header h3{
  margin:var(--chat-header-title-margin, 0);
  line-height:var(--chat-header-title-line-height, 1.2);
}
.chat-header-actions{
  display:flex;
  align-items:center;
  gap:var(--chat-header-actions-gap, 8px);
}
.thread-menu-btn{
  border:var(--thread-menu-btn-border, none);
  background: var(--thread-menu-btn-bg, transparent);
  color: var(--thread-menu-btn-text, var(--color-text));
  font-size:var(--thread-menu-btn-font-size, 20px);
  line-height:var(--thread-menu-btn-line-height, 1);
  padding:var(--thread-menu-btn-padding, 4px 6px);
  cursor:pointer;
}
.thread-menu-dropdown{
  position:absolute;
  right: var(--thread-menu-dropdown-right, 18px);
  top: var(--thread-menu-dropdown-top, 52px);
  display:none;
  flex-direction:column;
  min-width:var(--thread-menu-dropdown-min-width, 160px);
  background: var(--thread-menu-dropdown-bg, var(--color-elevated));
  color: var(--thread-menu-dropdown-text, var(--color-text));
  border-radius: var(--thread-menu-dropdown-radius, 14px);
  border: 1px solid var(--thread-menu-dropdown-border, var(--color-border));
  box-shadow: var(--thread-menu-dropdown-shadow, var(--shadow-sm));
  padding: var(--thread-menu-dropdown-padding, 8px);
  z-index: var(--thread-menu-dropdown-z-index, 12);
}
.thread-menu-dropdown.open{
  display:flex;
  animation: fadeIn var(--thread-menu-dropdown-open-duration, var(--transition-base));
}
.thread-menu-item{
  background: var(--thread-menu-item-bg, transparent);
  border: var(--thread-menu-item-border, none);
  padding: var(--thread-menu-item-padding, 12px 14px);
  border-radius: var(--thread-menu-item-radius, 12px);
  text-align: var(--thread-menu-item-text-align, left);
  cursor: pointer;
  color: var(--thread-menu-item-text, inherit);
  font-size: var(--thread-menu-item-font-size, 0.98rem);
  transition: background var(--thread-menu-item-transition-fast, var(--transition-fast)), color var(--thread-menu-item-transition-fast, var(--transition-fast));
}
.thread-menu-item:hover,
.thread-menu-item:focus-visible{
  background: var(--thread-menu-item-bg-hover, var(--color-primary-soft));
}

.chat-messages{
  display:flex;
  flex-direction:column;
  gap:var(--chat-messages-gap, 8px);
}
.chat-bubble{
  max-width: var(--chat-bubble-max-width, 72%);
  padding:var(--chat-bubble-padding, 8px 12px);
  border-radius:var(--chat-bubble-radius, 14px);
  position:relative;
  box-shadow: var(--chat-bubble-shadow, 0 1px 2px rgba(0,0,0,.1));
  word-break: break-word;
  overflow-wrap: anywhere;
}
.message-delete{
  margin-top:var(--message-delete-margin-top, 6px);
  background: var(--message-delete-bg, transparent);
  border: var(--message-delete-border, none);
  color: var(--message-delete-text, var(--color-muted));
  font-size:var(--message-delete-font-size, 10px);
  cursor:pointer;
  text-align:var(--message-delete-align, left);
}
.message-delete:hover{ color: var(--message-delete-text-hover, var(--color-text)); }
.chat-bubble.incoming{
  align-self:flex-start;
  background: var(--chat-bubble-incoming-bg, var(--color-elevated));
  border:1px solid var(--chat-bubble-incoming-border, var(--color-border));
}
.chat-bubble.outgoing{
  align-self:flex-end;
  background: var(--chat-bubble-outgoing-bg, var(--color-primary));
  color: var(--chat-bubble-outgoing-text, #ffffff);
}
.chat-bubble.incoming::after{
  content:'';
  position:absolute;
  left:var(--chat-bubble-tail-in-left, -6px);
  bottom:var(--chat-bubble-tail-in-bottom, 8px);
  width:var(--chat-bubble-tail-in-size, 12px);
  height:var(--chat-bubble-tail-in-size, 12px);
  background: var(--chat-bubble-incoming-bg, var(--color-elevated));
  border-left:1px solid var(--chat-bubble-incoming-border, var(--color-border));
  border-bottom:1px solid var(--chat-bubble-incoming-border, var(--color-border));
  transform: rotate(var(--chat-bubble-tail-in-rotate, 36deg));
}
.chat-bubble.incoming::before{
  content:'';
  position:absolute;
  left:var(--chat-bubble-tail-in-core-left, -4px);
  bottom:var(--chat-bubble-tail-in-core-bottom, 9px);
  width:var(--chat-bubble-tail-in-core-size, 10px);
  height:var(--chat-bubble-tail-in-core-size, 10px);
  background: var(--chat-bubble-incoming-bg, var(--color-elevated));
  transform: rotate(var(--chat-bubble-tail-in-rotate, 36deg));
}



.chat-bubble.outgoing::after{
  content:'';
  position:absolute;
  right:var(--chat-bubble-tail-out-right, -4px);
  bottom:var(--chat-bubble-tail-out-bottom, 8px);
  width:var(--chat-bubble-tail-out-size, 12px);
  height:var(--chat-bubble-tail-out-size, 12px);
  background: var(--chat-bubble-outgoing-bg, var(--color-primary));
  transform: rotate(var(--chat-bubble-tail-out-rotate, 54deg));
}
.chat-bubble.outgoing::before{
  content:'';
  position:absolute;
  right:var(--chat-bubble-tail-out-core-right, -2px);
  bottom:var(--chat-bubble-tail-out-core-bottom, 9px);
  width:var(--chat-bubble-tail-out-core-size, 10px);
  height:var(--chat-bubble-tail-out-core-size, 10px);
  background: var(--chat-bubble-outgoing-bg, var(--color-primary));
  transform: rotate(var(--chat-bubble-tail-out-rotate, 54deg));
}



.chat-system{
  align-self:center;
  background: var(--chat-system-bg, var(--color-surface));
  color: var(--chat-system-text, var(--color-muted));
  font-size:var(--chat-system-font-size, 11px);
  padding:var(--chat-system-padding, 6px 10px);
  border-radius:var(--chat-system-radius, 999px);
  border:1px solid var(--chat-system-border, var(--color-border));
}
.chat-meta{
  font-size:var(--chat-meta-font-size, 10px);
  opacity:var(--chat-meta-opacity, .7);
  margin-top:var(--chat-meta-margin-top, 6px);
  margin-bottom:var(--chat-meta-margin-bottom, 0);
}
.chat-text{
  white-space:var(--chat-text-white-space, pre-wrap);
  font-size:var(--chat-text-font-size, 12px);
  word-break: break-word;
  overflow-wrap: anywhere;
}

.chat-attachments{
  margin-top:var(--chat-attachments-margin-top, 6px);
  display:flex;
  flex-direction:column;
  gap:var(--chat-attachments-gap, 4px);
}
.chat-image{
  max-width: var(--chat-image-max-width, 200px);
  border-radius:var(--chat-image-radius, 12px);
  border:1px solid var(--chat-image-border, var(--color-border));
}

.chat-compose-bar{
  display:flex;
  align-items:center;
  gap:var(--chat-compose-bar-gap, 4px);
  background: var(--chat-compose-bar-bg, var(--color-elevated));
  border:1px solid var(--chat-compose-bar-border, var(--color-border));
  border-radius:var(--chat-compose-bar-radius, 999px);
  padding:var(--chat-compose-bar-padding, 8px 10px);
}
.chat-attach-btn{
  width:var(--chat-attach-btn-size, 32px);
  height:var(--chat-attach-btn-size, 32px);
  min-width:var(--chat-attach-btn-size, 32px);
  min-height:var(--chat-attach-btn-size, 32px);
  color: var(--chat-attach-btn-text, var(--color-text));
  display:grid;
  place-items:center;
  font-size:var(--chat-attach-btn-font-size, 20px);
  line-height:var(--chat-attach-btn-line-height, 1);
  cursor:pointer;
  flex:0 0 auto;
}
.chat-send-btn{
  width:var(--chat-send-btn-size, 36px);
  height:var(--chat-send-btn-size, 36px);
  min-width:var(--chat-send-btn-size, 36px);
  min-height:var(--chat-send-btn-size, 36px);
  border-radius:var(--chat-send-btn-radius, 50%);
  border:var(--chat-send-btn-border, none);
  background: var(--chat-send-btn-bg, var(--color-success));
  color:var(--chat-send-btn-text, #ffffff);
  display:grid;
  place-items:center;
  font-weight:var(--chat-send-btn-weight, 700);
  cursor:pointer;
  flex:0 0 auto;
}
.chat-send-btn:hover{
  background: var(--chat-send-btn-bg-hover, var(--color-success));
}
.chat-file-input{
  display:none;
}
.chat-compose-row{
  display:flex;
  align-items:center;
  gap:var(--chat-compose-row-gap, 8px);
}
.chat-compose-row .muted{
  font-size:var(--chat-compose-row-muted-size, 12px);
}
.chat-input{
  min-height: var(--chat-input-min-height, 52px);
  background: var(--chat-input-bg, var(--color-elevated));
}
.chat-input-inline{
  min-height: var(--chat-input-inline-height, 28px);
  height: var(--chat-input-inline-height, 28px);
  resize:var(--chat-input-inline-resize, none);
  border:var(--chat-input-inline-border, none);
  outline:var(--chat-input-inline-outline, none);
  padding:var(--chat-input-inline-padding, 2px);
  background: var(--chat-input-inline-bg, transparent);
}
.chat-input-inline::placeholder{
  color: var(--chat-input-placeholder-text, var(--color-text));
  opacity: var(--chat-input-placeholder-opacity, 0.6);
}
.chat-actions{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--chat-actions-gap, 8px);
}
.chat-file{
  max-width: var(--chat-file-max-width, 160px);
}
.modal-compose{
  margin-top:var(--modal-compose-margin-top, 12px);
}

.modal-message{
  width: var(--modal-card-width-lg);
  max-height: var(--modal-message-max-height, 600px);
  background: var(--modal-message-bg, var(--color-surface));
  display:flex;
  flex-direction:column;
}
.modal-message-layout{
  display:grid;
  grid-template-columns: var(--modal-message-layout-columns, 280px 280px);
  gap:var(--modal-message-layout-gap, 0);
  flex:1;
  min-height:0;
}
@media (max-width: 900px){
  .modal-message-layout{
    grid-template-columns: var(--modal-message-layout-columns-mobile, 1fr);
  }
  .modal-threads,
  .modal-thread-view{
    display:none !important;
  }
  .modal-message[data-view="threads"] .modal-threads{
    display:flex !important;
  }
  .modal-message[data-view="thread"] .modal-thread-view{
    display:flex !important;
  }
  #threadToggleView{
    display:inline-flex;
  }
  .modal-message[data-view="threads"] #threadToggleView{
    display:none;
  }
}
@media (min-width: 901px){
  #threadToggleView{
    display:none;
  }
}
.modal-threads{
  border-right:1px solid var(--modal-threads-border-right, var(--color-border));
  background: var(--modal-threads-bg, var(--color-surface));
  display:flex;
  flex-direction:column;
  min-height:0;
}
.modal-threads-head{
  padding:var(--modal-threads-head-padding, 12px);
  border-bottom:1px solid var(--modal-threads-head-border-bottom, var(--color-border));
  display:flex;
  flex-direction:column;
  gap:var(--modal-threads-head-gap, 10px);
}
.thread-filters{
  display:flex;
  flex-wrap:wrap;
  gap:var(--thread-filters-gap, 6px);
}
.filter-pill{
  border:1px solid var(--filter-pill-border, var(--color-border));
  background: var(--filter-pill-bg, var(--color-elevated));
  color: var(--filter-pill-text, var(--color-text));
  border-radius:var(--filter-pill-radius, 999px);
  padding:var(--filter-pill-padding, 4px 12px);
  font-size:var(--filter-pill-font-size, 11px);
  cursor:pointer;
  font-weight:var(--filter-pill-font-weight, 600);
  flex: 1 1 0;
  text-align:var(--filter-pill-text-align, center);
}
.filter-pill.active{
  background: var(--filter-pill-bg-active, var(--color-primary-soft));
  border-color: var(--filter-pill-border-active, transparent);
  color: var(--filter-pill-text-active, var(--color-text));
}
.thread-actions{
  display:flex;
  gap:var(--thread-actions-gap, 6px);
}
.thread-actions .btn{
  flex: 1 1 0;
  text-align:var(--thread-actions-btn-align, center);
}
.modal-search{
  display:flex;
  align-items:center;
  gap:var(--modal-search-gap, 8px);
  background: var(--modal-search-bg, var(--color-elevated));
  border:1px solid var(--modal-search-border, var(--color-border));
  border-radius:var(--modal-search-radius, 999px);
  padding:var(--modal-search-padding, 6px 10px);
}
.modal-search .icon{
  width:var(--modal-search-icon-size, 16px);
  height:var(--modal-search-icon-size, 16px);
  color: var(--modal-search-icon-color, var(--color-muted));
  display:block;
  fill: currentColor;
}
.modal-search .input{
  border:var(--modal-search-input-border, none);
  background: var(--modal-search-input-bg, transparent);
  padding:var(--modal-search-input-padding, 0);
}
.modal-search .input::placeholder{
  color: var(--modal-search-placeholder-color, var(--color-text));
  opacity: var(--modal-search-placeholder-opacity, 0.6);
}
.thread-list{
  overflow:auto;
  overflow-x:hidden;
  flex:1;
  padding:var(--thread-list-padding, 6px 6px 10px);
}
.thread-item{
  width:100%;
  display:grid;
  grid-template-columns: var(--thread-item-columns, 40px 1fr auto);
  gap:var(--thread-item-gap, 10px);
  align-items:center;
  padding:var(--thread-item-padding, 8px 10px);
  border:1px solid var(--thread-item-border, transparent);
  background: var(--thread-item-bg, transparent);
  cursor:pointer;
  text-align:var(--thread-item-text-align, left);
  color:inherit;
}
.thread-item.active{
  background: var(--thread-item-bg-active, var(--color-primary-soft));
  border-color: var(--thread-item-border-active, var(--color-border));
  border-radius: var(--thread-item-radius-active, 12px);
}

:root[data-theme="light"] .thread-item.active{ background: var(--thread-item-bg-active-light, var(--color-primary-soft)); }
.thread-avatar{
  width:var(--thread-avatar-size, 40px);
  height:var(--thread-avatar-size, 40px);
  border-radius:var(--thread-avatar-radius, 50%);
  background: var(--thread-avatar-bg, var(--color-primary-soft));
  display:grid;
  place-items:center;
  font-weight:var(--thread-avatar-weight, 700);
  color: var(--thread-avatar-text, var(--color-text));
  font-size:var(--thread-avatar-font-size, 12px);
}
.thread-avatar.has-image{
  background-size: var(--thread-avatar-image-size, cover);
  background-position: var(--thread-avatar-image-position, center);
  color: var(--thread-avatar-image-text, transparent);
}
.thread-body{
  min-width:0;
}
.thread-title{
  font-weight:var(--thread-title-weight, 700);
  font-size:var(--thread-title-font-size, 12px);
  margin-bottom:var(--thread-title-margin-bottom, 1px);
  color: var(--thread-title-color, var(--color-text));
}
.thread-preview{
  font-size:var(--thread-preview-font-size, 11px);
  color: var(--thread-preview-text, var(--color-muted));
  white-space: var(--thread-preview-white-space, nowrap);
  overflow: hidden;
  text-overflow: ellipsis;
}
.thread-meta{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:var(--thread-meta-gap, 4px);
  font-size:var(--thread-meta-font-size, 10px);
  color: var(--thread-meta-text, var(--color-muted));
}
.thread-badge{
  background: var(--thread-badge-bg, var(--color-success));
  color: var(--thread-badge-text, #ffffff);
  border-radius:var(--thread-badge-radius, 999px);
  padding:var(--thread-badge-padding, 2px 6px);
  font-size:var(--thread-badge-font-size, 10px);
  font-weight:var(--thread-badge-font-weight, 700);
}
.modal-thread-view{
  display:flex;
  flex-direction:column;
  gap:var(--modal-thread-view-gap, 8px);
  background: var(--modal-thread-view-bg, var(--color-surface));
  min-height:0;
  padding-left:var(--modal-thread-view-padding-left, 12px);
}
.chat-actions-row{
  display:flex;
  flex-wrap:wrap;
  gap:var(--chat-actions-row-gap, 6px);
  padding:var(--chat-actions-row-padding, 10px 14px 6px);
}
.chat-actions-row .btn{
  padding:var(--chat-actions-row-btn-padding, 6px 10px);
  font-size:var(--chat-actions-row-btn-font-size, 11px);
  background: var(--chat-actions-row-btn-bg, var(--color-elevated));
}
.org-form-grid{
  display:grid;
  grid-template-columns: var(--org-form-grid-columns, minmax(0, 2fr) minmax(0, 2fr) minmax(0, 1fr));
  gap:var(--org-form-grid-gap, 16px);
  margin-top:var(--org-form-grid-margin-top, 16px);
}
.org-form-grid-compact{
  gap:var(--org-form-grid-compact-gap, 12px);
}
.org-form-card{
  background: var(--org-form-card-bg, var(--color-surface));
}
.org-form-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--org-form-head-gap, 16px);
}
.org-form-block{
  border:1px solid var(--org-form-block-border, var(--color-border));
  background: var(--org-form-block-bg, var(--color-surface));
  border-radius:var(--org-form-block-radius, 14px);
  padding:var(--org-form-block-padding, 16px);
}
.org-form-title{
  font-size:var(--org-form-title-size, 13px);
  font-weight:var(--org-form-title-weight, 700);
  color: var(--org-form-title-text, var(--color-text));
  margin-bottom:var(--org-form-title-margin-bottom, 12px);
  padding-bottom:var(--org-form-title-padding-bottom, 8px);
  border-bottom:1px solid var(--org-form-title-border-bottom, var(--color-border));
}
.org-form-group{
  margin-bottom:var(--org-form-group-margin-bottom, 12px);
}
.org-form-group label{
  display:block;
  margin-bottom:var(--org-form-label-margin-bottom, 6px);
  font-weight:var(--org-form-label-weight, 600);
  font-size:var(--org-form-label-size, 12px);
  color: var(--org-form-label-text, var(--color-text));
}
.org-form-inline .org-form-group label{
  display:var(--org-form-inline-label-display, inline-block);
  width:var(--org-form-inline-label-width, 160px);
  margin:var(--org-form-inline-label-margin, 6px 0);
  text-align:var(--org-form-inline-label-align, right);
  padding-right:var(--org-form-inline-label-padding-right, 10px);
}
.org-form-inline .org-form-group .input{
  display:var(--org-form-inline-input-display, inline-block);
  width:var(--org-form-inline-input-width, calc(100% - 170px));
  vertical-align:middle;
  margin-bottom:var(--org-form-inline-input-margin-bottom, 10px);
}
.org-form-row{
  display:grid;
  grid-template-columns: var(--org-form-row-columns, repeat(2, minmax(0, 1fr)));
  gap:var(--org-form-row-gap, 12px);
}
.org-form-actions{
  grid-column:var(--org-form-actions-grid-column, 1 / -1);
  display:flex;
  align-items:center;
  gap:var(--org-form-actions-gap, 12px);
}
.org-logo-card{
  display:flex;
  flex-direction:column;
  gap:var(--org-logo-card-gap, 12px);
  max-width: var(--org-logo-card-max-width, 340px);
  align-items:center;
  text-align:center;
}
.org-logo-preview{
  width:var(--org-logo-preview-size, 120px);
  height:var(--org-logo-preview-size, 120px);
  border-radius:var(--org-logo-preview-radius, 18px);
  border:1px solid var(--org-logo-preview-border, var(--color-border));
  background: var(--org-logo-preview-bg, var(--color-elevated));
  display:grid;
  place-items:center;
  font-weight:var(--org-logo-preview-weight, 700);
  color: var(--org-logo-preview-text, var(--color-text));
  overflow:hidden;
}
.org-logo-preview img{
  width:100%;
  height:100%;
  object-fit:var(--org-logo-image-fit, contain);
  background: var(--org-logo-image-bg, var(--color-surface));
}
.org-logo-btn{
  align-self:center;
}
.org-logo-input{
  display:none;
}
@media (max-width: 900px){
  .org-form-grid{
    grid-template-columns: var(--org-form-grid-columns-mobile, 1fr);
  }
  .org-form-row{
    grid-template-columns: var(--org-form-row-columns-mobile, 1fr);
  }
  .org-form-inline .org-form-group label{
    display:var(--org-form-inline-label-display-mobile, block);
    width:var(--org-form-inline-label-width-mobile, 100%);
    text-align:var(--org-form-inline-label-align-mobile, left);
    padding-right:var(--org-form-inline-label-padding-right-mobile, 0);
  }
  .org-form-inline .org-form-group .input{
    width:var(--org-form-inline-input-width-mobile, 100%);
  }
  .org-form-actions{
    flex-direction:var(--org-form-actions-direction-mobile, column);
    align-items:var(--org-form-actions-align-mobile, flex-start);
  }
}
.chat-thread{
  flex:var(--chat-thread-flex, 1);
}
.chat-compose{
  margin-top:var(--chat-compose-margin-top, auto);
}
.modal-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:var(--modal-head-gap);
  padding:var(--modal-head-padding);
  border-bottom:1px solid var(--color-border);
  background: var(--color-surface);
  border-radius: var(--modal-head-radius);
}
.modal-head h3{
  margin:0;
  font-size:var(--modal-title-size);
  font-weight:var(--modal-title-weight);
  letter-spacing:var(--modal-title-tracking);
  line-height:var(--modal-title-line-height, 1.2);
}
.modal-close{
  width:var(--modal-close-size);
  height:var(--modal-close-size);
  border-radius:var(--modal-close-radius);
  border:1px solid var(--modal-close-border-color, rgba(148, 163, 184, 0.45));
  color:var(--modal-close-text, #f8fbff);
  background:var(--modal-close-bg, linear-gradient(180deg, rgba(255,255,255,0.26), rgba(255,255,255,0.06) 46%, rgba(7,12,24,0.22) 100%), linear-gradient(180deg, rgba(30, 58, 104, 0.75), rgba(16, 34, 66, 0.82)));
  box-shadow:var(--modal-close-shadow, inset 0 1px 0 rgba(255,255,255,0.34), inset 0 -1px 0 rgba(0,0,0,0.32), 0 6px 14px rgba(0,0,0,0.28));
  font-size:var(--modal-close-icon-size);
  line-height:var(--modal-close-line-height, 1);
  cursor:pointer;
  display:grid;
  place-items:center;
}
.modal-close:hover{
  border-color: var(--modal-close-border-color-hover, rgba(191, 219, 254, 0.9));
  filter: brightness(var(--modal-close-brightness-hover, 1.08));
}
:root[data-theme="light"] .modal-close{
  color:var(--modal-close-text-light, #0f1f36);
  border-color: var(--modal-close-border-color-light, rgba(96, 124, 165, 0.45));
  background:var(--modal-close-bg-light, linear-gradient(180deg, rgba(255,255,255,0.8), rgba(255,255,255,0.36) 48%, rgba(202, 219, 244, 0.72) 100%), linear-gradient(180deg, #f3f8ff, #dce9fb));
  box-shadow:var(--modal-close-shadow-light, inset 0 1px 0 rgba(255,255,255,0.88), inset 0 -1px 0 rgba(146, 171, 210, 0.55), 0 5px 12px rgba(34, 64, 112, 0.16));
}
:root[data-theme="light"] .modal-close:hover{
  border-color: var(--modal-close-border-color-hover-light, rgba(59, 130, 246, 0.6));
}
.modal-close i{
  font-size:var(--modal-close-icon-size);
  line-height:var(--modal-close-line-height, 1);
}
.panel-toggle-icon[aria-label*="Close"] i{
  font-size:var(--modal-close-icon-size);
  line-height:var(--modal-close-line-height, 1);
}
.modal-body{
  padding:var(--modal-body-padding);
}
.modal .controls{
  display:grid;
  gap:var(--modal-controls-gap);
}
.modal .input:not(textarea),
.modal select.input{
  min-height:var(--modal-input-height, 34px);
  height:var(--modal-input-height, 34px);
  border-color:var(--modal-input-border);
  border-radius:var(--modal-input-radius);
}
.modal textarea.input{
  min-height:var(--modal-textarea-min-height, 96px);
  height:auto;
  border-color:var(--modal-input-border);
  border-radius:var(--modal-input-radius);
}
.modal .chat-input-inline{
  min-height:var(--modal-chat-input-inline-height, 28px) !important;
  height:var(--modal-chat-input-inline-height, 28px) !important;
}
.modal .controls > label{
  margin:0;
  font-size:var(--modal-label-size);
  font-weight:var(--modal-label-weight, 600);
  color:var(--modal-label-text, var(--muted));
}
.modal .hint{
  margin-top:var(--modal-hint-margin-top, 6px);
  font-size:var(--modal-hint-size);
  line-height:var(--modal-hint-line);
}
.modal .hint.alert{
  margin-top:var(--modal-hint-alert-margin-top, 8px);
}
.modal .controls .row2{
  display:grid;
  grid-template-columns:var(--modal-controls-row2-columns, repeat(2, minmax(0, 1fr)));
  gap:var(--modal-controls-row2-gap, 8px);
}
.modal .controls .row2 .btn{
  width:100%;
}

.modal-sub{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  z-index:var(--modal-sub-z-index, 1300);
  background: var(--modal-backdrop);
  backdrop-filter: blur(var(--modal-sub-backdrop-blur, 2px));
}
.modal-sub.open{ display:flex; }
.modal-sub-card{
  width:var(--modal-card-width-sm);
  background: var(--modal-sub-card-bg, var(--color-elevated));
  border-radius:var(--modal-card-radius);
  border:1px solid var(--modal-sub-card-border, var(--color-border));
  box-shadow: var(--modal-card-shadow);
  overflow:hidden;
}
.sync-log-modal{
  width:var(--modal-card-width-md);
}
.modal-sub-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--modal-sub-head-gap);
  padding:var(--modal-sub-head-padding);
  border-bottom:1px solid var(--color-border);
  background: var(--color-surface);
}
.modal-sub-head h4{
  margin:0;
  font-size:var(--modal-title-size);
  font-weight:var(--modal-title-weight);
  letter-spacing:var(--modal-title-tracking);
  line-height:var(--modal-title-line-height, 1.2);
}
.modal-sub-body{
  display:flex;
  flex-direction:column;
  gap:var(--modal-sub-body-gap);
  padding:var(--modal-sub-body-padding);
}
.modal-sub-body > label{
  margin:0;
  font-size:var(--modal-label-size);
  font-weight:var(--modal-label-weight, 600);
  line-height:var(--modal-sub-label-line-height, 1.25);
}
.modal-sub-body > .input{
  min-height:var(--modal-input-height, 34px);
  height:var(--modal-input-height, 34px);
}
.modal-sub-body > textarea.input{
  min-height:var(--modal-textarea-min-height, 96px);
  height:auto;
  padding-top:var(--modal-textarea-padding-y, 10px);
  padding-bottom:var(--modal-textarea-padding-y, 10px);
}
.modal-sub-body .hint{
  margin:0;
  font-size:var(--modal-hint-size);
  line-height:var(--modal-hint-line);
}
.group-member-list{
  max-height:var(--group-member-list-max-height, 260px);
  overflow:auto;
  border:1px solid var(--group-member-list-border, var(--color-border));
  border-radius:var(--group-member-list-radius, 12px);
  padding:var(--group-member-list-padding, 8px);
  background: var(--group-member-list-bg, var(--color-surface));
  display:flex;
  flex-direction:column;
  gap:var(--group-member-list-gap, 6px);
}
.group-avatar-preview{
  width:var(--group-avatar-preview-size, 64px);
  height:var(--group-avatar-preview-size, 64px);
  border-radius:var(--group-avatar-preview-radius, 50%);
  background: var(--group-avatar-preview-bg, var(--color-primary-soft));
  border:1px solid var(--group-avatar-preview-border, var(--color-border));
  display:grid;
  place-items:center;
  font-weight:var(--group-avatar-preview-weight, 700);
  color: var(--group-avatar-preview-text, var(--color-text));
  margin-bottom:var(--group-avatar-preview-margin-bottom, 6px);
  background-size: var(--group-avatar-preview-image-size, cover);
  background-position: var(--group-avatar-preview-image-position, center);
}
.group-avatar-preview.has-image{
  color: var(--group-avatar-preview-image-text, transparent);
}
.group-member-item{
  display:flex;
  align-items:center;
  gap:var(--group-member-item-gap, 8px);
  padding:var(--group-member-item-padding, 6px 8px);
  border-radius:var(--group-member-item-radius, 10px);
}
.group-member-item:hover{
  background: var(--group-member-item-bg-hover, var(--color-primary-soft));
}
.group-member-item input{
  width:var(--group-member-item-checkbox-size, 16px);
  height:var(--group-member-item-checkbox-size, 16px);
}
.group-member-name{
  font-weight:var(--group-member-name-weight, 600);
  font-size:var(--group-member-name-size, 12px);
  color: var(--group-member-name-text, var(--color-text));
}
.group-member-email{
  font-size:var(--group-member-email-size, 11px);
  color: var(--group-member-email-text, var(--color-muted));
}
.modal-sub-actions{
  border-top:1px solid var(--color-border);
  padding:var(--modal-sub-actions-padding);
}
.modal-actions{
  margin-top:var(--modal-actions-margin-top);
}
.modal-sub-card > .hint{
  margin:0;
  padding:var(--modal-sub-hint-padding);
  font-size:var(--modal-hint-size);
  line-height:var(--modal-hint-line);
}

.toast{
  position: relative;
  color: var(--toast-text-compact, var(--text));
  border:1px solid var(--toast-border-compact, var(--border));
  border-radius: var(--toast-radius-compact, 14px);
  padding: var(--toast-padding-compact, 12px 16px);
  box-shadow: var(--toast-shadow-compact, 0 18px 40px rgba(0,0,0,.3));
  opacity: var(--toast-opacity-hidden, 0);
  transform: translateY(var(--toast-offset-y, -6px));
  transition: opacity var(--toast-transition-duration, .22s) ease, transform var(--toast-transition-duration, .22s) ease, filter var(--toast-transition-duration, .22s) ease;
}
.toast.show{
  opacity: var(--toast-opacity-visible, 1);
  transform: translateY(var(--toast-offset-y-show, 0));
}
.toast.stale{
  filter:saturate(var(--toast-stale-saturate, .9));
}
.toast.hiding{
  opacity:0;
  transform:translateY(var(--toast-offset-y, -6px));
}

/* Legend */
.legend{
  position: absolute;
  right: auto;
  left: var(--legend-left);
  bottom: var(--legend-bottom);
  z-index: var(--legend-z-index, 500); /* above Leaflet */
  width: var(--legend-width);
  max-width: var(--legend-max-width);
  background: var(--legend-bg);
  border: 1px solid var(--legend-border);
  border-radius: var(--legend-radius);
  padding: var(--legend-padding);
  box-shadow: var(--legend-shadow);
  backdrop-filter: blur(var(--legend-blur));
  color: var(--legend-text);
  font-size: var(--legend-font-size);
  max-height: var(--legend-max-height);
  overflow: auto;
}

:root[data-theme="light"] .legend{
  background: var(--legend-bg-light);
  border-color: var(--legend-border-light);
  color: var(--legend-text-light);
  box-shadow: var(--legend-shadow-light);
}

.legend .lg-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom: var(--legend-head-gap, 8px);
}
.legend .lg-title{
  font-weight: 800;
  letter-spacing: var(--legend-title-letter-spacing, .2px);
}
.legend .lg-sub{
  color: var(--legend-sub-text, rgba(233,238,252,.72));
  font-size: var(--legend-sub-size, 10px);
  margin-top: var(--legend-sub-gap, 2px);
}
:root[data-theme="light"] .legend .lg-sub{
  color: var(--legend-sub-text-light, rgba(8,12,20,.65));
}
.legend .lg-close{
  border:1px solid var(--legend-close-border, rgba(255,255,255,.28));
  background: var(--legend-close-bg, rgba(255,255,255,.12));
  color: var(--legend-close-text, rgba(255,255,255,.98));
  border-radius: var(--legend-close-radius, 10px);
  padding: var(--legend-close-padding, 6px 8px);
  cursor:pointer;
  line-height: var(--legend-close-line-height, 1);
}
.legend .lg-close:hover{ background: var(--legend-close-bg-hover, rgba(255,255,255,.10)); }
:root[data-theme="light"] .legend .lg-close{
  border-color: var(--legend-close-border-light, rgba(10,20,40,.28));
  background: var(--legend-close-bg-light, rgba(10,20,40,.06));
  color: var(--legend-close-text-light, rgba(8,12,20,.95));
}

.legend .lg-section{
  margin-top: var(--legend-section-gap, 8px);
  padding-top: var(--legend-section-padding-top, 8px);
  border-top: 1px solid var(--legend-section-border, rgba(255,255,255,.10));
}
.legend .lg-sec-title{
  font-weight: 700;
  color: var(--legend-section-title-text, rgba(233,238,252,.92));
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  gap: var(--legend-section-title-gap, 8px);
}
:root[data-theme="light"] .legend .lg-sec-title{ color: var(--legend-section-title-text-light, rgba(8,12,20,.9)); }
.legend .lg-sec-title::-webkit-details-marker{ display:none; }
.legend .lg-sec-title::after{
  content:"+";
  margin-left:auto;
  opacity: var(--legend-section-title-marker-opacity, .7);
}
.legend .lg-section[open] .lg-sec-title::after{
  content:"-";
}
.legend .lg-body{
  margin-top: var(--legend-body-gap-top, 6px);
  display:flex;
  flex-direction:column;
  gap: var(--legend-body-gap, 0);
}

.legend .lg-item{
  display:flex;
  align-items:center;
  gap: var(--legend-item-gap, 10px);
  padding: var(--legend-item-padding, 2px 2px);
}
.legend .lg-swatch{
  width: var(--legend-swatch-size, 10px);
  height: var(--legend-swatch-size, 10px);
  border-radius: var(--legend-swatch-radius, 6px);
  border: 1px solid var(--lg-swatch-border, rgba(255,255,255,.14));
  background: var(--lg-swatch-bg, rgba(255,255,255,.35));
  flex: 0 0 auto;
}
.legend .lg-line{
  width: var(--legend-line-width, 18px);
  height: var(--legend-line-height, 0);
  border-top: var(--legend-line-stroke, 3px solid var(--lg-line-color, rgba(255,255,255,.75)));
  border-radius: var(--map-compass-needle-radius, 999px);
  flex: 0 0 auto;
}
.legend .lg-label{
  color: var(--legend-label-text, rgba(233,238,252,.92));
}
:root[data-theme="light"] .legend .lg-label{ color: var(--legend-label-text-light, rgba(8,12,20,.9)); }
.legend .lg-muted{
  color: var(--legend-muted-text, rgba(233,238,252,.62));
}
:root[data-theme="light"] .legend .lg-muted{ color: var(--legend-muted-text-light, rgba(8,12,20,.55)); }

.legend.hidden{ display:none; }

/* Airspace labels */
.airspace-label{
  background: transparent;
  border: none;
  color: var(--airspace-label-text, rgba(233,238,252,.95));
  --airspace-label-fg: var(--airspace-label-fg-token, rgba(233,238,252,.95));
  --airspace-label-bg: var(--airspace-label-bg-token, rgba(12,18,38,0));
  --airspace-label-contrast: var(--airspace-label-contrast-token, rgba(10,20,40,.95));
  --airspace-label-scale: var(--airspace-label-scale-token, 1);
  padding: var(--airspace-label-padding, 4px 6px);
  border-radius: var(--airspace-label-radius, 8px);
  font-size: calc(var(--airspace-label-font-size, 12px) * var(--airspace-label-scale));
  white-space: nowrap;
  box-shadow: none;
  text-align:center;
  font-weight: var(--airspace-label-font-weight, 700);
  text-shadow: var(--airspace-label-text-shadow, 0 1px 2px rgba(0,0,0,.6));
}
:root[data-theme="light"] .airspace-label{
  background: transparent;
  border-color: transparent;
  color: var(--airspace-label-text-light, rgba(10,20,40,.95));
  --airspace-label-fg: var(--airspace-label-fg-token-light, rgba(10,20,40,.95));
  --airspace-label-bg: var(--airspace-label-bg-token-light, rgba(255,255,255,0));
  --airspace-label-contrast: var(--airspace-label-contrast-token-light, rgba(255,255,255,.98));
  text-shadow: var(--airspace-label-text-shadow-light, 0 1px 2px rgba(255,255,255,.7));
}
.airspace-label .airspace-name{
  font-weight: var(--airspace-name-font-weight, 700);
  margin-bottom: var(--airspace-name-gap, 2px);
}
.airspace-label .airspace-freq{
  font-size: var(--airspace-freq-font-size, 10px);
  line-height: var(--airspace-freq-line-height, 1.2);
}
.airspace-label .airspace-class{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width: var(--airspace-class-size, 18px);
  height: var(--airspace-class-size, 18px);
  border:1px solid var(--airspace-class-border, rgba(255,255,255,.35));
  font-weight: var(--airspace-class-font-weight, 800);
  font-size: var(--airspace-class-font-size, 16px);
  margin-bottom: var(--airspace-class-gap, 2px);
  background: var(--airspace-label-fg);
  color: var(--airspace-label-contrast);
  text-shadow: var(--airspace-class-text-shadow, 0 1px 1px rgba(0,0,0,.35));
}
:root[data-theme="light"] .airspace-label .airspace-class{
  border-color: var(--airspace-class-border-light, rgba(10,20,40,.35));
}
.airspace-label .airspace-upper,
.airspace-label .airspace-lower{
  font-size: var(--airspace-level-font-size, 10px);
}
.airspace-label .airspace-hr{
  height: var(--airspace-divider-height, 1px);
  background: var(--airspace-divider-bg, rgba(255,255,255,.25));
  margin: var(--airspace-divider-margin, 3px 0);
}
:root[data-theme="light"] .airspace-label .airspace-hr{
  background: var(--airspace-divider-bg-light, rgba(10,20,40,.2));
}

/* Live sync */
.livebar{
  height: var(--livebar-height, 10px);
  background: var(--livebar-bg, rgba(255,255,255,.10));
  border: 1px solid var(--border);
  border-radius: var(--livebar-radius, 999px);
  overflow: hidden;
  margin-top: var(--livebar-margin-top, 8px);
}
.livebar-fill{
  height: 100%;
  width: 0%;
  background: var(--livebar-fill-bg, rgba(56,189,248,.9));
  transition: width var(--livebar-fill-transition-duration, .25s) ease;
}
.live-stale{
  color: var(--warn);
}

/* Responsive */
@media (max-width: 980px){
  .map-page .layout{
    height: 100%;
    min-height: 0;
    gap:0;
    padding:0;
  }
  .map-page .panel-toggle{display:inline-flex}
  .map-page .left{padding-right:var(--map-left-padding-right-mobile, 0); top:var(--map-left-top-mobile, 12px);}
  .dashboard-shell .map-page .left{
    left: calc(var(--sidebar-current) + var(--map-left-offset-mobile, 12px));
  }
  .map-page .right{
    min-height: var(--map-right-min-height-mobile, 100%);
  }
  .map-page .map-overlay{
    left: var(--map-overlay-inset-mobile);
    right: var(--map-overlay-inset-mobile);
    bottom: var(--map-overlay-inset-mobile);
    flex-wrap: wrap;
    justify-content: flex-start;
  }
  .map-page #map .terrain-mini-map{
    top:auto;
    transform:none;
    right:calc(8px + env(safe-area-inset-right));
    bottom:calc(var(--map-data-bar-reserved-space, 78px) + 8px + env(safe-area-inset-bottom));
    width:min(210px, 50vw);
  }
  .map-page .map-data-bar{
    --map-data-bar-reserved-space: 82px;
    left:max(6px, calc(env(safe-area-inset-left) + 6px));
    right:max(6px, calc(env(safe-area-inset-right) + 6px));
    bottom:calc(6px + env(safe-area-inset-bottom));
    gap:4px;
    padding:6px;
    border-radius:10px;
  }
  .map-page .map-data-item{
    padding:4px;
  }
  .map-page .map-data-label{
    font-size:9px;
  }
  .map-page .map-data-value{
    font-size:11px;
  }

  body.panel-open{overflow:hidden}
  #map{min-height:0; border-radius:0}
  .panel{border-radius:var(--panel-radius-mobile, 12px)}
  .panel-head{padding:var(--panel-head-padding-mobile)}
  .controls{padding:var(--panel-controls-padding-mobile)}
  .section{padding:var(--panel-section-padding-mobile)}
  .table-wrap{max-height:var(--table-wrap-max-height-mobile, 45vh)}
  .row2{grid-template-columns:1fr}
  .filter-grid{grid-template-columns:1fr}
  .slider-row{grid-template-columns: var(--slider-row-columns-mobile, 90px 1fr 70px 50px)}
  .pill{max-width:100%}
}

@media (max-width: 820px){
  body{font-size:var(--font-size-body-mobile, 14px)}
  .map-page .layout{padding:0}
  #map{min-height:0}
  .map-page .map-data-bar{
    --map-data-bar-reserved-space: 116px;
    grid-template-columns:repeat(4, minmax(0, 1fr));
  }
  .map-page .map-data-label{
    font-size:10px;
  }
  .map-page .map-data-value{
    font-size:12px;
  }
  .legend{
    right: var(--map-overlay-inset-mobile);
    left: var(--map-overlay-inset-mobile);
    bottom: var(--map-overlay-inset-mobile);
    width: auto;
  }
}

@media (hover: none) and (pointer: coarse){
  .sidebar-nav,
  .map-page .left,
  .legend,
  .table-wrap,
  .country-list,
  .data-sync-page .left,
  .sync-log-output{
    -webkit-overflow-scrolling: touch;
  }
  .maplibregl-ctrl-group button{
    width:var(--maplibre-ctrl-btn-size-touch, 40px);
    height:var(--maplibre-ctrl-btn-size-touch, 40px);
  }
  .maplibregl-ctrl-scale{
    font-size:var(--maplibre-scale-font-size, 12px);
    padding:var(--maplibre-scale-padding-touch, 6px 10px);
  }
  .map-page .panel-toggle-icon{
    width:var(--map-panel-toggle-size-touch, 38px);
    height:var(--map-panel-toggle-size-touch, 38px);
    font-size:var(--map-panel-toggle-icon-size-touch, 18px);
    border-radius:var(--poi-marker-label-radius, 10px);
  }
  .basemap-toggle{
    min-height:var(--maplibre-ctrl-btn-size-touch, 40px);
    padding:var(--basemap-toggle-padding-mobile);
  }
  .legend .lg-close{
    padding:var(--legend-close-padding-touch, 8px 10px);
    min-height:var(--legend-close-min-height-touch, 36px);
  }
  input[type="checkbox"].toggle.toggle-sm{
    width:var(--maplibre-ctrl-btn-size-touch, 40px);
    height:var(--toggle-sm-height-touch, 24px);
  }
  input[type="checkbox"].toggle.toggle-sm::before{
    width:var(--toggle-sm-knob-size-touch, 18px);
    height:var(--toggle-sm-knob-size-touch, 18px);
  }
  input[type="checkbox"].toggle.toggle-sm:checked::before{
    transform: translateX(var(--toggle-sm-knob-shift-touch, 18px));
  }
  .input,
  select,
  textarea{
    font-size:var(--map-context-info-close-size, 16px);
  }
  .btn{
    min-height:var(--spinner-lg-size, 44px);
  }
  .maplibregl-ctrl-top-right{
    top: var(--maplibre-ctrl-inset-touch, 12px);
    right: var(--maplibre-ctrl-inset-touch, 12px);
  }
  .maplibregl-ctrl-bottom-left{
    bottom: var(--maplibre-ctrl-inset-touch, 12px);
    left: var(--maplibre-ctrl-inset-touch, 12px);
  }
  .basemap-menu{
    max-height: var(--basemap-menu-max-height-mobile);
    overflow: auto;
  }
  .legend{
    right: auto;
    left: var(--legend-mobile-left);
    bottom: var(--legend-mobile-bottom);
    width: var(--legend-mobile-width);
  }
}

/* data-sync */
/* data-sync page */
.data-sync-page *{box-sizing:border-box}
.data-sync-page{
  height:100%;
  width:100%;
  margin:0;
  padding:0;
}
.data-sync-page .layout{
  display:grid;
  grid-template-columns: var(--data-sync-layout-columns, 25% 75%);
  gap:var(--data-sync-layout-gap, 12px);
  padding:var(--data-sync-layout-padding, 12px);
  height: calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - (var(--page-padding) * 2));
  min-height:0;
  width:100%;
}
.data-sync-page .left{
  padding-right:var(--page-padding);
  min-width:0; 
  overflow:auto;
}
.data-sync-page .center{
  min-width:0;
  padding-right:var(--data-sync-center-padding-right, 12px);
  box-sizing:border-box;
}

.data-sync-page .map-overlay{
  position: absolute;
  left: var(--map-overlay-left-offset, 16px);
  bottom: var(--map-overlay-bottom, 16px);
  display: flex;
  align-items: center;
  gap: var(--map-overlay-gap, 8px);
  padding: var(--map-overlay-padding, 8px);
  border-radius: var(--map-overlay-radius, 16px);
  background: var(--background);
  border: 1px solid var(--border);
  box-shadow: var(--map-overlay-shadow, 0 12px 26px rgba(0,0,0,.28));
  backdrop-filter: blur(var(--map-overlay-blur, 10px));
  z-index: var(--data-sync-overlay-z-index, 600);
}
.data-sync-page .pill-block{display:block; width:100%; margin-top:var(--poi-section-body-margin-top, 8px);}
.data-sync-page .row2{display:grid; grid-template-columns:1fr 1fr; gap:var(--poi-section-body-gap, 8px); margin-top:var(--poi-section-body-margin-top, 8px)}
.data-sync-page .row input[type="checkbox"].toggle{
  transform:none;
}
.data-sync-page .hint#countrySelectionSummary{
  font-size:var(--map-compass-value-size, 10px);
  line-height:1.3;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:100%;
}
.data-sync-page .slider-row label{white-space:nowrap}
.data-sync-page .slider-row input[type="range"]{
  height:var(--data-sync-slider-track-height, 6px);
  accent-color:var(--good);
}
.data-sync-page .slider-row input[type="number"]{
  background:var(--data-sync-slider-number-bg, rgba(0,0,0,.25));
  color:var(--text);
  border:1px solid var(--border);
  border-radius:var(--data-sync-slider-number-radius, 10px);
  padding:var(--data-sync-slider-number-padding, 6px 8px);
}
:root[data-theme="light"] .slider-row input[type="number"]{
  background:var(--data-sync-slider-number-bg-light, rgba(255,255,255,.9));
}
.data-sync-page .slider-row span{text-align:right; color:var(--muted)}
.map-page .overlay-action-row{
  grid-column:1 / -1;
  display:flex;
  justify-content:flex-start;
  padding-top:4px;
}
.map-page #resetZoomDefaultsBtn{
  width:100%;
  justify-content:center;
  border-radius:12px;
}
.map-page .map-airspace-filter-block{
  padding:10px;
  border:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.045);
  border-radius:10px;
}
.map-page .map-airspace-filter-block .slider-row{
  grid-template-columns: 66px minmax(92px, 1fr) 64px;
  gap:6px;
  margin-bottom:6px;
}
.map-page .map-airspace-filter-block .slider-row label{white-space:nowrap}
.map-page .map-airspace-filter-block .slider-row input[type="range"]{
  width:100%;
  min-width:92px;
  height:var(--data-sync-slider-track-height, 6px);
  accent-color:var(--good);
  appearance:none;
  -webkit-appearance:none;
  background:transparent;
}
.map-page .map-airspace-filter-block .slider-row input[type="range"]::-webkit-slider-runnable-track{
  height:6px;
  border-radius:999px;
  background:rgba(34,197,94,.25);
}
.map-page .map-airspace-filter-block .slider-row input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none;
  width:16px;
  height:16px;
  margin-top:-5px;
  border-radius:999px;
  background:#22c55e;
  border:2px solid rgba(11,18,32,.28);
}
.map-page .map-airspace-filter-block .slider-row input[type="range"]::-moz-range-track{
  height:6px;
  border-radius:999px;
  background:rgba(34,197,94,.25);
}
.map-page .map-airspace-filter-block .slider-row input[type="range"]::-moz-range-thumb{
  width:16px;
  height:16px;
  border-radius:999px;
  background:#22c55e;
  border:2px solid rgba(11,18,32,.28);
}
.map-page .map-airspace-filter-block .slider-row input[type="number"]{
  width:64px;
  min-width:64px;
  text-align:center;
  background:var(--data-sync-slider-number-bg, rgba(0,0,0,.25));
  color:var(--text);
  border:1px solid var(--border);
  border-radius:var(--data-sync-slider-number-radius, 10px);
  padding:var(--data-sync-slider-number-padding, 6px 8px);
}
:root[data-theme="light"] .map-page .map-airspace-filter-block .slider-row input[type="number"]{
  background:var(--data-sync-slider-number-bg-light, rgba(255,255,255,.9));
}
.map-page .map-airspace-filter-block .slider-row span{display:none}
.map-page .map-airspace-filter-block .slider-row input:disabled{
  opacity:0.5;
  cursor:not-allowed;
}
:root[data-theme="light"] .map-page .map-airspace-filter-block{
  background:rgba(255,255,255,.62);
  border:1px solid rgba(15,23,42,.08);
}

/* Embedded in air-plan: hide local theme toggle */
.data-sync-page .theme-toggle{display:none;}

.map-page .map-search{
  position:absolute;
  top:var(--map-search-top, 12px);
  left:50%;
  transform:translateX(-50%);
  z-index:var(--map-search-z-index, 40);
  width:var(--map-search-width);
  font-family:inherit;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:var(--map-search-gap);
}
.map-page .map-search-row{
  display:flex;
  align-items:center;
  gap:var(--map-search-row-gap);
}
.map-page .map-search.collapsed{
  width:auto;
}
.map-page .map-search-toggle{
  width:var(--map-search-toggle-size);
  height:var(--map-search-toggle-size);
  border-radius:var(--map-search-toggle-radius);
  border:1px solid var(--border);
  background:var(--surface);
  color:var(--text);
  display:grid;
  place-items:center;
  box-shadow:var(--map-search-toggle-shadow);
}
.map-page .map-search-toggle i{
  font-size:var(--map-search-toggle-icon-size);
}
.map-page .map-search-input{
  display:flex;
  align-items:center;
  gap:var(--map-search-input-gap);
  padding:var(--map-search-input-padding);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--map-search-input-radius);
  box-shadow:var(--map-search-input-shadow);
  flex:1;
  min-width:0;
  transition:width var(--map-search-collapse-duration, .5s) ease, opacity var(--map-search-collapse-duration, .5s) ease, padding var(--map-search-collapse-duration, .5s) ease, border-color var(--map-search-collapse-duration, .5s) ease;
  overflow:hidden;
}
.map-page .map-search.collapsed .map-search-input{
  width:0;
  padding:0;
  border-color:transparent;
  box-shadow:none;
  opacity:0;
  pointer-events:none;
}
.map-page .map-search-input input{
  flex:1;
  border:none;
  background:transparent;
  color:var(--text);
  font-size:var(--map-search-input-font-size);
  outline:none;
}
.map-page .map-search-results{
  margin-top:var(--map-search-results-margin-top);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--map-search-results-radius);
  box-shadow:var(--map-search-results-shadow);
  display:none;
  overflow:hidden;
}
.map-page .map-search.collapsed .map-search-results{
  display:none !important;
}
.map-page .map-search-results.show{display:block;}
.map-page .map-search-item{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:var(--map-search-item-gap);
  width:100%;
  padding:var(--map-search-item-padding);
  border:none;
  background:transparent;
  color:var(--text);
  text-align:left;
}
.map-page .map-search-item span{
  font-size:var(--map-search-item-meta-font-size);
  text-transform:uppercase;
  color:var(--text-muted);
  letter-spacing:var(--map-search-item-meta-letter-spacing);
}
.map-page .map-search-item:hover{
  background:var(--pill);
}
.map-page .map-search-empty{
  padding:var(--map-search-empty-padding);
  font-size:var(--map-search-empty-font-size);
  color:var(--text-muted);
}
@media (max-width: 720px){
  .map-page .map-search{
    width:var(--map-search-mobile-width);
  }
}


.map-page #map{position:relative;}

.map-control-btn{
box-shadow:var(--map-control-btn-shadow-light, 0 10px 22px rgba(10,20,40,.12));
border: 1px solid var(--border);
}

.map-page #map .panel-toggle-icon.map-control-btn{
  width:var(--map-control-btn-size);
  height:var(--map-control-btn-size);
  border-radius:var(--map-control-btn-radius);
  font-size:var(--map-control-btn-font-size);
  background:var(--map-control-btn-bg);
  border:1px solid var(--map-control-btn-border);
  box-shadow:var(--map-control-btn-shadow);
  color: var(--map-control-icon, var(--map-control-icon-color));
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0;
  line-height:1;
  appearance:none;
  -webkit-appearance:none;
  box-sizing:border-box;
}
.map-page #map .panel-toggle-icon.map-control-btn.map-route-toggle.is-active,
.map-page #map .panel-toggle-icon.map-control-btn.map-measure-toggle.is-active,
.map-page #map .panel-toggle-icon.map-control-btn.map-polygon-toggle.is-active{
  color:var(--map-control-active-color);
  border-color:var(--map-control-active-border);
  box-shadow:var(--map-control-active-shadow);
}

.map-page #map .panel-toggle-icon.map-control-btn.map-user-location-toggle.is-locked{
  color: var(--map-control-locked-color);
  box-shadow: var(--map-control-locked-shadow);
  transform: translateY(var(--map-control-locked-shift-y, 1px));
}
.map-page #map .panel-toggle-icon.map-control-btn.map-user-location-toggle.is-unlocked{
  color: var(--map-control-unlocked-color);
}
:root[data-theme="light"] .map-page #map .panel-toggle-icon.map-control-btn.map-user-location-toggle.is-locked{
  color: var(--map-control-locked-color-light);
  box-shadow: var(--map-control-locked-shadow-light);
  transform: translateY(var(--map-control-locked-shift-y, 1px));
}
:root[data-theme="light"] .map-page #map .panel-toggle-icon.map-control-btn.map-user-location-toggle.is-unlocked{
  color: var(--map-control-unlocked-color-light);
}

:root[data-theme="light"] .map-page #map .panel-toggle-icon.map-control-btn{
  background:var(--map-control-btn-bg-light);
  border:1px solid var(--map-control-btn-border-light);
  box-shadow:var(--map-control-btn-shadow-light);
  color: var(--map-control-icon, var(--map-control-icon-color-light));
}
:root[data-theme="light"] .map-page #map .panel-toggle-icon.map-control-btn.map-route-toggle.is-active,
:root[data-theme="light"] .map-page #map .panel-toggle-icon.map-control-btn.map-measure-toggle.is-active,
:root[data-theme="light"] .map-page #map .panel-toggle-icon.map-control-btn.map-polygon-toggle.is-active{
  color:var(--map-control-active-color-light);
  border-color:var(--map-control-active-border-light);
  box-shadow:var(--map-control-active-shadow-light);
}
.map-page #map .panel-toggle-icon.map-control-btn svg{
  width:var(--map-control-svg-size);
  height:var(--map-control-svg-size);
  display:block;
  stroke: currentColor;
  fill: none;
}
.map-page #map .panel-toggle-icon.map-control-btn i{
  display:block;
  font-size:var(--map-control-icon-size);  line-height:var(--map-control-line-height, 1);
}
.map-page .basemap-toggle i,
.map-page .map-search-toggle i{
  display:block;
  font-size:var(--map-control-aux-icon-size);  line-height:var(--map-control-line-height, 1);
}
.map-page #map .panel-toggle-icon{
  position:static !important;
  inset:auto !important;
}
.map-page #map .map-location-control{
  position:absolute;
  top:calc(var(--map-location-control-top, 10px) + env(safe-area-inset-top));
  left:calc(var(--map-location-control-left, 10px) + env(safe-area-inset-left));
  z-index:var(--map-location-control-z-index, 31);
}
.map-page #map .map-location-control .map-user-location-toggle{
  width:var(--map-location-toggle-size, 52px);
  height:var(--map-location-toggle-size, 52px);
  border-radius:var(--map-location-toggle-radius, 14px);
  font-size:var(--map-location-toggle-font-size, 18px);
  border: 1px solid var(--text);
}
.map-page #map.has-location-control .map-control-column{
  top:calc(var(--map-control-column-top-offset-with-location, 71px) + env(safe-area-inset-top));
}
.map-page #map .panel-toggle-icon.map-control-btn[data-tooltip],
.map-page #map .basemap-toggle[data-tooltip]{
  position:relative !important;
}
.map-page .map-control-column{
  position:absolute;
  top:var(--map-control-column-top, 10px);
  left:var(--map-control-column-left, 10px);
  z-index:var(--map-control-column-z-index, 30);
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:var(--map-control-column-gap, 5px);
  transform:translateZ(0);
}
.map-page .map-control-group{
  display:flex;
  flex-direction:column;
  gap:var(--map-control-group-gap, 6px);
  padding:var(--map-control-group-padding, 6px);
  border-radius:var(--map-control-group-radius, 14px);
  background:var(--map-control-group-bg, rgba(19, 73, 199, 0.329));
  border:1px solid var(--map-control-group-border, rgba(148,163,184,.18));
  box-shadow:var(--map-control-group-shadow, 0 10px 26px rgba(0,0,0,.25));
  backdrop-filter: blur(var(--map-control-group-blur, 8px));
  align-items:center;
  box-sizing:border-box;
}
.map-page .map-compass-control{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--map-compass-gap, 4px);
  padding:var(--map-compass-padding, 6px 8px);
  border-radius:var(--map-compass-radius, 14px);
  background:var(--map-compass-bg, rgba(19, 73, 199, 0.329));
  border:1px solid var(--map-compass-border, rgba(148,163,184,.18));
  box-shadow:var(--map-compass-shadow, 0 10px 26px rgba(0,0,0,.25));
  backdrop-filter: blur(var(--map-compass-blur, 8px));
  min-width:var(--map-compass-min-width, 64px);
  pointer-events:none;
}
.map-page .map-compass-rose{
  width:var(--map-compass-rose-size, 44px);
  height:var(--map-compass-rose-size, 44px);
  border-radius:var(--other-user-flash-radius, 50%);
  border:1px solid var(--map-compass-rose-border, rgba(148,163,184,.28));
  background:var(--map-compass-rose-bg, rgba(10,20,40,.42));
  position:relative;
}
.map-page .map-compass-north{
  position:absolute;
  top:var(--map-compass-north-top, 3px);
  left:50%;
  transform:translateX(-50%);
  font-size:var(--map-compass-north-size, 9px);
  font-weight:var(--map-compass-north-weight, 700);
  color:var(--map-compass-north-color, #f8fafc);
  letter-spacing:var(--map-compass-north-tracking, .04em);
}
.map-page .map-compass-needle{
  position:absolute;
  left:50%;
  top:var(--map-compass-needle-top, 8px);
  width:var(--map-compass-needle-width, 2px);
  height:var(--map-compass-needle-height, 28px);
  transform-origin:50% var(--map-compass-needle-origin-y, 14px);
  transform:translateX(-50%) rotate(0deg);
  background:var(--map-compass-needle-bg, linear-gradient(to bottom, #ef4444 0 50%, #e2e8f0 50% 100%));
  border-radius:var(--map-compass-needle-radius, 999px);
  box-shadow:var(--map-compass-needle-shadow, 0 0 0 1px rgba(0,0,0,.2));
}
.map-page .map-compass-value{
  min-width:var(--map-compass-value-min-width, 52px);
  text-align:center;
  font-size:var(--map-compass-value-size, 10px);
  font-weight:600;
  letter-spacing:var(--map-compass-value-tracking, .02em);
  color:var(--text);
}
:root[data-theme="light"] .map-page .map-compass-control{
  background:var(--map-compass-bg-light, rgba(255,255,255,.92));
  border:1px solid var(--map-compass-border-light, rgba(10,20,40,.14));
  box-shadow:var(--map-control-btn-shadow-light, 0 10px 22px rgba(10,20,40,.12));
}
:root[data-theme="light"] .map-page .map-compass-rose{
  border-color:var(--map-compass-rose-border-light, rgba(10,20,40,.22));
  background:var(--map-compass-rose-bg-light, rgba(248,250,252,.85));
}
:root[data-theme="light"] .map-page .map-compass-north{
  color:var(--map-compass-north-color-light, #0f172a);
}

/* Reusable button-group utilities */
.ui-btn-group{
  display:flex;
  gap:0;
}
.ui-btn-group.is-vertical{
  flex-direction:column;
}
.ui-btn-group.is-horizontal{
  flex-direction:row;
}
.ui-btn-group > *{
  border-radius:0;
}
.ui-btn-group.is-vertical > *:first-child{
  border-top-left-radius:var(--ui-btn-group-radius, 12px);
  border-top-right-radius:var(--ui-btn-group-radius, 12px);
}
.ui-btn-group.is-vertical > *:last-child{
  border-bottom-left-radius:var(--ui-btn-group-radius, 12px);
  border-bottom-right-radius:var(--ui-btn-group-radius, 12px);
}
.ui-btn-group.is-horizontal > *:first-child{
  border-top-left-radius:var(--ui-btn-group-radius, 12px);
  border-bottom-left-radius:var(--ui-btn-group-radius, 12px);
}
.ui-btn-group.is-horizontal > *:last-child{
  border-top-right-radius:var(--ui-btn-group-radius, 12px);
  border-bottom-right-radius:var(--ui-btn-group-radius, 12px);
}
.ui-btn-group.is-vertical > * + *{
  border-top:1px solid var(--ui-btn-group-divider, rgba(148,163,184,.25));
}
.ui-btn-group.is-horizontal > * + *{
  border-left:1px solid var(--ui-btn-group-divider, rgba(148,163,184,.25));
}
:root[data-theme="light"] .ui-btn-group.is-vertical > * + *{
  border-top-color:var(--ui-btn-group-divider-light, rgba(10,20,40,.12));
}
:root[data-theme="light"] .ui-btn-group.is-horizontal > * + *{
  border-left-color:var(--ui-btn-group-divider-light, rgba(10,20,40,.12));
}
.map-page .map-aircraft-control{
  position:absolute;
  top:var(--map-aircraft-control-top, 16px);
  right:var(--map-aircraft-control-right, 16px);
  z-index:var(--map-aircraft-control-z-index, 30);
  display:flex;
  flex-direction:column;
  padding:var(--map-aircraft-control-padding, 6px);
  border-radius:var(--map-aircraft-control-radius, 10px);
  background:var(--map-aircraft-control-bg, rgba(19, 73, 199, 0.22));
  border:1px solid var(--map-aircraft-control-border, rgba(148,163,184,.16));
  box-shadow:var(--map-aircraft-control-shadow, 0 8px 20px rgba(0,0,0,.2));
  backdrop-filter: blur(var(--map-aircraft-control-blur, 8px));
  min-width:var(--map-aircraft-control-min-width, 120px);
}
.map-page .map-aircraft-select{
  min-width:var(--map-aircraft-select-min-width, 110px);
  padding:var(--map-aircraft-select-padding, 6px 8px);
  font-size:var(--map-aircraft-select-size, 12px);
}
:root[data-theme="light"] .map-page .map-aircraft-control{
  background:var(--map-aircraft-control-bg-light, rgba(255, 255, 255, 0.65));
  border:1px solid var(--map-aircraft-control-border-light, rgba(10,20,40,.12));
  box-shadow:var(--map-control-btn-shadow-light, 0 10px 22px rgba(10,20,40,.12));
}
.map-page .map-range-readout{
  position:absolute;
  top:var(--map-range-readout-top, 54px);
  right:var(--map-range-readout-right, 16px);
  z-index:var(--map-range-readout-z-index, 30);
  padding:var(--map-range-readout-padding, 6px 8px);
  border-radius:var(--map-range-readout-radius, 10px);
  background:var(--map-range-readout-bg, rgba(19, 73, 199, 0.22));
  border:1px solid var(--map-range-readout-border, rgba(148,163,184,.16));
  box-shadow:var(--map-range-readout-shadow, 0 8px 20px rgba(0,0,0,.2));
  backdrop-filter: blur(var(--map-range-readout-blur, 8px));
  font-size:var(--font-size-sm, 12px);
  color:var(--muted);
  white-space:nowrap;
}
:root[data-theme="light"] .map-page .map-range-readout{
  background:var(--map-range-readout-bg-light, rgba(255, 255, 255, 0.65));
  border:1px solid var(--map-range-readout-border-light, rgba(10,20,40,.12));
  box-shadow:var(--map-control-btn-shadow-light, 0 10px 22px rgba(10,20,40,.12));
}
.other-user-flash{
  width:var(--other-user-flash-size, 20px);
  height:var(--other-user-flash-size, 20px);
  border-radius:var(--other-user-flash-radius, 50%);
  border:var(--other-user-flash-border, 3px solid #f59e0b);
  box-shadow:var(--other-user-flash-shadow, 0 0 0 6px rgba(245,158,11,.25));
  background:var(--other-user-flash-bg, rgba(245,158,11,.15));
  position:relative;
}
.other-user-flash::after{
  content:"";
  position:absolute;
  inset:var(--other-user-flash-ring-inset, -6px);
  border-radius:var(--other-user-flash-radius, 50%);
  border:var(--other-user-flash-ring-border, 2px solid rgba(245,158,11,.45));
  animation: otherUserPulse var(--other-user-flash-pulse-duration, 1.4s) ease-out infinite;
}
@keyframes otherUserPulse{
  0%{transform:scale(0.6); opacity:0.9;}
  70%{transform:scale(1.4); opacity:0.3;}
  100%{transform:scale(1.6); opacity:0;}
}
.map-page .map-range-readout.over-range{
  color:var(--map-range-over-color, #ef4444);
  border-color:var(--map-range-over-border, rgba(239,68,68,.45));
}
.map-page .map-range-readout.interaction-mode{
  border-style:dashed;
}
.map-page .map-range-readout.interaction-mode::after{
  content:"interaction";
  margin-left:var(--map-range-interaction-pill-margin-left, 8px);
  padding:var(--map-range-interaction-pill-padding, 2px 6px);
  border-radius:var(--map-compass-needle-radius, 999px);
  background:var(--map-range-interaction-pill-bg, rgba(59,130,246,.2));
  color:var(--text);
  font-size:var(--map-range-interaction-pill-size, 9px);
  letter-spacing:var(--map-range-interaction-pill-tracking, .08em);
  text-transform:uppercase;
}
:root[data-theme="light"] .map-page .map-range-readout.interaction-mode::after{
  background:var(--map-range-interaction-pill-bg-light, rgba(59,130,246,.16));
}
.map-page .map-range-readout:empty{
  display:none;
}
.map-context-menu{
  position:fixed;
  z-index:10000;
  min-width:var(--map-context-min-width, 220px);
  background:var(--map-context-bg, rgba(16,20,30,.95));
  color:var(--map-context-text, #f2f6ff);
  border:1px solid var(--map-context-border, rgba(255,255,255,.12));
  border-radius:var(--map-context-radius, 14px);
  box-shadow:var(--map-context-shadow, 0 16px 40px rgba(0,0,0,.35));
  padding:var(--map-context-padding, 8px);
  display:none;
  opacity:var(--map-context-opacity-hidden, 0);
  transform:translateY(var(--map-context-offset-y, -6px));
  transition:opacity var(--map-context-fade-duration, .18s) ease, transform var(--map-context-fade-duration, .18s) ease;
}
.map-context-menu.open{
  opacity:var(--map-context-opacity-visible, 1);
  transform:translateY(0);
}
.map-context-menu .context-header{
  padding:var(--map-context-header-padding, 8px 10px 10px);
  border-bottom:1px solid var(--map-context-divider, rgba(255,255,255,.08));
  margin-bottom:var(--map-context-header-margin-bottom, 6px);
}
.map-context-menu .context-coords{
  font-weight:600;
  font-size:var(--font-size-sm, 12px);
}
.map-context-menu .context-w3w{
  font-size:var(--map-context-w3w-size, 11px);
  color:var(--muted);
  margin-top:var(--map-context-w3w-margin-top, 2px);
}
.map-context-menu .context-action{
  width:100%;
  display:flex;
  align-items:center;
  gap:var(--poi-section-body-gap, 8px);
  padding:var(--map-context-action-padding, 8px 10px);
  border-radius:var(--poi-marker-label-radius, 10px);
  border:0;
  background:transparent;
  color:inherit;
  font-size:var(--font-size-sm, 12px);
  text-align:left;
  cursor:pointer;
}
.map-context-menu .context-action:hover{
  background:var(--map-context-action-bg-hover, rgba(255,255,255,.08));
}
.map-context-menu .context-action i{
  width:var(--map-context-action-icon-width, 16px);
  text-align:center;
  opacity:.9;
}
.map-context-menu.info-open .context-info-panel{
  display:block;
}
.map-context-menu .context-info-panel{
  display:none;
  margin:var(--map-context-info-panel-margin, 6px 0 8px);
  padding:var(--map-context-info-panel-padding, 8px 8px 6px);
  border-radius:var(--poi-section-radius, 12px);
  border:1px solid var(--poi-section-border, rgba(255,255,255,.08));
  background:var(--map-context-info-bg, rgba(12,18,28,.6));
}
.map-context-menu .context-info-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:var(--font-size-sm, 12px);
  font-weight:600;
  margin-bottom:var(--map-context-info-head-margin-bottom, 6px);
}
.map-context-menu .context-info-close{
  border:0;
  background:transparent;
  color:inherit;
  font-size:var(--map-context-info-close-size, 16px);
  line-height:1;
  cursor:pointer;
  opacity:.7;
}
.map-context-menu .context-info-close:hover{
  opacity:1;
}
.map-context-menu .context-info-list{
  display:flex;
  flex-direction:column;
  gap:var(--map-context-info-list-gap, 6px);
}
.map-context-menu .context-info-item{
  display:flex;
  flex-direction:column;
  gap:var(--map-context-info-item-gap, 2px);
  padding:var(--map-aircraft-select-padding, 6px 8px);
  border-radius:var(--poi-marker-label-radius, 10px);
  border:1px solid var(--poi-section-border, rgba(255,255,255,.08));
  background:var(--poi-intel-source-bg, rgba(255,255,255,.04));
  color:inherit;
  text-align:left;
  cursor:pointer;
  font-size:var(--font-size-xs, 11px);
}
.map-context-menu .context-info-item:hover{
  background:var(--map-context-action-bg-hover, rgba(255,255,255,.08));
}
.map-context-menu .context-info-name{
  font-weight:600;
}
.map-context-menu .context-info-meta{
  color:var(--muted);
}
.map-context-menu .context-info-empty{
  font-size:var(--font-size-xs, 11px);
  color:var(--muted);
  padding:var(--map-context-info-empty-padding, 4px 2px);
}
:root[data-theme="light"] .map-context-menu{
  background:var(--map-context-bg-light, rgba(255,255,255,.98));
  color:var(--map-context-text-light, #172235);
  border-color:var(--map-context-border-light, rgba(12,18,38,.15));
  box-shadow:var(--map-context-shadow-light, 0 16px 36px rgba(40,60,90,.18));
}
:root[data-theme="light"] .map-context-menu .context-info-panel{
  background:var(--map-context-info-bg-light, rgba(245,248,255,.9));
  border-color:var(--map-context-info-border-light, rgba(10,20,40,.12));
}
:root[data-theme="light"] .map-context-menu .context-info-item{
  background:var(--map-context-info-item-bg-light, rgba(10,20,40,.03));
  border-color:var(--map-context-info-item-border-light, rgba(10,20,40,.08));
}
:root[data-theme="light"] .map-context-menu .context-info-item:hover{
  background:var(--map-context-info-item-bg-hover-light, rgba(10,20,40,.06));
}
:root[data-theme="light"] .map-context-menu .context-action:hover{
  background:var(--map-context-info-item-bg-hover-light, rgba(10,20,40,.06));
}
.poi-marker{
  width:var(--poi-marker-size, 12px);
  height:var(--poi-marker-size, 12px);
  border-radius:var(--other-user-flash-radius, 50%);
  background:var(--poi-marker-bg, #f59e0b);
  border:var(--poi-marker-border, 2px solid #fff);
  box-shadow:var(--poi-marker-shadow, 0 6px 16px rgba(0,0,0,.35));
  cursor:pointer;
}
.poi-marker-icon{
  width:var(--poi-marker-icon-size, 30px);
  height:var(--poi-marker-icon-size, 30px);
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:auto;
  position:relative;
  touch-action:none;
  cursor:pointer;
}
.poi-marker-icon-inner{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
  border-radius:var(--other-user-flash-radius, 50%);
  background:var(--poi-color, #60a5fa);
  border:var(--poi-marker-inner-border, 2px solid #ffffff);
  box-shadow:var(--poi-marker-inner-shadow, 0 8px 18px rgba(0,0,0,.35));
  color:var(--poi-marker-inner-text, #0b1220);
  font-size:var(--poi-marker-inner-size, 26px);
  transform-origin:center;
  transition:transform var(--poi-marker-inner-transition-duration, .15s) ease;
}
.poi-marker-icon.poi-draggable .poi-marker-icon-inner{
  box-shadow:var(--poi-marker-inner-shadow-draggable, 0 0 0 3px rgba(59,130,246,.45), 0 10px 22px rgba(0,0,0,.35));
}
.poi-marker-icon.poi-draggable{
  cursor:grab;
}
.poi-marker-icon.poi-draggable:active{
  cursor:grabbing;
}
.poi-marker-label{
  position:absolute;
  left:50%;
  bottom:calc(100% + var(--poi-marker-label-offset, 8px));
  transform:translateX(-50%);
  white-space:nowrap;
  background:var(--poi-marker-label-bg, rgba(15,23,42,.42));
  color:var(--poi-marker-label-text, #f8fafc);
  border:1px solid var(--poi-marker-label-border, rgba(148,163,184,.35));
  border-radius:var(--poi-marker-label-radius, 10px);
  padding:var(--poi-marker-label-padding, 4px 8px);
  font-size:var(--poi-marker-label-size, 11px);
  opacity:0;
  pointer-events:none;
  transition:opacity var(--poi-marker-label-fade-duration, .12s) ease, transform var(--poi-marker-label-fade-duration, .12s) ease;
}
.poi-marker-label:empty{
  display:none;
}
.poi-marker-label::after{
  content:'';
  position:absolute;
  left:50%;
  top:100%;
  transform:translateX(-50%);
  width:0;
  height:0;
  border-left:var(--poi-marker-label-arrow-half-width, 7px) solid transparent;
  border-right:var(--poi-marker-label-arrow-half-width, 7px) solid transparent;
  border-top:var(--poi-marker-label-arrow, 8px solid rgba(15,23,42,.92));
}
.poi-marker-icon.poi-hover .poi-marker-label{
  opacity:1;
  transform:translateX(-50%) translateY(var(--poi-marker-label-lift, -2px));
}
.poi-marker-icon.poi-label-visible .poi-marker-label{
  opacity:1;
  transform:translateX(-50%) translateY(var(--poi-marker-label-lift, -2px));
}
:root[data-theme="light"] .poi-marker-label{
  background:var(--poi-marker-label-bg-light, rgba(255,255,255,.54));
  color:var(--poi-marker-label-text-light, #0f172a);
  border-color:var(--poi-marker-label-border-light, rgba(15,23,42,.12));
}
:root[data-theme="light"] .poi-marker-label::after{
  border-top-color:var(--poi-marker-label-arrow-light, rgba(255,255,255,.96));
}
:root[data-theme="light"] .poi-marker-icon-inner{
  box-shadow:var(--poi-marker-inner-shadow-light, 0 8px 16px rgba(10,20,40,.2));
}
.poi-fields{
  margin-top:var(--poi-fields-margin-top, 12px);
  padding-top:var(--poi-fields-padding-top, 10px);
  border-top:1px dashed var(--poi-fields-divider, rgba(255,255,255,.12));
}
:root[data-theme="light"] .poi-fields{
  border-top-color:var(--poi-fields-divider-light, rgba(10,20,40,.15));
}
.route-modal-section-title{
  margin:var(--route-modal-section-title-margin, 8px 0 6px);
  font-size:var(--font-size-sm, 12px);
  font-weight:600;
  color:var(--muted);
}
.poi-section{
  border:1px solid var(--poi-section-border, rgba(255,255,255,.08));
  border-radius:var(--poi-section-radius, 12px);
  padding:var(--poi-section-padding, 6px 8px 8px);
  background:var(--poi-section-bg, rgba(255,255,255,.03));
  margin-bottom:var(--poi-section-margin-bottom, 10px);
}
.poi-section[open]{
  background:var(--poi-section-bg-open, rgba(255,255,255,.05));
}
.poi-section-title{
  cursor:pointer;
  font-weight:600;
  font-size:var(--font-size-sm, 12px);
  color:var(--text);
  list-style:none;
}
.poi-section-title::-webkit-details-marker{
  display:none;
}
.poi-section-title::after{
  content:"+";
  float:right;
  color:var(--muted);
}
.poi-section[open] .poi-section-title::after{
  content:"Ã¢â‚¬â€œ";
}
.poi-section-body{
  margin-top:var(--poi-section-body-margin-top, 8px);
  display:flex;
  flex-direction:column;
  gap:var(--poi-section-body-gap, 8px);
}
.poi-heli-intel-loading{
  display:flex;
  align-items:center;
  gap:var(--poi-section-body-gap, 8px);
}
#poiHeliNearestHospitalSource,
#poiHeliNearestPoliceSource{
  margin-top:var(--poi-intel-source-margin-top, 4px);
  padding:var(--map-aircraft-select-padding, 6px 8px);
  border-radius:var(--poi-intel-source-radius, 8px);
  border:1px solid var(--map-context-border, rgba(255,255,255,.12));
  background:var(--poi-intel-source-bg, rgba(255,255,255,.04));
  color:var(--text);
  font-size:var(--map-aircraft-select-size, 12px);
  line-height:1.35;
  min-height:var(--poi-intel-source-min-height, 28px);
}
.spinner{
  display:inline-block;
  border-radius:var(--other-user-flash-radius, 50%);
  border:2px solid var(--spinner-border, rgba(148,163,184,.35));
  border-top-color:var(--spinner-border-top, #38bdf8);
  animation:spinnerTurn var(--spinner-turn-duration, .8s) linear infinite;
}
.spinner-sm{
  width:var(--spinner-sm-size, 14px);
  height:var(--spinner-sm-size, 14px);
}
.spinner-lg{
  width:var(--spinner-lg-size, 44px);
  height:var(--spinner-lg-size, 44px);
  border-width:var(--spinner-lg-border-width, 4px);
}
@keyframes spinnerTurn{
  from{ transform:rotate(0deg); }
  to{ transform:rotate(360deg); }
}
:root[data-theme="light"] .poi-section{
  background:var(--poi-section-bg-light, rgba(10,20,40,.02));
  border-color:var(--poi-section-border-light, rgba(10,20,40,.1));
}
:root[data-theme="light"] #poiHeliNearestHospitalSource,
:root[data-theme="light"] #poiHeliNearestPoliceSource{
  border-color:var(--poi-intel-source-border-light, rgba(10,20,40,.16));
  background:var(--poi-intel-source-bg-light, rgba(10,20,40,.04));
}
:root[data-theme="light"] .map-page .map-control-group {
  background:var(--map-control-group-bg-light, rgba(255, 255, 255, 0.479));
  border:1px solid var(--map-control-group-border-light, rgba(10,20,40,.12));
  box-shadow:var(--map-control-group-shadow-light, 0 12px 26px rgba(10,20,40,.12));
}
.map-page .map-control-zoom{
  align-items:center;
  gap:0;
  padding-bottom: var(--map-control-zoom-padding-bottom, 25px);
  overflow:visible;
  position:relative;
  border-radius:var(--map-zoom-stack-radius);
  box-shadow:var(--map-control-zoom-shadow, 0 10px 26px rgba(0,0,0,.25));
}
.map-page #map .map-control-zoom .panel-toggle-icon.map-control-btn{
  border-radius:var(--map-zoom-stack-inner-radius);
  border-left:1px solid var(--map-zoom-stack-border-side);
  border-right:1px solid var(--map-zoom-stack-border-side);
  color:var(--map-control-zoom-icon-color, #e2e8f0);
  width:var(--map-control-btn-size);
  height:var(--map-control-btn-size);
}
.map-page #map .map-control-zoom .panel-toggle-icon.map-control-btn:first-of-type{
  border-top-left-radius:var(--map-zoom-stack-corner-radius);
  border-top-right-radius:var(--map-zoom-stack-corner-radius);
}
.map-page #map .map-control-zoom .panel-toggle-icon.map-control-btn:last-of-type{
  border-bottom-left-radius:var(--map-zoom-stack-corner-radius);
  border-bottom-right-radius:var(--map-zoom-stack-corner-radius);
}
.map-page .map-control-zoom .panel-toggle-icon.map-control-btn + .panel-toggle-icon.map-control-btn{
  border-top:1px solid var(--map-zoom-stack-border-top);
}
:root[data-theme="light"] .map-page #map .map-control-zoom .panel-toggle-icon.map-control-btn{
  background:var(--map-control-zoom-bg-light, rgba(255,255,255,.92));
  color:var(--poi-marker-label-text-light, #0f172a);
  border-left:1px solid var(--map-zoom-stack-border-side-light);
  border-right:1px solid var(--map-zoom-stack-border-side-light);
}
:root[data-theme="light"] .map-page .map-control-zoom .panel-toggle-icon.map-control-btn + .panel-toggle-icon.map-control-btn{
  border-top:1px solid var(--map-zoom-stack-border-top-light);
}
.map-page .map-control-zoom .map-zoom-display{
  position:absolute;
  left:50%;
  bottom:var(--map-zoom-display-mini-bottom);
  transform:translateX(-50%);
  width:var(--map-zoom-display-mini-size);
  height:var(--map-zoom-display-mini-size);
  font-size:var(--map-zoom-display-font-size);
  border-radius:var(--map-zoom-display-mini-radius);
  background:var(--text);
  border:1px solid var(--map-zoom-display-mini-border);
  color:var(--surface);
  box-shadow:var(--map-zoom-display-mini-shadow);
}

.map-page .overlay-row{
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:var(--map-overlay-row-gap, 10px);
  padding:var(--map-overlay-row-padding, 6px 0);
}
.map-page .overlay-grid{
  display:grid;
  gap:var(--map-overlay-grid-gap, 6px);
  overflow-x:hidden;
}
.map-page .overlay-region-block{
  display:grid;
  gap:4px;
  padding:6px 8px;
  border-radius:9px;
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.06);
}
.map-page .overlay-region-row{
  display:grid;
  grid-template-columns:auto minmax(0, 1fr);
  gap:8px;
  align-items:center;
}
.map-page .overlay-region-row .input{
  width:100%;
  min-width:0;
}
.map-page .overlay-region-row select[multiple]{
  min-height:132px;
  padding:6px 8px;
}
.map-page .overlay-region-summary{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:normal;
  line-height:1.35;
}
.country-checklist{
  display:grid;
  gap:4px;
  max-height:180px;
  overflow:auto;
  border:1px solid var(--border);
  border-radius:10px;
  padding:6px;
  background:rgba(255,255,255,.03);
}
.country-search{
  width:100%;
}
.country-check-item{
  display:grid;
  grid-template-columns:16px minmax(0, 1fr);
  align-items:center;
  gap:8px;
  padding:4px 6px;
  border-radius:8px;
  font-size:12px;
}
.country-check-item:hover{
  background:rgba(255,255,255,.06);
}
.country-check-item input[type="checkbox"]{
  width:14px;
  height:14px;
  margin:0;
}
:root[data-theme="light"] .country-checklist{
  background:rgba(255,255,255,.78);
  border-color:rgba(15,23,42,.12);
}
:root[data-theme="light"] .country-check-item:hover{
  background:rgba(15,23,42,.05);
}
.profile-country-selector{
  display:grid;
  gap:6px;
}
.profile-style-legacy .profile-country-selector{
  margin-top:6px;
}
.profile-style-legacy .profile-country-selector .country-search{
  display:block;
  width:100%;
  margin:0;
}
.profile-style-legacy .profile-country-selector .country-checklist{
  display:grid;
  gap:4px;
}
.profile-style-legacy .profile-country-selector .country-check-item{
  display:grid !important;
  grid-template-columns:16px minmax(0, 1fr) !important;
  width:100% !important;
  text-align:left !important;
  padding:4px 6px !important;
  margin:0 !important;
  border-radius:8px;
}
.profile-style-legacy .profile-country-selector .country-check-item span{
  display:block;
  width:auto;
  text-align:left;
  padding:0;
  margin:0;
  white-space:normal;
}
.profile-style-legacy details.section > summary.section-title{
  list-style:none;
  cursor:pointer;
}
.profile-style-legacy .section[open] .section-title::before{
  content:"";
}
.profile-style-legacy details.section > summary.section-title::-webkit-details-marker{
  display:none;
}
.profile-style-legacy details.section .section-body{
  margin-top:8px;
}
.map-page .overlay-grid-head{
  display:grid;
  grid-template-columns:minmax(0, 1fr) 96px;
  gap:6px;
  align-items:end;
  margin-bottom:2px;
}
.map-page .overlay-col-head{
  font-size:var(--font-size-xs, 11px);
  text-transform:uppercase;
  letter-spacing:var(--map-overlay-col-head-tracking, .06em);
  color:var(--muted);
  font-weight:700;
  text-align:center;
}
.map-page .overlay-pair{
  display:grid;
  grid-template-columns:minmax(0, 1fr) 96px;
  gap:6px;
  align-items:center;
}
.map-page .overlay-toggle-row{
  margin:0;
  padding:6px 8px;
  border-radius:9px;
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.06);
}
.map-page .overlay-zoom-row{
  margin:0;
  padding:5px 6px;
  border-radius:9px;
  background: var(--map-overlay-zoom-row-bg, rgba(255,255,255,.03));
  border:1px solid rgba(255,255,255,.06);
  grid-template-columns:minmax(0, 1fr);
  gap:6px;
}
.map-page .overlay-row .overlay-name{
  font-weight:600;
}
.map-page .overlay-zoom-row .overlay-min-zoom{
  grid-column:1;
  width:100%;
  min-width:0;
}
.map-page .overlay-zoom-row .overlay-zoom-value{
  display:none;
}
:root[data-theme="light"] .map-page .overlay-toggle-row,
:root[data-theme="light"] .map-page .overlay-zoom-row{
  background:rgba(255,255,255,.75);
  border:1px solid rgba(15,23,42,.09);
}
:root[data-theme="light"] .map-page .overlay-region-block{
  background:rgba(255,255,255,.75);
  border:1px solid rgba(15,23,42,.09);
}
.map-page .overlay-row .input-compact{
  width:var(--map-overlay-input-compact-width, 72px);
  padding:var(--map-aircraft-select-padding, 6px 8px);
}
@media (max-width: 520px){
  .map-page .overlay-grid-head{
    display:none;
  }
  .map-page .overlay-pair{
    grid-template-columns:1fr;
  }
}

.map-page .map-search-marker{






  width:var(--map-search-marker-size, 18px);
  height:var(--map-search-marker-size, 18px);
  border-radius:var(--map-compass-needle-radius, 999px);
  background:var(--snap-flash-border-color, #38bdf8);
  border:var(--snap-core-border, 3px solid #0f172a);
  box-shadow:var(--snap-core-shadow, 0 0 0 6px rgba(15,23,42,.3));
  pointer-events:none;
  z-index:9;
}
.map-page .map-search-pulse{






  width:var(--map-search-pulse-size, 28px);
  height:var(--map-search-pulse-size, 28px);
  border-radius:var(--map-compass-needle-radius, 999px);
  border:var(--snap-flash-border-width, 3px) solid var(--snap-flash-border-color, rgba(56,189,248,.95));
  background:var(--snap-flash-bg, rgba(56,189,248,.25));

  opacity:0;
  pointer-events:none;
  z-index:8;
}
.map-page .map-search-pulse.show{
  animation:mapSearchPulse var(--map-search-pulse-duration, 1.2s) ease-out 0s 3;
}
@keyframes mapSearchPulse{
  0%{transform:scale(.35); opacity:1;}
  60%{transform:scale(5.2); opacity:.2;}
  100%{transform:scale(6.2); opacity:0;}
}

.map-page .measure-label-marker{
  pointer-events:none;
  user-select:none;
}
.map-page .measure-label-badge{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  min-width:var(--measure-label-min-width, 42px);
  min-height:var(--measure-label-min-height, 36px);
  padding:var(--measure-label-padding, 4px 7px);
  border-radius:var(--measure-label-radius, 9px);
  border:var(--heli-intel-flash-selected-outline-width, 1.8px) solid var(--heli-intel-flash-selected-outline-color, rgba(15,23,42,.65));
  background:var(--label-colour);
  color:var(--heli-intel-flash-label-color, #111111);
  box-shadow:var(--heli-intel-hover-shadow, 0 2px 6px rgba(15,23,42,.32));
  line-height:1.05;
}
.map-page .measure-label-value{
  display:block;
  font-size:var(--font-size-md, 13px);
  font-weight:800;
  letter-spacing:var(--measure-label-value-tracking, -0.01em);
}
.map-page .measure-label-unit{
  display:block;
  margin-top:var(--measure-label-unit-margin-top, 1px);
  font-size:var(--font-size-xs, 11px);
  font-weight:800;
  letter-spacing:var(--measure-label-unit-tracking, 0.02em);
  text-transform:uppercase;
}

.map-page .leg-overlay{
  pointer-events:none;
}
.map-page .leg-overlay-pill{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:var(--leg-overlay-border);
  color:var(--leg-overlay-text);
  font-weight:700;
  font-size:var(--leg-overlay-font-size, 11px);
  line-height:1;
  min-height:var(--leg-overlay-min-height, 24px);
  padding:0;
  border-radius:0;
  border:0;
  white-space:nowrap;
  clip-path:var(--leg-overlay-clip, polygon(0 0, calc(100% - 12px) 0, 100% 50%, calc(100% - 12px) 100%, 0 100%, 10px 50%));
  box-shadow:var(--leg-overlay-shadow, 0 2px 8px rgba(15,23,42,.25));
  transform:rotate(var(--leg-rot));
  transform-origin:left center;
}
.map-page .leg-overlay-pill::before{
  content:"";
  position:absolute;
  inset:var(--leg-overlay-inner-inset, 2px);
  background:var(--leg-overlay-bg);
  clip-path:var(--leg-overlay-inner-clip, polygon(0 0, calc(100% - 10px) 0, 100% 50%, calc(100% - 10px) 100%, 0 100%, 8px 50%));
  pointer-events:none;
}
.map-page .leg-overlay-pill .leg-overlay-text{
  position:relative;
  z-index:1;
  display:inline-flex;
  align-items:center;
  gap:var(--leg-overlay-text-gap, 2px);
  min-height:var(--leg-overlay-min-height, 24px);
  padding:var(--leg-overlay-text-padding, 0 16px 0 18px);
  transform:rotate(var(--leg-text-rot, 0deg));
  transform-origin:center;
}
.map-page .leg-overlay-pill .leg-overlay-divider{
  opacity:var(--leg-overlay-divider-opacity, .30);
  font-weight:var(--leg-overlay-divider-weight, 600);
}

.map-page .snap-flash{
  width:var(--snap-flash-size, 14px);
  height:var(--snap-flash-size, 14px);
  border-radius:var(--snap-flash-radius, 999px);
  border:var(--snap-flash-border-width, 2px) solid var(--snap-flash-border-color, rgba(56,189,248,.95));
  box-shadow:0 0 0 0 var(--snap-flash-shadow-color, rgba(56,189,248,.45));
  pointer-events:none;
  transform:scale(var(--snap-flash-scale-start, 1));
  animation:snapFlash var(--snap-flash-duration, .8s) ease-out 1;
}
@keyframes snapFlash{
  0%{transform:scale(var(--snap-flash-keyframe-scale-from, .6)); opacity:1; box-shadow:0 0 0 0 var(--snap-flash-shadow-color, rgba(56,189,248,.45));}
  100%{transform:scale(var(--snap-flash-keyframe-scale-to, 2.8)); opacity:0; box-shadow:0 0 0 var(--snap-flash-ring-size, 16px) var(--snap-flash-shadow-end, rgba(56,189,248,0));}
}

.heli-intel-flash{
  width:var(--heli-intel-flash-size, 28px);
  height:var(--heli-intel-flash-size, 28px);
  border-radius:var(--heli-intel-flash-radius, 999px);
  border:var(--heli-intel-flash-border-width, 3px) solid var(--heli-intel-flash-border-color, #ffffff);
  box-shadow:0 0 0 0 var(--heli-intel-flash-shadow-ring, rgba(255,255,255,.35)), 0 0 0 var(--heli-intel-flash-shadow-spread, 8px) var(--heli-intel-flash-shadow-backdrop, rgba(0,0,0,.2));
  position:relative;
  isolation:isolate;
  pointer-events:auto;
  display:grid;
  place-items:center;
  cursor:pointer;
}
.heli-intel-flash-poi{
  background:var(--heli-intel-flash-poi-bg, #38bdf8);
}
.heli-intel-flash-hospital{
  background:var(--heli-intel-flash-hospital-bg, #ef4444);
}
.heli-intel-flash-police{
  background:var(--heli-intel-flash-police-bg, #2563eb);
}
.heli-intel-flash::after{
  content:"";
  position:absolute;
  inset:var(--heli-intel-flash-pulse-inset, -6px);
  border-radius:var(--heli-intel-flash-radius, 999px);
  border:var(--heli-intel-flash-pulse-border-width, 2px) solid var(--heli-intel-flash-pulse-border-color, rgba(255,255,255,.75));
  animation:heliIntelPulseRing var(--heli-intel-flash-pulse-duration, 1.2s) ease-out infinite;
  pointer-events:none;
}
.heli-intel-flash.is-dim{
  opacity:var(--heli-intel-flash-dim-opacity, .35);
  filter:saturate(var(--heli-intel-flash-dim-saturate, .35)) brightness(var(--heli-intel-flash-dim-brightness, .92));
}
.heli-intel-flash.is-selected{
  opacity:1;
  filter:none;
  box-shadow:0 0 0 var(--heli-intel-flash-selected-outline-width, 2px) var(--heli-intel-flash-selected-outline-color, rgba(255,255,255,.9)), 0 0 0 var(--heli-intel-flash-selected-glow-width, 10px) var(--heli-intel-flash-selected-glow-color, rgba(15,23,42,.35));
}
.heli-intel-flash-label{
  position:relative;
  z-index:2;
  font-size:var(--heli-intel-flash-label-size, 9px);
  line-height:1;
  font-weight:var(--heli-intel-flash-label-weight, 800);
  color:var(--heli-intel-flash-label-color, #0b1020);
  text-shadow:var(--heli-intel-flash-label-shadow, 0 1px 1px rgba(255,255,255,.5));
  letter-spacing:var(--heli-intel-flash-label-tracking, .2px);
}
.heli-intel-hover{
  position:absolute;
  left:50%;
  bottom:calc(100% + var(--heli-intel-hover-offset, 8px));
  transform:translateX(-50%);
  min-width:var(--heli-intel-hover-min-width, 120px);
  max-width:var(--heli-intel-hover-max-width, 220px);
  padding:var(--heli-intel-hover-padding, 6px 8px);
  border-radius:var(--heli-intel-hover-radius, 8px);
  background:var(--heli-intel-hover-bg, rgba(15,23,42,.95));
  color:var(--heli-intel-hover-text, #f8fafc);
  font-size:var(--heli-intel-hover-font-size, 11px);
  line-height:var(--heli-intel-hover-line-height, 1.3);
  white-space:normal;
  text-align:center;
  opacity:0;
  pointer-events:none;
  transition:opacity var(--heli-intel-hover-fade-duration, .14s) ease;
  z-index:4;
}
.heli-intel-flash:hover .heli-intel-hover{
  opacity:1;
}
@keyframes heliIntelPulseRing{
  0%{transform:scale(var(--heli-intel-pulse-scale-from, .85)); opacity:var(--heli-intel-pulse-opacity-from, .9);}
  70%{transform:scale(var(--heli-intel-pulse-scale-mid, 1.7)); opacity:var(--heli-intel-pulse-opacity-mid, .28);}
  100%{transform:scale(var(--heli-intel-pulse-scale-to, 1.9)); opacity:0;}
}
.poi-modal-busy{
  position:absolute;
  inset:0;
  z-index:var(--poi-modal-busy-z-index, 5);
  display:none;
  align-items:center;
  justify-content:center;
  background:var(--poi-modal-busy-backdrop, rgba(6,10,18,.52));
  backdrop-filter:blur(var(--poi-modal-busy-blur, 2px));
  border-radius:inherit;
}
.poi-modal-busy.open{
  display:flex;
}
.poi-modal-busy-card{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--poi-modal-busy-card-gap, 10px);
  background:var(--poi-modal-busy-card-bg, rgba(15,23,42,.92));
  color:var(--poi-modal-busy-card-text, #f8fafc);
  border:1px solid var(--poi-modal-busy-card-border, rgba(148,163,184,.35));
  border-radius:var(--poi-modal-busy-card-radius, 14px);
  padding:var(--poi-modal-busy-card-padding, 14px 18px);
  box-shadow:var(--poi-modal-busy-card-shadow, 0 10px 24px rgba(0,0,0,.35));
}
.poi-modal-busy-text{
  font-size:var(--poi-modal-busy-text-size, 13px);
  font-weight:var(--poi-modal-busy-text-weight, 600);
}
.modal.map-preview-hidden{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
  transition:opacity var(--poi-map-preview-fade-duration, .22s) ease, visibility var(--poi-map-preview-fade-duration, .22s) linear;
}
.poi-preview-return{
  position:absolute;
  right:var(--poi-preview-return-right, 14px);
  top:var(--poi-preview-return-top, 14px);
  z-index:var(--poi-preview-return-z-index, 930);
  border-radius:var(--poi-preview-return-radius, 999px);
  padding:var(--poi-preview-return-padding, 12px 20px);
  font-size:var(--poi-preview-return-font-size, 14px);
  font-weight:var(--poi-preview-return-font-weight, 700);
  box-shadow:var(--poi-preview-return-shadow, 0 8px 20px rgba(0,0,0,.3));
  background:var(--poi-preview-return-bg, #0f172a) !important;
  color:var(--poi-preview-return-text, #f8fafc) !important;
  border:1px solid var(--poi-preview-return-border, #0f172a) !important;
  opacity:1 !important;
}
.poi-preview-return:not(.open){
  display:none;
}
:root[data-theme="light"] .poi-modal-busy{
  background:var(--poi-modal-busy-backdrop-light, rgba(255,255,255,.58));
}
:root[data-theme="light"] .poi-modal-busy-card{
  background:var(--poi-modal-busy-card-bg-light, rgba(255,255,255,.96));
  color:var(--poi-modal-busy-card-text-light, #0f172a);
  border-color:var(--poi-modal-busy-card-border-light, rgba(10,20,40,.18));
}
:root[data-theme="light"] .heli-intel-hover{
  background:var(--heli-intel-hover-bg-light, rgba(255,255,255,.98));
  color:var(--heli-intel-hover-text-light, #0f172a);
  border:1px solid var(--heli-intel-hover-border-light, rgba(10,20,40,.18));
}
:root[data-theme="light"] .poi-preview-return{
  box-shadow:var(--poi-preview-return-shadow-light, 0 8px 20px rgba(10,20,40,.18));
}

 .disclaimer {
            font-family: var(--disclaimer-font-family, sans-serif);
            font-size: var(--disclaimer-font-size, 12px);
            line-height: var(--disclaimer-line-height, 1.5);

            border-left: var(--disclaimer-border-width, 4px) solid var(--disclaimer-accent, #dc3545);
            padding: var(--disclaimer-padding, 15px);
            margin: var(--disclaimer-margin, 20px 0);
        }

        .disclaimer-heading {
            color: var(--disclaimer-accent, #dc3545);
            margin-top: var(--disclaimer-heading-margin-top, 0);
            margin-bottom: var(--disclaimer-heading-margin-bottom, 15px);
            font-size: var(--disclaimer-heading-font-size, 16px);
        }

        .disclaimer-list {
            padding-left: var(--disclaimer-list-padding-left, 20px);
            margin: var(--disclaimer-list-margin, 15px 0);
        }

        .disclaimer-list li {
            margin-bottom: var(--disclaimer-list-item-gap, 10px);
        }

        .responsibility-list {
            padding-left: var(--responsibility-list-padding-left, 20px);
            margin: var(--responsibility-list-margin, 10px 0 15px 0);
        }

        .responsibility-list li {
            margin-bottom: var(--responsibility-list-item-gap, 8px);
        }

        .update-notice {
            background-color: var(--update-notice-bg, #fff3cd);
            color: var(--update-notice-text, #7b2142);
            border: 1px solid var(--update-notice-border, #ffeaa7);
            padding: var(--update-notice-padding, 10px);
            border-radius: var(--update-notice-radius, 4px);
        }

        .privacy-link {
            margin-top: var(--privacy-link-margin-top, 15px);
            padding-top: var(--privacy-link-padding-top, 15px);
            border-top: 1px solid var(--privacy-link-border-top, #dee2e6);
        }

        .privacy-link a {
            color: var(--privacy-link-anchor-color, #007bff);
            text-decoration: var(--privacy-link-anchor-decoration, none);
        }

        .privacy-link a:hover {
            text-decoration: var(--privacy-link-anchor-hover-decoration, underline);
        }

/* POI admin page */

.poi-admin-shell{
  width:var(--poi-admin-shell-width, min(1240px, calc(100vw - 36px)));
  margin:0 auto;
  display:grid;
  grid-template-rows:auto minmax(0, 1fr);
  gap:var(--poi-admin-shell-gap, 14px);
  min-height:auto;
}
.poi-admin-hero{
  padding:var(--poi-admin-hero-padding, 16px 18px 14px);
}
.poi-admin-hero h1{
  margin:var(--poi-admin-hero-title-margin, 0 0 6px);
}
.poi-admin-table-panel{
  border:1px solid var(--border);
  border-radius:var(--radius-form);
  background:var(--surface);
  min-width:0;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.poi-table-head{
  display:grid;
  gap:var(--poi-table-head-gap, 12px);
  border:0;
  border-bottom:1px solid var(--border);
  border-radius:0;
  background: linear-gradient(180deg, color-mix(in srgb, var(--surface) 86%, transparent 14%), color-mix(in srgb, var(--surface2) 90%, transparent 10%));
}
.poi-table-title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--poi-table-title-row-gap, 10px);
}
.poi-table-title-block h1{
  margin:var(--poi-table-title-margin, 0 0 4px);
  font-size:var(--poi-table-title-size, 24px);
}
.poi-table-title-block .muted{
  margin:0;
}
.poi-table-filters{
  display:grid;
  grid-template-columns:var(--poi-table-filters-columns, minmax(240px, 2fr) repeat(5, minmax(0, 1fr)));
  gap:var(--poi-table-filters-gap, 8px);
  align-items:center;
}
.poi-table-filters .input{
  min-height:var(--poi-table-filter-control-height);
  height:var(--poi-table-filter-control-height);
  width:100%;
}
.poi-table-filters .btn{
  min-height:var(--poi-table-filter-control-height);
  height:var(--poi-table-filter-control-height);
  width:100%;
  white-space:nowrap;
}
.poi-table-host{
  flex:1;
  min-height:var(--poi-table-host-min-height);
  max-height:calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - var(--poi-table-host-max-offset));
  border-top:1px solid var(--border);
  border-radius:var(--poi-table-host-radius);
  overflow:auto;
}
.poi-admin-page .table th{
  font-size:var(--poi-table-header-font-size);
  letter-spacing:var(--poi-table-header-letter-spacing);
  text-transform:var(--poi-table-header-text-transform);
}
.poi-admin-page .table td{
  font-size:var(--poi-table-cell-font-size, 12px);
  line-height:var(--poi-table-cell-line-height, 1.35);
}
.poi-admin-page{
  --poi-table-row-odd-bg: rgba(10, 18, 34, 0.38);
  --poi-table-row-even-bg: rgba(24, 36, 62, 0.56);
  --poi-table-row-hover-bg: rgba(64, 104, 168, 0.38);
}
.poi-admin-page .table tbody tr:nth-child(odd) td{
  background: var(--poi-table-row-odd-bg);
}
.poi-admin-page .table tbody tr:nth-child(even) td{
  background: var(--poi-table-row-even-bg);
}
.poi-admin-page .table tr:hover td{
  cursor:default;
  background: var(--poi-table-row-hover-bg);
}
@media (hover: hover) and (pointer: fine){
  .poi-admin-page .table tr.is-clickable td:first-child{
    position:relative;
    padding-right:var(--poi-row-edit-pad-right, 26px);
  }
  .poi-admin-page .table tr.is-clickable .poi-row-edit-affordance{
    position:absolute;
    right:var(--poi-row-edit-affordance-right, 8px);
    top:50%;
    transform:translateY(-50%);
    font-size:var(--poi-row-edit-affordance-size, 12px);
    color:var(--muted);
    opacity:0;
    transition:opacity var(--poi-row-edit-affordance-fade-duration, .15s) ease, color var(--poi-row-edit-affordance-fade-duration, .15s) ease;
    pointer-events:none;
  }
  .poi-admin-page .table tr.is-clickable:hover .poi-row-edit-affordance,
  .poi-admin-page .table tr.is-clickable:focus-visible .poi-row-edit-affordance{
    opacity:.78;
    color:var(--text);
  }
}
.poi-admin-page .table .table-actions .btn{
  min-height:var(--poi-table-action-btn-size);
  width:var(--poi-table-action-btn-size);
  padding:0;
  border-radius:var(--poi-table-action-btn-radius);
  border:var(--border-transparent-1, 1px solid transparent);
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.poi-admin-page .table .table-actions [data-edit]{
  background:var(--route-action-edit-bg, #2563eb);
  border-color:var(--route-action-edit-border, #1d4ed8);
}
.poi-admin-page .table .table-actions [data-delete]{
  background:var(--route-action-delete-bg, #dc2626);
  border-color:var(--route-action-delete-border, #b91c1c);
}
.poi-admin-page .table .table-actions .btn i{
  color:var(--route-action-edit-text, #ffffff);
  font-size:var(--poi-table-action-icon-size);
  line-height:1;
}
.poi-admin-page .table .table-actions .btn:hover{
  filter:brightness(var(--poi-table-action-hover-brightness));
}
.poi-editor-modal .modal-card{
  width:var(--modal-card-width-lg);
}
.poi-editor-card .modal-body{
  padding:var(--poi-editor-body-padding);
  max-height:var(--poi-editor-body-max-height);
  overflow:auto;
}
.poi-editor-sections{
  display:grid;
  gap:var(--poi-editor-sections-gap);
}
.poi-form-section{
  border:1px solid var(--border);
  border-radius:var(--poi-editor-section-radius);
  background: color-mix(in srgb, var(--surface) 88%, var(--color-elevated) 12%);
  padding:var(--poi-editor-section-padding);
}
.poi-form-title{
  margin:0 0 var(--poi-editor-title-margin-bottom);
  font-size:var(--poi-editor-title-size, 12px);
  letter-spacing:var(--poi-editor-title-letter-spacing, .04em);
  text-transform:uppercase;
  color:var(--muted);
  font-weight:700;
}
.poi-editor-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:var(--poi-editor-grid-gap);
}
.poi-field{
  display:grid;
  grid-template-columns:1fr;
  row-gap:var(--poi-editor-field-row-gap);
  margin:0;
  padding:0;
  border:0;
}
.poi-field label:not(.row){
  display:block;
  width:auto;
  margin:0;
  padding:0;
  text-align:left;
  font-size:var(--poi-editor-label-font-size);
  font-weight:var(--poi-editor-label-font-weight);
  color:var(--muted);
  letter-spacing:var(--poi-editor-label-letter-spacing);
  text-transform:var(--poi-editor-label-text-transform);
  white-space:normal;
}
.poi-field .input{
  width:100%;
  max-width:100%;
  border-radius:var(--poi-editor-input-radius);
  padding:0 var(--poi-editor-input-padding-x);
  margin:0;
}
.poi-field-full,
.poi-field-actions{
  grid-column:1 / -1;
}
.poi-editor-card #poiDescription{
  min-height:var(--poi-editor-description-min-height);
  max-width:100%;
  padding-top:var(--poi-editor-description-padding-y);
  padding-bottom:var(--poi-editor-description-padding-y);
}
.poi-field-actions .row{
  width:100%;
  justify-content:flex-end;
  gap:var(--poi-editor-actions-row-gap);
  padding-top:var(--poi-editor-actions-row-padding-top);
  border-top:var(--poi-editor-actions-row-border-top);
}

:root[data-theme="light"] .poi-admin-hero{
  background: var(--auth-btn-bg, linear-gradient(180deg, #f7fbff, #eef5ff));
  border-color: var(--auth-btn-border, #cfdced);
}
:root[data-theme="light"] .poi-table-head{
  background: var(--auth-btn-bg-hover, linear-gradient(180deg, #f8fbff, #edf4fe));
  border-color: var(--auth-btn-border-hover, #c7d6ea);
}
:root[data-theme="light"] .poi-table-host{
  border-color: var(--auth-btn-border-hover, #c7d6ea);
}
:root[data-theme="light"] .poi-admin-page .table th{
  background: var(--auth-btn-bg-active, #e9f1fb);
}
:root[data-theme="light"] .poi-admin-page{
  --poi-table-row-odd-bg: #ffffff;
  --poi-table-row-even-bg: #eef4fc;
  --poi-table-row-hover-bg: #dbe9fb;
}
:root[data-theme="light"] .poi-form-section{
  background: var(--auth-link-btn-bg, #f5f9ff);
  border-color: var(--auth-link-btn-border, #ccd9ec);
}
:root[data-theme="light"] .poi-field .input{
  background: var(--auth-link-btn-bg-hover, #ffffff);
  border-color: var(--auth-link-btn-border-hover, #bfcfe5);
  color: var(--auth-link-btn-text, #122033);
}
:root[data-theme="light"] .poi-field .input:focus-visible{
  border-color: var(--auth-link-btn-border-focus, #7ea6df);
  box-shadow: var(--auth-link-btn-focus-shadow, 0 0 0 3px rgba(37, 99, 235, 0.12));
}

@media (max-width: 1180px){
  .poi-admin-shell{
    width:var(--poi-admin-shell-width-tablet, min(1240px, calc(100vw - 24px)));
  }
  .poi-table-filters{
    grid-template-columns:var(--poi-table-filters-columns-tablet, repeat(3, minmax(0, 1fr)));
  }
}

@media (max-width: 820px){
  .poi-table-filters,
  .poi-editor-grid{
    grid-template-columns:1fr;
  }
  .poi-table-host{
    min-height:var(--poi-table-host-min-height-mobile);
    max-height:calc((var(--app-vh, 1vh) * 100) - var(--topbar-height) - var(--poi-table-host-max-offset-mobile));
  }
  .poi-editor-modal .modal-card{
    width:var(--poi-editor-modal-card-width-mobile, calc(100vw - 18px));
  }
}
