/* Apps por rol de Pegaso: SOLO lo propio, encima de apps-base.css (núcleo). Sin #hex: todo sale de tokens.css. */
.ap{font-family:var(--sans)}
.vista-cab h1,.ap h2.grande{font-family:var(--display);font-weight:600}
.vista-cab h1{font-size:clamp(1.9rem,4vw,2.6rem)}
.ap h2{font-family:var(--sans);font-size:1.125rem;font-weight:800}
.ap .importe{font-weight:800}
.ap-simbolo{color:var(--sobre-marca)}
.ap-top .idioma{margin-left:auto}
.ap-top .idioma-btn{min-height:44px;padding:0 12px;border:1px solid var(--linea);border-radius:999px;background:var(--superficie);font-weight:700;font-size:.875rem;cursor:pointer}
.ap-top .idioma:not([hidden])+.ap-cab{margin-left:4px}
.ceja-app{margin:0 0 4px;font-size:.8125rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--marca)}
.titulo-lista{margin:22px 0 10px}
.empuja{margin-left:auto}
.grande{font-family:var(--display);font-size:2.4rem;font-weight:600;line-height:1;font-variant-numeric:lining-nums}
.lado{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.lista.compacta>li{min-height:56px;box-shadow:none;border:1px solid var(--linea)}
.enlace-chico{display:inline-flex;align-items:center;min-height:44px;color:var(--marca-oscura);font-weight:800;text-decoration:none}
.btn.peligro{background:var(--error)}
.btn.peligro:hover{background:color-mix(in srgb,var(--error) 85%,var(--tinta))}
.acciones{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.acciones-col{display:flex;flex-direction:column;gap:10px;align-items:stretch;margin-top:12px}
.vacio{text-align:center;display:grid;justify-items:center;gap:10px}
.chip.muestra{vertical-align:middle}
.mini-foto{width:64px;height:48px;object-fit:cover;border-radius:var(--radio-chico);flex:none}
.datos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr));gap:10px 16px;margin:12px 0}
.datos dt{font-size:.8125rem;font-weight:800;color:var(--tinta-2)}
.datos dd{margin:2px 0 0;font-weight:700}
.total-linea{display:flex;justify-content:space-between;gap:12px;margin:10px 0 0;padding-top:10px;border-top:1px solid var(--linea);font-weight:800;font-size:1.125rem}
.total-linea.chico{font-size:1rem;border-top:0;padding-top:0;margin-top:4px;color:var(--tinta-2)}
.lineas{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.lineas li{display:flex;justify-content:space-between;gap:12px}
.lineas li span:first-child{color:var(--tinta-2)}
.kpi{display:flex;flex-direction:column;gap:2px}
.kpi b{font-family:var(--display);font-weight:600;font-variant-numeric:lining-nums;font-size:clamp(1.9rem,3.2vw,2.5rem)}
.ap b.odo,.ap span.odo{display:inline-flex;flex-wrap:nowrap;white-space:nowrap}
.kpi.alerta{box-shadow:inset 4px 0 0 var(--acento),var(--sombra)}
.odo .od-suf{font-family:var(--sans);font-weight:700}
.barras i{background:linear-gradient(90deg,var(--marca) calc(var(--v,var(--p,0))*100%),var(--marca-suave-2) 0)}
.barras li{grid-template-columns:minmax(100px,170px) 1fr auto}
@media (max-width:480px){.barras li{grid-template-columns:1fr auto}.barras li i{grid-column:1/-1;grid-row:2}}

/* Admin · la bahía: velas que se llenan con la ocupación */
.bahia{overflow:hidden;background:linear-gradient(180deg,var(--superficie) 0%,var(--marca-suave) 100%)}
.bahia-cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px}
.bahia-cab p{flex-basis:100%;margin:0}
.bahia-escena{position:relative;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:18px 4px 0;min-width:0}
.vela{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;min-width:0}
.vela-svg{width:100%;max-width:120px;height:auto;overflow:visible}
.vela-tela{fill:var(--superficie);stroke:var(--marca);stroke-width:1.4}
.vela-llena{fill:var(--marca)}
.vela-casco{fill:none;stroke:var(--marca-oscura);stroke-width:3.2;stroke-linecap:round}
.vela b{font-size:.875rem;line-height:1.2;overflow-wrap:anywhere}
.vela small{font-weight:800;color:var(--marca-oscura);font-size:.875rem}
.vela.en-taller .vela-tela{fill:var(--fondo-2);stroke:var(--tinta-2);stroke-dasharray:3 3}
.vela.en-taller small{color:var(--tinta-2)}
.bahia-agua{position:absolute;left:-20px;right:-20px;bottom:30px;height:40px;background:repeating-radial-gradient(ellipse at 50% 0,color-mix(in srgb,var(--marca) 16%,transparent) 0 2px,transparent 2px 14px);opacity:.6;pointer-events:none}
@media (max-width:700px){.bahia-escena{grid-template-columns:repeat(3,minmax(0,1fr))}}
.columnas{display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:6px;align-items:end;height:160px;margin-top:10px}
.col{display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end}
.col i{display:block;width:100%;height:calc(var(--v,0)*130px);min-height:2px;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,var(--acento),var(--marca))}
.col small{font-size:.75rem;color:var(--tinta-2)}
.filtros{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:12px}
.resultado{margin:6px 0 10px}
.tabla td small{color:var(--tinta-2)}
.tabla a{color:var(--marca-oscura);font-weight:800}
.flota-rejilla{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr))}
.barco-admin{padding:0;overflow:hidden}
.barco-admin img{width:100%;height:180px;object-fit:cover;display:block}
.barco-admin-txt{padding:16px}
.barco-admin h2{font-family:var(--display);font-size:1.8rem;font-weight:600}
.precio-input{display:inline-flex;align-items:center;gap:6px}
.precio-input input{width:90px;min-height:44px;padding:6px 8px;border:1px solid var(--linea);border-radius:var(--radio-chico);font-size:1rem;background:var(--superficie)}
td.editado .precio-input input{border-color:var(--acento);background:var(--acento-suave)}
.simulador{display:grid;gap:10px}
.cal-admin .cal-s{display:block}

