/* ─────────────────────────────────────────────────────────────
   Sistema de diseño — Manual MAJ 2026

   Tipografías del manual: LazyDog (títulos), Bobby Jones (subtítulos)
   y Marykate (textos). Son comerciales y no tenemos los archivos, así
   que van sustitutos libres con el mismo carácter, autoalojados en
   /fonts. Si aparecen las originales en .woff2, se reemplaza el
   archivo en el @font-face y no hay que tocar nada más.
   ───────────────────────────────────────────────────────────── */

@font-face{
  font-family:"Titulo MAJ";          /* sustituye a LazyDog */
  src:url("fonts/chewy.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Subtitulo MAJ";       /* sustituye a Bobby Jones */
  src:url("fonts/fredoka-600.woff2") format("woff2");
  font-weight:600; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Texto MAJ";           /* sustituye a Marykate */
  src:url("fonts/patrick-hand.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}

:root{
  /* Gama del manual */
  --malva:#825574;
  --verde:#7c9f21;
  --amarillo:#fada3f;
  --rojo:#ca2435;
  --hueso:#f9f9f8;
  --papel:#fff;

  /* Variaciones del manual */
  --lila:#c7a4d3;
  --verde-suave:#a8bfa0;
  --amarillo-suave:#fce588;
  --rosa:#e68a93;

  /* Derivados para texto y bordes */
  --malva-hondo:#5f3d54;
  --tinta:#2e2630;
  --tinta-suave:#6b5f68;
  --borde:#e6dfe4;
  --tint:#f3ecf1;
  --ok:#4f6b33;
  --alerta:#a83726;

  --sombra:0 1px 2px rgba(78,43,62,.05), 0 8px 24px rgba(78,43,62,.07);
  --vidrio:rgba(255,255,255,.52);
  --vidrio-panel:rgba(255,255,255,.68);
  --vidrio-oscuro:rgba(95,61,84,.74);
  --difuminado:blur(22px) saturate(185%) brightness(1.05);
  --bisel:inset 0 0 0 1px rgba(255,255,255,.42), inset 0 1px 1px rgba(255,255,255,.8), inset 0 -1px 1px rgba(78,43,62,.06);
  --destello:linear-gradient(125deg, rgba(255,255,255,.42) 0%, rgba(255,255,255,.12) 26%, rgba(255,255,255,0) 52%);
  --hairline:rgba(60,40,55,.12);

  --f-titulo:"Titulo MAJ","Chewy",system-ui,sans-serif;
  --f-subtitulo:"Subtitulo MAJ","Fredoka",system-ui,sans-serif;
  --f-texto:"Texto MAJ","Patrick Hand",system-ui,sans-serif;
  --f-datos:system-ui,-apple-system,"Segoe UI",sans-serif;
}

*{box-sizing:border-box}
/* Sin esto, cualquier clase con display:flex/grid le gana al atributo
   hidden (misma especificidad) y el elemento se sigue viendo. */
[hidden]{display:none!important}
html{scroll-behavior:smooth;background:var(--hueso)}
body{margin:0;background:transparent;color:var(--tinta);font-family:var(--f-texto);font-size:19px;line-height:1.6}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(58vw 40vh at 10% -4%, rgba(130,85,116,.16), transparent 62%),
             radial-gradient(52vw 38vh at 94% 4%, rgba(124,159,33,.12), transparent 60%),
             radial-gradient(70vw 46vh at 50% 104%, rgba(250,218,63,.13), transparent 62%)}
button,input{font:inherit}
a{color:inherit}
h1,h2,h3{font-family:var(--f-subtitulo);font-weight:600;line-height:1.2;text-wrap:balance}

.skip{position:fixed;left:12px;top:-60px;z-index:200;background:var(--papel);padding:10px 14px;border-radius:10px}
.skip:focus{top:12px}

/* ── Barra superior y menú ── */
.topbar{position:sticky;top:0;z-index:100;display:grid;grid-template-columns:48px 1fr 48px;align-items:center;min-height:64px;padding:calc(8px + env(safe-area-inset-top)) calc(10px + env(safe-area-inset-right)) 8px calc(10px + env(safe-area-inset-left));background:var(--vidrio);backdrop-filter:var(--difuminado);-webkit-backdrop-filter:var(--difuminado);border-bottom:1px solid var(--hairline);box-shadow:var(--bisel)}
.topbar::after{content:"";position:absolute;inset:0;pointer-events:none;background:var(--destello)}
.topbar>*{position:relative;z-index:1}
.icon-btn{width:44px;height:44px;border:0;border-radius:14px;background:var(--vidrio);backdrop-filter:var(--difuminado);-webkit-backdrop-filter:var(--difuminado);box-shadow:var(--bisel),0 2px 8px rgba(78,43,62,.10);color:var(--malva-hondo);display:grid;place-items:center;font-size:1.35rem;text-decoration:none;cursor:pointer}
.brand{display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;color:var(--malva);font-family:var(--f-subtitulo);font-weight:600;font-size:1.05rem;letter-spacing:.01em}
.brand img{width:32px;height:32px;object-fit:contain}
.drawer{position:fixed;inset:0 auto 0 0;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom) env(safe-area-inset-left);width:min(88vw,360px);z-index:150;background:var(--vidrio-panel);backdrop-filter:blur(20px) saturate(175%);-webkit-backdrop-filter:blur(20px) saturate(175%);box-shadow:var(--bisel),20px 0 45px rgba(78,43,62,.20);transform:translateX(-105%);transition:transform .34s cubic-bezier(.32,.72,0,1);overflow:auto}
.drawer.open{transform:translateX(0)}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:15px;border-bottom:1px solid var(--borde);color:var(--malva);font-family:var(--f-subtitulo)}
.drawer-nav{display:grid;padding:10px}
.drawer-nav a{padding:13px 12px;border-radius:12px;text-decoration:none;font-family:var(--f-subtitulo);font-size:.92rem}
.drawer-nav a:hover,.drawer-nav a:focus{background:var(--tint)}
.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:140}

