/* ── RESET & VARIABLES ────────────────────────── */
*{box-sizing:border-box;margin:0;padding:0;font-family:'DM Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;}
:root{
  --bg:#ffffff;--bgBox:#f4f8fb;--primary:#30363b;--secondary:#555;
  --third:#828c99;--blue:#0ea5e9;--border:rgba(30,30,30,0.1);
  --shadow:rgb(15 15 15/8%) 0 1px 3px,rgb(15 15 15/5%) 0 4px 12px;
  --green:#10b981;--red:#ef4444;
  --left-w:280px;--right-w:320px;
  --rail-w:44px;--rail-threshold:88px;
}
html,body{height:100%;background:var(--bg);color:var(--primary);overflow:hidden;}

/* ── TOPBAR ──────────────────────────────────── */
#topbar{height:56px;border-bottom:1px solid var(--border);background:var(--bg);
  display:flex;align-items:center;padding:0 20px;gap:12px;position:relative;z-index:1000;}
.mana-logo-wrap{display:flex;align-items:center;gap:10px;cursor:pointer;text-decoration:none;}
.mana-logo-icon{position:relative;width:36px;height:36px;flex-shrink:0;}
.mana-logo-icon svg{width:100%;height:100%;}
.mana-logo-icon span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:Tahoma,Verdana,sans-serif;font-weight:900;font-size:15px;color:white;line-height:1;pointer-events:none;}
.logo-wordmark{font-size:17px;font-weight:900;letter-spacing:-0.5px;color:var(--primary);}
.logo-sub{font-size:10px;color:var(--third);font-weight:600;vertical-align:super;margin-left:1px;letter-spacing:.02em;}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:8px;position:relative;}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:50px;
  font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s,transform .1s;white-space:nowrap;}
.btn-primary{background:var(--primary);color:white;border:none;}
.btn-primary:hover{opacity:.85;transform:translateY(-1px);}
.btn-ghost{background:none;border:1px solid var(--border);color:var(--primary);text-decoration:none;}
.btn-ghost:hover{background:var(--bgBox);}
.menu-wrap{position:relative;}
.drop-menu{display:none;position:absolute;top:calc(100% + 6px);right:0;
  background:var(--bg);border:1px solid var(--border);border-radius:12px;
  box-shadow:var(--shadow),rgb(15 15 15/12%) 0 8px 24px;
  overflow:hidden;min-width:170px;z-index:2000;}
.drop-menu.open{display:block;}
.drop-item{display:flex;align-items:center;gap:10px;padding:10px 16px;
  font-size:13px;cursor:pointer;color:var(--primary);transition:background .12s;
  border:none;background:none;width:100%;text-align:left;font-family:'DM Sans',sans-serif;}
.drop-item:hover{background:var(--bgBox);}
.drop-item svg{width:14px;height:14px;color:var(--third);flex-shrink:0;}
.drop-divider{height:1px;background:var(--border);}

/* ── LAYOUT ──────────────────────────────────── */
#app{display:grid;grid-template-columns:var(--left-w) 4px 1fr 4px var(--right-w);height:calc(100vh - 56px);overflow:hidden;}
.resize-handle{background:transparent;cursor:col-resize;z-index:100;
  display:flex;align-items:center;justify-content:center;transition:background .15s;user-select:none;}
.resize-handle:hover,.resize-handle.dragging{background:var(--blue);opacity:.4;border-radius:2px;}
.resize-handle::after{content:'';display:block;width:2px;height:32px;border-radius:2px;background:var(--border);}

/* ── SIDEBAR ─────────────────────────────────── */
#sidebar{border-right:1px solid var(--border);background:var(--bg);display:flex;flex-direction:column;overflow:hidden;min-width:var(--rail-w);}
.sidebar-header{padding:16px 16px 14px;border-bottom:1px solid var(--border);flex-shrink:0;overflow:hidden;transition:padding .18s;}
.sidebar-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--third);
  white-space:nowrap;overflow:hidden;transition:opacity .15s,max-height .15s;max-height:20px;opacity:1;}
.sidebar-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px 12px 12px;}
.tool-btn{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;
  border-radius:10px;border:none;background:none;color:var(--primary);
  font-size:14px;cursor:pointer;text-align:left;transition:background .15s;
  font-family:'DM Sans',sans-serif;justify-content:flex-start;}
.tool-btn:hover{background:var(--bgBox);}
.tool-btn.active{background:var(--bgBox);font-weight:600;}
.tool-btn svg{width:16px;height:16px;color:var(--third);flex-shrink:0;}
.tool-btn.active svg{color:var(--green);}
.tool-btn .btn-label{white-space:nowrap;overflow:hidden;transition:opacity .15s,max-width .15s;max-width:200px;opacity:1;}
.divider{height:1px;background:var(--border);margin:12px 0;}
.section-label{font-size:11px;color:var(--third);font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;padding:0 4px 8px;white-space:nowrap;overflow:hidden;
  transition:opacity .15s,max-height .15s;max-height:20px;opacity:1;}

/* ── COLOR SWATCHES ──────────────────────────── */
.color-row{display:flex;gap:7px;padding:6px 4px 4px;flex-wrap:wrap;}
.color-swatch{width:22px;height:22px;border-radius:50%;cursor:pointer;
  border:2.5px solid transparent;transition:transform .12s,border-color .12s,box-shadow .12s;flex-shrink:0;}