/* Capitán */
.proxima{background:linear-gradient(160deg,var(--superficie),var(--marca-suave))}
.proxima-fila{display:flex;align-items:center;gap:16px}
.proxima h2{font-family:var(--display);font-size:1.8rem;font-weight:600;line-height:1.1}
.cuenta{margin:6px 0 0;font-weight:700}
.cuenta b{color:var(--marca-oscura);font-variant-numeric:tabular-nums}
.anillo{width:120px;height:120px;flex:none;transform:rotate(-90deg)}
@media (max-width:400px){.proxima-fila .anillo{width:96px;height:96px}.proxima-fila{gap:12px}}
.anillo.chico{width:90px;height:90px}
.anillo text{transform:rotate(90deg);transform-origin:60px 60px;text-anchor:middle}
.anillo-fondo{fill:none;stroke:var(--marca-suave-2);stroke-width:10}
.anillo-lleno{fill:none;stroke:var(--marca);stroke-width:10;stroke-linecap:round;stroke-dasharray:1 1;stroke-dashoffset:1}
.anillo-n{font:800 22px var(--sans);fill:var(--tinta)}
.anillo-t{font:700 11px var(--sans);fill:var(--tinta-2)}
.linea-tiempo>li.pasada{opacity:.6}
.extras-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.aviso-secreto{padding:10px 12px;border-radius:var(--radio-chico);background:var(--acento-suave);color:var(--tinta)}
.escaner{padding:14px}
.visor{position:relative;aspect-ratio:1;max-width:360px;margin:0 auto;border-radius:var(--radio-tarjeta);background:var(--noche);overflow:hidden;display:grid;place-items:center;transition:background var(--dur-normal) var(--curva)}
.visor.ok{background:var(--ok)}
.visor video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.visor-marco{position:absolute;inset:18%}
.visor-marco i{position:absolute;width:28px;height:28px;border:4px solid var(--sobre-noche)}
.visor-marco i:nth-child(1){top:0;left:0;border-right:0;border-bottom:0;border-radius:10px 0 0 0}
.visor-marco i:nth-child(2){top:0;right:0;border-left:0;border-bottom:0;border-radius:0 10px 0 0}
.visor-marco i:nth-child(3){bottom:0;left:0;border-right:0;border-top:0;border-radius:0 0 0 10px}
.visor-marco i:nth-child(4){bottom:0;right:0;border-left:0;border-top:0;border-radius:0 0 10px 0}
.visor-linea{position:absolute;left:6%;right:6%;top:50%;height:2px;background:var(--acento);box-shadow:0 0 12px var(--acento);animation:barrido 2.2s ease-in-out infinite}
@keyframes barrido{0%,100%{transform:translateY(-70px)}50%{transform:translateY(70px)}}
.visor-txt{position:relative;z-index:1;margin:auto 16px 16px;align-self:end;padding:8px 12px;border-radius:var(--radio-chico);background:color-mix(in srgb,var(--noche) 70%,transparent);color:var(--sobre-noche);font-weight:700;text-align:center}
.checklist>li{min-height:60px}
.puerto-estado{display:flex;align-items:center;gap:14px}
.puerto-estado.abierto{box-shadow:inset 5px 0 0 var(--ok),var(--sombra)}
.puerto-estado.cerrado{box-shadow:inset 5px 0 0 var(--error),var(--sombra)}
.puerto-estado h2{font-family:var(--display);font-size:1.9rem;font-weight:600;margin:0}
.puerto-estado p{margin:2px 0 0}
.velocimetro{width:100%;max-width:160px}
.vel-fondo{fill:none;stroke:var(--marca-suave-2);stroke-width:10;stroke-linecap:round}
.vel-lleno{fill:none;stroke:var(--marca);stroke-width:10;stroke-linecap:round;stroke-dasharray:0 1}
.vel-aguja{stroke:var(--acento);stroke-width:4;stroke-linecap:round}
.soltar-fotos{display:block;border:2px dashed var(--linea);border-radius:var(--radio-tarjeta);padding:18px;text-align:center;cursor:pointer}
.soltar-fotos input{position:absolute;width:1px;height:1px;opacity:0}
.soltar-fotos span{display:grid;justify-items:center;gap:4px}
.soltar-fotos:focus-within{outline:2px solid var(--marca)}
.galeria{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;margin-top:12px}
.galeria img{width:100%;height:90px;object-fit:cover;border-radius:var(--radio-chico)}
.error-campo{color:var(--error);font-weight:700;font-size:var(--t-chico);margin:4px 0 0}

