/* Planeador — identidade Rotas (usa as variáveis/fontes de ../css/styles.css) */
.planear-page, html, body { height: 100%; margin: 0; }
/* CRÍTICO: o styles.css põe body{display:flex}; aqui o layout é próprio */
body.planear-page { display: block; padding: 0; margin: 0; background: var(--bg-dark); color: var(--text); font-family: 'DM Sans', system-ui, sans-serif; }

/* barra de topo: Rotas › Planeador (ligação de volta ao site) */
#topbar { display: flex; align-items: center; gap: 9px; height: 48px; padding: 0 12px; background: var(--bg-card); border-bottom: 1px solid var(--border); color: var(--text); position: relative; z-index: 1400; box-sizing: border-box; }
#topbar .tb-brand { display: inline-flex; align-items: center; gap: 7px; font-family: 'DM Serif Display', Georgia, serif; font-size: 1.2rem; color: var(--text); text-decoration: none; }
#topbar .tb-brand img { width: 22px; height: 22px; display: block; }
#topbar .tb-brand:hover { color: var(--accent); }
#topbar .tb-sep { color: var(--text-dim); }
#topbar .tb-cur { color: var(--accent); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; }
/* botão Sugestões igual ao do Rotas (.header-suggest-btn) */
#topbar .tb-suggest { background: var(--accent); color: var(--bg-dark); border: none; border-radius: var(--radius); padding: 6px 14px; font-family: 'DM Sans', sans-serif; font-size: 0.78rem; font-weight: 600; cursor: pointer; transition: background 0.2s; }
#topbar .tb-suggest:hover { background: var(--accent-light, #f0b94e); }
#topbar .tb-suggest-ico { display: none; }   /* desktop: só texto */
@media (max-width: 768px) {
  /* mobile: a barra é estreita → só a lâmpada (mesma cor âmbar) */
  #topbar .tb-suggest { padding: 0; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; }
  #topbar .tb-suggest-label { display: none; }
  #topbar .tb-suggest-ico { display: block; }
}

#planear-shell { display: flex; height: calc(100vh - 48px); }
#map { flex: 1; height: 100%; min-width: 0; }

#panel {
  width: 340px; flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden;
  background: var(--bg-card); color: var(--text);
  border-right: 1px solid var(--border); box-sizing: border-box;
}
#panelScroll { flex: 1 1 auto; overflow-y: auto; padding: 16px 16px 10px; min-height: 0; }
/* Exportar/Limpar fixos no fundo — o scroll fica por cima, não corre por trás */
#panel .panel-actions.bottom2 { flex-shrink: 0; margin: 0; padding: 10px 16px; border-top: 1px solid var(--border); background: var(--bg-card); }
/* undo/redo na barra do topo */
#topbar .tb-icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 8px; background: transparent; border: 1px solid var(--border); color: var(--text-muted); cursor: pointer; padding: 0; }
#topbar .tb-icon:hover:not(:disabled) { background: var(--bg-card-hover); color: var(--text); }
#topbar .tb-icon:disabled { opacity: 0.4; cursor: default; }
#topbar #btnUndo { margin-left: auto; }
/* caixas de pontos por segmento (estilo No Mapa) */
.layers-section.seg-group .layers-section-head .seg-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-transform: none; font-size: 0.8rem; letter-spacing: 0; }
.layers-section.seg-group .seg-act { background: transparent; border: none; color: var(--text-dim); cursor: pointer; font-size: 0.92rem; padding: 0 2px; flex-shrink: 0; }
.layers-section.seg-group .seg-act:hover { color: var(--text); }
.layers-section.seg-group .seg-act.del:hover { color: var(--red); }
.layers-section.seg-group.collapsed .pt-list { display: none; }
.layers-section.seg-group .pt-list { max-height: none; margin: 8px 0 0; }
.panel-head { display: flex; align-items: center; margin-bottom: 2px; }
.panel-head .brand { display: inline-flex; align-items: center; gap: 8px; font-family: 'DM Serif Display', Georgia, serif; font-size: 1.5rem; color: var(--text); text-decoration: none; letter-spacing: -0.02em; }
.panel-head .brand img { width: 24px; height: 24px; display: block; }
.panel-sub { display: block; font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); margin: 2px 0 16px 32px; }