.color-swatch:hover{transform:scale(1.18);}
.color-swatch.active{border-color:var(--primary);transform:scale(1.18);box-shadow:0 0 0 2px rgba(48,54,59,.15);}

/* ── MARKER STYLE ────────────────────────────── */
.marker-row{display:flex;gap:6px;padding:4px 4px 6px;}
.marker-opt{width:32px;height:32px;border-radius:8px;border:1.5px solid var(--border);
  background:var(--bgBox);cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:border-color .12s,background .12s;}
.marker-opt:hover{border-color:var(--blue);}
.marker-opt.active{border-color:var(--primary);background:white;}
.marker-opt svg{width:14px;height:14px;}

/* ── SIDEBAR FOOTER ──────────────────────────── */
.sidebar-footer{padding:10px 12px;border-top:1px solid var(--border);flex-shrink:0;display:flex;gap:14px;overflow:hidden;}
.sidebar-footer-link{font-size:12px;color:var(--third);text-decoration:none;white-space:nowrap;
  transition:color .15s;overflow:hidden;}
.sidebar-footer-link:hover{color:var(--primary);}

/* ── RAIL MODE ───────────────────────────────── */
#sidebar.rail .sidebar-title{opacity:0;max-height:0;overflow:hidden;}
#sidebar.rail .sidebar-header{padding:12px 0 10px;}
#sidebar.rail .section-label{opacity:0;max-height:0;overflow:hidden;padding:0;}
#sidebar.rail .divider{margin:4px 0;}
#sidebar.rail .sidebar-body{padding:8px 4px;}
#sidebar.rail .tool-btn{justify-content:center;padding:10px 0;}
#sidebar.rail .tool-btn .btn-label{max-width:0;opacity:0;}
#sidebar.rail .color-row,#sidebar.rail .marker-row{display:none;}
#sidebar.rail .basemap-grid{grid-template-columns:1fr;}
#sidebar.rail .basemap-thumb{height:28px;}
#sidebar.rail .basemap-label{max-height:0;opacity:0;padding:0;}
#sidebar.rail .layer-item{justify-content:center;padding:8px 0;}
#sidebar.rail .layer-name,#sidebar.rail .layer-type{display:none;}
#sidebar.rail .empty-note{display:none;}
#sidebar.rail .sidebar-footer-link{max-width:0;opacity:0;overflow:hidden;}
#sidebar.rail .sidebar-footer{gap:0;padding:10px 0;}

/* ── BASEMAP CARDS ───────────────────────────── */
.basemap-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:4px;transition:grid-template-columns .15s;}
.basemap-card{border-radius:10px;border:2px solid var(--border);overflow:hidden;cursor:pointer;transition:border-color .15s,box-shadow .15s;background:var(--bgBox);}
.basemap-card:hover{border-color:var(--blue);}
.basemap-card.active{border-color:var(--primary);box-shadow:0 0 0 3px rgba(48,54,59,.12);}
.basemap-thumb{width:100%;height:56px;display:block;background-size:cover;background-position:center;transition:height .15s;}
.basemap-thumb-map{background-image:url('https://a.basemaps.cartocdn.com/light_all/5/15/12.png');}
.basemap-thumb-sat{background-image:url('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/5/12/15');}
.basemap-label{font-size:11px;font-weight:700;text-align:center;padding:5px 4px 6px;
  color:var(--secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  transition:opacity .15s,max-height .15s,padding .15s;max-height:28px;opacity:1;}
.basemap-card.active .basemap-label{color:var(--primary);}

/* ── LAYER LIST ──────────────────────────────── */
#layer-list{display:flex;flex-direction:column;gap:4px;}
.layer-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;
  border:1px solid var(--border);background:var(--bgBox);font-size:13px;cursor:pointer;transition:border-color .15s;}
.layer-item:hover{border-color:var(--blue);}
.layer-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.layer-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.layer-type{font-size:10px;color:var(--third);}
.empty-note{font-size:13px;color:var(--third);padding:8px 4px;line-height:1.5;}

/* ── MAP ─────────────────────────────────────── */
#map-wrap{position:relative;background:#e8ecef;overflow:hidden;display:flex;flex-direction:column;}
#map{flex:1;width:100%;}
#globe{position:absolute;top:0;left:0;width:100%;height:100%;display:none;z-index:1;background:#0a1628;}
.maplibregl-canvas{outline:none;}
.basemap-thumb-globe{
  background:radial-gradient(circle at 38% 35%,#5bbfff 0%,#2196F3 25%,#1565C0 50%,#0d3d6e 75%,#0a1628 100%);
  position:relative;overflow:hidden;
}
.basemap-thumb-globe::after{
  content:'';position:absolute;inset:0;
  background:radial-gradient(circle at 30% 25%,rgba(255,255,255,0.3) 0%,transparent 45%);
}
.globe-atmosphere{pointer-events:none;position:absolute;inset:0;z-index:2;
  background:radial-gradient(ellipse at center,transparent 55%,rgba(10,22,40,0.5) 100%);
  display:none;}
#globe-controls{display:none;position:absolute;bottom:70px;right:12px;z-index:10;
  flex-direction:column;gap:6px;}
#globe-controls button{width:34px;height:34px;border-radius:8px;border:1px solid var(--border);
  background:rgba(255,255,255,.92);backdrop-filter:blur(6px);cursor:pointer;
  display:grid;place-items:center;box-shadow:var(--shadow);transition:background .15s,color .15s;
  color:var(--primary);font-size:16px;font-weight:700;font-family:'DM Sans',sans-serif;}
