/* ==========================================================================
   Panorámica Publicidad — campanas.html
   Tarjetas de la lista y detalle de campaña (modal con galería y video).
   Solo lo que necesita media queries, estados o pseudo-clases; el resto
   del layout de la página sigue inline, como en las demás páginas.
   ========================================================================== */

.pano-sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- lista: 3 columnas escritorio, 2 tablet, 1 móvil ---------- */
.pano-camp-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;list-style:none;margin:0;padding:0}
@media (max-width:1023px){.pano-camp-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}
@media (max-width:639px){.pano-camp-list{grid-template-columns:minmax(0,1fr);gap:18px}}

/* ---------- tarjeta ---------- */
.pano-cc{display:flex;flex-direction:column;height:100%;background:var(--c-surface);border:1px solid var(--c-border);border-radius:18px;overflow:hidden;color:var(--c-ink);box-shadow:var(--shadow-sm)}
.pano-cc:hover{color:var(--c-ink);box-shadow:var(--shadow-lg)}
.pano-cc:focus-visible{outline:3px solid var(--c-accent);outline-offset:3px}
.pano-cc-media{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--c-primary)}
.pano-cc-media img,.pano-cc-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.pano-cc-ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--c-primary) 0,var(--c-primary-3) 100%);color:rgba(255,255,255,.55);font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.pano-cc-tipo{position:absolute;top:14px;left:14px;max-width:calc(100% - 28px);font-family:'Space Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;background:var(--c-accent);color:#fff;padding:6px 11px;border-radius:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pano-cc-count{position:absolute;right:12px;bottom:12px;font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;background:rgba(5,15,38,.72);color:#fff;padding:5px 9px;border-radius:100px}
.pano-cc-body{display:flex;flex-direction:column;gap:8px;padding:20px 22px 22px;flex:1}
.pano-cc-marca{margin:0;font-family:'Space Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--c-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.pano-cc-titulo{margin:0;font-family:'Archivo',sans-serif;font-weight:800;font-size:19px;line-height:1.18;letter-spacing:-.02em;text-transform:uppercase;color:var(--c-primary);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.pano-cc-meta{margin:auto 0 0;padding-top:6px;font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--c-muted);overflow-wrap:anywhere}
.pano-cc-ver{margin-top:4px;font-weight:700;font-size:13.5px;color:var(--c-accent)}

/* ---------- estados de carga / vacío / error ---------- */
/* El bloque de CTA lleva display:flex inline: sin esto, [hidden] no lo ocultaba. */
[data-pano-campanas-cta][hidden]{display:none!important}
.pano-camp-skel{display:block;aspect-ratio:4/3.9;border-radius:18px;background:var(--c-bg);animation:pano-pulse 1.4s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.pano-camp-skel{animation:none}}

/* ---------- modal de detalle ---------- */
html.pano-cm-open{overflow:hidden;scrollbar-gutter:stable}
.pano-cm [hidden]{display:none!important}
.pano-cm{width:min(1080px,calc(100vw - 48px));max-width:none;max-height:calc(100dvh - 48px);margin:auto;padding:0;border:0;border-radius:20px;background:var(--c-surface);color:var(--c-ink);box-shadow:0 30px 80px rgba(5,15,38,.45);overflow:auto;overscroll-behavior:contain;font-family:'Manrope',system-ui,sans-serif}
.pano-cm::backdrop{background:rgba(5,15,38,.78)}
.pano-cm-bar{position:sticky;top:0;z-index:3;display:flex;justify-content:flex-end;padding:12px 12px 0;pointer-events:none;height:0}
.pano-cm-close{pointer-events:auto;display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 16px 0 14px;border:0;border-radius:100px;background:rgba(5,15,38,.82);color:#fff;font-family:'Space Mono',monospace;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;box-shadow:0 4px 16px rgba(5,15,38,.3)}
.pano-cm-close:hover{background:var(--c-accent)}
.pano-cm-close svg{width:16px;height:16px}
.pano-cm button:focus-visible,.pano-cm a:focus-visible{outline:3px solid var(--c-accent);outline-offset:2px}

/* galería */
.pano-cm-gal{background:var(--c-night)}
.pano-cm-stage{position:relative;aspect-ratio:3/2;max-height:66dvh;width:100%;overflow:hidden;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.pano-cm-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;transition:opacity .25s ease}
.pano-cm-stage.is-loading img{opacity:0}
.pano-cm-stage.is-error img{visibility:hidden}
.pano-cm-stage.is-loading::after{content:"";position:absolute;top:50%;left:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border:3px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:pano-cm-spin .8s linear infinite}
@keyframes pano-cm-spin{to{transform:rotate(360deg)}}
.pano-cm-stage-err{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;text-align:center;color:rgba(255,255,255,.75);font-size:14.5px}
.pano-cm-nav{position:absolute;top:50%;z-index:2;width:46px;height:46px;margin-top:-23px;display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:rgba(5,15,38,.7);color:#fff;cursor:pointer;transition:background-color .2s ease}
.pano-cm-nav:hover{background:var(--c-accent)}
.pano-cm-nav svg{width:20px;height:20px}
.pano-cm-prev{left:14px}
.pano-cm-next{right:14px}
.pano-cm-counter{position:absolute;left:14px;bottom:14px;z-index:2;margin:0;font-family:'Space Mono',monospace;font-size:12px;font-weight:700;letter-spacing:.1em;background:rgba(5,15,38,.72);color:#fff;padding:6px 11px;border-radius:100px}
.pano-cm-thumbs{display:flex;gap:8px;overflow-x:auto;padding:10px 12px 12px;margin:0;list-style:none;scrollbar-width:thin}
.pano-cm-thumb{flex:0 0 auto;width:84px;height:60px;padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:var(--c-primary);cursor:pointer;opacity:.6;transition:opacity .2s ease,border-color .2s ease}
.pano-cm-thumb:hover{opacity:.9}
.pano-cm-thumb[aria-current="true"]{opacity:1;border-color:var(--c-accent)}
.pano-cm-thumb img{width:100%;height:100%;object-fit:cover;display:block}

/* información */
.pano-cm-info{padding:clamp(22px,3.4vw,40px)}
.pano-cm-marca{margin:0 0 10px;font-family:'Space Mono',monospace;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--c-secondary);overflow-wrap:anywhere}
.pano-cm-titulo{margin:0;font-family:'Archivo',sans-serif;font-weight:800;font-size:clamp(24px,3.2vw,38px);line-height:1.04;letter-spacing:-.03em;text-transform:uppercase;color:var(--c-primary);overflow-wrap:anywhere}
.pano-cm-meta{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none}
.pano-cm-meta li{font-family:'Space Mono',monospace;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink);background:var(--c-bg);border:1px solid var(--c-border);padding:7px 12px;border-radius:100px;overflow-wrap:anywhere}
.pano-cm-meta li.is-tipo{background:var(--c-accent);border-color:var(--c-accent);color:#fff;font-weight:700}
.pano-cm-desc{margin:24px 0 0;max-width:72ch;font-size:16px;line-height:1.7;color:var(--c-ink);white-space:pre-line;overflow-wrap:anywhere}
.pano-cm-h{margin:32px 0 12px;font-family:'Space Mono',monospace;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--c-muted)}
.pano-cm-videos{display:grid;gap:16px}
.pano-cm-video{position:relative;aspect-ratio:16/9;border-radius:14px;overflow:hidden;background:var(--c-night)}
.pano-cm-video video,.pano-cm-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#000}
.pano-cm-play{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;cursor:pointer;background:linear-gradient(135deg,var(--c-primary) 0,var(--c-night) 100%);color:#fff}
.pano-cm-play img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;opacity:.85;transition:opacity .25s ease}
.pano-cm-play:hover img{opacity:1}
.pano-cm-play-ico{position:absolute;top:50%;left:50%;width:72px;height:72px;margin:-36px 0 0 -36px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--c-accent);box-shadow:0 10px 30px rgba(var(--c-accent-rgb),.5);transition:transform .22s cubic-bezier(.16,.84,.44,1)}
.pano-cm-play:hover .pano-cm-play-ico{transform:scale(1.08)}
.pano-cm-play-ico svg{width:28px;height:28px;margin-left:4px}
.pano-cm-play-txt{position:absolute;left:0;right:0;bottom:14px;font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;text-align:center;color:rgba(255,255,255,.9);text-shadow:0 1px 6px rgba(0,0,0,.6)}
.pano-cm-link{display:inline-flex;font-weight:700;font-size:15px;color:var(--c-accent);text-decoration:underline;text-underline-offset:3px}
.pano-cm-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px;padding-top:26px;border-top:1px solid var(--c-border)}
.pano-cm-cta a{background:var(--c-accent);color:#fff;font-weight:700;font-size:15px;padding:16px 30px;border-radius:100px;box-shadow:0 8px 24px rgba(var(--c-accent-rgb),.35)}
.pano-cm-cta a:hover{color:#fff;background:var(--c-accent-hover)}

/* móvil: pantalla completa */
@media (max-width:639px){
  .pano-cm{width:100vw;height:100dvh;max-height:100dvh;border-radius:0;margin:0}
  .pano-cm-stage{aspect-ratio:4/3;max-height:none}
  .pano-cm-nav{width:40px;height:40px;margin-top:-20px}
  .pano-cm-prev{left:8px}
  .pano-cm-next{right:8px}
  .pano-cm-close{height:40px;padding:0 13px 0 11px}
  .pano-cm-cta a{width:100%;text-align:center}
}
@media (prefers-reduced-motion:reduce){
  .pano-cm-stage img,.pano-cm-nav,.pano-cm-thumb,.pano-cm-play img,.pano-cm-play-ico{transition:none}
  .pano-cm-stage.is-loading::after{animation:none}
}