.ctrl { margin: 12px 0; }
.ctrl > label { display: block; font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-dim); margin-bottom: 6px; }
.seg-bike { display: flex; flex-wrap: wrap; gap: 6px; }
.seg-bike button { flex: 1 1 auto; min-width: 60px; background: transparent; color: var(--text-muted); border: 1px solid var(--border); border-radius: 9px; padding: 8px 6px; cursor: pointer; font-size: 0.82rem; font-weight: 600; }
.seg-bike button.active { background: var(--accent); color: var(--bg-dark); border-color: var(--accent); }
#adjust button { font-size: 0.78rem; }

/* Painel de filtros de piso */
/* "Tipo de piso" reutiliza a caixa .route-layers/.layers-section do "No Mapa" */
.surf-layers { margin-top: 10px; }
.surf-panel { display:flex; flex-direction:column; gap:13px; margin-top:10px; }
.layers-section.collapsed .surf-panel { display:none; }
.surf-row { display:flex; align-items:center; gap:10px; font-size:.78rem; color:var(--text-muted); }
.surf-row #surfOffroadVal { min-width:36px; text-align:right; color:var(--text); font-weight:700; font-variant-numeric:tabular-nums; }
.surf-row input[type=range] { flex:1; -webkit-appearance:none; appearance:none; height:4px; border-radius:3px; background:linear-gradient(90deg,#9aa0a8,var(--accent, #e8a838)); outline:none; }
.surf-row input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:16px; height:16px; border-radius:50%; background:#fff; border:2px solid var(--accent, #e8a838); cursor:pointer; box-shadow:0 1px 3px rgba(0,0,0,.45); }
.surf-row input[type=range]::-moz-range-thumb { width:16px; height:16px; border-radius:50%; background:#fff; border:2px solid var(--accent, #e8a838); cursor:pointer; }
.surf-check { display:flex; align-items:center; gap:9px; font-size:.8rem; color:var(--text); cursor:pointer; }
.surf-check input[type=checkbox] { -webkit-appearance:none; appearance:none; width:17px; height:17px; flex-shrink:0; border:1.5px solid var(--border); border-radius:5px; background:var(--bg-card, #1a1f2e); cursor:pointer; position:relative; transition:background .15s, border-color .15s; }
.surf-check input[type=checkbox]:checked { background:var(--accent, #e8a838); border-color:var(--accent, #e8a838); }
.surf-check input[type=checkbox]:checked::after { content:''; position:absolute; left:5px; top:1px; width:4px; height:9px; border:solid #1a1f2e; border-width:0 2px 2px 0; transform:rotate(45deg); }

.summary { font-size: 0.9rem; color: var(--text-muted); background: var(--bg-dark); border: 1px solid var(--border); border-radius: 10px; padding: 9px 12px; }
.summary b { color: var(--accent); }

.panel-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 14px 0; }
.panel-actions.imp2 { grid-template-columns: 1fr 1fr; margin: 12px 0 8px; }
.panel-actions.ico3 { grid-template-columns: repeat(3, 1fr); margin: 0 0 8px; }
.panel-actions.ico3 button { padding: 10px 4px; }
.panel-actions.ico2 { grid-template-columns: 1fr 1fr; margin: 0 0 8px; }
.panel-actions .btn-st { font-weight: 800; font-size: 0.9rem; letter-spacing: 0.02em; }
.panel-actions button.active { background: var(--accent); color: var(--bg-dark); border-color: var(--accent); }
.panel-actions.bottom2 { grid-template-columns: 1fr 1fr; margin: 0 0 8px; }
/* [hidden] tem de vencer o display:grid dos .panel-actions (id > classe). */
#panelVoltas[hidden], #btnSaveVolta[hidden] { display: none !important; }
#panelVoltas { grid-template-columns: 1fr 1fr; }
#panelVoltas:has(#btnSaveVolta[hidden]) { grid-template-columns: 1fr; }
.panel-actions button {
  background: var(--bg-dark); color: var(--text); border: 1px solid var(--border); border-radius: 10px;
  padding: 10px; cursor: pointer; font-size: 0.82rem; font-weight: 600; display: flex; align-items: center; gap: 7px; justify-content: center;
  transition: background .15s, border-color .15s;
}
/* sem efeito hover: o estado ativo (amarelo) aparece logo ao clicar, mesmo com o rato em cima */
.panel-actions button:not(.active):not(.primary):hover { background: var(--bg-card-hover); border-color: var(--text-dim); }
.panel-actions button.primary { background: var(--accent); color: var(--bg-dark); border-color: var(--accent); }
.panel-actions button.danger { color: var(--red); border-color: rgba(248,113,113,0.4); background: transparent; }
.panel-actions button.wide { grid-column: 1 / -1; }
.panel-actions button svg { width: 16px; height: 16px; flex-shrink: 0; }

.seg-list { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.seg-item { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 0.84rem; padding: 8px 10px; background: var(--bg-dark); border: 1px solid var(--border); border-radius: 9px; }
.seg-item .dot { width: 9px; height: 9px; border-radius: 3px; flex-shrink: 0; }
.seg-item .grow { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.seg-item button { background: none; border: none; color: var(--red); cursor: pointer; font-size: 0.8rem; }

.elev-box { position: fixed; left: 340px; right: 0; bottom: 0; background: var(--bg-card); border-top: 1px solid var(--border); height: 190px; z-index: 600; display: flex; flex-direction: column; }
.elev-canvas-area { position: relative; flex: 1 1 auto; min-height: 0; padding: 8px 12px 0; box-sizing: border-box; }
.surf-bar-wrap { padding: 6px 12px 8px; }
.surf-bar-wrap .surf-bar { display: flex; height: 11px; border-radius: 0; overflow: hidden; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.14); cursor: crosshair; }
.surf-bar-wrap .surf-bar span { display: block; height: 100%; }
.surf-unknown { font-size: .72rem; color: var(--text-muted); margin-top: 4px; padding: 0 12px 4px; }
.surf-unknown:empty { display: none; }

/* dados destacados da rota */
.plan-stats { display: flex; gap: 8px; margin: 6px 0 8px; }
.plan-stats .ps { flex: 1; background: var(--bg-dark); border: 1px solid var(--border); border-radius: 10px; padding: 9px 11px; }
.plan-stats .ps b { display: block; font-size: 1.2rem; color: var(--accent); font-weight: 700; line-height: 1.1; }
.plan-stats .ps span { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-dim); }
.surf-break { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; font-size: 0.82rem; color: var(--text-muted); }
.surf-break:empty { display: none; }
.surf-break .surf-chip { display: flex; align-items: center; gap: 7px; padding: 3px 7px; border-radius: 6px; cursor: pointer; transition: background .12s; }
.surf-break .surf-chip:hover { background: rgba(255,255,255,.07); }
.surf-break .surf-chip i { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.surf-break .surf-chip b { margin-left: auto; color: var(--text); font-weight: 700; font-variant-numeric: tabular-nums; }

/* No Mapa numa caixa (igual às outras páginas) */
.planear-page .route-layers { border: 1px solid var(--border); border-radius: 10px; background: rgba(255,255,255,0.02); padding: 6px 10px; margin: 10px 0; }

/* pontos numerados no mapa */
.wp-marker { background: none; border: none; }
.wp-marker span { display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #2563eb; color: #fff; border: 2px solid #fff; font-size: 11px; font-weight: 700; box-shadow: 0 1px 4px rgba(0,0,0,0.45); }
.wp-marker.wp-ghost span { background: #2563eb; opacity: 0.9; font-size: 14px; }
.wp-marker.wp-start span { background: #16a34a; }
.wp-marker.wp-end span { background: #dc2626; }
/* lista de pontos no painel */
/* cabeçalho colapsável da lista de pontos */
.pt-list-head { display: flex; align-items: center; justify-content: space-between; cursor: pointer; padding: 7px 2px 6px; margin-top: 4px; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-dim); user-select: none; }
.pt-list-head:hover { color: var(--text-muted); }
.pt-list-head .pt-chev { transition: transform 0.2s; flex-shrink: 0; }
.pt-list-head.collapsed .pt-chev { transform: rotate(-90deg); }
/* lista com altura limitada + scroll, para não ficar demasiado longa */
.pt-list { max-height: 220px; overflow-y: auto; display: flex; flex-direction: column; gap: 5px; margin-bottom: 12px; padding-right: 2px; }
.pt-list.collapsed { display: none; }
.pt-item { display: flex; align-items: center; gap: 8px; font-size: 0.84rem; padding: 6px 8px; background: var(--bg-dark); border: 1px solid var(--border); border-radius: 8px; }
.pt-item .pt-grip { color: var(--text-dim); cursor: grab; font-size: 0.85rem; letter-spacing: -3px; flex-shrink: 0; }
.pt-item.dragging { opacity: 0.45; cursor: grabbing; }
.pt-item.drop-before { box-shadow: inset 0 3px 0 var(--accent); }
.pt-item.drop-after { box-shadow: inset 0 -3px 0 var(--accent); }
.pt-item .pt-n { width: 22px; height: 22px; border-radius: 50%; background: #2563eb; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; flex-shrink: 0; }
.pt-item .pt-n.pt-start { background: #16a34a; } .pt-item .pt-n.pt-end { background: #dc2626; }
.pt-item .grow { flex: 1; color: var(--text-muted); }
.pt-item button { background: none; border: none; color: var(--red); cursor: pointer; font-size: 0.95rem; }
/* toggle "Inverter" no balão do singletrack */
.trail-popup .st-rev { display: flex; align-items: center; gap: 7px; font-size: 0.8rem; color: var(--text-muted); margin: 4px 0 2px; cursor: pointer; }
.trail-popup .st-rev input { accent-color: var(--accent); flex-shrink: 0; }
/* balão (estação de comboio, etc.) com contraste no popup escuro do planeador */
.planear-page .trail-popup h3 { color: var(--text); }
.planear-page .trail-popup p { color: var(--text-muted) !important; }

/* botão satélite por baixo do my-location + estados ativos */
.float-sat { top: 108px; }
.float-center { top: 152px; }   /* centrar no percurso, por baixo do satélite */
/* pilha de legendas + atribuição sobem quando o perfil de elevação está aberto */
.planear-page.elev-open .legend-stack { bottom: 204px; }
.planear-page.elev-open .leaflet-control-attribution { bottom: 190px; }   /* encosta à caixa do perfil */
.float-locate-btn.active { background: var(--accent); color: var(--bg-dark); border-color: var(--accent); }

/* sem flash escuro de seleção ao tocar nos botões */
.panel-actions button, .seg-bike button, .float-locate-btn, .panel-handle, #topbar .tb-suggest { -webkit-tap-highlight-color: transparent; user-select: none; }

/* Controlos dentro do mapa — identidade Rotas (escuro) */
.planear-page .leaflet-bar { border: none; border-radius: 11px; overflow: hidden; box-shadow: 0 4px 16px rgba(0,0,0,0.4); }
.planear-page .leaflet-bar a {
  background: var(--bg-card); color: var(--text); border-bottom: 1px solid var(--border);
  width: 32px; height: 32px; line-height: 32px; transition: background .15s, color .15s;
}
.planear-page .leaflet-bar a:hover { background: var(--bg-card-hover); color: var(--accent); }
.planear-page .leaflet-bar a:last-child { border-bottom: none; }
.planear-page .leaflet-bar a.leaflet-disabled { background: var(--bg-dark); color: var(--text-dim); }
.planear-page .leaflet-control-zoom a { font-size: 18px; font-weight: 700; }
.bm-toggle a { width: auto !important; padding: 0 12px; height: 32px; line-height: 32px; font-size: 0.8rem; font-weight: 700; color: var(--text); }
.planear-page .leaflet-control-attribution { background: rgba(17,21,28,0.7); color: var(--text-dim); }
.planear-page .leaflet-control-attribution a { color: var(--text-muted); }

.toast { position: fixed; bottom: 18px; left: calc(50% + 170px); transform: translateX(-50%); background: var(--bg-card); color: var(--text); border: 1px solid var(--border); padding: 10px 16px; border-radius: 10px; z-index: 9999; box-shadow: 0 6px 24px rgba(0,0,0,0.35); font-size: 0.86rem; }

/* modal de pesquisa da DB */
.db-modal { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: flex; align-items: flex-start; justify-content: center; padding-top: 8vh; z-index: 9998; }
.db-panel { width: min(560px, 92vw); background: var(--bg-card); border: 1px solid var(--border); border-radius: 14px; padding: 16px; }
.db-panel #dbq { width: 100%; box-sizing: border-box; padding: 11px; border-radius: 9px; border: 1px solid var(--border); background: var(--bg-dark); color: var(--text); font-size: 0.95rem; }
.db-res { margin-top: 10px; max-height: 52vh; overflow: auto; display: flex; flex-direction: column; gap: 4px; }
.db-hit { display: flex; align-items: center; gap: 9px; text-align: left; background: var(--bg-dark); color: var(--text); border: 1px solid var(--border); border-radius: 9px; padding: 9px 10px; cursor: pointer; font-size: 0.88rem; }
.db-hit:hover { background: var(--bg-card-hover); border-color: var(--accent); }
.db-hit input { flex-shrink: 0; accent-color: var(--accent); }
.db-hit-txt { flex: 1; min-width: 0; }
.db-hit b { color: var(--accent); }
.db-foot { margin-top: 10px; display: flex; justify-content: flex-end; }
.db-foot button { padding: 8px 16px; border-radius: 9px; border: none; background: var(--accent); color: var(--bg-dark); font-weight: 600; font-size: 0.85rem; cursor: pointer; }
.db-foot button:disabled { opacity: 0.45; cursor: default; }
/* segmento ativo vs inativo na lista */
.layers-section.seg-group .seg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-dim); flex-shrink: 0; }
.layers-section.seg-group.active .seg-dot { background: var(--accent); }
.layers-section.seg-group.active > .layers-section-head { border-color: var(--accent); }
.layers-section.seg-group.active > .layers-section-head .seg-name { color: var(--accent); }
.muted { color: var(--text-dim); }

/* mini-menu de ponto / apagar */
.pt-menu { display: flex; flex-direction: column; gap: 5px; min-width: 150px; }
.pt-menu button { cursor: pointer; padding: 7px 10px; border-radius: 8px; border: 1px solid var(--border); background: var(--bg-card); color: var(--text); font-size: 0.84rem; text-align: left; }
.pt-menu button:hover { background: var(--bg-card-hover); }
.pt-menu button.trash { color: var(--red); border-color: rgba(248,113,113,0.4); }
.pt-menu .kbd { font-size: 0.68rem; opacity: 0.6; border: 1px solid currentColor; border-radius: 4px; padding: 0 4px; margin-left: 6px; }
.pt-menu.pt-add button { display: flex; align-items: center; gap: 7px; }
.pt-menu.pt-add svg { flex-shrink: 0; color: var(--accent); }
/* modal/menu no mapa: sem caixa branca nem X (cartão escuro) */
.planear-page .leaflet-popup-content-wrapper { background: var(--bg-card); color: var(--text); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 6px 22px rgba(0,0,0,0.5); }
.planear-page .leaflet-popup-tip { background: var(--bg-card); border: 1px solid var(--border); }
.planear-page .leaflet-popup-close-button { display: none; }
.planear-page .leaflet-popup-content { margin: 8px 10px; }

/* botão "repor" na lista de segmentos */
.seg-item button.link { color: var(--accent); }

/* pega (handle) do painel — só mobile */
.panel-handle { display: none; }

@media (max-width: 768px) {
  /* sidebar off-canvas à esquerda (como no Rotas), por baixo da barra de topo */
  #planear-shell { flex-direction: row; }
  #panel {
    position: fixed; top: 48px; left: 0; bottom: 0; width: 86%; max-width: 320px; max-height: none;
    z-index: 1200; transform: translateX(-100%); transition: transform .25s ease;
    border-right: 1px solid var(--border); border-bottom: none;
  }
  #panel.open { transform: translateX(0); box-shadow: 0 0 32px rgba(0,0,0,0.55); }
  #map { width: 100%; height: 100%; }
  .elev-box { left: 0; }
  .toast { left: 50%; }
  /* pega fixa na borda esquerda; desliza para a borda do painel quando aberto */
  .panel-handle {
    display: flex; align-items: center; justify-content: center;
    position: fixed; top: 50%; left: 0; transform: translateY(-50%); transition: left .25s ease; z-index: 1250;
    width: 20px; height: 62px; background: var(--bg-card); border: 1px solid var(--border); border-left: none;
    border-radius: 0 9px 9px 0; cursor: pointer; box-shadow: 2px 0 10px rgba(0,0,0,0.35);
  }
  .panel-handle .ph-chev { width: 15px; height: 15px; color: var(--text-muted); transition: transform .25s ease; }
  #panel.open ~ .panel-handle { left: min(86vw, 320px); }
  #panel.open ~ .panel-handle .ph-chev { transform: rotate(180deg); }
}

/* Menu central (cross-sistema: Mapa/Lista/Planear/Voltas) — mesma posição que no
   Rotas/Voltas: centrado sobre o MAPA (à direita do painel de 340px), a 60px do topo. */
.view-toggle.vt-planear { position: fixed; top: 60px; left: calc(50% + 170px); }
@media (max-width: 768px) { .view-toggle.vt-planear { left: 50%; } }