#globe-controls button:hover{background:white;}
#globe-spin-indicator{display:none;position:absolute;top:12px;left:50%;transform:translateX(-50%);
  z-index:10;background:rgba(14,165,233,.9);color:white;padding:5px 14px;
  border-radius:50px;font-size:11px;font-weight:600;backdrop-filter:blur(6px);}

/* ── DRAW HINT ───────────────────────────────── */
#draw-hint{display:none;position:absolute;top:12px;left:50%;transform:translateX(-50%);
  background:var(--primary);color:white;padding:7px 16px;border-radius:50px;
  font-size:12px;font-weight:600;z-index:800;pointer-events:none;white-space:nowrap;}

/* ── DROP OVERLAY ────────────────────────────── */
#drop-overlay{display:none;position:absolute;inset:0;z-index:900;
  background:rgba(14,165,233,.1);border:3px dashed var(--blue);border-radius:4px;
  pointer-events:none;flex-direction:column;align-items:center;justify-content:center;gap:12px;}
#drop-overlay.active{display:flex;}
#drop-overlay svg{width:48px;height:48px;color:var(--blue);opacity:.8;}
#drop-overlay span{font-size:15px;font-weight:700;color:var(--blue);letter-spacing:-.2px;}

/* ── BOTTOM BAR ──────────────────────────────── */
#map-bottom-bar{
  position:absolute;bottom:0;left:0;right:0;z-index:800;
  display:flex;align-items:center;padding:8px 12px;gap:6px;
  background:linear-gradient(to top,rgba(255,255,255,.75) 0%,rgba(255,255,255,0) 100%);
  pointer-events:none;
}
.stat-pill{
  background:rgba(255,255,255,.92);border:1px solid var(--border);
  border-radius:50px;padding:5px 11px;font-size:12px;font-weight:600;
  color:var(--secondary);backdrop-filter:blur(6px);box-shadow:var(--shadow);white-space:nowrap;
}
.stat-pill span{color:var(--primary);}
#mouse-coords{
  background:rgba(255,255,255,.92);border:1px solid var(--border);
  border-radius:50px;padding:5px 14px;
  font-family:'DM Mono',monospace;font-size:11px;color:var(--secondary);
  backdrop-filter:blur(6px);box-shadow:var(--shadow);white-space:nowrap;letter-spacing:.01em;
}

/* ── RULER ───────────────────────────────────── */
#ruler-tooltip{display:none;position:absolute;z-index:900;background:var(--primary);color:white;
  padding:5px 11px;border-radius:50px;font-size:12px;font-weight:700;pointer-events:none;
  transform:translate(-50%,-140%);white-space:nowrap;box-shadow:var(--shadow);}

/* ── CONTEXT MENU ────────────────────────────── */
#ctx-menu{display:none;position:fixed;z-index:3000;background:var(--bg);
  border:1px solid var(--border);border-radius:12px;
  box-shadow:var(--shadow),rgb(15 15 15/12%) 0 8px 24px;
  overflow:hidden;min-width:190px;}
#ctx-menu.open{display:block;}
.ctx-item{display:flex;align-items:center;gap:10px;padding:10px 16px;
  font-size:13px;cursor:pointer;color:var(--primary);border:none;background:none;
  width:100%;text-align:left;transition:background .12s;font-family:'DM Sans',sans-serif;}
.ctx-item:hover{background:var(--bgBox);}
.ctx-item.danger{color:var(--red);}
.ctx-item.danger:hover{background:#fff0f0;}
.ctx-item svg{width:14px;height:14px;flex-shrink:0;color:var(--third);}
.ctx-item.danger svg{color:var(--red);}
.ctx-sep{height:1px;background:var(--border);}
.ctx-coords{padding:8px 16px;font-size:11px;color:var(--third);border-bottom:1px solid var(--border);font-family:'DM Mono',monospace;cursor:default;}

/* ── NAME MODAL ──────────────────────────────── */
#name-modal{
  display:none;position:absolute;z-index:1500;
  left:50%;top:50%;transform:translate(-50%,-50%);
  background:var(--bg);border:1px solid var(--border);border-radius:16px;
  box-shadow:rgb(15 15 15/12%) 0 8px 32px,rgb(15 15 15/6%) 0 2px 8px;
  padding:20px;min-width:280px;max-width:340px;width:90%;
}
#name-modal.open{display:block;}
#name-modal h4{font-size:14px;font-weight:700;margin-bottom:12px;color:var(--primary);}
#name-modal-input{
  width:100%;border:1px solid var(--border);border-radius:10px;
  padding:9px 12px;font-size:14px;font-family:'DM Sans',sans-serif;
  color:var(--primary);background:var(--bgBox);outline:none;
  transition:border-color .15s;
}
#name-modal-input:focus{border-color:var(--blue);}
#name-modal-btns{display:flex;gap:8px;margin-top:12px;justify-content:flex-end;}
.modal-btn{padding:7px 18px;border-radius:50px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:opacity .15s;}
.modal-btn-cancel{background:var(--bgBox);color:var(--secondary);border:1px solid var(--border);}
.modal-btn-cancel:hover{background:#eaecef;}
.modal-btn-ok{background:var(--primary);color:white;}
.modal-btn-ok:hover{opacity:.85;}

/* ── CHAT PANEL ──────────────────────────────── */
#chat-panel{border-left:1px solid var(--border);background:var(--bg);display:flex;flex-direction:column;overflow:hidden;min-width:180px;}
.chat-header{padding:16px 20px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;}
.chat-header-icon{width:28px;height:28px;border-radius:8px;background:var(--primary);display:grid;place-items:center;flex-shrink:0;}
.chat-header-icon svg{width:14px;height:14px;color:white;}
.chat-header-title{font-size:14px;font-weight:700;}
.chat-header-sub{font-size:11px;color:var(--third);}
#chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;}
.msg{max-width:92%;padding:10px 13px;border-radius:12px;font-size:13px;line-height:1.55;}
.msg.bot{background:var(--bgBox);border:1px solid var(--border);align-self:flex-start;border-bottom-left-radius:4px;}
.msg.user{background:var(--primary);color:white;align-self:flex-end;border-bottom-right-radius:4px;}
.msg-label{font-size:10px;color:var(--third);margin-bottom:2px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;}
#chat-input-area{padding:12px 16px;border-top:1px solid var(--border);display:flex;gap:8px;align-items:flex-end;}
#chat-input{flex:1;border:1px solid var(--border);border-radius:10px;padding:9px 12px;
  font-size:13px;font-family:'DM Sans',sans-serif;resize:none;line-height:1.4;max-height:100px;
  background:var(--bgBox);color:var(--primary);outline:none;transition:border-color .15s;}
