/* movil.css · Pangea OS diseño-27 · el teléfono primero (25-sep-2026, encargo «app bonita, móvil e instalable»).
   Capa que va DESPUÉS de marco.css. Todo lo que cambia el teléfono vive aquí, para que se pueda leer y revertir de una vez.
   Reglas de la casa: colores solo por token; sin datos; sin !important salvo para anular un !important previo.
   Tres piezas: 1) la barra de pestañas abajo (al alcance del pulgar), 2) la cabecera compacta y pegajosa con zona segura,
   3) los ajustes de cada familia de pantalla a 375–430 px. Fuera del teléfono (>760 px) esta hoja casi no actúa. */

/* ---------- 0 · base de teléfono (vale en cualquier ancho) ---------- */
html{-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}
body{min-height:100dvh}
button,a.os-btn,.os-tile,.os-fila,.os-chip,.p27-tabbar a{-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
@media(prefers-reduced-motion:no-preference){
  .os-btn,button.os-fila,.os-tile,.p27-tabbar a,.p27-tabbar button,.p27-pax,.p27-theme,.p27-back{transition:transform var(--os-duration-press) var(--os-ease-out),background-color var(--os-duration-press) var(--os-ease-out),border-color var(--os-duration-press) var(--os-ease-out),opacity var(--os-duration-press) var(--os-ease-out)}
  .os-btn:active:not(:disabled),button.os-fila:active,.os-tile:active{transform:scale(var(--os-pressScale))}
  .p27-tabbar a:active,.p27-tabbar button:active,.p27-pax:active,.p27-theme:active,.p27-back:active{transform:scale(.92)}
}
/* El estado «ok» de una acción se confirma con un tic que se dibuja una vez. */
.os-estado.ok{display:flex;align-items:center;gap:8px}
.os-estado.ok::before{content:"";flex:none;width:18px;height:18px;border-radius:50%;background:var(--os-accent);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='11' fill='%23000'/%3E%3Cpath d='M7 12.5l3 3 7-7' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='11' fill='%23000'/%3E%3Cpath d='M7 12.5l3 3 7-7' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
@media(prefers-reduced-motion:no-preference){.os-estado.ok::before{animation:p27-tic 360ms var(--os-ease-out) both}}
@keyframes p27-tic{from{transform:scale(.4);opacity:0}60%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}

/* Texturina (OFL) en los títulos (h1 y héroe) y en el rótulo, peso 700–800 (elección de Carlos, 25-sep). */
.os-h1,.p27-hero h1,.t3-intro__titulo{font-family:'Texturina',var(--os-font-heading),Georgia,serif;font-weight:750;letter-spacing:-.01em;font-variation-settings:'opsz' 48}

/* Accesos: un icono por tile sobre la pastilla de acento (vale en todos los anchos). */
.os-tile{position:relative}
.os-tile::before{width:36px;height:36px;border-radius:11px;background:var(--os-selected);-webkit-mask:none;mask:none}
.os-tile .p27-ico{position:absolute;left:24px;top:24px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;color:var(--os-accent);pointer-events:none}
.os-tile .p27-ico svg{width:22px;height:22px}
@media(max-width:760px){.os-tile .p27-ico{left:14px;top:14px}}

.p27-cuenta{display:flex;flex-wrap:wrap;gap:20px;align-items:center;margin:24px 0 8px}
.p27-cuenta .os-salir,.p27-cuenta .os-ajuste{font-size:14px;color:var(--os-secondary);min-height:44px;display:inline-flex;align-items:center;border:0;background:transparent;padding:0;text-decoration:underline;text-underline-offset:4px;cursor:pointer}

/* Desplegables: Safari de iPhone pinta un <select> de 25 px salvo que se le quite el aspecto nativo. */
select{-webkit-appearance:none;appearance:none;min-height:var(--os-size-touch);padding:10px 44px 10px 14px;border:1px solid var(--os-border);border-radius:var(--os-radius-md);background-color:var(--os-surface);color:var(--os-text);font:inherit;font-size:var(--os-size-body);line-height:1.3;max-width:100%;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5' fill='none' stroke='%23A7AFA9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:20px 20px}
@media(max-width:760px){select{min-height:52px;border-radius:12px;font-size:17px;width:100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5' fill='none' stroke='%23A7AFA9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 14px center!important;background-size:20px 20px!important;padding-right:44px!important}} /* !important: los CSS de módulo usan el atajo background y borraban la flecha (gate 2) */

/* ---------- 1 · barra de pestañas (la pinta shell.js dentro de /app/) ---------- */
.p27-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;align-items:stretch;gap:2px;
  padding:6px max(6px,env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left,0px));
  background:var(--os-background);
  border-top:1px solid var(--os-divider)}