/* ── Estado de la descarga ── */
.estado-offline{padding:11px 14px 13px;background:var(--vidrio);backdrop-filter:var(--difuminado);-webkit-backdrop-filter:var(--difuminado);border-bottom:1px solid var(--hairline)}
.estado-fila{display:flex;align-items:center;justify-content:space-between;gap:12px;width:min(100%,980px);margin:0 auto 8px}
.estado-texto{font-family:var(--f-subtitulo);font-size:.82rem;color:var(--malva-hondo);line-height:1.35}
.estado-boton{flex:none;min-height:40px;border:0;border-radius:10px;padding:7px 16px;background:var(--malva);color:#fff;font-family:var(--f-subtitulo);font-size:.85rem;cursor:pointer}
.estado-riel{width:min(100%,980px);margin:auto;height:6px;border-radius:999px;background:var(--tint);overflow:hidden}
.estado-progreso{height:100%;width:0;border-radius:999px;background:var(--malva);transition:width .3s ease}
.estado-offline[data-estado="listo"] .estado-texto{color:var(--ok)}
.estado-offline[data-estado="listo"] .estado-texto::before{content:"✓ "}
.estado-offline[data-estado="listo"] .estado-progreso{background:var(--ok)}
.estado-offline[data-estado="incompleto"] .estado-texto{color:var(--alerta)}
.estado-offline[data-estado="incompleto"] .estado-progreso{background:var(--alerta)}

/* ── Estructura ── */
main{min-height:calc(100svh - 64px)}
.view{width:min(100%,980px);margin:auto;padding:18px calc(14px + env(safe-area-inset-right)) calc(40px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left))}
.home-view{padding-top:0}
.section-top{display:flex;margin:0 0 14px}
.back{text-decoration:none;color:var(--malva-hondo);font-family:var(--f-subtitulo);font-size:.9rem;padding:9px 14px;border-radius:12px;background:var(--vidrio);backdrop-filter:var(--difuminado);-webkit-backdrop-filter:var(--difuminado);box-shadow:var(--bisel),0 2px 8px rgba(78,43,62,.08)}
.paper{background:var(--papel);border:0;border-radius:20px;box-shadow:var(--sombra);padding:clamp(18px,5vw,48px)}
.narrow{max-width:650px;margin:auto}
.centered{text-align:center;min-height:55svh;display:grid;align-content:center;justify-items:center;gap:32px}

/* ── Saludo del inicio ── */
.bienvenida{text-align:center;padding:34px 8px 26px;display:grid;justify-items:center;gap:6px}
.bienvenida-logo{width:64px;height:auto;margin-bottom:6px}
.bienvenida h1{font-family:var(--f-titulo);font-weight:400;font-size:clamp(2rem,8vw,2.6rem);line-height:1.05;color:var(--malva);margin:0}
.bienvenida p{margin:0;max-width:34ch;font-size:1.02rem;line-height:1.5;color:var(--tinta-suave)}
.bienvenida-nota{font-family:var(--f-subtitulo);font-size:.88rem!important;color:var(--malva)!important;margin-top:8px!important}

/* ── Tarjetas del inicio ── */
.home-grid{display:grid;grid-template-columns:1fr;gap:0;margin-top:6px;background:var(--papel);border-radius:20px;box-shadow:var(--sombra);overflow:hidden}
.nav-card{display:flex;align-items:center;gap:14px;min-height:64px;padding:13px 16px;background:var(--papel);text-decoration:none;color:var(--tinta);font-family:var(--f-subtitulo);font-size:1rem;line-height:1.25;transition:background .18s cubic-bezier(.32,.72,0,1)}
.nav-card+.nav-card{box-shadow:inset 0 1px 0 var(--hairline)}
.nav-card:active{background:var(--tint)}
.nav-icono{flex:none;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--malva-hondo)}
.nav-icono svg{width:21px;height:21px}
.t-lila{background:var(--lila)}
.t-verde{background:var(--verde-suave)}
.t-verdes{background:var(--amarillo-suave)}
.t-rosa{background:var(--rosa)}
.t-amarillo{background:var(--amarillo-suave)}
.nav-card::after{content:"›";margin-left:auto;padding-left:10px;font-size:1.5rem;color:var(--tinta-suave);opacity:.5}

