:root{ --negro:#0A0A0A; --azul:#002BFF; --lima:#DEFFA9; --gris:#D0D2D3; --blanco:#FFFFFF; --crema:#F6F5F1; --suave:#6B6B6B; --borde:#E4E2DD;
       --marca:#002BFF; --sobre:#FFFFFF; --ok:#128A4A; --okf:#E7F6EC; --mal:#C0262D; --malf:#FDECEC;
       --serif:'Cormorant Garamond', Georgia, serif; --sans:'Roboto Condensed', 'Arial Narrow', Arial, sans-serif; color-scheme:light; }
*{ box-sizing:border-box; }
body{ margin:0; background:var(--crema); color:var(--negro); font-family:var(--sans); font-size:18px; -webkit-font-smoothing:antialiased; }
a{ color:inherit; }

.top{ background:var(--negro); color:var(--lima); padding:10px 14px; display:flex; flex-direction:column; align-items:center; gap:8px; }
.top .t{ font-weight:700; font-size:12px; letter-spacing:.22em; }
.pasos{ display:flex; align-items:center; gap:6px; }
.pasos i{ width:14px; height:1px; background:#444; display:block; }
.pp{ display:flex; align-items:center; gap:6px; text-decoration:none; color:#8a8a8a; font-size:13px; font-weight:500; letter-spacing:.04em; }
.pp b{ width:22px; height:22px; border-radius:50%; display:grid; place-items:center; font-size:12px; border:1px solid #444; color:#8a8a8a; }
.pp.on{ color:var(--lima); } .pp.on b{ background:var(--lima); color:var(--negro); border-color:var(--lima); }
.pp.ok{ color:var(--gris); } .pp.ok b{ background:var(--azul); color:#fff; border-color:var(--azul); }

.hero{ background:var(--marca); color:var(--sobre); padding:34px 20px 110px; text-align:center; position:relative; overflow:hidden; }
.hero::after{ content:""; position:absolute; inset:auto -20% -60% -20%; height:120%; background:radial-gradient(closest-side, rgba(255,255,255,.14), transparent); pointer-events:none; }
.marca{ display:flex; justify-content:center; align-items:center; min-height:70px; }
.marca img{ max-height:96px; max-width:230px; object-fit:contain; background:#fff; border-radius:18px; padding:10px; }
.marca span{ font-family:var(--serif); font-weight:700; font-size:clamp(40px,12vw,56px); line-height:1; }
.hero .eyebrow{ margin-top:18px; font-weight:700; font-size:13px; letter-spacing:.22em; text-transform:uppercase; opacity:.85; }
.hero h1{ font-family:var(--serif); font-weight:700; font-size:clamp(34px,9.6vw,46px); line-height:1.02; margin:10px auto 10px; max-width:13ch; }
.hero p{ font-size:18px; line-height:1.5; opacity:.9; margin:0 auto; max-width:30ch; }

.wrap{ max-width:460px; margin:-86px auto 0; padding:0 16px 48px; position:relative; z-index:2; }
.ticket{ background:#fff; border-radius:22px; box-shadow:0 18px 50px rgba(10,10,10,.14); position:relative; }
.ticket-top{ padding:24px 22px 20px; text-align:center; }
.chip{ display:inline-block; font-weight:700; font-size:12px; letter-spacing:.18em; padding:6px 12px; border-radius:999px; background:var(--negro); color:var(--lima); }
.beneficio{ font-family:var(--serif); font-weight:700; font-size:clamp(30px,8.6vw,38px); line-height:1.05; margin:14px 0 10px; color:var(--negro); }
.vigencia{ display:inline-block; background:var(--lima); color:var(--negro); font-weight:700; font-size:15px; padding:8px 14px; border-radius:999px; }
.corte{ position:relative; height:28px; }
.corte::before{ content:""; position:absolute; left:22px; right:22px; top:50%; border-top:2px dashed var(--borde); }
.corte span{ position:absolute; top:0; width:28px; height:28px; border-radius:50%; background:var(--crema); }
.corte span:first-child{ left:-14px; } .corte span:last-child{ right:-14px; }
.ticket-body{ padding:8px 22px 24px; }

label{ display:block; font-weight:700; font-size:15px; letter-spacing:.04em; text-transform:uppercase; margin:16px 0 7px; color:#333; }
label small{ text-transform:none; letter-spacing:0; font-weight:400; color:var(--suave); font-size:14px; }
input[type=text], input[type=tel], input[type=number], input[type=url], input[type=password], select{ width:100%; font-family:var(--sans); font-size:19px; padding:13px 15px; border:1.5px solid var(--borde); border-radius:12px; background:#fff; color:var(--negro); }
select{ appearance:none; -webkit-appearance:none; background-image:linear-gradient(45deg,transparent 50%,#777 50%),linear-gradient(135deg,#777 50%,transparent 50%); background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%; background-size:6px 6px; background-repeat:no-repeat; }
input:focus, select:focus{ outline:none; border-color:var(--azul); }
.fila{ display:flex; gap:12px; } .fila > *{ flex:1; }
.legal{ font-size:14px; line-height:1.5; color:var(--suave); margin-top:14px; }
.error{ color:var(--mal); font-weight:700; font-size:16px; min-height:22px; margin-top:12px; text-align:center; }
.btn{ display:block; width:100%; text-align:center; text-decoration:none; font-family:var(--sans); font-weight:700; font-size:19px; letter-spacing:.03em; border:none; padding:18px; border-radius:999px; cursor:pointer; background:var(--marca); color:var(--sobre); margin-top:10px; }
.btn.azul{ background:var(--azul); color:#fff; }
.btn.lima{ background:var(--lima); color:var(--negro); }
.btn.sec{ background:transparent; color:inherit; border:1.5px solid currentColor; opacity:.8; }
.btn:disabled{ opacity:.6; cursor:default; }

.codigo{ font-family:'Courier New', monospace; font-weight:700; font-size:48px; letter-spacing:.14em; text-align:center; color:var(--negro); margin:6px 0 4px; }
.centro{ text-align:center; }
.dato-cumple{ margin-top:14px; background:var(--crema); border-radius:14px; padding:13px 15px; font-size:16px; line-height:1.45; text-align:center; }

.siguiente{ margin-top:18px; background:var(--negro); color:#fff; border-radius:22px; padding:22px; }
.siguiente .n{ color:var(--lima); font-weight:700; font-size:13px; letter-spacing:.2em; }
.siguiente h2{ font-family:var(--serif); font-weight:700; font-size:30px; line-height:1.05; margin:8px 0 6px; }
.siguiente p{ margin:0; color:var(--gris); font-size:16.5px; line-height:1.5; }

.oscuro{ background:var(--negro); color:#fff; min-height:100vh; }
.panel{ max-width:460px; margin:0 auto; padding:24px 16px 48px; }
.panel h1{ font-family:var(--serif); font-weight:700; font-size:clamp(34px,9vw,44px); line-height:1.02; margin:10px 0 8px; }
.panel .sub{ color:var(--gris); font-size:17px; line-height:1.5; margin:0; }
.cabeza{ display:flex; align-items:center; gap:12px; }
.cabeza .punto{ width:14px; height:14px; border-radius:50%; background:var(--marca); box-shadow:0 0 0 4px rgba(255,255,255,.08); }
.cabeza span{ font-weight:700; letter-spacing:.14em; text-transform:uppercase; font-size:13px; color:var(--gris); }
.mensaje{ margin-top:18px; border-left:4px solid var(--lima); border-radius:0; padding:6px 0 6px 14px; font-family:var(--serif); font-size:24px; line-height:1.2; color:#fff; }
.caja{ background:#fff; color:var(--negro); border-radius:22px; padding:22px; margin-top:18px; }
.caja h2{ font-family:var(--serif); font-weight:700; font-size:30px; margin:0 0 4px; }
.caja .sub{ color:var(--suave); }
.cod-input{ font-family:'Courier New', monospace !important; font-size:30px !important; letter-spacing:.22em; text-transform:uppercase; text-align:center; }
.estado{ border-radius:16px; padding:20px; text-align:center; font-size:17px; line-height:1.45; }
.estado strong{ display:block; font-family:var(--serif); font-size:30px; line-height:1.05; margin-bottom:6px; }
.estado.ok{ background:var(--okf); color:var(--ok); } .estado.mal{ background:var(--malf); color:var(--mal); }
.dato{ display:flex; justify-content:space-between; gap:12px; padding:10px 0; border-bottom:1px solid var(--borde); font-size:16.5px; }
.dato span:first-child{ color:var(--suave); }

.kpis{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:22px; }
.kpi{ background:#161616; border:1px solid #2a2a2a; border-radius:18px; padding:18px 16px; }
.kpi.grande{ grid-column:1 / -1; background:var(--lima); color:var(--negro); border-color:var(--lima); }
.kpi .v{ font-family:var(--serif); font-weight:700; font-size:44px; line-height:1; color:var(--lima); }
.kpi.grande .v{ color:var(--negro); font-size:56px; }
.kpi .l{ font-size:15px; color:var(--gris); margin-top:6px; line-height:1.35; }
.kpi.grande .l{ color:#333; }
.lista{ margin-top:18px; border-top:1px solid #2a2a2a; }
.lista div{ display:flex; justify-content:space-between; gap:12px; padding:13px 0; border-bottom:1px solid #2a2a2a; font-size:16px; }
.lista div span:first-child{ color:#fff; font-weight:700; } .lista div span:last-child{ color:var(--gris); text-align:right; }
.firma{ text-align:center; margin-top:26px; font-weight:700; font-size:12px; letter-spacing:.22em; color:#777; }

.anim{ opacity:0; transform:translateY(14px); animation:sube .6s ease forwards; }
.d1{ animation-delay:.08s; } .d2{ animation-delay:.18s; } .d3{ animation-delay:.28s; } .d4{ animation-delay:.38s; }
@keyframes sube{ to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){ .anim{ animation:none; opacity:1; transform:none; } }