#chat-input:focus{border-color:var(--blue);}
#chat-send{width:34px;height:34px;border-radius:50%;border:none;background:var(--primary);
  color:white;cursor:pointer;display:grid;place-items:center;flex-shrink:0;transition:opacity .15s,transform .1s;}
#chat-send:hover{opacity:.8;transform:scale(1.05);}
#chat-send svg{width:14px;height:14px;}

/* ── TOAST ───────────────────────────────────── */
#toast{position:fixed;bottom:60px;left:50%;transform:translateX(-50%) translateY(10px);
  background:var(--primary);color:white;padding:7px 18px;border-radius:50px;
  font-size:12px;font-weight:600;z-index:9999;opacity:0;transition:opacity .2s,transform .2s;
  pointer-events:none;white-space:nowrap;}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0);}


/* ══════════════════════════════════════════════════════════════════
   RESPONSIVE – Mobile & Tablet
   ══════════════════════════════════════════════════════════════════ */

/* ── MOBILE TOGGLE BUTTONS (hidden by default) ── */
.mobile-toggle{display:none;}

/* ── MOBILE BACKDROP ── */
#mobile-backdrop{
  display:none;position:fixed;inset:0;z-index:1100;
  background:rgba(0,0,0,.35);backdrop-filter:blur(2px);
  opacity:0;transition:opacity .25s ease;pointer-events:none;
}
#mobile-backdrop.active{display:block;opacity:1;pointer-events:auto;}

/* ══ TABLET ≤ 1024px ═══════════════════════════════════════════ */
@media (max-width:1024px){
  :root{--left-w:220px;--right-w:260px;}
  .topbar-right .btn{padding:7px 12px;font-size:12px;}
}

