:root{--navy:#142b49;--blue:#244e78;--gold:#c8a86a;--ink:#1d2b3e;--muted:#68788b;--line:#e1e8f0;--surface:#fff;--bg:#f4f6fa}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,"Segoe UI",Arial,sans-serif}.top{background:var(--navy);color:#fff;padding:15px max(20px,calc((100% - 1160px)/2));display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:66px}.brand{font-size:19px;font-weight:850;color:#fff;text-decoration:none;letter-spacing:.3px}.brand-mark{color:#e2c58b}.top>span{font-size:12px;color:#d7e3f2}.container{max-width:1160px;margin:32px auto;padding:0 22px;min-height:70vh}.hero{min-height:490px;border-radius:24px;display:flex;align-items:center;padding:clamp(28px,6vw,68px);background:linear-gradient(90deg,rgba(9,25,45,.9),rgba(9,25,45,.28)),url('generacion-fondo.png') center 48%/cover no-repeat;color:#fff;box-shadow:0 18px 48px #152b4530}.hero-content{max-width:690px}.hero h1{font-size:clamp(38px,6vw,68px);line-height:1.03;margin:14px 0}.hero p{font-size:clamp(16px,2vw,19px);line-height:1.65;color:#f0f4f8;max-width:620px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:800;color:#9a7a43}.hero .eyebrow{color:#e8d4ad}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.btn{display:inline-flex;justify-content:center;align-items:center;gap:8px;border:0;border-radius:11px;padding:13px 19px;background:var(--blue);color:#fff;text-decoration:none;font-weight:750;font-size:14px;cursor:pointer;min-height:46px;transition:transform .15s,box-shadow .15s}.btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px #142b4920}.btn.light{background:#fff;color:var(--navy)}.btn.outline{border:1px solid #ffffffa6;background:#ffffff18;color:#fff}.btn.secondary{background:#e8eef5;color:#23415f}.btn-wide{width:100%}.intro{padding:38px 8px 20px}.intro h2,.section-heading h2{font-size:clamp(26px,4vw,36px);margin:8px 0;color:var(--navy)}.intro p,.section-heading p{color:var(--muted);line-height:1.7;max-width:760px}.event-section{background:#fff;border:1px solid var(--line);border-radius:22px;padding:clamp(20px,4vw,38px);margin:24px 0;box-shadow:0 8px 30px #19385808}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:24px 0 12px}.photo-grid figure{margin:0;min-width:0}.photo-grid img{width:100%;height:220px;object-fit:cover;border-radius:14px;display:block}.photo-grid figcaption,.source-note{font-size:11px;color:#78889a;margin-top:8px}.source-note a{color:#315f88}.price-line{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-top:22px}.price-line strong{font-size:30px;color:var(--navy)}.price-line span,.hint{color:var(--muted);font-size:13px;line-height:1.6}.tamboreada{background:linear-gradient(145deg,#fff,#f5f7fb)}.installments{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:22px 0}.installments>div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:5px}.installments small{color:var(--muted)}.installments strong{font-size:clamp(20px,3vw,27px);color:var(--navy)}.installments span{font-size:11px;color:var(--muted)}.installments.mini{grid-template-columns:repeat(3,1fr)}.form-card,.card,.stat,.table-wrap,.notice{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:clamp(17px,3vw,24px);margin:18px 0;box-shadow:0 5px 20px #19385808}.form-card{max-width:820px;margin:26px auto}.form-card h1,.form-card h2{margin-top:5px;color:var(--navy)}.form-card form{display:grid;gap:16px}label{display:grid;gap:8px;font-size:13px;font-weight:750;color:#34465b}label small{font-weight:400;color:var(--muted);line-height:1.5}input,select,textarea{width:100%;min-width:0;padding:13px 14px;border:1px solid #cbd5e1;border-radius:10px;font:inherit;background:#fff;color:var(--ink);font-size:16px}input:focus,select:focus{outline:3px solid #244e7820;border-color:#537da6}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.span-all{grid-column:1/-1}.page-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px}.page-head h1{margin:5px 0;color:var(--navy);font-size:clamp(26px,4vw,36px)}.page-head p{color:var(--muted);margin:5px 0;line-height:1.5}.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.stat small{display:block;color:var(--muted);margin:7px 0}.stat strong{font-size:clamp(22px,4vw,30px);color:var(--navy);overflow-wrap:anywhere}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.card{color:inherit;text-decoration:none;display:block;transition:transform .15s}.card:hover{transform:translateY(-2px)}.card h2{margin:10px 0;color:var(--navy)}.card p,.hint{color:var(--muted);line-height:1.6}.card-icon{font-size:27px}.card-link{font-size:13px;font-weight:800;color:#315f88}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;min-width:690px}th,td{text-align:left;padding:13px;border-bottom:1px solid #e7edf3;font-size:13px;white-space:normal}th{background:#f5f8fb;color:#52657a;font-weight:750}td a{color:#1d5b91;font-weight:bold}.success,.error{padding:13px 15px;border-radius:10px;margin:12px 0;line-height:1.5}.success{background:#e8f7ee;color:#17643a}.error{background:#fff0f0;color:#9c2525}.total-preview{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:17px;background:#eef4fa;border-radius:12px}.total-preview strong{font-size:clamp(20px,4vw,26px);color:var(--navy)}.print-actions{margin:20px 0}.login-shell{max-width:1000px;margin:30px auto;display:grid;grid-template-columns:1fr 1fr;background:#fff;border:1px solid var(--line);border-radius:24px;overflow:hidden;box-shadow:0 15px 45px #152b4512}.login-art{padding:clamp(25px,5vw,55px);background:linear-gradient(145deg,#142b49,#244e78);color:#fff;position:relative;overflow:hidden;min-height:450px;display:flex;flex-direction:column;justify-content:center}.login-art .eyebrow{color:#e4c88f}.login-art h1{font-size:clamp(32px,4vw,46px);line-height:1.08;margin:15px 0}.login-art p{color:#dce6f1;line-height:1.7;max-width:390px}.login-seal{margin-top:25px;border:1px solid #ffffff55;border-radius:50%;width:90px;height:90px;display:grid;place-items:center;font-size:30px;font-weight:900;color:#e6c98e}.login-card{align-self:center;width:auto;max-width:none;margin:0;padding:clamp(24px,5vw,48px);border:0;box-shadow:none}.login-card>p,.compact-card>p{color:var(--muted);line-height:1.6}.login-icon{font-size:29px;margin-bottom:14px}.back-link{display:inline-block;margin-top:22px;color:#476582;text-decoration:none;font-size:13px}.compact-card{max-width:470px;text-align:left}.admin-list{margin:30px 0}.admin-row{display:flex;align-items:center;gap:15px;padding:15px;background:#fff;border:1px solid var(--line);border-radius:14px;margin:12px 0}.admin-avatar{flex:0 0 42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#e8eef5;color:var(--navy);font-weight:900}.admin-info{flex:1;min-width:150px}.admin-info label{max-width:420px}.admin-info small{display:block;color:var(--muted);margin-top:7px}.active-toggle{display:flex;align-items:center;gap:8px;white-space:nowrap}.active-toggle input{width:18px;height:18px}footer{text-align:center;padding:26px;color:#8190a1;font-size:12px}.print-actions button{min-height:46px}@media(max-width:760px){.top{padding:13px 17px;align-items:flex-start;flex-direction:column;gap:4px}.top>span{font-size:11px}.container{margin:18px auto;padding:0 14px}.hero{padding:30px 22px;min-height:420px;border-radius:17px;background-position:58% center}.hero h1{font-size:clamp(36px,11vw,54px)}.actions{display:grid;grid-template-columns:1fr}.actions .btn{width:100%}.photo-grid{grid-template-columns:1fr 1fr}.photo-grid figure:first-child{grid-column:1/-1}.photo-grid img{height:170px}.photo-grid figure:first-child img{height:220px}.installments{grid-template-columns:repeat(2,1fr)}.installments.mini{grid-template-columns:1fr}.grid,.stats,.cards{grid-template-columns:1fr}.page-head{align-items:stretch;flex-direction:column}.page-head>.btn{align-self:flex-start}.login-shell{grid-template-columns:1fr;margin:16px 0;border-radius:18px}.login-art{min-height:230px;padding:25px}.login-art h1{font-size:32px}.login-seal{position:absolute;right:22px;bottom:22px;width:62px;height:62px;font-size:22px;margin:0}.login-card{padding:26px 22px}.admin-row{align-items:stretch;flex-wrap:wrap}.admin-info{flex-basis:calc(100% - 65px)}.admin-row>.btn{flex:1}.active-toggle{margin-left:57px}.total-preview{align-items:flex-start;flex-direction:column}.event-section{padding:19px}.price-line strong{font-size:27px}}@media(max-width:420px){.photo-grid{grid-template-columns:1fr}.photo-grid figure:first-child{grid-column:auto}.photo-grid img,.photo-grid figure:first-child img{height:190px}.installments{grid-template-columns:1fr 1fr}.brand{font-size:17px}.container{padding:0 11px}.form-card{padding:17px}.table-wrap{margin-left:-2px;margin-right:-2px}}@media print{.top,footer,.print-actions,.form-card form,.page-head>a{display:none!important}body{background:#fff}.container{max-width:none;margin:0;padding:0}.table-wrap,.stat{box-shadow:none;border:1px solid #bbb;break-inside:avoid}.page-head{margin-bottom:10px}a{color:#000;text-decoration:none}}

/* v5: celebracion, accesibilidad movil y mapa de mesas */
.party-hero{background:linear-gradient(100deg,rgba(32,24,49,.91),rgba(85,43,75,.42)),url('generacion-fondo.png') center/cover no-repeat;border:1px solid #ffffff30}
.party-hero .eyebrow{color:#ffe1a6}.party-hero h1{letter-spacing:-1.5px;text-shadow:0 3px 20px #0005}
.event-section{border-radius:26px;border:1px solid #f0e4d4;background:linear-gradient(145deg,#fffefa,#fff7ef);box-shadow:0 12px 35px #5a38200c}
.event-section h2{color:#633c59}.included-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}
.included-grid>div{background:#fff;border:1px solid #f0dfd1;border-radius:19px;padding:20px}
.included-grid h3{color:#80516f;margin-top:0}.included-grid ul{padding-left:21px;line-height:1.65;color:#4e5360}
.price-alert{background:#fff4d9;border:1px solid #f1d99e;padding:12px 14px;border-radius:12px;color:#74521a}
.stats-four{grid-template-columns:repeat(4,minmax(0,1fr))}
.stat span{display:block;color:var(--muted);font-size:12px;margin-top:6px}
.floorplan{display:block;width:100%;height:auto;border-radius:14px;border:1px solid var(--line);background:#fff}
.table-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:8px;margin:16px 0 28px}
.table-chip{border-radius:12px;padding:10px 4px;text-align:center;display:flex;flex-direction:column;gap:4px;border:1px solid #dfe6ee;min-width:0}
.table-chip b{font-size:11px}.table-chip strong{font-size:17px}.table-chip small{font-size:9px}
.table-chip.empty{background:#f4f7fa;color:#6b7b8c}.table-chip.partial{background:#fff0cf;border-color:#edcf8e;color:#79541c}.table-chip.full{background:#e2f5e9;border-color:#a7d8b8;color:#21613a}
.table-detail{background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 16px;margin:9px 0}
.table-detail summary{font-weight:800;cursor:pointer}.table-detail li{padding:5px 0;color:#526176}
.welcome-tip{position:relative;background:linear-gradient(135deg,#fff5df,#f8eafa);border:1px solid #e9d4b5;border-radius:22px;padding:22px 24px;margin:18px 0;box-shadow:0 10px 28px #5d365b12}
.welcome-tip h2{margin:7px 0;color:#603e5b}.welcome-tip ol{padding-left:22px;line-height:1.7;color:#4f5260}.welcome-tip li{margin:5px 0}.tip-close{position:absolute;right:12px;top:8px;border:0;background:transparent;font-size:28px;color:#785d75;cursor:pointer}
@media(max-width:760px){.included-grid{grid-template-columns:1fr}.stats-four{grid-template-columns:repeat(2,minmax(0,1fr))}.table-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.table-chip{padding:8px 2px}.table-chip b{font-size:10px}.table-chip strong{font-size:15px}.welcome-tip{padding:20px 16px}.party-hero{background-position:58% center}}
@media(max-width:390px){.stats-four{grid-template-columns:1fr 1fr}.table-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}

.search-bar{display:flex;gap:10px;max-width:720px;margin:18px 0}.search-bar input{flex:1}@media(max-width:520px){.search-bar{flex-direction:column}.search-bar .btn{width:100%}}

/* v5.2: UABC como fondo general; conservar la foto original de la generación en portada */
body {
    background:
        linear-gradient(rgba(255,255,255,.82), rgba(255,255,255,.82)),
        url('uabc-fondo.png') center center / cover fixed no-repeat;
    background-color: #f5f0e8;
}

/* La portada conserva generacion-fondo.png */
.party-hero {
    background:
        linear-gradient(100deg, rgba(32,24,49,.75), rgba(85,43,75,.25)),
        url('generacion-fondo.png') center / cover no-repeat !important;
    min-height: clamp(420px, 58vw, 650px);
    display: flex;
    align-items: center;
    border-radius: 0 0 30px 30px;
}

/* Tarjetas claras para facilitar la lectura sobre el fondo */
.event-section {
    background: rgba(255,255,255,.94);
    backdrop-filter: blur(4px);
    border-radius: 24px;
}
.intro {
    padding-top: 42px;
    padding-bottom: 28px;
}

@media(max-width:760px) {
    body { background-attachment: scroll; }
    .party-hero {
        min-height: 470px;
        background-position: center !important;
    }
    .party-hero .hero-content { padding: 28px 20px; }
}

/* v6: fondo UABC optimizado y estable, sin background-attachment: fixed */
html,body{min-height:100%;background-color:#f4f6fa}
body{background-image:linear-gradient(rgba(255,255,255,.84),rgba(255,255,255,.84)),url('uabc-fondo.webp')!important;background-position:center top!important;background-size:cover!important;background-repeat:no-repeat!important;background-attachment:scroll!important}
@media(max-width:760px){body{background-attachment:scroll!important}}
.seat-legend{display:flex;gap:18px;flex-wrap:wrap;margin:12px 0;color:var(--muted);font-size:13px}
.seat-legend span{display:flex;align-items:center;gap:7px}
.seat-table-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:14px 0 26px}
.seat-table-card{min-width:0;border:1px solid #dfe6ee;background:#fff;border-radius:12px;padding:10px;box-shadow:0 3px 12px #19385808}
.seat-table-head{display:flex;justify-content:space-between;gap:5px;align-items:baseline;margin-bottom:9px}
.seat-table-head b{font-size:12px;color:var(--navy)}
.seat-table-head small{font-size:10px;color:var(--muted);text-align:right}
.seat-dots{display:flex;flex-wrap:wrap;gap:5px}
.seat-dot{display:inline-block;width:12px;height:12px;border-radius:50%;border:1px solid #9cb6a5;flex:0 0 12px}
.seat-dot.free{background:#dff3e6;border-color:#85c49a}
.seat-dot.taken{background:#d95f83;border-color:#b94368}
.floorplan-wrap{background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px;margin:12px 0}
.seating-select-card{max-width:100%}
.table-choice{padding:14px;background:#f5f8fc;border-radius:12px;border:1px solid var(--line)}
@media(max-width:760px){.seat-table-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.seat-table-card{padding:8px}.seat-table-head{display:block}.seat-table-head small{display:block;text-align:left;margin-top:3px}.seat-dot{width:11px;height:11px;flex-basis:11px}}
@media(max-width:390px){.seat-table-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v7: expediente del alumno y croquis interactivo */
.inline-form{display:inline;margin:0}
.link-button{border:0;background:none;color:#b4234b;text-decoration:underline;cursor:pointer;padding:0;font:inherit}
.action-links{white-space:normal;min-width:170px}
.danger-zone{border:1px solid #f1b8c5;background:rgba(255,247,249,.96)}
.danger-button{background:#a52d4c;color:#fff;border:0}
.interactive-map{display:grid;gap:14px}
.map-zone{background:#f8fafc;border:1px solid #e1e7ef;border-radius:14px;padding:12px}
.map-zone h3{font-size:14px;margin:0 0 10px;color:var(--navy)}
.map-markers{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.map-marker{width:54px;height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;text-decoration:none;border:2px solid #7da98a;color:#204d34;background:#e5f5e9;box-shadow:0 2px 5px #10203012;transition:transform .15s}
.map-marker:hover{transform:translateY(-2px)}
.map-marker.occupied{background:#ffe5ec;border-color:#d96b8a;color:#7d2340}
.map-marker.round{border-radius:50%}
.map-marker.square{border-radius:8px}
.map-marker.rect{width:66px;height:42px;border-radius:5px}
.map-marker b{font-size:14px;line-height:1}
.map-marker small{font-size:10px}
.map-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--muted)}
.map-legend span{display:flex;align-items:center;gap:6px}
.legend-swatch{display:inline-block;width:13px;height:13px;border-radius:4px;background:#e5f5e9;border:1px solid #7da98a}
.legend-swatch.occupied{background:#ffe5ec;border-color:#d96b8a}
.table-detail{scroll-margin-top:20px}
.table-detail summary{cursor:pointer;padding:10px;background:#f6f8fb;border-radius:8px;margin:5px 0}
@media(max-width:760px){.map-marker{width:46px;height:46px}.map-marker.rect{width:58px;height:38px}.map-markers{gap:6px}.action-links{min-width:130px}}

/* v8: imagen de generación optimizada y precargada para evitar flash */
.party-hero{
 background-color:#46364a!important;
 background-image:linear-gradient(100deg,rgba(32,24,49,.75),rgba(85,43,75,.25)),url('generacion-fondo.webp')!important;
 background-position:center!important;background-size:cover!important;background-repeat:no-repeat!important;
}
.payment-reservation-warning{background:#fff3d8;border:1px solid #eacb7d;border-left:5px solid #d39a26;border-radius:14px;padding:16px 18px;margin:16px 0;color:#604719;line-height:1.55}
.payment-reservation-warning strong{display:block;font-size:15px;letter-spacing:.2px}
.payment-reservation-warning p{margin:8px 0 0}
.paid-ticket-panel{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:center;margin-top:18px;padding:18px;border-radius:16px;background:#f2f8f4;border:1px solid #cfe5d5}
.paid-ticket-panel h3{margin:6px 0;color:#245b39}
.paid-ticket-panel form{min-width:0}
.receiver-list{background:#f4f7fb;border:1px solid #dbe5ef;border-radius:14px;padding:15px 18px;margin:16px 0}
.receiver-list ul{margin:8px 0 0;padding-left:22px;line-height:1.7}
#ticketField small{display:block;color:var(--muted);font-size:12px;line-height:1.45;margin-top:5px}
@media(max-width:760px){.paid-ticket-panel{grid-template-columns:1fr}.payment-reservation-warning{padding:14px}.party-hero{background-position:center 35%!important}}

/* v9: estado de lista de espera, decisión de apartado y cambio de mesa */
.seat-choice-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0}
.status-pill{display:inline-block;border-radius:999px;padding:6px 11px;font-size:12px;font-weight:800}
.status-pill.waiting{background:#fff1d5;color:#79551a}
.status-pill.auto{background:#e7efff;color:#244c91}
.status-pill.reserved{background:#e2f5e9;color:#21613a}
.choice-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
.choice-actions form{min-width:0}
.change-seat-form{border-top:1px solid #dfe7ee;margin-top:16px;padding-top:16px}
.change-seat-form h3{margin:0 0 8px}
.student-receiver-list{margin:18px 0}
.student-receiver-list h2{margin-top:0}
@media(max-width:650px){.choice-actions{grid-template-columns:1fr}}

/* GEN 88: identidad y actividades pendientes */
.pending-event{position:relative;overflow:hidden;border:1px solid #d8dfe8;background:linear-gradient(135deg,#f7f8fb,#edf1f6)}
.pending-overlay{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;min-height:145px;padding:24px;border:1px dashed #aab7c6;border-radius:16px;background:rgba(255,255,255,.68);backdrop-filter:blur(5px);color:#53657a}
.pending-overlay strong{font-size:clamp(17px,3vw,23px);letter-spacing:1.4px;color:#68788b}
.pending-overlay p{max-width:600px;margin:0;color:#718096;line-height:1.6}
.pending-lock{font-size:27px;filter:grayscale(1);opacity:.7}
.pending-stat{background:linear-gradient(135deg,#f4f6f9,#e9edf2);border-style:dashed}
.pending-stat strong{font-size:20px!important;letter-spacing:1px;color:#78879a!important}
.pending-payment-note{display:block;padding:13px 15px;border-radius:10px;background:#f0f2f5;border:1px dashed #aab5c2;color:#657386;line-height:1.5}
@media(max-width:760px){.pending-overlay{min-height:130px;padding:18px}}

.map-marker.held{background:#fff1c7;border-color:#c18a20;color:#684800}.legend-swatch.held{background:#f7d98b;border:1px solid #c18a20}