.p27-tabbar a,.p27-tabbar button{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:50px;padding:4px 2px 2px;
  border:0;background:none;color:var(--os-secondary);font:500 11px/1.2 var(--os-font-body);letter-spacing:.01em;text-decoration:none;border-radius:12px;cursor:pointer}
.p27-tabbar .ico{display:flex;align-items:center;justify-content:center;width:52px;height:30px;border-radius:999px}
.p27-tabbar svg{width:24px;height:24px;stroke-width:1.8}
.p27-tabbar [aria-current=page]{color:var(--os-accent)}
.p27-tabbar [aria-current=page] .ico{background:var(--os-selected)}
nav.p27-tabbar>button.p27-tab-pax{font-size:11px;font-weight:500;color:var(--os-secondary);line-height:1.2} /* los botones no heredan la letra: sin esto PAX salía más grande y más claro que las demás pestañas */
.p27-tabbar .p27-tab-pax:active .ico{background:var(--os-selected)}
.p27-tabbar span.txt{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- 2 · teléfono ---------- */
@media(max-width:760px){
  .p27-tabbar{display:flex}
  .p27-nav{display:none}
  body{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
  body:not(.p27-app){padding-bottom:0}
  body.p27-app .p27-footer{display:none}
  /* cabecera compacta, pegajosa y bajo la muesca */
  .p27-header{position:sticky;top:0;z-index:30;background:var(--os-background);border-bottom:1px solid var(--os-divider);padding-top:env(safe-area-inset-top,0px)}
  html{scroll-padding-top:calc(64px + env(safe-area-inset-top,0px))}
  .p27-header-inner{min-height:56px;padding:6px 12px 6px 14px;gap:8px;flex-wrap:nowrap}
  .p27-brand{font-size:17px;gap:8px;min-height:40px}
  .p27-brand .p27-pug{width:30px;height:30px}
  .p27-brand .p27-brand-name{letter-spacing:0}
  .p27-brand .p27-brand-os{display:none}
  .p27-back{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-left:-8px;border:0;border-radius:999px;background:transparent;color:var(--os-text);flex:none;cursor:pointer}
  .p27-back svg{width:24px;height:24px}
  .p27-back+.p27-brand .p27-brand-name{display:none}
  .p27-back+.p27-brand{gap:0}
  .p27-titulo-cab{flex:1;min-width:0;margin:0;font:600 16px/1.2 var(--os-font-body);color:var(--os-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
  body.p27-con-titulo #lienzo .os-h1:first-of-type{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  body.p27-con-titulo #lienzo .os-eyebrow:has(+.os-h1){display:none}
  body.p27-con-titulo #lienzo>header:has(.os-h1),body.p27-con-titulo #lienzo>.f23-heading{padding:0;border:0;margin:0;height:0;min-height:0;overflow:hidden} /* la cabecera de la página ya va en la barra: sin franja vacía (gate 3) */
  body.p27-con-titulo #lienzo>hr:first-of-type,body.p27-con-titulo #lienzo .os-h1+hr{display:none}
  .apex{display:none}
  .p27-pax{margin-left:auto;min-width:44px;min-height:44px;padding:6px 12px;border-radius:999px;font-size:13px}
  body.p27-con-pax .p27-pax{display:none}
  body.p27-con-pax .p27-theme{margin-left:auto}
  .p27-pax svg,.p27-theme svg{width:20px;height:20px}
  .p27-theme{min-width:44px;min-height:44px;padding:6px;border-radius:999px}
  .p27-theme span{display:none}
  .p27-pax+.p27-theme{margin-left:0}
  .p27-preview{font-size:12px;padding:5px 12px;line-height:1.3}
  .p27-offline{font-size:13px;padding:8px 16px}
  /* contenido */
  main.os-wrap{padding:16px 16px 32px}
  .os-eyebrow{font-size:12px;letter-spacing:.08em;margin-bottom:6px}
  .os-h1{font-size:28px;margin-bottom:8px;line-height:1.12}
  .os-h2{font-size:21px;margin:24px 0 12px}
  .os-sub{font-size:15px;line-height:1.5;margin-bottom:18px}
  .os-papel{padding:16px;border-radius:14px;margin-bottom:14px}
  .os-papel.rojo{padding:14px 16px}
  .os-btn{min-height:52px;padding:14px 18px;border-radius:13px;font-size:17px;font-weight:600}
  .os-btn.fantasma{font-weight:500}
  .os-campo,.mc-marcar select{min-height:52px;border-radius:12px;font-size:17px;padding:12px 14px}
  .os-fila{padding:14px 16px;min-height:56px;font-size:16px}
  .os-lista{border-radius:14px}
  .os-estado{font-size:15px}
  /* el «Volver» de cada pantalla sobra: está la barra de abajo y la flecha de la cabecera */
  body.p27-app .os-volver,body.p27-app .mc-volver,body.p27-app #btn-volver{display:none}
  body.p27-app .os-volver+*{margin-top:0}
  /* mosaico de accesos: dos columnas, icono arriba, título abajo */
  .os-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:22px}
  .os-tile{min-height:100px;padding:14px;border-radius:16px;gap:10px;justify-content:space-between;background:var(--os-surface)}
  .os-tile .titulo{font-size:15px;font-weight:600;line-height:1.3;margin-top:auto}
  .os-tile .nota{right:14px;top:12px;font-size:16px}
  .p27-home .os-grupo{margin:18px 0 10px;font-size:12px}
  .p27-home .os-tiles:has(>.os-tile:only-child){grid-template-columns:minmax(0,1fr)}
  /* la portada: saludo grande, un gesto principal, y sin ilustración decorativa */
  .p27-hero{padding:20px 18px;border-radius:18px;margin-bottom:18px;grid-template-columns:minmax(0,1fr);gap:0}
  .p27-hero>img{display:none}
  .p27-hero h1{font-size:32px;line-height:1.08;margin-bottom:6px;max-width:none}
  .p27-hero p:not(.os-eyebrow):not(.p27-hero-detalle){display:none}
  .p27-hero .p27-hero-detalle{font-size:14px;color:var(--os-secondary);margin:0 0 12px;letter-spacing:0;text-transform:none}
  .p27-hero .os-eyebrow{font-size:12px;margin-bottom:8px}
  .p27-hero-actions{gap:10px}
  .p27-hero-actions .os-btn{flex:1 1 100%;padding:14px 16px}
  .p27-hero-actions .os-btn.fantasma{flex:1 1 100%}
  .p27-cuenta{justify-content:center;gap:28px;margin:8px 0 12px}
  .p27-home #zona-campana{padding:14px 16px;border-radius:16px}
  .p27-home .os-aviso-fila{padding:12px 0}
  .p27-home .os-aviso-fila .txt{font-size:15px}
  .p27-suggestion{padding:14px 16px;margin-top:22px;border-radius:14px}
  /* entrada: el pug cromado, la lista como filas, la clave como una sola hoja */
  .p27-login main.os-wrap{padding-top:8px}
  .p27-login #lienzo{max-width:none}
  .p27-login .p27-sello{display:none}
  .p27-login .p27-pug-hero{display:block;width:min(196px,48vw);aspect-ratio:1;margin:8px auto 16px;border-radius:30%;object-fit:cover;box-shadow:0 24px 40px -22px color-mix(in srgb,var(--os-accent) 55%,transparent),0 0 0 1px color-mix(in srgb,var(--os-accent) 28%,transparent)}
  .p27-login .os-h1{text-align:center;font-size:30px}
  .p27-login .os-eyebrow{text-align:center}
  .p27-login .os-sub{text-align:center;margin-inline:auto;max-width:34ch}
  .p27-login .os-h2{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--os-secondary);margin:8px 0 10px;font-family:var(--os-font-body);font-weight:600}
  .p27-login #zona-lista .os-lista{grid-template-columns:1fr;gap:8px}
  .p27-login #zona-lista .os-fila{min-height:60px;padding:14px 16px;border-radius:14px;font-size:17px;font-weight:500;justify-content:space-between;flex-direction:row-reverse;background:var(--os-surface)}
  .p27-login #zona-lista .os-fila::before{content:"";width:22px;height:22px;flex:none;background:currentColor;color:var(--os-secondary);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
  .p27-login .os-papel{border-radius:16px}
  .p27-login .p27-clave{position:relative}
  .p27-login .p27-clave .os-campo{width:100%;padding-right:56px;letter-spacing:.08em}
  .p27-login .p27-ojo{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;background:transparent;color:var(--os-secondary);border-radius:999px;display:flex;align-items:center;justify-content:center;cursor:pointer}
  .p27-login .p27-ojo svg{width:22px;height:22px}
  .p27-login .os-btn.auto,.p27-login #btn-clave,.p27-login #btn-enlace,.p27-login #btn-otra-silla{width:100%}
  .p27-login #btn-otra-silla{margin-top:6px}
  .p27-login .os-pie{font-size:13px;text-align:center;color:var(--os-secondary)}
  /* marcar: dos botones grandes de estado; el que toca en color, el otro apagado */
  body[data-os-page=marcaciones] #lienzo .os-h1+.os-sub{display:none}
  body[data-os-page=marcaciones] .mc-hoy{display:grid;grid-template-columns:1fr;gap:10px}
  body[data-os-page=marcaciones] .mc-reloj{font-size:40px;letter-spacing:-.02em}
  body[data-os-page=marcaciones] .mc-par>div:nth-child(3){display:none}
  body[data-os-page=marcaciones] .mc-reloj small{margin-top:4px;font-size:14px}
  body[data-os-page=marcaciones] .mc-par{display:grid;grid-template-columns:1fr 1fr;gap:10px;background:var(--os-elevated);border-radius:14px;padding:12px 14px}
  body[data-os-page=marcaciones] .mc-par .k{font-size:11px;letter-spacing:.08em}
  body[data-os-page=marcaciones] .mc-par .v{font-size:26px;font-weight:600}
  body[data-os-page=marcaciones] .mc-par .v.vacio{font-size:14px;font-weight:400}
  body[data-os-page=marcaciones] .mc-marcar{display:grid;grid-template-columns:1fr;gap:8px;margin-top:14px}
  body[data-os-page=marcaciones] .mc-marcar>.os-mono{padding:4px 2px 2px;font-size:13px}
  body[data-os-page=marcaciones] .mc-marcar .mc-principal{min-height:68px;font-size:20px;border-radius:18px;margin-top:2px;box-shadow:0 18px 34px -18px color-mix(in srgb,var(--os-accent) 85%,transparent)}
  body[data-os-page=marcaciones] .mc-marcar .mc-secundario{min-height:48px;border:0;background:transparent;color:var(--os-secondary);font:500 15px var(--os-font-body);opacity:.75;border-radius:12px;cursor:pointer}
  body[data-os-page=marcaciones] .mc-marcar .mc-secundario:disabled{opacity:.35}
  body[data-os-page=marcaciones] .mc-marcar .p27-ocupado{color:transparent;position:relative}
  body[data-os-page=marcaciones] .mc-marcar .p27-ocupado::after{content:"";position:absolute;inset:0;margin:auto;width:24px;height:24px;border-radius:50%;border:3px solid color-mix(in srgb,var(--os-on-accent) 35%,transparent);border-top-color:var(--os-on-accent);animation:p27-gira 700ms linear infinite}
  body[data-os-page=marcaciones] #estado-marca{margin-top:6px}
  /* «Volver a Pangea OS» de las pantallas de dinero (enlace, no botón) */
  body.p27-app a.os-link[href="/app/"],body.p27-app a.os-link[href^="/app/?"]{display:none!important} /* !important: pisa un display en línea del módulo de dinero */
  /* casillas y conmutadores con zona de toque de 44 px */
  .ca-check{display:flex;align-items:flex-start;gap:12px;min-height:48px;padding:6px 0}
  .ca-check input[type=checkbox]{-webkit-appearance:none;appearance:none;width:44px;height:44px;flex:none;margin:-9px 0 0 -9px;border:9px solid transparent;border-radius:15px;background:var(--os-surface) padding-box;box-shadow:inset 0 0 0 1.5px var(--os-border);cursor:pointer}
  .ca-check input[type=checkbox]:checked{background:var(--os-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4 8-8' fill='none' stroke='%230E1110' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/18px no-repeat padding-box;box-shadow:none}
  .ca-check input[type=checkbox]:focus-visible{outline-offset:-6px}
  .pax-switch{min-height:48px;display:flex;align-items:center;gap:12px}
  .pax-panel{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
  .pax-acciones .os-btn{width:100%}
  body[data-os-page=marcaciones] .mc-dia{grid-template-columns:minmax(0,1.3fr) auto auto;padding:12px 14px}
  body[data-os-page=marcaciones] .mc-dia .s{grid-column:1/-1;text-align:left}
  body[data-os-page=marcaciones] .mc-dia .s .os-chip{font-size:12px}
  body[data-os-page=marcaciones] .mc-hueco{font-size:13px;margin-top:12px}
  /* dinero: pestañas como segmento de ancho completo; el saldo grande; el recibo en tarjeta legible */
  .din-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:0;background:var(--os-surface);border:1px solid var(--os-divider);padding:4px;border-radius:14px;margin:8px 0 16px}
  .din-tab{min-height:44px;border:0;border-radius:10px;padding:8px 6px;font-size:15px}
  .din-tab[aria-selected=true]{background:var(--os-text);color:var(--os-background)}
  .din-saldo{border-radius:14px;padding:16px}
  .din-saldo strong{font-size:30px;letter-spacing:-.02em}
  .din-recibo table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .din-recibo th,.din-recibo td{font-size:14px;padding:9px 6px 9px 0}
  /* tablas anchas en general: se deslizan dentro de su tarjeta, no la página */
  .os-table,table.os-tabla,.ca-tabla,.apa-tabla{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
  /* formularios y fichas */
  .os-campo,textarea.os-campo{font-size:17px}
  label.os-eyebrow{font-size:12px}
  /* cinta de instalación (la pinta shell.js una vez en Safari de iPhone) */
  .p27-instalar{position:fixed;left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:45;display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;padding:12px 12px 12px 14px;border-radius:18px;background:var(--os-elevated);color:var(--os-text);border:1px solid var(--os-divider);box-shadow:0 20px 40px -20px color-mix(in srgb,var(--os-color-ink950) 90%,transparent)}
  .p27-instalar img{width:44px;height:44px;border-radius:12px}
  .p27-instalar p{margin:0;font-size:14px;line-height:1.35}
  .p27-instalar p strong{display:block;font-weight:600;font-size:15px}
  .p27-instalar .p27-instalar-ico{display:inline-block;width:16px;height:16px;vertical-align:-3px;color:var(--os-accent)}
  .p27-instalar button{min-width:44px;min-height:44px;border:0;background:transparent;color:var(--os-secondary);font-size:22px;border-radius:999px;cursor:pointer}
  @media(prefers-reduced-motion:no-preference){.p27-instalar{animation:p27-sube 320ms var(--os-ease-sheet) both}}
}
@keyframes p27-gira{to{transform:rotate(360deg)}}
@keyframes p27-sube{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}

/* ---------- 3 · instalada (pantalla completa, sin barra de Safari) ---------- */
@media(display-mode:standalone){
  .p27-preview{display:none}
  .p27-brand .p27-brand-os{display:none}
}
html.p27-standalone .p27-instalar{display:none}

/* ---------- 4 · iPhone SE y otros de 375 px o menos ---------- */
@media(max-width:380px){
  .p27-back+.p27-brand{display:none}
  .os-tiles{gap:8px}
  .os-tile{min-height:92px;padding:12px}
  .os-tile .titulo{font-size:14px}
  .p27-hero h1{font-size:28px}
  body[data-os-page=marcaciones] .mc-reloj{font-size:42px}
  body[data-os-page=marcaciones] .mc-marcar .os-btn{min-height:64px;font-size:16px}
  .p27-tabbar a,.p27-tabbar button{font-size:10px}
  .din-tab{font-size:14px;padding:8px 4px}
}