/* ══ MOBILE ≤ 768px ════════════════════════════════════════════ */
@media (max-width:768px){

  /* ── Topbar ── */
  #topbar{padding:0 12px;gap:8px;height:50px;}
  .mana-logo-icon{width:30px;height:30px;}
  .mana-logo-icon span{font-size:13px;}
  .logo-wordmark{font-size:15px;}
  .logo-sub{font-size:9px;}

  /* show mobile toggle buttons */
  .mobile-toggle{
    display:grid;place-items:center;
    width:36px;height:36px;border-radius:10px;border:1px solid var(--border);
    background:none;cursor:pointer;color:var(--primary);flex-shrink:0;
    transition:background .15s;
  }
  .mobile-toggle:hover,.mobile-toggle:active{background:var(--bgBox);}
  .mobile-toggle svg{width:18px;height:18px;}

  /* hide "Limpiar mapa" desktop button */
  .topbar-right > .btn.btn-ghost:first-child{display:none;}

  /* compact topbar buttons */
  .topbar-right{gap:6px;}
  .topbar-right .btn{padding:6px 10px;font-size:12px;gap:4px;}
  .topbar-right .btn svg{width:12px;height:12px;}

  /* ── Layout: single column ── */
  #app{
    grid-template-columns:1fr !important;
    grid-template-rows:1fr;
    height:calc(100vh - 50px);
    position:relative;
  }

  /* hide resize handles */
  .resize-handle{display:none !important;}

  /* ── Sidebar: overlay from left ── */
  #sidebar{
    position:absolute;top:0;left:0;bottom:0;z-index:1200;
    width:280px;max-width:85vw;
    transform:translateX(-100%);
    transition:transform .28s cubic-bezier(.4,0,.2,1);
    box-shadow:none;border-right:1px solid var(--border);
  }
  #sidebar.mobile-open{
    transform:translateX(0);
    box-shadow:4px 0 24px rgba(0,0,0,.12);
  }
  /* reset rail mode on mobile – always show full sidebar when open */
  #sidebar.rail.mobile-open{
    position:absolute;top:0;left:0;bottom:0;z-index:1200;
    width:280px;max-width:85vw;
    transform:translateX(0);
    box-shadow:4px 0 24px rgba(0,0,0,.12);
    border-right:1px solid var(--border);
    background:var(--bg);display:flex;flex-direction:column;overflow:hidden;
  }
  #sidebar.mobile-open .sidebar-title,
  #sidebar.rail.mobile-open .sidebar-title{opacity:1 !important;max-height:20px !important;}
  #sidebar.mobile-open .section-label,
  #sidebar.rail.mobile-open .section-label{opacity:1 !important;max-height:20px !important;padding:0 4px 8px !important;}
  #sidebar.mobile-open .tool-btn .btn-label,
  #sidebar.rail.mobile-open .tool-btn .btn-label{max-width:200px !important;opacity:1 !important;}
  #sidebar.mobile-open .tool-btn,
  #sidebar.rail.mobile-open .tool-btn{justify-content:flex-start !important;padding:10px 12px !important;}
  #sidebar.mobile-open .color-row,
  #sidebar.rail.mobile-open .color-row,
  #sidebar.mobile-open .marker-row,
  #sidebar.rail.mobile-open .marker-row{display:flex !important;}
  #sidebar.mobile-open .sidebar-footer-link,
  #sidebar.rail.mobile-open .sidebar-footer-link{max-width:200px !important;opacity:1 !important;}
  #sidebar.mobile-open .sidebar-footer,
  #sidebar.rail.mobile-open .sidebar-footer{gap:14px !important;padding:10px 12px !important;}
  #sidebar.mobile-open .sidebar-body,
  #sidebar.rail.mobile-open .sidebar-body{padding:16px 12px 12px !important;}
  #sidebar.mobile-open .sidebar-header,
  #sidebar.rail.mobile-open .sidebar-header{padding:16px 16px 14px !important;}
  #sidebar.mobile-open .basemap-grid,
  #sidebar.rail.mobile-open .basemap-grid{grid-template-columns:1fr 1fr 1fr !important;}
  #sidebar.mobile-open .basemap-thumb,
  #sidebar.rail.mobile-open .basemap-thumb{height:56px !important;}
  #sidebar.mobile-open .basemap-label,
  #sidebar.rail.mobile-open .basemap-label{max-height:28px !important;opacity:1 !important;padding:5px 4px 6px !important;}
  #sidebar.mobile-open .layer-item,
  #sidebar.rail.mobile-open .layer-item{justify-content:flex-start !important;padding:8px 10px !important;}
  #sidebar.mobile-open .layer-name,
  #sidebar.mobile-open .layer-type,
  #sidebar.rail.mobile-open .layer-name,
  #sidebar.rail.mobile-open .layer-type{display:block !important;}
  #sidebar.mobile-open .empty-note,
  #sidebar.rail.mobile-open .empty-note{display:block !important;}
  #sidebar.mobile-open .divider,
  #sidebar.rail.mobile-open .divider{margin:12px 0 !important;}

  /* ── Chat panel: overlay from right ── */
  #chat-panel{
    position:absolute;top:0;right:0;bottom:0;z-index:1200;
    width:320px;max-width:90vw;
    transform:translateX(100%);
    transition:transform .28s cubic-bezier(.4,0,.2,1);
    box-shadow:none;border-left:1px solid var(--border);
  }
  #chat-panel.mobile-open{
    transform:translateX(0);
    box-shadow:-4px 0 24px rgba(0,0,0,.12);
  }

  /* ── Map full width ── */
  #map-wrap{
    grid-column:1;grid-row:1;
    width:100%;height:100%;
  }

  /* ── Bottom bar ── */
  #map-bottom-bar{padding:6px 8px;gap:4px;}
  .stat-pill{padding:4px 8px;font-size:11px;}
  #mouse-coords{display:none;}

  /* ── Context menu ── */
  #ctx-menu{max-width:calc(100vw - 24px);}

  /* ── Name modal ── */
  #name-modal{min-width:auto;max-width:calc(100vw - 32px);width:calc(100vw - 32px);}

  /* ── Drop menus ── */
  .drop-menu{min-width:150px;}

  /* ── Globe controls ── */
  #globe-controls{bottom:60px;right:8px;}

  /* ── Draw hint ── */
  #draw-hint{font-size:11px;padding:6px 12px;}

  /* ── Toast ── */
  #toast{bottom:50px;font-size:11px;padding:6px 14px;}
}

/* ══ SMALL MOBILE ≤ 480px ══════════════════════════════════════ */
@media (max-width:480px){
  #topbar{padding:0 8px;gap:6px;}
  .mana-logo-icon{width:28px;height:28px;}
  .logo-wordmark{font-size:14px;}

  /* hide button text on very small screens, keep only icons */
  .topbar-right .btn.btn-ghost .btn-text,
  .topbar-right .btn.btn-primary .btn-text{display:none;}
  .topbar-right .btn{padding:6px 8px;min-width:34px;justify-content:center;}

  /* narrower sidebar */
  #sidebar{width:260px;}
  #chat-panel{width:calc(100vw - 40px);}
  .stat-pill{padding:3px 6px;font-size:10px;}
}

/* ══ TOUCH IMPROVEMENTS ════════════════════════════════════════ */
@media (hover:none) and (pointer:coarse){
  .tool-btn{padding:12px 12px;min-height:44px;}
  .drop-item{padding:12px 16px;min-height:44px;}
  .ctx-item{padding:12px 16px;min-height:44px;}
  .color-swatch{width:28px;height:28px;}
  .marker-opt{width:38px;height:38px;}
  .basemap-thumb{height:64px;}
  #chat-input{font-size:16px;}  /* prevent iOS zoom */
  #name-modal-input{font-size:16px;}
}