.pie{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 16px;margin:26px 0 6px;font-family:var(--f-datos);font-size:.78rem;color:var(--tinta-suave)}
.pie b{font-variant-numeric:tabular-nums;color:var(--malva-hondo)}
.pie button{min-height:38px;border:1px solid var(--hairline);border-radius:999px;padding:7px 16px;background:var(--vidrio);backdrop-filter:var(--difuminado);-webkit-backdrop-filter:var(--difuminado);box-shadow:var(--bisel);color:var(--malva-hondo);font-family:var(--f-datos);font-size:.78rem;cursor:pointer}

/* ── Títulos de contenido ── */
.pill{display:table;max-width:100%;margin:0 auto 26px;padding:9px 24px;border-radius:999px;background:var(--malva);color:#fff;text-align:center;font-family:var(--f-subtitulo);font-size:clamp(.9rem,3vw,1.1rem)}
.big-title{font-family:var(--f-titulo);color:var(--malva);text-align:center;line-height:1.1;font-size:clamp(1.9rem,7vw,3.4rem);margin:10px 0 30px;font-weight:400}
.lema-imagen{display:block;width:100%;max-width:420px;height:auto;margin:auto}
.lema-reflexion{width:100%;text-align:left}
.lema-reflexion .cuerpo{padding:6px 18px 22px}
.lema-fuente{color:var(--tinta-suave);font-size:.92rem}
.lema-reflexion .cuerpo h2{margin:24px 0 10px;font-size:1.02rem;color:var(--malva-hondo)}
.lema-reflexion .cuerpo h3{margin:20px 0 6px;font-size:.95rem;color:var(--malva)}
.lema-reflexion .cuerpo .divider{margin:26px 0 4px}
.preguntas{margin:0;padding-left:1.35rem}
.preguntas li{margin:.45rem 0}
.cancion{margin:0 0 4px}
.cancion p{margin:0 0 .9rem}
.cancion .estribillo{color:var(--malva-hondo)}
.cancion .estribillo strong{font-family:var(--f-subtitulo);font-weight:600}
.tono{display:inline-block;font-family:var(--f-datos);font-size:.72rem;font-weight:600;color:var(--malva-hondo);background:var(--tint);padding:3px 9px;border-radius:999px;margin-left:8px;vertical-align:middle;white-space:nowrap}
.text-page .cancion+h3{margin-top:30px}
.prayer{text-align:center}
.prayer p,.prayer-block p{font-size:clamp(1.05rem,3.8vw,1.2rem);line-height:1.7}
.text-page{max-width:760px;margin:auto}
.text-page h2{font-size:1.08rem;line-height:1.35}
.text-page h3{margin-top:26px;color:var(--malva-hondo);font-size:1.02rem}
.text-page ol,.text-page ul{padding-left:1.5rem}
.text-page li{margin:.5rem 0}
.divider{height:1px;background:var(--borde);margin:10px 0 34px}
.prayer-block{padding:32px 0;border-top:1px solid var(--borde);text-align:center}
.prayer-block:first-of-type{border-top:0}


/* ── Buscador y desplegables ── */
.buscador{position:relative;margin:0 0 20px}
.buscador input{width:100%;min-height:52px;padding:12px 44px 12px 16px;border:1px solid var(--borde);border-radius:14px;background:var(--papel);font-family:var(--f-datos);font-size:.95rem}
.buscador input:focus{outline:2px solid var(--malva);outline-offset:1px}
.buscador::after{content:"⌕";position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:1.4rem;color:var(--lila);pointer-events:none}
.grupo-oraciones{font-family:var(--f-subtitulo);font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;color:var(--malva);margin:26px 0 12px}
.grupo-oraciones:first-child{margin-top:0}
.sin-resultados{text-align:center;color:var(--tinta-suave);padding:24px 0;margin:0}

.plegable{border:0;border-radius:16px;background:var(--vidrio);backdrop-filter:var(--difuminado);-webkit-backdrop-filter:var(--difuminado);box-shadow:var(--bisel),0 2px 10px rgba(78,43,62,.08);margin:0 0 10px;overflow:hidden;position:relative;isolation:isolate}
.plegable>summary{list-style:none;cursor:pointer;padding:16px 18px;display:flex;align-items:center;gap:12px;font-family:var(--f-subtitulo);font-size:.98rem;line-height:1.3;color:var(--malva-hondo)}
.plegable>summary::-webkit-details-marker{display:none}
.plegable>summary::after{content:"▾";margin-left:auto;color:var(--lila);font-size:1.1rem;transition:transform .18s ease}
.plegable[open]>summary::after{transform:rotate(180deg)}
.plegable[open]>summary{background:var(--tint)}
.plegable .cuerpo{padding:6px 18px 20px;line-height:1.7}
.plegable .cuerpo p{margin:0 0 1rem}
.plegable .cuerpo p:last-child{margin-bottom:0}

/* ── Herramientas ── */
.tool-section{padding-bottom:28px;border-bottom:1px solid var(--borde)}
.tool-section ul{padding-left:1.4rem}
.sub-grid{display:grid;gap:12px;margin:26px 0 30px}
.sub-card{display:flex;align-items:center;min-height:64px;padding:14px 18px;border-radius:16px;background:var(--vidrio);backdrop-filter:var(--difuminado);-webkit-backdrop-filter:var(--difuminado);box-shadow:var(--bisel),0 2px 10px rgba(78,43,62,.08);border:0;position:relative;overflow:hidden;isolation:isolate;text-decoration:none;color:var(--malva-hondo);font-family:var(--f-subtitulo);font-size:.97rem}
.sub-card::after{content:"›";margin-left:auto;padding-left:12px;font-size:1.6rem;color:var(--lila)}
.pendiente{opacity:.62}
.pendiente::after{content:"pendiente";font-family:var(--f-datos);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--tinta-suave);background:var(--tint);border-radius:999px;padding:4px 10px}

