@font-face{ font-family:'BwModelica'; src:url('/assets/fonts/BwModelica/400-BwModelica-Regular.woff2?v=3') format('woff2'); font-weight:400; font-style:normal; font-display:swap; }
@font-face{ font-family:'BwModelica'; src:url('/assets/fonts/BwModelica/700-BwModelica-Bold.woff2?v=3') format('woff2'); font-weight:700; font-style:normal; font-display:swap; }
@font-face{ font-family:'BwModelica'; src:url('/assets/fonts/BwModelica/800-BwModelica-ExtraBold.woff2?v=3') format('woff2'); font-weight:800; font-style:normal; font-display:swap; }

:root{
  --azul:#001387;
  --azul-suave:rgba(0,19,135,.08);
  --ambar:#F1B53D;
  --oscuro:#1f212e;
  --gris:#595b64;
  --beige:#f7f2f0;
  --blanco:#ffffff;
  --linea:rgba(31,33,46,.12);
  --inclinar-x:0deg;
  --inclinar-y:0deg;
  --brillo-x:50%;
  --brillo-y:50%;
  --brillo-op:0;
}
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{ margin:0; min-height:100vh; display:flex; flex-direction:column; background:var(--beige); color:var(--oscuro); font-family:'BwModelica', system-ui, -apple-system, 'Segoe UI', sans-serif; line-height:1.5; }
a{ color:inherit; }