/* ── LAYER GROUPS (imported layers) ──────────── */
.layer-group{
  border:1px solid var(--border);border-radius:10px;background:var(--bgBox);
  overflow:hidden;transition:border-color .15s;
}
.layer-group:hover{border-color:var(--blue);}
.layer-group-header{
  display:flex;align-items:center;gap:8px;padding:10px 10px;cursor:pointer;
  transition:background .12s;
}
.layer-group-header:hover{background:rgba(14,165,233,.06);}
.layer-group-badge{
  font-size:10px;font-weight:700;color:var(--third);background:var(--bg);
  border:1px solid var(--border);border-radius:50px;padding:1px 7px;
  min-width:22px;text-align:center;flex-shrink:0;
}
.group-chevron{
  width:16px;height:16px;color:var(--third);flex-shrink:0;margin-left:auto;
  transition:transform .2s ease;
}
.group-chevron svg{width:14px;height:14px;}
.group-chevron.expanded{transform:rotate(180deg);}
.layer-group-meta{
  font-size:10px;color:var(--third);padding:0 10px 6px 30px;
  letter-spacing:.02em;
}
.layer-group-children{
  border-top:1px solid var(--border);
  max-height:200px;overflow-y:auto;
}
.layer-child{
  border:none !important;border-radius:0 !important;background:none !important;
  border-bottom:1px solid rgba(0,0,0,.04) !important;
  padding:6px 10px 6px 30px !important;font-size:12px;
}
.layer-child:last-child{border-bottom:none !important;}
.layer-child:hover{background:rgba(14,165,233,.05) !important;}
.layer-group-actions{
  display:flex;gap:4px;padding:4px 8px 6px;border-top:1px solid var(--border);
  justify-content:flex-end;
}
.layer-group-zoom,.layer-group-delete{
  width:26px;height:26px;border-radius:6px;border:1px solid var(--border);
  background:var(--bg);cursor:pointer;display:grid;place-items:center;
  transition:background .12s,border-color .12s,color .12s;color:var(--third);
}
.layer-group-zoom svg,.layer-group-delete svg{width:13px;height:13px;}
.layer-group-zoom:hover{background:rgba(14,165,233,.1);border-color:var(--blue);color:var(--blue);}
.layer-group-delete:hover{background:#fff0f0;border-color:var(--red);color:var(--red);}

/* ── ATTRIBUTE POPUP (on feature click) ──────── */
.attr-popup-wrapper .leaflet-popup-content-wrapper{
  border-radius:12px;box-shadow:var(--shadow),rgb(15 15 15/10%) 0 6px 20px;
  padding:0;overflow:hidden;
}
.attr-popup-wrapper .leaflet-popup-content{
  margin:0 !important;max-height:320px;overflow-y:auto;
}
.attr-popup{padding:0;}
.attr-table{
  width:100%;border-collapse:collapse;font-size:12px;
  font-family:'DM Sans',-apple-system,sans-serif;
}
.attr-table tr{border-bottom:1px solid rgba(0,0,0,.06);}
.attr-table tr:last-child{border-bottom:none;}
.attr-table tr:hover{background:rgba(14,165,233,.04);}
.attr-key{
  padding:7px 10px;font-weight:700;color:var(--third);white-space:nowrap;
  vertical-align:top;background:rgba(0,0,0,.02);min-width:80px;
  text-transform:uppercase;font-size:10px;letter-spacing:.04em;
}
.attr-val{
  padding:7px 10px;color:var(--primary);word-break:break-word;max-width:220px;
}
.attr-empty{
  padding:16px;text-align:center;color:var(--third);font-size:12px;
}


/* ── AI BADGE ────────────────────────────────── */
.ai-badge{
  display:inline-block;font-size:9px;font-weight:700;padding:2px 6px;
  border-radius:50px;background:var(--border);color:var(--third);
  vertical-align:middle;margin-left:4px;letter-spacing:.04em;
  transition:background .2s,color .2s;
}
.ai-badge.active{background:var(--green);color:white;}

/* ── CHAT SETTINGS BUTTON ────────────────────── */
.chat-settings-btn{
  width:30px;height:30px;border-radius:8px;border:1px solid var(--border);
  background:none;cursor:pointer;display:grid;place-items:center;
  color:var(--third);transition:background .15s,color .15s,transform .3s;
  margin-left:auto;flex-shrink:0;
}
.chat-settings-btn:hover{background:var(--bgBox);color:var(--primary);transform:rotate(60deg);}
.chat-settings-btn svg{width:15px;height:15px;}

/* ── TYPING INDICATOR ────────────────────────── */
.msg.typing{display:flex;gap:4px;align-items:center;padding:12px 16px;}
.msg.typing .dot{
  width:7px;height:7px;border-radius:50%;background:var(--third);
  animation:typingBounce .6s infinite alternate;
}
.msg.typing .dot:nth-child(2){animation-delay:.15s;}
.msg.typing .dot:nth-child(3){animation-delay:.3s;}
@keyframes typingBounce{
  0%{opacity:.3;transform:translateY(0);}
  100%{opacity:1;transform:translateY(-4px);}
}

/* ── AI SETTINGS MODAL ───────────────────────── */
.ai-modal{
  display:none;position:fixed;inset:0;z-index:5000;
  background:rgba(0,0,0,.4);backdrop-filter:blur(3px);
  align-items:center;justify-content:center;
}
.ai-modal.open{display:flex;}
.ai-modal-content{
  background:var(--bg);border-radius:16px;
  box-shadow:rgb(15 15 15/15%) 0 10px 40px;
  width:380px;max-width:calc(100vw - 32px);
  overflow:hidden;animation:modalIn .2s ease;
}
@keyframes modalIn{from{opacity:0;transform:scale(.95) translateY(8px);}}
.ai-modal-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px 12px;border-bottom:1px solid var(--border);
}
.ai-modal-header h4{font-size:15px;font-weight:700;margin:0;}
.ai-modal-close{
  width:28px;height:28px;border-radius:8px;border:none;background:none;
  cursor:pointer;font-size:18px;color:var(--third);display:grid;place-items:center;
  transition:background .12s;
}
.ai-modal-close:hover{background:var(--bgBox);}
.ai-modal-body{padding:16px 20px;display:flex;flex-direction:column;gap:6px;}
.ai-label{font-size:11px;font-weight:700;color:var(--third);text-transform:uppercase;letter-spacing:.05em;margin-top:6px;}
.ai-input{
  width:100%;border:1px solid var(--border);border-radius:10px;
  padding:9px 12px;font-size:13px;font-family:'DM Sans',sans-serif;
  color:var(--primary);background:var(--bgBox);outline:none;
  transition:border-color .15s;
}
.ai-input:focus{border-color:var(--blue);}
select.ai-input{cursor:pointer;appearance:auto;}
.ai-hint{
  margin-top:10px;font-size:11px;color:var(--third);line-height:1.6;
  padding:10px 12px;background:var(--bgBox);border-radius:8px;
}
.ai-hint a{color:var(--blue);text-decoration:none;}
.ai-hint a:hover{text-decoration:underline;}
.ai-modal-footer{
  padding:12px 20px 16px;display:flex;gap:8px;justify-content:flex-end;
  border-top:1px solid var(--border);
}