.tip-card{margin:30px 0}
.tip-heading{display:table;margin:0 0 6px;background:var(--malva);color:#fff;border-radius:6px;padding:7px 18px;font-family:var(--f-subtitulo);font-size:.9rem}
.tip-sub{font-size:.85rem;text-align:center;font-family:var(--f-subtitulo);color:var(--tinta-suave)}
.tip-inner{border-radius:18px;padding:24px;text-align:center;border:1px solid rgba(0,0,0,.18)}
.tip-inner h2{font-size:1.05rem;letter-spacing:.04em}
.tip-inner p{margin:0;line-height:1.65}
/* Texto oscuro sobre los fondos claros: en blanco el naranja daba
   1,85:1, ilegible al sol. Así todos quedan por encima de 5:1. */
.orange .tip-inner{background:var(--amarillo);color:var(--tinta)}
.blue .tip-inner{background:var(--verde-suave);color:var(--tinta)}
.green .tip-inner{background:var(--verde);color:var(--tinta)}
.purple .tip-inner{background:var(--malva);color:#fff}
.white .tip-inner{background:var(--papel);color:var(--tinta);border-style:dashed}
.icon-layout{display:grid;grid-template-columns:1fr 80px;align-items:center;gap:14px}
.icon-layout img{width:80px;max-height:120px;object-fit:contain}

.stages{padding-top:16px}
.stages>h2{text-align:center;color:var(--malva);margin-bottom:26px}
.stage{position:relative;padding:22px 18px 18px 54px;border-top:1px solid var(--borde)}
.stage>span{position:absolute;left:10px;top:23px;width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:var(--malva);color:#fff;font-family:var(--f-subtitulo);font-size:.9rem}
.stage h3{margin:0 0 8px;color:var(--malva-hondo);font-size:1rem}
.stage p{margin:0}

/* ── Rosario misionero ── */
.misterio{border-left:6px solid var(--borde);border-radius:0 16px 16px 0;background:var(--papel);border-top:1px solid var(--borde);border-right:1px solid var(--borde);border-bottom:1px solid var(--borde);padding:18px 20px;margin:0 0 14px}
.misterio h3{margin:0 0 4px;color:var(--malva-hondo);font-size:1.05rem}
.misterio .continente{font-family:var(--f-datos);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--tinta-suave);display:block;margin-bottom:8px}
.misterio ul{margin:10px 0 0;padding-left:1.3rem}
.misterio li{margin:.4rem 0}
.m-verde{border-left-color:var(--verde)}
.m-rojo{border-left-color:var(--rojo)}
.m-blanco{border-left-color:#d6cdd3}
.m-azul{border-left-color:#5b8db5}
.m-amarillo{border-left-color:var(--amarillo)}

.foto{margin:0 0 22px}
.foto img{display:block;width:100%;height:auto;border-radius:14px}
.foto figcaption{margin-top:7px;font-size:.88rem;color:var(--tinta-suave);text-align:center}
.ver-punto-suelto{display:inline-flex;margin:4px 0 0}
.lamina{margin:0 0 26px;text-align:center}
.lamina img{display:block;width:100%;max-width:420px;height:auto;margin:0 auto 8px}
.lamina figcaption{font-size:.9rem;color:var(--tinta-suave)}

/* ── Patronos ── */
.patrono{border:2px solid var(--fuerte,var(--borde));border-radius:18px;background:var(--papel);padding:0;margin:0 0 12px;overflow:hidden}
.patrono>summary{list-style:none;cursor:pointer;padding:14px 18px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:14px;background:var(--pastel,var(--papel))}
.patrono-texto{display:grid;gap:2px;min-width:0}
.patrono-figura{width:auto;height:74px;display:block;align-self:end;margin-bottom:-4px}
.p-africa{--pastel:#ddeabd;--fuerte:#7c9f21}
.p-america{--pastel:#f8d2d7;--fuerte:#ca2435}
.p-europa{--pastel:#fff;--fuerte:#b7afb9}
.p-asia{--pastel:#fbeaa4;--fuerte:#fada3f}
.p-oceania{--pastel:#cfe6f4;--fuerte:#3fa9dd}
.m-teresita{--pastel:#f8d2d7;--fuerte:#e68a93}
.m-javier{--pastel:#ddeabd;--fuerte:#7c9f21}
.m-antula{--pastel:#fbeaa4;--fuerte:#fada3f}
.m-maria{--pastel:#e8dbef;--fuerte:#c7a4d3}
.m-jesus{--pastel:#ecdde7;--fuerte:#825574}
.oracion-santo{margin:16px 0 2px;padding:14px 16px 16px;border-radius:14px;background:var(--tint)}
.oracion-santo h3{margin:0 0 8px;font-size:.9rem;color:var(--malva)}
.oracion-santo p{margin:0;line-height:1.55}
.patrono>summary::-webkit-details-marker{display:none}
.patrono .continente{font-family:var(--f-datos);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--malva)}
.patrono .santo{font-family:var(--f-subtitulo);font-size:1.12rem;color:var(--malva-hondo);line-height:1.25}
.patrono .rol{font-size:.95rem;color:var(--tinta-suave)}
.patrono .cuerpo{padding:0 20px 22px;line-height:1.7}
.patrono .cuerpo p{margin:0 0 1rem}
.patrono .resumen{font-family:var(--f-subtitulo);font-size:.9rem;color:var(--malva);background:var(--tint);border-radius:12px;padding:12px 14px;text-align:center;letter-spacing:.02em}
.patrono .cita{border-left:3px solid var(--lila);padding-left:14px;color:var(--malva-hondo);font-size:1.05rem}

/* ── Mapas detallados ── */
.mapas-offline{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 14px;padding:16px 18px;border-radius:16px;background:var(--papel);border:1px dashed var(--malva)}
.mapas-offline[data-estado="listo"]{border-style:solid;border-color:var(--borde);background:var(--tint)}
.mapas-texto{flex:1;min-width:210px}
.mapas-offline strong{display:block;font-family:var(--f-subtitulo);font-weight:600;color:var(--malva-hondo);font-size:1rem}
.mapas-offline[data-estado="listo"] strong{color:var(--ok)}
.mapas-offline[data-estado="listo"] strong::before{content:"✓ "}
.mapas-offline p{margin:2px 0 0;font-size:.92rem;line-height:1.45;color:var(--tinta-suave)}
.mapas-offline button{flex:none;min-height:46px;border:0;border-radius:12px;padding:10px 20px;background:var(--malva);color:#fff;font-family:var(--f-subtitulo);font-size:.95rem;cursor:pointer}
.mapas-offline button:disabled{opacity:.6}
.mapas-riel{width:100%;height:8px;margin-top:12px;border-radius:999px;background:var(--tint);overflow:hidden}
.mapas-riel i{display:block;height:100%;width:0;border-radius:999px;background:var(--malva);transition:width .3s ease}
.abrir-mapa{display:block;width:100%;min-height:48px;margin:0 0 12px;border:0;border-radius:12px;background:var(--malva);color:#fff;font-family:var(--f-subtitulo);font-size:.95rem;cursor:pointer}
.mapa-dialog{width:100vw;height:100svh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#111;overflow:hidden}
.mapa-dialog::backdrop{background:rgba(0,0,0,.7)}
#mapaLienzo{position:absolute;inset:0;background:#111}
.mapa-dialog .dialog-barra{z-index:1200}
.mapa-aviso{position:fixed;z-index:1200;left:12px;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));margin:0;padding:12px 16px;border-radius:14px;background:rgba(26,20,25,.78);backdrop-filter:blur(16px) saturate(170%);-webkit-backdrop-filter:blur(16px) saturate(170%);box-shadow:inset 0 1px 1px rgba(255,255,255,.18),0 8px 26px rgba(0,0,0,.28);color:#fff;font-size:.9rem;line-height:1.45;text-align:center}
.leaflet-container{font-family:var(--f-datos)}
.leaflet-popup-content{font-family:var(--f-subtitulo);font-size:.9rem}
.nombre-calle{font-family:var(--f-datos);font-size:11px;font-weight:700;color:#fff;white-space:nowrap;text-shadow:0 0 3px #000,0 0 6px #000;width:auto!important;height:auto!important;margin:0!important;transform:translate(-50%,-50%)}

/* ── Zonas ── */
.nota-zonas{font-size:.95rem;line-height:1.6;color:var(--tinta-suave);background:var(--tint);border-radius:14px;padding:14px 16px;margin:0 0 8px}
.barrios{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:9px}
.barrio{display:flex;align-items:center;gap:10px}
.barrio .barrio-nombre{flex:1;min-width:0}
.barrio-nombre{font-family:var(--f-subtitulo);font-size:.95rem}
.marca{width:19px;height:19px;flex:none;border-radius:5px;border:1px solid rgba(0,0,0,.28)}
.marca-roja{background:var(--rojo)}
.marca-celeste{background:#5bb7d6}
.marca-negrita{background:#2b2b2b}
.maps-page{max-width:900px;margin:auto}
.zone-continentes{font-family:var(--f-subtitulo);font-size:.82rem;letter-spacing:.09em;text-transform:uppercase;color:var(--malva);margin:0 0 2px}
.zone-patrono{font-size:.95rem;color:var(--tinta-suave);margin:0 0 14px}
.zone .plegable{margin-bottom:8px}
.zone .cuerpo h3{margin:18px 0 8px;font-size:.95rem;color:var(--malva-hondo)}
.zone .cuerpo h3:first-child{margin-top:0}
.dato{margin:0 0 12px}
.dato span{display:block;font-family:var(--f-subtitulo);font-size:.75rem;letter-spacing:.09em;text-transform:uppercase;color:var(--malva);margin-bottom:2px}
.dato-falta{margin:0 0 12px;font-size:.92rem;color:var(--tinta-suave)}
.horarios{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}
.horarios li{display:grid;grid-template-columns:104px 1fr;gap:12px;align-items:baseline}
.horarios .hora{font-family:var(--f-datos);font-size:.82rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--malva);background:var(--tint);border-radius:999px;padding:4px 10px;text-align:center}
.c-rojo{background:#ca2435}
.c-celeste{background:#3fa9dd}
.c-amarillo{background:#fada3f}
.c-verde{background:#7c9f21}
.c-malva{background:#825574}
.c-naranja{background:#e8842c}
.c-rosa{background:#e68a93}
.c-lila{background:#c7a4d3}
.c-blanco{background:#fff}
.ver-punto{margin-left:auto;font-family:var(--f-datos);font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--malva);background:var(--tint);border-radius:999px;padding:6px 12px;text-decoration:none;white-space:nowrap}
.zone{padding:30px 0;border-top:1px solid var(--borde)}
.zone:first-of-type{border-top:0}
.zone h2{margin:0 0 10px;color:var(--malva-hondo);font-size:1.15rem}
.map-grid{display:grid;gap:12px}
.map-button{display:block;width:100%;padding:0;border:0;background:var(--tint);border-radius:16px;overflow:hidden;cursor:zoom-in}
.map-button img{display:block;width:100%;height:auto}
.map-dialog{width:100vw;height:100svh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(17,17,17,.97);overflow:hidden}
.map-dialog::backdrop{background:rgba(0,0,0,.65)}
.dialog-barra{position:fixed;z-index:2;top:calc(10px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));left:calc(12px + env(safe-area-inset-left));display:flex;align-items:center;justify-content:flex-end;gap:8px}
.dialog-btn{width:44px;height:44px;flex:none;border:0;border-radius:50%;background:var(--papel);color:#111;font-size:1.5rem;line-height:1;cursor:pointer;display:grid;place-items:center}
.dialog-nivel{min-width:62px;text-align:center;padding:8px 10px;border-radius:999px;background:rgba(255,255,255,.9);color:#111;font-family:var(--f-datos);font-size:.8rem;font-weight:700}
.dialog-lienzo{width:100%;height:100%;overflow:auto;display:flex;-webkit-overflow-scrolling:touch;padding:calc(64px + env(safe-area-inset-top)) 8px calc(12px + env(safe-area-inset-bottom))}
.dialog-lienzo img{margin:auto;flex:none;display:block;width:calc(100% * var(--zoom,1));max-width:none;height:auto}

/* ── Teléfonos ── */
.icon-emergencia{background:var(--rojo);color:#fff}
.coordis{border-top:1px solid var(--borde);padding-top:24px}
.emergency-page{max-width:650px;margin:auto}
.emergency-page h2{font-size:1.05rem;color:var(--malva-hondo);margin:0 0 12px}
.fijos{margin:0 0 26px}
.propios{border-top:1px solid var(--borde);padding-top:24px}
.lista-llamar{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:9px}
.lista-llamar a{display:grid;grid-template-columns:20px 1fr;column-gap:12px;row-gap:1px;align-items:center;min-height:62px;padding:11px 18px;border-radius:14px;background:var(--tint);border:1px solid var(--borde);text-decoration:none;color:var(--malva-hondo);font-family:var(--f-subtitulo);font-size:.98rem}
.lista-llamar .tel-icono{grid-row:1 / span 2;width:20px;height:20px;display:grid;place-items:center}
.tel-icono svg{width:19px;height:19px}
.tel-emergencia{color:var(--rojo)}
.tel-normal{color:var(--verde)}
.lista-llamar a>span:not(.tel-icono){grid-column:2;min-width:0;line-height:1.25;text-wrap:pretty}
.lista-llamar small{display:block;font-family:var(--f-texto);font-size:.9rem;color:var(--tinta-suave);line-height:1.2;margin-top:1px}
.lista-llamar strong{grid-column:2;justify-self:start;font-family:var(--f-datos);font-size:1.05rem;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap;color:var(--malva)}
.nota-fijos{font-size:.9rem;color:var(--tinta-suave);margin:0}
.emergency-page form{display:grid;gap:16px}
.emergency-page label{display:grid;gap:6px;font-family:var(--f-subtitulo);font-size:.92rem}
.emergency-page input{width:100%;min-height:50px;border:1px solid var(--borde);border-radius:12px;padding:10px 12px;background:var(--papel);font-family:var(--f-datos);font-size:.95rem}
.save-btn{min-height:52px;border:0;border-radius:14px;background:var(--malva);color:#fff;font-family:var(--f-subtitulo);font-size:1rem;padding:10px 16px;cursor:pointer}
.saved-msg{min-height:1.5em;text-align:center;color:var(--malva-hondo);font-family:var(--f-subtitulo);font-size:.9rem}

/* ── Instalación y aviso de actualización ── */
.instalar{display:grid;gap:9px;margin:14px 0 0;padding:18px;border-radius:18px;background:var(--papel);border:1px dashed var(--malva);box-shadow:var(--sombra)}
.instalar strong{font-family:var(--f-subtitulo);font-weight:600;color:var(--malva-hondo);font-size:1.05rem;line-height:1.3}
.instalar p{margin:0;font-size:.97rem;line-height:1.55}
.instalar-nota{color:var(--tinta-suave);font-size:.9rem}
.instalar button{justify-self:start;min-height:44px;margin-top:3px;border:0;border-radius:12px;padding:9px 20px;background:var(--malva);color:#fff;font-family:var(--f-subtitulo);font-size:.95rem;cursor:pointer}
.aviso-actualizacion{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:200;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 14px 13px 18px;border-radius:16px;background:var(--vidrio-oscuro);backdrop-filter:blur(16px) saturate(170%);-webkit-backdrop-filter:blur(16px) saturate(170%);color:#fff;font-family:var(--f-subtitulo);font-size:.95rem;box-shadow:inset 0 1px 1px rgba(255,255,255,.2),0 12px 34px rgba(78,43,62,.30)}
.aviso-actualizacion button{flex:none;min-height:42px;border:0;border-radius:11px;padding:8px 18px;background:var(--papel);color:var(--malva-hondo);font-family:var(--f-subtitulo);font-size:.92rem;cursor:pointer}

@media(min-width:620px){
  .sub-grid{grid-template-columns:1fr 1fr}
  .map-grid{grid-template-columns:1fr 1fr}
  .view{padding-left:24px;padding-right:24px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Teléfonos viejos sin backdrop-filter: opaco, que se lea igual. */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .topbar,.estado-offline,.icon-btn,.back,.pie button{background:var(--papel)}
  .drawer{background:var(--papel)}
  .aviso-actualizacion{background:var(--malva-hondo)}
  .mapa-aviso{background:rgba(17,17,17,.94)}
}

/* ── Cronograma ── */
.d-viernes{--dia-color:#825574;--dia-tinta:#fff;--dia-tinte:rgba(130,85,116,.13);--dia-hora:#825574}
.d-sabado{--dia-color:#7c9f21;--dia-tinta:#fff;--dia-tinte:rgba(124,159,33,.14);--dia-hora:#5f7a13}
.d-domingo{--dia-color:#fada3f;--dia-tinta:#5f3d54;--dia-tinte:rgba(250,218,63,.28);--dia-hora:#8a6e0c}
.dia-cron{border-radius:22px;overflow:hidden;background:var(--papel);box-shadow:var(--sombra);margin:0 0 16px}
.dia-cabecera{display:flex;align-items:baseline;gap:10px;margin:0;padding:15px 18px;background:var(--dia-color);color:var(--dia-tinta)}
.dia-num{font-family:var(--f-titulo);font-weight:400;font-size:2rem;line-height:.9}
.dia-nombre{font-family:var(--f-subtitulo);font-size:1.08rem}
.dia-mes{margin-left:auto;font-family:var(--f-datos);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;opacity:.85}
.cron-fila{display:grid;grid-template-columns:66px 1fr;gap:12px;padding:13px 18px}
.cron-fila+.cron-fila{box-shadow:inset 0 1px 0 var(--hairline)}
.cron-hora{font-family:var(--f-datos);font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--dia-hora);padding-top:3px}
.cron-cuerpo{display:grid;gap:4px;min-width:0}
.cron-que{font-family:var(--f-subtitulo);font-size:1rem;line-height:1.3}
.cron-nota{font-size:.88rem;line-height:1.45;color:var(--tinta-suave)}
.cron-fila.hito{background:var(--dia-tinte);box-shadow:inset 3px 0 0 var(--dia-color),inset 0 1px 0 var(--hairline)}
.cron-fila.hito .cron-que{color:var(--malva-hondo)}
.cron-fila.hito+.cron-fila{box-shadow:inset 0 1px 0 var(--hairline)}

/* ── Cristal: reflejo y bisel en controles y píldoras ── */
.icon-btn,.back,.pie button,.pill,.tono,.patrono>summary,.dia-cabecera,.nav-icono,.estado-boton,.mapas-offline button,.instalar button{position:relative;overflow:hidden;isolation:isolate}
.icon-btn::after,.back::after,.pie button::after,.pill::after,.tono::after,.patrono>summary::after,.dia-cabecera::after,.nav-icono::after,.estado-boton::after,.mapas-offline button::after,.instalar button::after{content:"";position:absolute;inset:0;pointer-events:none;background:var(--destello);z-index:-1}
.pill,.dia-cabecera,.estado-boton,.mapas-offline button,.instalar button{box-shadow:inset 0 0 0 1px rgba(255,255,255,.28),inset 0 1px 1px rgba(255,255,255,.45),0 4px 14px rgba(78,43,62,.14)}
.patrono>summary{box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),inset 0 1px 1px rgba(255,255,255,.7)}
.nav-icono{box-shadow:inset 0 0 0 1px rgba(255,255,255,.45),inset 0 1px 1px rgba(255,255,255,.6)}
.tono{box-shadow:inset 0 0 0 1px rgba(255,255,255,.6)}
.paper,.dia-cron,.home-grid{box-shadow:inset 0 0 0 1px rgba(255,255,255,.7),var(--sombra)}

/* Donde el contenido ya son tarjetas, la hoja de abajo sobra: eran tres
   capas y cada una se comía ancho de pantalla. */
#cancionero>.paper,#patronos>.paper,#cronograma>.paper{background:transparent;box-shadow:none;border-radius:0;padding:0}
#cancionero>.paper>p,#patronos>.paper>p,#cronograma>.paper>p,
#cancionero>.paper>h2{padding:0 4px}

/* ── Cancionero: una tarjeta por canto ── */
.canto{margin:0 0 14px;padding:16px 18px 18px;border-radius:18px;background:var(--papel);box-shadow:inset 0 0 0 1px rgba(255,255,255,.7),var(--sombra)}
.canto>h3{margin:0 0 10px;color:var(--malva-hondo)}
.canto .cancion p:last-child{margin-bottom:0}
.text-page .canto+h2{margin-top:30px}

/* ══ Vidrio sobre el contenido ══
   Las tarjetas dejan pasar el fondo. Para que eso se vea hace falta el
   lavado de color de body::before: sobre una hoja lisa, un vidrio no se
   distingue de una superficie blanca.
   Ojo: backdrop-filter hace que lo de position:fixed que esté adentro se
   cuelgue de la tarjeta y no de la ventana. */
.paper:not(#cancionero>.paper):not(#patronos>.paper):not(#cronograma>.paper),.dia-cron,.home-grid,.canto,.patrono,.plegable,.instalar,.mapas-offline{
  background:rgba(255,255,255,.55);
  backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%)}
.paper,.dia-cron,.home-grid,.canto,.patrono{
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),inset 0 1px 1px rgba(255,255,255,.75),0 8px 26px rgba(78,43,62,.10)}
#cancionero .paper{background:rgba(243,236,241,.48)}
.canto{background:rgba(255,255,255,.62)}
.nav-card{background:transparent}
.nav-card:active{background:rgba(255,255,255,.5)}
.patrono>summary{background:color-mix(in srgb, var(--pastel,var(--papel)) 72%, transparent)}
.plegable{background:rgba(255,255,255,.5)}
/* resplandor de fondo más presente, si no el vidrio no refracta nada */
body::before{
  background:radial-gradient(95vw 46vh at 0% -4%, rgba(130,85,116,.52), transparent 66%),
             radial-gradient(90vw 42vh at 100% 6%, rgba(124,159,33,.46), transparent 64%),
             radial-gradient(120vw 52vh at 50% 52%, rgba(250,218,63,.44), transparent 66%),
             radial-gradient(110vw 50vh at 72% 104%, rgba(199,164,211,.52), transparent 66%)}

/* el reflejo va en ::before porque el ::after ya lo usan la flechita y el chevrón */
.plegable>summary::before,.sub-card::before{content:"";position:absolute;inset:0;pointer-events:none;background:var(--destello);z-index:-1}
.plegable>summary{position:relative}
.plegable[open]>summary{background:rgba(255,255,255,.28)}

/* ── Cómo usar esta app ── */
.drawer-aparte{margin-top:6px;box-shadow:inset 0 1px 0 var(--hairline);border-radius:0 0 12px 12px;color:var(--malva-hondo)}
.drawer-aparte+.drawer-aparte{margin-top:0;box-shadow:none;border-radius:12px}
.drawer-fotos{display:grid;gap:1px}
.drawer-version{flex-direction:column;align-items:stretch;gap:10px;margin:10px 10px calc(18px + env(safe-area-inset-bottom));padding:14px 12px 0;box-shadow:inset 0 1px 0 var(--hairline);justify-content:flex-start}
.drawer-version span{padding-left:2px}
.drawer-version button{width:100%}
.drawer-aparte small{font-family:var(--f-datos);font-size:.68rem;letter-spacing:.04em;color:var(--tinta-suave);text-transform:uppercase}
.text-page .pasos-uso,.pasos-uso{list-style:none;margin:0 0 22px;padding:0;display:grid;gap:16px}
.pasos-uso li,.text-page .pasos-uso li{display:grid;grid-template-columns:38px 1fr;gap:14px;align-items:start;margin:0}
.paso-num{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--malva);color:#fff;font-family:var(--f-subtitulo);font-size:1rem}
.pasos-uso strong{display:block;font-family:var(--f-subtitulo);font-weight:600;color:var(--malva-hondo);font-size:1.02rem;line-height:1.3}
.pasos-uso p{margin:4px 0 0;font-size:.95rem;line-height:1.5;color:var(--tinta-suave)}
.uso-card{align-items:flex-start;gap:14px;cursor:default}
.uso-card::after{content:none}
.uso-card strong{display:block;font-family:var(--f-subtitulo);font-weight:600;color:var(--malva-hondo)}
.uso-card p{margin:3px 0 0;font-size:.93rem;line-height:1.45;color:var(--tinta-suave)}
.uso-card b{font-family:var(--f-subtitulo);font-weight:600;color:var(--malva-hondo)}
.t-celeste{background:#cfe6f4}
.text-page .avisos-uso,.avisos-uso{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.text-page .avisos-uso li{padding:14px 16px;border-radius:14px;background:var(--papel);box-shadow:inset 0 0 0 1px rgba(255,255,255,.6),var(--sombra);border-left:5px solid var(--marca,var(--lila));font-size:.96rem;line-height:1.5}
.avisos-uso strong{font-family:var(--f-subtitulo);font-weight:600;color:var(--malva-hondo)}
/* Los avisos llevan el color de cada continente de la misión */
.av-africa{--marca:#7c9f21}
.av-america{--marca:#ca2435}
.av-europa{--marca:#b7afb9}
.av-oceania{--marca:#3fa9dd}
.av-asia{--marca:#fada3f}