/* Ventas */
.segmento{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;border-radius:var(--radio);background:var(--fondo-2);margin-bottom:12px}
.segmento button{min-height:44px;border:0;border-radius:var(--radio-chico);background:transparent;font-weight:800;color:var(--tinta-2);cursor:pointer}
.segmento button[aria-checked="true"]{background:var(--superficie);color:var(--marca-oscura);box-shadow:var(--sombra)}
.cotizador{display:grid;gap:12px}
.calendario.compacto .cal-dia{min-height:44px}
.calendario.compacto .cal-p{display:none}
.chips-fila{display:flex;flex-wrap:wrap;gap:8px}
.chip-sel{min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--linea);background:var(--superficie);color:var(--tinta);font-weight:700;cursor:pointer;text-align:left}
.chip-sel[aria-pressed="true"]{background:var(--marca);border-color:var(--marca);color:var(--sobre-marca)}
.pax-fila{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:10px}
.pax{display:flex;flex-direction:column;gap:4px;padding:8px 10px;border-radius:var(--radio);background:var(--fondo)}
.pax small{font-weight:800;color:var(--tinta-2)}
.pax span{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pax output{font-size:1.4rem;font-weight:800}
.redondo{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--linea);background:var(--superficie);color:var(--tinta);font-size:1.25rem;cursor:pointer}
.total-cot{text-align:left}
.total-grande .odo{font-family:var(--display);font-size:3rem;font-weight:600;color:var(--marca-oscura)}
.vence{font-weight:700;color:var(--tinta-2)}
.vence.urgente{color:var(--aviso)}
.hilo{min-height:280px}
.respuestas{display:flex;flex-direction:column;gap:8px;align-items:stretch}
.respuestas .chip-sel{white-space:normal;line-height:1.3;padding:10px 14px}
.meta .grande{display:flex;margin:6px 0 10px}

/* Concierge */
.tarjeta-qr{max-width:360px;margin:0 auto 16px;padding:20px;border-radius:26px;background:linear-gradient(155deg,var(--marca),var(--marca-oscura));color:var(--sobre-marca);text-align:center;box-shadow:var(--sombra-alta);will-change:transform;touch-action:pan-y}
.tqr-cab{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;font-weight:800;font-size:.9375rem}
.tqr-marca{font-family:var(--display);font-size:1.2rem;font-weight:600}
.tqr-x{opacity:.7}
.tqr-qr{width:200px;height:200px;margin:14px auto 8px;padding:10px;border-radius:18px;background:var(--superficie)}
.tqr-codigo{margin:6px 0 0;font-size:1.6rem;font-weight:800;letter-spacing:.2em}
.tqr-txt{margin:2px 0 0;opacity:.9}
.regla{display:flex;align-items:center;gap:12px}
.regla p{margin:0}