/* ── FILTER PANEL ────────────────────────────── */
.filter-panel{
  border-top:1px solid var(--border);padding:10px;
  background:linear-gradient(to bottom,rgba(14,165,233,.03),transparent);
}
.filter-title{
  display:flex;align-items:center;gap:6px;
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:var(--blue);margin-bottom:8px;
}
.filter-title svg{width:12px;height:12px;}
.filter-empty{font-size:11px;color:var(--third);line-height:1.5;padding:2px 0 6px;}
.filter-rule{
  display:flex;gap:4px;align-items:center;margin-bottom:6px;
  flex-wrap:wrap;
}
.filter-select{
  border:1px solid var(--border);border-radius:6px;padding:5px 6px;
  font-size:11px;font-family:'DM Sans',sans-serif;color:var(--primary);
  background:var(--bg);outline:none;cursor:pointer;
  transition:border-color .15s;min-width:0;
}
.filter-select:focus{border-color:var(--blue);}
.filter-field{flex:1;min-width:60px;max-width:100px;}
.filter-op{width:62px;flex-shrink:0;}
.filter-value{
  flex:1;min-width:60px;
  border:1px solid var(--border);border-radius:6px;padding:5px 6px;
  font-size:11px;font-family:'DM Sans',sans-serif;color:var(--primary);
  background:var(--bg);outline:none;transition:border-color .15s;
}
.filter-value:focus{border-color:var(--blue);}
.filter-rule-remove{
  width:22px;height:22px;border-radius:5px;border:1px solid var(--border);
  background:none;cursor:pointer;display:grid;place-items:center;
  color:var(--third);transition:all .12s;flex-shrink:0;
}
.filter-rule-remove svg{width:11px;height:11px;}
.filter-rule-remove:hover{background:#fff0f0;border-color:var(--red);color:var(--red);}

/* ── Filter action buttons ── */
.filter-actions{display:flex;gap:4px;margin-top:6px;flex-wrap:wrap;}
.filter-btn{
  display:inline-flex;align-items:center;gap:4px;
  padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;
  cursor:pointer;border:1px solid var(--border);background:var(--bg);
  color:var(--primary);transition:all .12s;
  font-family:'DM Sans',sans-serif;
}
.filter-btn svg{width:11px;height:11px;}
.filter-btn-add:hover{border-color:var(--blue);color:var(--blue);background:rgba(14,165,233,.06);}
.filter-btn-apply{background:var(--blue);color:white;border-color:var(--blue);}
.filter-btn-apply:hover{opacity:.85;}
.filter-btn-clear{color:var(--third);}
.filter-btn-clear:hover{color:var(--red);border-color:var(--red);background:#fff0f0;}

/* ── Active filter badge ── */
.filter-active-badge{
  font-size:9px;font-weight:700;padding:1px 6px;
  border-radius:50px;background:var(--blue);color:white;
  flex-shrink:0;letter-spacing:.02em;
}
.layer-group.has-filter{border-color:rgba(14,165,233,.3);}
.layer-group.has-filter .layer-group-header{background:rgba(14,165,233,.03);}

/* ── Filter hidden note ── */
.filter-hidden-note{
  padding:5px 12px 6px 30px;font-size:10px;color:var(--third);
  font-style:italic;border-top:1px dashed var(--border);
}

/* ── Layer group action buttons (updated) ── */
.layer-group-action-btn{
  width:26px;height:26px;border-radius:6px;border:1px solid var(--border);
  background:var(--bg);cursor:pointer;display:grid;place-items:center;
  transition:background .12s,border-color .12s,color .12s;color:var(--third);
}
.layer-group-action-btn svg{width:13px;height:13px;}
.layer-group-action-btn:hover{background:rgba(14,165,233,.1);border-color:var(--blue);color:var(--blue);}
.layer-group-action-btn.active{background:rgba(14,165,233,.1);border-color:var(--blue);color:var(--blue);}
.layer-group-action-btn.has-filter{background:var(--blue);color:white;border-color:var(--blue);}
.layer-group-action-btn.danger:hover{background:#fff0f0;border-color:var(--red);color:var(--red);}


/* ── IN-APP ALERT NOTIFICATION ───────────────── */
.mana-alert{
  position:fixed;top:-60px;left:50%;transform:translateX(-50%);z-index:9999;
  display:flex;align-items:center;gap:8px;
  padding:10px 20px;border-radius:12px;
  font-size:13px;font-weight:600;
  box-shadow:0 4px 20px rgba(0,0,0,.15);
  transition:top .35s cubic-bezier(.4,0,.2,1),opacity .35s;
  opacity:0;pointer-events:none;white-space:nowrap;max-width:calc(100vw - 32px);
  font-family:'DM Sans',sans-serif;
}
.mana-alert.show{top:68px;opacity:1;pointer-events:auto;}
.mana-alert.info{background:var(--primary);color:white;}
.mana-alert.warning{background:#f59e0b;color:white;}
.mana-alert.error{background:var(--red);color:white;}
.mana-alert-icon{font-size:16px;flex-shrink:0;}
.mana-alert-text{overflow:hidden;text-overflow:ellipsis;}

/* ── IN-APP CONFIRM DIALOG ───────────────────── */
.confirm-modal{
  display:none;position:fixed;inset:0;z-index:6000;
  background:rgba(0,0,0,.35);backdrop-filter:blur(3px);
  align-items:center;justify-content:center;
}
.confirm-modal.open{display:flex;}
.confirm-modal-box{
  background:var(--bg);border-radius:16px;
  box-shadow:rgb(15 15 15/15%) 0 10px 40px;
  padding:24px;min-width:280px;max-width:380px;width:90%;
  animation:modalIn .2s ease;
  text-align:center;
}
.confirm-modal-box p{
  font-size:15px;font-weight:500;color:var(--primary);
  line-height:1.5;margin-bottom:20px;
}
.confirm-modal-btns{display:flex;gap:8px;justify-content:center;}

@media (max-width:768px){
  .mana-alert.show{top:58px;}
  .mana-alert{font-size:12px;padding:8px 14px;border-radius:10px;}
}


/* ── CONTEXT MENU STYLE SECTION ──────────────── */
.ctx-section-label{
  padding:6px 16px 4px;font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;color:var(--blue);
}
.ctx-color-row{
  display:flex;gap:5px;padding:6px 14px 8px;flex-wrap:wrap;
}
.ctx-swatch{
  width:20px;height:20px;border-radius:50%;cursor:pointer;
  border:2px solid transparent;transition:transform .1s,border-color .1s;
}
.ctx-swatch:hover{transform:scale(1.2);border-color:rgba(0,0,0,.2);}
.ctx-option-row{
  display:flex;align-items:center;gap:8px;padding:5px 16px;
}
.ctx-option-label{
  font-size:11px;color:var(--third);font-weight:600;min-width:50px;
}
.ctx-weight-opts{display:flex;gap:3px;}
.ctx-weight-btn{
  width:24px;height:24px;border-radius:5px;border:1px solid var(--border);
  background:var(--bg);font-size:10px;font-weight:700;cursor:pointer;
  display:grid;place-items:center;color:var(--primary);
  transition:background .1s,border-color .1s;
  font-family:'DM Sans',sans-serif;
}
.ctx-weight-btn:hover{border-color:var(--blue);background:rgba(14,165,233,.06);}
.ctx-range{
  flex:1;height:4px;-webkit-appearance:none;appearance:none;
  background:var(--border);border-radius:2px;outline:none;cursor:pointer;
}
.ctx-range::-webkit-slider-thumb{
  -webkit-appearance:none;width:14px;height:14px;border-radius:50%;
  background:var(--blue);border:2px solid white;box-shadow:0 1px 3px rgba(0,0,0,.2);
  cursor:pointer;
}
.ctx-range::-moz-range-thumb{
  width:14px;height:14px;border-radius:50%;
  background:var(--blue);border:2px solid white;box-shadow:0 1px 3px rgba(0,0,0,.2);
  cursor:pointer;
}
.ctx-range-val{
  font-size:10px;font-weight:700;color:var(--third);min-width:30px;text-align:right;
  font-family:'DM Mono',monospace;
}
.ctx-cat-item{
  display:flex !important;justify-content:space-between;
}
.ctx-cat-field{
  font-weight:600;
}
.ctx-cat-count{
  font-size:10px;color:var(--third);font-weight:400;
}

/* Active weight button */
.ctx-weight-btn.active{
  background:var(--blue);color:white;border-color:var(--blue);
}

/* ── SIDEBAR LAYER CONTEXT MENU ─────────────── */
.ctx-menu-float{
  display:none;position:fixed;z-index:10000;
  background:var(--bg);border:1px solid var(--border);
  border-radius:12px;box-shadow:0 8px 30px rgba(0,0,0,.15);
  min-width:220px;max-width:280px;padding:4px 0;
  max-height:70vh;overflow-y:auto;
  animation:ctx-in .12s ease-out;
}
.ctx-menu-float.open{display:block;}
@keyframes ctx-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
