/* ==========================================================================
   OpoReal · Núcleo compartido del plugin de temas
   Copia funcional del core de `oporeal-bloques`: mismas variables, mismo
   reset, mismos botones. Se mantiene aparte para que actualizar los temas
   no pueda romper la home (decisión del documento 03).
   ========================================================================== */

.opr{/* Escala Pizarra · documento 01, punto 2.1 */
  --p50:#F7F8FB !important; --p100:#EBEFF4; --p200:#D9E0E8; --p300:#BEC9D5; --p400:#A0ACBB; --p500:#7F8E9F; --p600:#606F80; --p700:#475362; --p800:#313A45; --p900:#1F262D; --p950:#12171C; /* Nombres funcionales */
  --fondo:var(--p50) !important; --superficie:#FFFFFF; --borde:var(--p200); --borde2:var(--p300); --tinta:var(--p950); --suave:var(--p700); --tenue:var(--p500); /* Estados · los únicos colores del sistema */
  --ok-100:#E1F4ED !important; --ok-500:#319B74; --ok-600:#1D8660; --ok-900:#143428; --no-100:#FBE5E5; --no-500:#DD3C3C; --no-600:#BA2C2C; --no-900:#3D1414; --av-100:#FDEFD9; --av-500:#F09D0F; --av-600:#B87C14; --av-900:#39290E; --radio:16px; --radio-s:11px; --sombra-s:0 1px 2px rgba(18,23,28,.06), 0 8px 20px -14px rgba(18,23,28,.3); --sombra:0 1px 2px rgba(18,23,28,.05), 0 22px 50px -30px rgba(18,23,28,.34); --ancho:1180px; font-family:"Public Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif !important; font-size:16px !important; line-height:1.6 !important; color:var(--tinta) !important; -webkit-font-smoothing:antialiased !important; box-sizing:border-box !important}

/* Reset. Ojo con la trampa nº 6 del manual: este selector mide (0,1,0) igual
   que una clase de componente, así que las reglas de sección van prefijadas. */
.opr *,.opr *::before,.opr *::after{margin:0 !important; padding:0 !important; border:0 !important; background:none !important; box-shadow:none !important; outline:none !important; box-sizing:border-box !important; font-family:inherit !important; letter-spacing:inherit !important; line-height:inherit !important; color:inherit !important; max-width:none !important; min-width:0 !important}
.opr img,.opr svg{display:block !important; max-width:100% !important}
.opr [hidden]{display:none !important}
.opr a{text-decoration:none !important; cursor:pointer !important}
.opr button{cursor:pointer !important; font:inherit !important; text-align:left !important}
.opr ul,.opr ol{list-style:none !important}
.opr table{border-collapse:collapse !important; width:100% !important}

.opr :focus-visible{outline:2px solid var(--tinta) !important; outline-offset:2px !important}
.opr .es-noche :focus-visible{outline-color:var(--p100) !important}

/* Tipografía · documento 01, punto 3.2 */
.opr .opr-h2{font-size:clamp(1.85rem,4vw,2.9rem) !important; line-height:1.04 !important; font-weight:800 !important; letter-spacing:-.03em !important; text-wrap:balance !important}
.opr .opr-h3{font-size:1.3rem !important; line-height:1.28 !important; font-weight:700 !important; letter-spacing:-.02em !important; text-wrap:balance !important}
.opr .opr-h4{font-size:1.0625rem !important; line-height:1.35 !important; font-weight:700 !important; letter-spacing:-.012em !important}
.opr .opr-rotulo{font-size:.95rem !important; line-height:1.6 !important; font-weight:600 !important; letter-spacing:-.005em !important; color:var(--suave) !important}
.opr .opr-entradilla{font-size:1.0625rem !important; line-height:1.6 !important; color:var(--suave) !important; max-width:62ch !important; text-wrap:pretty !important}
.opr .opr-nota{font-size:.8125rem !important; line-height:1.6 !important; color:var(--tenue) !important}
.opr .opr-cifra{letter-spacing:-.02em !important; font-variant-numeric:tabular-nums !important}

/* Botones · documento 01, punto 5.1 */
.opr .opr-btn{display:inline-flex !important; align-items:center !important; justify-content:center !important; gap:8px !important; padding:14px 24px !important; border-radius:999px !important; font-weight:700 !important; font-size:1rem !important; line-height:1 !important; letter-spacing:-.012em !important; transition:background .16s,color .16s,box-shadow .16s,transform .12s !important}
.opr .opr-btn:active{transform:translateY(1px) !important}
.opr .opr-btn:disabled{opacity:.42 !important; cursor:default !important}
.opr .opr-btn-1{background:var(--p950) !important; color:#fff !important}
.opr .opr-btn-1:hover{background:var(--p800) !important}
.opr .opr-btn-2{background:transparent !important; color:var(--tinta) !important; box-shadow:inset 0 0 0 1px var(--borde2) !important}
.opr .opr-btn-2:hover{box-shadow:inset 0 0 0 1px var(--p500) !important}
.opr .es-noche .opr-btn-1{background:var(--p50) !important; color:var(--p950) !important}
.opr .es-noche .opr-btn-1:hover{background:#fff !important}
.opr .es-noche .opr-btn-2{color:#fff !important; box-shadow:inset 0 0 0 1px var(--p800) !important}

.opr .opr-caja{width:100% !important; max-width:var(--ancho) !important; margin:0 auto !important}

@media (prefers-reduced-motion:reduce){
  .opr *,.opr *::before,.opr *::after{transition:none !important; animation:none !important; scroll-behavior:auto !important}
}