.sv{ flex:1; width:100%; max-width:640px; margin:0 auto; padding:clamp(32px, 8vh, 88px) 20px 40px; display:flex; flex-direction:column; align-items:center; }
.sv-carnet-zona{ width:100%; max-width:500px; perspective:1100px; }
.sv-carnet{ position:relative; aspect-ratio:1.586; padding:22px 24px 20px; border-radius:18px; background:var(--blanco); overflow:hidden; display:flex; flex-direction:column; justify-content:space-between; border:1px solid rgba(0,19,135,.14); box-shadow:0 30px 50px -28px rgba(0,19,135,.45), 0 10px 22px -14px rgba(31,33,46,.35); transform:rotateX(var(--inclinar-x)) rotateY(var(--inclinar-y)); transform-style:preserve-3d; transition:transform .25s ease-out; }
.sv-carnet__trama{ position:absolute; inset:0; pointer-events:none; background:
  repeating-radial-gradient(circle at 100% 100%, transparent 0 7px, rgba(0,19,135,.07) 7px 8px),
  repeating-radial-gradient(circle at 0 0, transparent 0 11px, rgba(241,181,61,.12) 11px 12px);
  -webkit-mask-image:linear-gradient(120deg, #000 0 30%, rgba(0,0,0,.25) 55%, #000 100%); mask-image:linear-gradient(120deg, #000 0 30%, rgba(0,0,0,.25) 55%, #000 100%); }
.sv-carnet__micro{ position:absolute; left:0; right:0; bottom:80px; white-space:nowrap; overflow:hidden; font-size:5.5px; letter-spacing:.32em; color:rgba(0,19,135,.28); pointer-events:none; user-select:none; }
.sv-carnet__arriba, .sv-carnet__cuerpo, .sv-carnet__pie{ position:relative; z-index:1; }
.sv-carnet__arriba{ display:flex; align-items:center; justify-content:space-between; }
.sv-carnet__marca{ margin:0; font-size:18px; color:var(--azul); letter-spacing:-.01em; }
.sv-carnet__marca strong{ font-weight:800; }
.sv-estado{ display:inline-flex; align-items:center; gap:6px; padding:4px 11px; border-radius:999px; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--azul); background:var(--azul-suave); }
.sv-estado::before{ content:""; width:7px; height:7px; border-radius:50%; background:#1a9b5b; }
.sv-estado--pendiente::before{ background:var(--ambar); }
.sv-estado--caducado::before{ background:#ff3b38; }
.sv-carnet__cuerpo{ display:grid; grid-template-columns:auto minmax(0, 1fr); align-items:center; gap:18px; }
.sv-carnet__sello{ width:86px; height:auto; display:block; transform:translateZ(24px); filter:drop-shadow(0 6px 10px rgba(0,19,135,.18)); }
.sv-carnet__logo{ display:block; height:24px; width:auto; max-width:150px; margin:0 0 8px; object-fit:contain; object-position:left center; }
.sv-carnet__rotulo{ margin:0; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--gris); }
.sv-carnet__entidad{ margin:2px 0 2px; font-size:21px; font-weight:800; line-height:1.15; letter-spacing:-.015em; color:var(--oscuro); }
.sv-carnet__nif{ margin:0; font-size:13px; color:var(--gris); }
.sv-carnet__pie{ display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:10px; margin:0; padding-top:12px; border-top:1px solid rgba(0,19,135,.14); }
.sv-carnet__pie dt{ font-size:9.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--gris); }
.sv-carnet__pie dd{ margin:2px 0 0; font-size:13px; font-weight:700; color:var(--oscuro); }
.sv-carnet__pie div:first-child dd{ color:var(--azul); letter-spacing:.04em; }
.cert__brillo{ position:absolute; inset:0; z-index:2; pointer-events:none; border-radius:inherit; opacity:var(--brillo-op); mix-blend-mode:multiply; transition:opacity .3s ease; background:linear-gradient(115deg, transparent 25%, rgba(241,181,61,.18) 42%, rgba(120,170,255,.16) 52%, rgba(255,150,210,.14) 62%, transparent 78%); background-size:220% 220%; background-position:var(--brillo-x) var(--brillo-y); }
.sv-carnet.es-estampa{ animation:sv-pulso .9s ease; }
@keyframes sv-pulso{ 0%{ outline:0 solid rgba(0,19,135,0); outline-offset:0; } 35%{ outline:3px solid rgba(0,19,135,.55); outline-offset:6px; } 100%{ outline:3px solid rgba(0,19,135,0); outline-offset:14px; } }

.sv-texto{ width:100%; max-width:500px; margin-top:36px; text-align:center; }
.sv-lead{ margin:0 auto 20px; max-width:38ch; font-size:16px; color:var(--gris); }
.sv-acciones{ display:flex; justify-content:center; flex-wrap:wrap; gap:10px; }
.sv-boton{ appearance:none; border:1.5px solid var(--azul); border-radius:999px; background:var(--azul); color:#fff; font:inherit; font-size:15px; font-weight:700; padding:11px 22px; cursor:pointer; transition:transform .2s ease, background .2s ease, color .2s ease; }
.sv-boton:hover{ transform:translateY(-1px); }
.sv-boton--claro{ background:transparent; color:var(--azul); }
.sv-boton--claro:hover{ background:var(--azul); color:#fff; }
.sv-boton:focus-visible{ outline:3px solid var(--ambar); outline-offset:3px; }
.sv-verificacion{ display:inline-flex; align-items:center; gap:8px; margin:16px 0 0; font-size:14px; font-weight:700; color:var(--azul); }
.sv-verificacion[hidden]{ display:none; }
.sv-verificacion::before{ content:"✓"; display:inline-grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--azul); color:#fff; font-size:12px; }
.sv-verificacion.es-pendiente::before{ content:"!"; background:var(--ambar); color:var(--oscuro); }
.sv-verificacion.es-caducado::before{ content:"×"; background:#ff3b38; }

.sv-revisiones{ list-style:none; margin:32px 0 0; padding:0; text-align:left; border-top:1px solid var(--linea); }
.sv-revision{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:12px 2px; border-bottom:1px solid var(--linea); }
.sv-revision__titulo{ font-size:14px; font-weight:700; }
.sv-revision__titulo small{ display:block; font-size:12px; font-weight:400; color:var(--gris); }
.sv-chip{ flex:none; padding:3px 10px; border-radius:999px; font-size:10.5px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.sv-chip--cumple{ background:var(--azul); color:#fff; }
.sv-chip--pendiente{ background:var(--ambar); color:var(--oscuro); }
.sv-chip--no-aplica{ background:var(--azul-suave); color:var(--gris); }

.sv-detalles{ margin-top:18px; text-align:left; }
.sv-detalles summary{ cursor:pointer; font-size:14px; font-weight:700; color:var(--azul); list-style:none; }
.sv-detalles summary::-webkit-details-marker{ display:none; }
.sv-detalles summary::after{ content:" +"; }
.sv-detalles[open] summary::after{ content:" −"; }
.sv-tabla{ margin:10px 0 0; }
.sv-tabla .cert-fila{ display:grid; grid-template-columns:minmax(110px, 36%) minmax(0, 1fr); gap:12px; padding:9px 0; border-bottom:1px solid var(--linea); font-size:13px; }
.sv-tabla dt{ color:var(--gris); }
.sv-tabla dd{ margin:0; font-weight:700; overflow-wrap:anywhere; }
.cert-mono{ letter-spacing:.04em; }
.sv-pendiente{ display:inline-block; padding:0 8px; border-radius:999px; background:var(--ambar); font-size:11px; font-weight:700; }
.sv-aviso{ margin:22px auto 0; max-width:44ch; font-size:12px; color:var(--gris); }
.sv-pie{ padding:18px 20px 26px; text-align:center; font-size:12px; color:var(--gris); }
.sv-pie p{ margin:0; }

@media (max-width:520px){
  .sv-carnet{ padding:16px 16px 14px; border-radius:14px; }
  .sv-carnet__sello{ width:58px; }
  .sv-carnet__entidad{ font-size:16px; }
  .sv-carnet__marca{ font-size:15px; }
  .sv-carnet__micro{ bottom:66px; }
  .sv-carnet__pie dd{ font-size:11.5px; }
}
@media (prefers-reduced-motion:reduce){
  .sv-carnet, .sv-boton, .cert__brillo{ transition:none; }
  .sv-carnet.es-estampa{ animation:none; }
}
@page{ size:A4; margin:12mm 14mm; }
@media print{
  body{ background:#fff; display:block; min-height:0; font-size:10pt; }
  .sv{ padding:0; max-width:none; }
  .sv-acciones, .sv-verificacion, .cert__brillo, .sv-detalles summary{ display:none !important; }
  .sv-carnet-zona{ max-width:100mm; margin:0 auto; }
  .sv-carnet{ transform:none !important; box-shadow:none; border:0.3mm solid var(--azul); -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .sv-texto{ max-width:none; margin-top:6mm; }
  .sv-lead{ max-width:none; margin:0 0 5mm; font-size:10.5pt; }
  .sv-revisiones{ margin-top:0; }
  .sv-revision{ padding:2mm 0; break-inside:avoid; }
  .sv-revision__titulo{ font-size:9.5pt; }
  .sv-revision__titulo small{ font-size:8pt; }
  .sv-chip{ font-size:7.5pt; padding:0.6mm 2.5mm; }
  .sv-detalles{ margin-top:4mm; }
  .sv-tabla{ margin:0; }
  .sv-tabla .cert-fila{ padding:1.4mm 0; font-size:8.5pt; }
  .sv-aviso{ max-width:none; margin:4mm 0 0; font-size:7.5pt; }
  .sv-pie{ padding:3mm 0 0; font-size:7.5pt; }
  .sv-chip, .sv-estado, .sv-pendiente{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .sv-carnet-zona, .sv-texto{ break-inside:avoid; }
}
