:root{--navy:#062d55;--gold:#d9a234;--ink:#10233a;--bg:#f3f5f7}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif}.page{max-width:1000px;margin:auto;padding:55px 22px}.hero{text-align:center;margin-bottom:30px}.eyebrow,small{letter-spacing:.13em}.hero h1{font-size:42px;margin:10px 0}.hero p,.muted{color:#64748b}.card,.preview{background:#fff;border-radius:18px;box-shadow:0 12px 35px #0f172a12}.form-card{max-width:650px;margin:auto;padding:30px}label{display:block;font-weight:700;margin:25px 0 8px}input{width:100%;padding:16px;border:1px solid #ccd4dd;border-radius:10px;font-size:17px}button,.actions a{border:0;background:var(--navy);color:white;padding:14px 20px;border-radius:9px;font-weight:700;cursor:pointer;text-decoration:none}form button{width:100%;margin-top:18px}.preview{margin:30px auto 0;max-width:650px;overflow:hidden;display:flex;align-items:center;gap:20px;padding:14px}.preview img{width:170px;height:100px;object-fit:cover;border-radius:10px}.alert{padding:12px;background:#fff3cd;border-radius:8px}.ticket-page{max-width:1500px;margin:35px auto;padding:20px}.actions{display:flex;justify-content:space-between;margin-bottom:18px}.ticket{display:grid;grid-template-columns:3fr 1fr;background:#fff;border-radius:24px;overflow:hidden;box-shadow:0 18px 55px #0f172a25}.ticket-main{min-width:0}.ticket-cover{height:330px;background:url('../img/horno.png') center/cover;position:relative}.shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.35),rgba(0,0,0,.05))}.cover-text{position:absolute;left:55px;top:45px;color:#fff}.cover-text h1{font-family:Georgia,serif;font-size:58px;line-height:.9;margin:18px 0 12px}.cover-text p{font-family:Georgia,serif;font-size:25px;margin:0 0 14px}.details,.attendee{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:28px 38px;border-bottom:1px solid #dde3ea}.details b,.attendee b{display:block;font-size:20px;margin-top:8px}.attendee{border:0}.attendee h2{margin:8px 0 0}.stub{border-left:3px dashed #9aa9b8;text-align:center;padding-bottom:28px;position:relative}.stub-head{background:var(--navy);color:#fff;padding:34px 12px;font-size:25px;letter-spacing:.13em}.stub-head small{display:block;margin-top:10px;font-size:11px}.qr{display:block;width:210px;max-width:72%;margin:32px auto 14px}.stub strong{display:block;font-size:21px;margin:9px}.barcode{height:70px;margin:28px 35px 8px;background:repeating-linear-gradient(90deg,#111 0 3px,transparent 3px 6px,#111 6px 8px,transparent 8px 12px)}.foot{text-align:center;color:#64748b}.validate{min-height:100vh;display:grid;place-items:center;padding:20px}.validate .card{padding:45px;text-align:center;max-width:550px;width:100%}.status{font-size:25px;font-weight:800;padding:18px;border-radius:12px}.status.ok{background:#dcfce7;color:#166534}.status.bad{background:#fee2e2;color:#991b1b}@media(max-width:800px){.ticket{grid-template-columns:1fr}.stub{border-left:0;border-top:3px dashed #9aa9b8}.details,.attendee{grid-template-columns:1fr}.ticket-cover{height:310px}.cover-text{left:25px}.cover-text h1{font-size:40px}.preview{display:block}.preview img{width:100%;height:170px}}@media print{body{background:#fff}.no-print{display:none!important}.ticket-page{margin:0;padding:0}.ticket{box-shadow:none;border:1px solid #ddd}.ticket-cover{print-color-adjust:exact;-webkit-print-color-adjust:exact}.stub-head,.barcode{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

.ticket-status{display:inline-block;margin-top:14px;padding:8px 14px;border-radius:999px;background:#dcfce7;color:#166534;font-weight:800;font-size:12px}.qr-note{font-size:12px;color:#64748b;padding:0 28px;line-height:1.4}

/* ===== Mejoras de boleto y estados ===== */
.qr-container{display:flex;justify-content:center;align-items:center}.folio-label{display:block}.folio-number{overflow-wrap:anywhere}.ticket-status{font-weight:800;text-transform:uppercase}.status-valido{color:#16803a}.status-utilizado{color:#b7791f;background:#fef3c7}.status-cancelado{color:#c53030;background:#fee2e2}

/* ===== Impresión optimizada ===== */
@page{size:A4 landscape;margin:8mm}
@media print{
 html,body{width:100%;height:100%;margin:0!important;padding:0!important;background:#fff!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
 .no-print{display:none!important}
 .ticket-page{width:100%!important;height:100vh!important;max-width:none!important;margin:0!important;padding:0!important;display:flex!important;justify-content:center!important;align-items:center!important;background:#fff!important}
 .ticket{width:270mm!important;max-width:270mm!important;height:145mm!important;margin:0 auto!important;display:grid!important;grid-template-columns:1fr 68mm!important;overflow:hidden!important;border-radius:5mm!important;box-shadow:none!important;border:1px solid #ddd!important;page-break-inside:avoid!important;break-inside:avoid!important}
 .ticket-main{min-width:0!important;height:145mm!important;display:flex!important;flex-direction:column!important}
 .ticket-cover{height:82mm!important;min-height:82mm!important;background-size:cover!important;background-position:center!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
 .cover-text{left:12mm!important;top:10mm!important}.cover-text h1{font-size:34pt!important}.cover-text p{font-size:17pt!important}
 .details{min-height:30mm!important;display:grid!important;grid-template-columns:repeat(3,1fr)!important;align-items:center!important;padding:5mm 9mm!important;gap:5mm!important}
 .attendee{min-height:33mm!important;display:grid!important;grid-template-columns:1.7fr .8fr 1fr!important;align-items:center!important;padding:5mm 9mm!important;gap:5mm!important}
 .details b,.attendee b{font-size:12pt!important}.attendee h2{font-size:17pt!important;line-height:1.1!important;margin:2mm 0 0!important}
 .stub{width:68mm!important;height:145mm!important;display:flex!important;flex-direction:column!important;align-items:center!important;box-sizing:border-box!important;padding-bottom:4mm!important;page-break-inside:avoid!important;break-inside:avoid!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
 .stub-head{width:100%!important;box-sizing:border-box!important;padding:9mm 3mm!important;font-size:18pt!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
 .qr-container{width:100%!important;display:flex!important;justify-content:center!important;margin-top:6mm!important}.qr{width:43mm!important;height:43mm!important;max-width:none!important;margin:0!important;object-fit:contain!important}
 .folio-label{margin-top:3mm!important}.folio-number{font-size:12pt!important;text-align:center!important;margin:2mm 2mm!important}.ticket-status{margin-top:3mm!important}.qr-note{padding:0 5mm!important;font-size:8pt!important;line-height:1.3!important;text-align:center!important}
}

/* ===== Panel de control / compartir imagen ===== */
.dashboard-page{max-width:1200px}.dashboard-grid{display:grid;grid-template-columns:1.4fr .8fr;gap:24px;align-items:stretch}.dashboard-grid .form-card{max-width:none;margin:0}.stats{display:grid;gap:18px}.stat{padding:28px}.stat strong{display:block;font-size:30px;margin-top:12px}.sold{margin-top:28px;padding:26px}.sold-head{display:flex;justify-content:space-between;gap:20px;align-items:center}.sold-head h2{margin-bottom:5px}.sold-head input{max-width:320px}.table-wrap{overflow:auto;margin-top:18px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:15px 12px;border-bottom:1px solid #e5e7eb;white-space:nowrap}th{font-size:12px;letter-spacing:.08em;color:#64748b}.row-actions{display:flex;gap:8px}.row-actions a{padding:8px 11px;border-radius:7px;background:#eef3f8;color:var(--navy);text-decoration:none;font-weight:700;font-size:13px}.pill{display:inline-block;padding:6px 10px;border-radius:999px;font-size:11px;font-weight:800}.pill.valido{background:#dcfce7;color:#166534}.pill.utilizado{background:#fef3c7;color:#92400e}.pill.cancelado{background:#fee2e2;color:#991b1b}.empty{text-align:center;color:#64748b}.actions>div{display:flex;gap:10px}.actions button.secondary{background:#fff;color:var(--navy);border:1px solid #b8c5d1}.capture-help{text-align:center;color:#64748b;font-size:13px}.ticket{width:100%}
@media(max-width:800px){.dashboard-grid{grid-template-columns:1fr}.sold-head{display:block}.sold-head input{max-width:none;margin-top:12px}.row-actions{flex-direction:column}.actions{gap:10px;align-items:flex-start}.actions>div{flex-wrap:wrap}.ticket-page{padding:10px}.ticket{border-radius:15px}}
