/* © 2026 Puerto Barrosa Drones S.L. (CIF B70661582). Todos los derechos reservados. */
:root{--bg:#edf0f7;--card:#fff;--ink:#16202a;--mut:#57647c;--pri:#12274b;--acc:#e8590c;--cyan:#56c7e2;--ok:#2b8a3e;--line:#d3dae6;--warn:#b02a37}
@media (prefers-color-scheme:dark){:root{--bg:#0b1830;--card:#12233f;--ink:#e4e9f4;--mut:#9fb0c9;--pri:#56c7e2;--line:#243556}}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
.top{background:linear-gradient(135deg,#0b1830,#12274b);color:#fff;padding:10px 16px;position:sticky;top:0;z-index:5;border-bottom:3px solid var(--cyan)}
.brand{display:flex;align-items:center;gap:14px;font-weight:700;font-size:18px}.brand small{font-weight:400;opacity:.7;margin-left:6px;font-size:13px}
.logoimg{height:44px;width:auto;display:block}.apptitle{border-left:1px solid rgba(255,255,255,.35);padding-left:14px}
@media(max-width:600px){.brand{flex-wrap:wrap;gap:4px 12px}.logoimg{height:48px}.apptitle{border-left:0;padding-left:0;font-size:15px}}
nav{display:flex;gap:4px;overflow-x:auto;margin-top:8px;scrollbar-width:none}nav::-webkit-scrollbar{display:none}
nav button{background:transparent;color:#dbe9f3;border:0;padding:8px 12px;border-radius:8px;cursor:pointer;white-space:nowrap;font:inherit}
nav button.on{background:var(--cyan);color:#0b1830;font-weight:700}
#offline{background:#fff3bf;color:#5c4a00;padding:8px 16px;font-size:13px}
main{max-width:1000px;margin:0 auto;padding:16px}
h2{margin:18px 0 8px;font-size:18px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px}
.card b{display:block;font-size:22px}.card span{color:var(--mut);font-size:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}.spacer{flex:1}
.tablewrap{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:12px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{background:rgba(127,127,127,.08);font-weight:600}
tr:last-child td{border-bottom:0}
td.num{text-align:right}
form label{display:flex;flex-direction:column;font-size:12px;color:var(--mut);gap:3px}
input,select,textarea{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px;min-width:0}
input[readonly]{background:rgba(127,127,127,.1)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:10px 0}
.grid .wide{grid-column:span 2}
@media(max-width:520px){.grid .wide{grid-column:span 1}}
.inline{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.inline .grow{flex:1;min-width:180px}
fieldset{border:1px solid var(--line);border-radius:10px;margin:10px 0}legend{color:var(--mut);font-size:12px;padding:0 6px}
.checks{display:flex;flex-wrap:wrap;gap:6px 14px}.checks label{flex-direction:row;align-items:center;gap:5px;color:var(--ink);font-size:13px}
button{font:inherit;cursor:pointer;border-radius:8px;padding:8px 14px;border:1px solid var(--line);background:var(--card);color:var(--ink)}
button.primary{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
button.ghost,.filebtn{background:transparent}
.filebtn{display:inline-flex;flex-direction:row;border:1px solid var(--line);border-radius:8px;padding:8px 14px;cursor:pointer;color:var(--ink);font-size:15px}
button.sm{padding:3px 8px;font-size:12px}
button.del{color:var(--warn)}
#map{height:340px;border-radius:12px;border:1px solid var(--line)}
.mapbox{margin:12px 0}
.hint{color:var(--mut);font-size:12px;margin:6px 0}
.zona{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0;font-size:13px}
.zona .z{border-left:4px solid var(--acc);padding:4px 10px;margin:6px 0}
.zona .z.ok{border-color:var(--ok)}.zona .z.req{border-color:var(--warn)}
.zona .z h4{margin:0 0 2px;font-size:14px}
.zona small{color:var(--mut)}
.badge{display:inline-block;font-size:11px;padding:1px 7px;border-radius:99px;background:var(--line);color:var(--ink)}
.badge.warn{background:#ffe3e3;color:var(--warn)}.badge.ok{background:#d3f9d8;color:var(--ok)}
.al{border-left:4px solid var(--warn);background:var(--card);padding:8px 12px;margin:6px 0;border-radius:6px}
.al.ok{border-color:var(--ok)}
footer{max-width:1000px;margin:20px auto;padding:0 16px 30px;color:var(--mut);font-size:12px}
.filtros{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:8px 0}
.filtros label{flex-direction:row;align-items:center;gap:5px}
.filtros input[type=search]{flex:1;min-width:200px}
form label.chk{flex-direction:row;align-items:center;gap:6px;color:var(--ink);align-self:end}
form label.chk span{display:none}
.barra{display:block;min-width:140px;height:14px;background:rgba(127,127,127,.15);border-radius:7px;overflow:hidden}
.barra i{display:block;height:100%;background:var(--acc);border-radius:7px}
tr.totalrow td{font-weight:700;background:rgba(127,127,127,.08)}
.lock{color:var(--ok);font-weight:600}
#printView{display:none}
@media print{
  body{background:#fff;color:#000}
  .top,main,footer,#offline{display:none!important}
  #printView{display:block!important;padding:0}
  #printView table{font-size:9px}#printView th,#printView td{border:1px solid #444;padding:3px 4px;white-space:normal}
  #printView .logoprint{height:46px;display:block;margin-bottom:4px}
  #printView h1{font-size:14px;margin:0 0 6px}
  #printView .pg{page-break-after:always}#printView .pg:last-child{page-break-after:auto}
  #printView tr.tot th,#printView tr.tot td{background:#eee;font-weight:700}
  @page{size:A4 landscape;margin:10mm}
}

details.chk{border:1px solid var(--line);border-radius:10px;margin:10px 0;padding:8px 12px;background:var(--card)}
details.chk summary{cursor:pointer;font-weight:600}
.chkgrp{margin:10px 0 4px;font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em}
.chkitem{display:flex;gap:8px;align-items:flex-start;padding:3px 0;font-size:14px;color:var(--ink)}
.semaforo{display:inline-block;padding:2px 10px;border-radius:99px;font-weight:700;font-size:12px}
.semaforo.ok{background:#d3f9d8;color:#1b6b2b}.semaforo.mid{background:#fff3bf;color:#7a5a00}.semaforo.no{background:#ffe3e3;color:#b02a37}
.meteogrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:8px 0}
.meteogrid div{background:rgba(127,127,127,.08);border-radius:8px;padding:6px 8px}
.meteogrid b{display:block;font-size:16px}.meteogrid span{font-size:11px;color:var(--mut)}
@media (prefers-color-scheme:dark){.semaforo.ok{background:#1d4d2a;color:#b8f2c4}.semaforo.mid{background:#4d4310;color:#ffe58a}.semaforo.no{background:#5a1d24;color:#ffc9ce}}

.chip{display:inline-block;margin:2px 4px 2px 0;padding:1px 8px;border-radius:99px;background:rgba(127,127,127,.14);font-size:12px;white-space:nowrap}
.chip b{margin-left:3px}
td.chips{white-space:normal;min-width:180px}

[hidden]{display:none!important}
body[data-modo="piloto"] .solo-op{display:none!important}
.al a{color:inherit;font-weight:700}
form.cardform{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0}
form.cardform h3{margin:0 0 6px;font-size:16px}

.cardbox{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.cardbox h4{margin:14px 0 6px;font-size:14px}
tr.sel td{background:rgba(86,199,226,.12)}

.encurso{position:sticky;top:0;z-index:4;display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#fff3bf;color:#5c4a00;border-bottom:2px solid #e8590c;padding:8px 16px;font-size:14px}
@media (prefers-color-scheme:dark){.encurso{background:#4d4310;color:#ffe58a}}
.cron{font-variant-numeric:tabular-nums;font-weight:700;font-size:18px}
dialog{border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);max-width:560px;width:calc(100% - 32px);padding:16px}
dialog::backdrop{background:rgba(0,0,0,.45)}
dialog ul{padding-left:18px}

body[data-plan="gratis"] .solo-pago{display:none!important}
.planchip{margin-left:auto;background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:99px;padding:3px 12px;font-size:12px;font-weight:600;cursor:pointer}
.planchip[data-plan="gratis"]{background:var(--acc);border-color:var(--acc)}
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}
.plan{background:var(--card);border:2px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column}
.plan.on{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(86,199,226,.25)}
.plan h3{margin:0}.plan .precio{font-size:22px;font-weight:700;margin:2px 0 6px}
.plan ul{margin:0 0 10px;padding-left:18px;font-size:13px;flex:1}
.scorebox{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.score{font-size:46px;font-weight:800;line-height:1;padding:10px 16px;border-radius:14px;min-width:110px;text-align:center}
.score small{font-size:16px;font-weight:600}
.score.ok{background:#d3f9d8;color:#1b6b2b}.score.mid{background:#fff3bf;color:#7a5a00}.score.no{background:#ffe3e3;color:#b02a37}
@media (prefers-color-scheme:dark){.score.ok{background:#1d4d2a;color:#b8f2c4}.score.mid{background:#4d4310;color:#ffe58a}.score.no{background:#5a1d24;color:#ffc9ce}}
h3.cumplh{margin:16px 0 6px;font-size:15px}
.bloqueado{border-style:dashed}

.plan .precio small{font-size:13px;font-weight:400;color:var(--mut)}
.plan .para{font-size:12px;color:var(--mut);margin-bottom:6px}

.plan .precio small.iva{display:inline-block;margin-top:2px;font-size:11px}
.plan .precio small{font-size:13px;font-weight:400;color:var(--mut)}

@media print{
  #printView .doc{font-size:11px;line-height:1.35;color:#000}
  #printView .doc h1{font-size:22px;margin:4px 0 2px}
  #printView .doc .sub{font-size:13px;margin:0 0 6px;color:#333}
  #printView .doc h2{font-size:13px;border-bottom:1px solid #444;margin:12px 0 4px;padding-bottom:2px}
  #printView .doc table{width:100%;border-collapse:collapse;font-size:10.5px;margin:2px 0 6px}
  #printView .doc th,#printView .doc td{border:1px solid #888;padding:3px 5px;text-align:left;white-space:normal;vertical-align:top}
  #printView .doc th{background:#eee}
  #printView .doc .nota{font-size:9px;color:#444;margin-top:10px}
  #printView .doc .firmas{display:flex;gap:30px;margin-top:36px}
  #printView .doc .firmas div{flex:1;border-top:1px solid #000;padding-top:4px;font-size:10px}
}
details summary{cursor:pointer}

a.filebtn{text-decoration:none}
#sucTexto{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px}

.avatar{width:38px;height:38px;border-radius:50%;background:#cfd8e6;color:#12274b;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;overflow:hidden;cursor:pointer;flex:none;border:2px solid rgba(255,255,255,.55)}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.avatar.grande{width:120px;height:120px;font-size:14px;cursor:default;border:2px solid var(--line)}
.avatar.grande span{color:var(--mut);font-weight:400}
.marca{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}
.marcaItem{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.logoprev{min-width:200px;height:120px;max-width:100%;border:2px dashed var(--line);border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;padding:8px}
.logoprev img{max-width:100%;max-height:100%;object-fit:contain}
.logoprev span{color:#6a7a90;font-size:13px}
@media print{#printView .doc{position:relative}#printView .logoprint{height:46px;max-width:260px;object-fit:contain}}
@media print{
  #printView .doc h2{break-after:avoid;page-break-after:avoid}
  #printView .doc tr,#printView .doc svg,#printView .doc .firmas{break-inside:avoid;page-break-inside:avoid}
  #printView .doc table{break-inside:auto}
  #printView .doc thead{display:table-header-group}
}
input[type=file]{max-width:100%;min-width:0}label:has(>input[type=file]){min-width:0;max-width:100%}

/* PC: más ancho útil, mapa mayor, resúmenes plegables */
.resumenes{margin-top:18px}.resumenes>summary{cursor:pointer;font-weight:700;padding:8px 0}
@media(min-width:1200px){main{max-width:1360px}footer{max-width:1360px}#map{height:460px}}
@media(min-width:1500px){main{max-width:1500px}footer{max-width:1500px}}
@media(min-width:1000px){#tablaVuelos th,#tablaVuelos td{white-space:nowrap}}
kbd{font:12px/1 ui-monospace,Consolas,monospace;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:1px 5px;background:var(--card)}

/* Cuentas */
.cuentabtn{margin-left:8px}
.planchip + .cuentabtn{margin-left:8px}
.cuentaform{display:grid;gap:8px}
.cuentaform label{display:grid;gap:3px;font-size:13px}
.cuentaform input[type=email],.cuentaform input[type=password],.cuentaform input:not([type]){padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font:inherit}
.cuentaform fieldset{border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.cuentaform label.radio{display:flex;gap:6px;align-items:center}
.hint.ok{color:#1b7a3c}.hint.err{color:#b3261e}

/* Textos legales */
dialog.legal{max-width:820px;width:calc(100% - 24px);max-height:88vh;display:flex;flex-direction:column}
.legnav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.legnav button{padding:4px 10px;font-size:12px;border-radius:99px}
.legnav button.on{background:var(--acc);border-color:var(--acc);color:#fff}
.legbody{overflow:auto;font-size:13px;line-height:1.5;padding-right:6px}
.legbody h3{margin-top:0}.legbody h4{margin:14px 0 4px}
.legborr{background:#fff4e5;border:1px solid #f0c36d;border-radius:8px;padding:4px 8px}
.legtab{width:100%;border-collapse:collapse;font-size:12px}.legtab th,.legtab td{border:1px solid var(--line);padding:4px 6px;text-align:left;vertical-align:top}
.formdes{border:1px dashed var(--line);border-radius:8px;padding:8px;font-size:12px}
footer .legalinks{margin-bottom:4px}
.infobasica{border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12px;margin:6px 0}
.infobasica dt{font-weight:600}.infobasica dd{margin:0 0 4px}

/* Promoción de lanzamiento y administración */
.promo{background:#eaf7ee;border:1px solid #9fd5ae;border-radius:8px;padding:8px 12px;margin:8px 0;font-size:13px}
.promo.agotada{background:#f3f3f3;border-color:#ccc}
.promobtn{margin-bottom:4px}
.admcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin:10px 0}
.admcards div{border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--card)}.admcards b{display:block;font-size:20px}
.admfiltros{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.estado-susp{color:#b3261e;font-weight:600}.estado-prueba{color:#1b7a3c}

/* Ficha del vuelo */
dialog.ficha{max-width:1100px;width:calc(100% - 20px);max-height:92vh;overflow:auto}
.fichahead{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:flex-start;margin-bottom:10px}
.fichagrid{display:grid;grid-template-columns:210px minmax(0,1fr) 210px;gap:10px}
.fichacol{display:grid;gap:8px;align-content:start}
.ftile{border:1px solid var(--line);border-radius:10px;padding:8px 10px;text-align:center;background:var(--card)}
.ftile span{display:block;font-size:11px;color:var(--mut)}.ftile b{display:block;font-size:16px;margin:2px 0}.ftile small{display:block;font-size:11px;color:var(--mut)}
.fmapa{min-height:380px;height:100%;border-radius:10px;overflow:hidden;background:#e9eef5;border:1px solid var(--line)}
.fichagraf{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px}
@media (max-width:820px){.fichagrid{grid-template-columns:1fr 1fr}.fichacentro{grid-column:1/-1;order:-1}.fmapa{min-height:300px}}
@media (max-width:520px){.fichagrid{grid-template-columns:1fr}}

/* Pestañas de la ficha del vuelo */
.fichatabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:4px 0 12px}
.fichatabs button{border:0;border-bottom:3px solid transparent;background:none;border-radius:0;padding:8px 16px;font-weight:600;color:var(--mut);cursor:pointer}
.fichatabs button:hover{color:var(--ink)}
.fichatabs button.on{border-bottom-color:var(--acc);color:var(--acc)}
.ftab[hidden]{display:none}

/* Comprobación anti-robots (Turnstile): reserva el hueco para que el formulario no salte al cargar */
.tsbox { min-height: 65px; margin: 8px 0; }

/* Guía de vinculación de vuelos */
.pasos { padding-left: 20px; line-height: 1.5; }
.pasos li { margin-bottom: 8px; }
.pasos ul { margin: 6px 0; }