/* Cliente */
.pase-cliente{margin:4px 0 12px}
.cuenta-cliente{margin:-6px 0 12px;font-weight:800;color:var(--marca-oscura)}
.clima-dia{display:flex;align-items:center;gap:12px}
.clima-dia p{margin:0}
.centro{text-align:center}
.progreso-llevar{margin:0 0 10px;font-weight:800;color:var(--marca-oscura)}
.galeria-cliente{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(150px,46%),1fr));gap:10px}
.galeria-cliente figure{margin:0;border-radius:var(--radio);overflow:hidden;background:var(--superficie);box-shadow:var(--sombra)}
.galeria-cliente img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
.galeria-cliente figcaption a{display:flex;align-items:center;justify-content:center;min-height:44px;font-weight:800;color:var(--marca-oscura);text-decoration:none}
.codigo-amigo{margin:10px 0 0;font-size:1.6rem;font-weight:800;letter-spacing:.14em;color:var(--marca-oscura)}
.mapa{margin:0 0 12px}
.mapa svg{display:block;width:100%;height:auto;border-radius:var(--radio)}
.mapa figcaption{font-size:var(--t-chico);color:var(--tinta-2);margin-top:4px}
.mapa-mar{fill:var(--marca-suave-2)}
.mapa-tierra{fill:var(--fondo-2);stroke:var(--linea);stroke-width:1}
.mapa-ruta{fill:none;stroke:var(--marca);stroke-width:1.4;stroke-dasharray:4 5;opacity:.6}
.mapa-isla{fill:var(--fondo-2);stroke:var(--tinta-2);stroke-width:.8}
.mapa-halo{fill:color-mix(in srgb,var(--acento) 30%,transparent);animation:halo 2s ease-out infinite;transform-box:fill-box;transform-origin:center}
.mapa-punto{fill:var(--acento);stroke:var(--superficie);stroke-width:2}
@keyframes halo{from{transform:scale(.4);opacity:1}to{transform:scale(1.6);opacity:0}}
.mapa-t{font:700 11px var(--sans);fill:var(--tinta-2)}
.mapa-t.fuerte{fill:var(--tinta);font-size:12px}

/* Hoja de confirmación (<dialog>) */
.hoja{border:0;padding:0;border-radius:var(--radio-tarjeta);max-width:min(440px,calc(100vw - 32px));width:100%;box-shadow:var(--sombra-alta);background:var(--superficie);color:var(--tinta)}
.hoja::backdrop{background:color-mix(in srgb,var(--noche) 55%,transparent)}
.hoja form{padding:22px}
.hoja h2{margin:0 0 8px}
.hoja p{margin:0 0 16px;color:var(--tinta-2)}
.hoja-acciones{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
@media (max-width:600px){.hoja{margin:auto auto calc(12px + env(safe-area-inset-bottom))}}
/* Ajustes vistos en las capturas */
.lista>li>.interruptor-zona{flex:none}
.conv-lado{flex:0 1 auto;max-width:42%}
.conv-lado .chip{white-space:normal;text-align:right;line-height:1.2;padding:4px 10px}
.meta small{display:block;font-weight:700;color:var(--tinta-2)}

/* Generador de publicidad */
.pub{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1100px){.pub{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:start}.pub-lienzo{position:sticky;top:calc(var(--ap-top-h,60px) + 16px)}}
.pub-lienzo canvas{display:block;width:100%;height:auto;max-height:70dvh;object-fit:contain;border-radius:var(--radio);background:var(--fondo-2)}
.pub-form{display:grid;gap:14px}
.pub-form fieldset{border:0;margin:0;padding:0}
.pub-form legend{font-weight:800;font-size:var(--t-chico);margin-bottom:8px;width:100%}
.chip-sel.radio{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px}
.chip-sel.radio input{position:absolute;opacity:0;width:1px;height:1px}
.chip-sel.radio:has(input:checked){background:var(--marca);border-color:var(--marca);color:var(--sobre-marca)}
.chip-sel.radio:has(input:focus-visible){outline:2px solid var(--marca);outline-offset:2px}
.pub-fotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-bottom:10px}
.pub-foto{position:relative;display:block;border-radius:var(--radio-chico);overflow:hidden;cursor:pointer;border:3px solid transparent}
.pub-foto input{position:absolute;opacity:0;width:1px;height:1px}
.pub-foto img{display:block;width:100%;height:72px;object-fit:cover}
.pub-foto:has(input:checked){border-color:var(--marca)}
.pub-foto:has(input:focus-visible){outline:2px solid var(--marca);outline-offset:2px}
.soltar-fotos.chico{padding:12px}
.pub-form textarea{font-family:var(--sans)}
