:root{color-scheme:dark}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;font-family:"Montserrat",sans-serif;color:#eef7ff;background:radial-gradient(circle at 15% 0%,rgba(0,191,255,.12),transparent 34%),#06111c}
.reservations-page{padding:32px 20px 70px}
.reservations-shell{width:min(1180px,100%);margin:auto}
.reservations-back{display:inline-flex;margin-bottom:24px;color:#8ce8ff;text-decoration:none;font-weight:700}
.reservations-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:20px}
.eyebrow{display:block;color:#31d5ff;font-size:.76rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}
.reservations-heading h1{margin:7px 0 8px;font-size:clamp(2rem,4vw,3.2rem)}
.reservations-heading p{max-width:720px;margin:0;color:#9fb3c7;line-height:1.65}
.reservations-stats{display:flex;gap:10px;flex-shrink:0}
.reservations-stats div{min-width:104px;padding:14px 18px;border:1px solid rgba(78,208,255,.22);border-radius:16px;background:rgba(9,27,43,.82);text-align:center}
.reservations-stats strong{display:block;color:#51ddff;font-size:1.55rem}
.reservations-stats span{color:#9fb3c7;font-size:.78rem;font-weight:700}
.reservations-notice{display:flex;gap:9px;flex-wrap:wrap;margin:20px 0 28px;padding:14px 18px;border:1px solid rgba(255,196,76,.2);border-radius:14px;background:rgba(255,183,42,.07);color:#d9e5ef;font-size:.9rem}
.reservations-notice strong{color:#ffd470}
.reservations-loading,.reservations-empty{padding:52px 24px;border:1px solid rgba(92,210,255,.16);border-radius:20px;background:rgba(9,25,39,.76);text-align:center;color:#9fb3c7}
.reservations-empty>span{font-size:2.5rem}.reservations-empty h2{margin:12px 0 7px;color:#fff}.reservations-empty p{margin:0 0 22px}.reservations-empty a{display:inline-flex;padding:12px 18px;border-radius:12px;background:#18c7ec;color:#04131f;text-decoration:none;font-weight:900}
.reservations-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:18px}
.reservation-card{position:relative;overflow:hidden;display:grid;grid-template-columns:132px 1fr;min-height:240px;border:1px solid rgba(92,210,255,.2);border-radius:20px;background:linear-gradient(145deg,rgba(12,36,55,.96),rgba(7,22,35,.96));box-shadow:0 18px 46px rgba(0,0,0,.24)}
.reservation-card.is-expired{border-color:rgba(255,122,122,.2);filter:saturate(.72)}
.reservation-card__image{display:grid;place-items:center;min-height:100%;padding:16px;background:rgba(2,12,21,.45);text-decoration:none}
.reservation-card__image img{width:100%;max-height:190px;object-fit:contain;border-radius:10px}.reservation-card__image span{font-size:3rem}
.reservation-card__content{display:flex;flex-direction:column;padding:20px}
.reservation-card__top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.reservation-status{display:inline-flex;padding:6px 10px;border-radius:999px;background:rgba(30,209,132,.13);color:#64e7aa;font-size:.72rem;font-weight:900;text-transform:uppercase}
.is-expired .reservation-status{background:rgba(255,99,99,.12);color:#ff9f9f}
.reservation-language{color:#91a9bb;font-size:.75rem;font-weight:800}
.reservation-card h2{margin:12px 0 4px;font-size:1.08rem}.reservation-card__meta{margin:0 0 11px;color:#8fa6b9;font-size:.82rem;line-height:1.5}
.reservation-price{display:block;margin-bottom:12px;color:#ffdd6e;font-size:1.3rem;font-weight:900}
.reservation-countdown{margin-top:auto;padding:11px 12px;border:1px solid rgba(66,208,255,.18);border-radius:12px;background:rgba(3,17,28,.6)}
.reservation-countdown small{display:block;margin-bottom:3px;color:#88a0b4;font-weight:700}.reservation-countdown strong{color:#62e6ff;font-size:.96rem}.is-expired .reservation-countdown strong{color:#ff9b9b}
.reservation-dates{display:grid;gap:4px;margin:10px 0;color:#7f98aa;font-size:.72rem}
.reservation-actions{display:flex;gap:8px;margin-top:12px}.reservation-actions a,.reservation-actions button{flex:1;padding:10px 12px;border-radius:10px;font:inherit;font-size:.78rem;font-weight:900;text-align:center;text-decoration:none;cursor:pointer}
.reservation-actions a{border:1px solid rgba(64,211,255,.38);color:#75e7ff;background:transparent}.reservation-actions button{border:1px solid rgba(255,106,106,.32);color:#ffadad;background:rgba(255,74,74,.08)}.reservation-actions button:disabled{opacity:.55;cursor:wait}
.reservation-cancel-modal[hidden]{display:none}.reservation-cancel-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px}.reservation-cancel-backdrop{position:absolute;inset:0;background:rgba(0,6,12,.8);backdrop-filter:blur(6px)}
.reservation-cancel-dialog{position:relative;z-index:1;width:min(480px,100%);padding:28px;border:1px solid rgba(92,210,255,.25);border-radius:20px;background:#0b2032;box-shadow:0 28px 90px rgba(0,0,0,.55)}.reservation-cancel-dialog h2{margin:8px 0 10px}.reservation-cancel-dialog p{color:#a9bbca;line-height:1.55}.reservation-cancel-close{position:absolute;top:12px;right:14px;border:0;background:transparent;color:#fff;font-size:1.7rem;cursor:pointer}.reservation-cancel-error{min-height:20px;color:#ff9d9d!important;font-size:.84rem}
.reservation-cancel-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.reservation-cancel-actions button{padding:11px 14px;border-radius:11px;font:inherit;font-weight:900;cursor:pointer}.reservation-cancel-actions .secondary{border:1px solid #355267;background:transparent;color:#c7d5df}.reservation-cancel-actions .danger{border:1px solid #ff7373;background:#d94646;color:white}.reservation-cancel-actions button:disabled{opacity:.6;cursor:wait}
.reservations-toast{position:fixed;right:20px;bottom:20px;z-index:1100;max-width:360px;padding:14px 17px;border:1px solid rgba(72,223,255,.35);border-radius:13px;background:#0c293c;color:#eaffff;font-weight:800;box-shadow:0 15px 45px rgba(0,0,0,.4);opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s}.reservations-toast.is-visible{opacity:1;transform:none}.reservations-toast[data-type="error"]{border-color:rgba(255,101,101,.5);background:#3b171c}
@media(max-width:720px){.reservations-page{padding:22px 14px 50px}.reservations-heading{align-items:flex-start;flex-direction:column}.reservations-stats{width:100%}.reservations-stats div{flex:1;min-width:0}.reservations-grid{grid-template-columns:1fr}.reservation-card{grid-template-columns:105px 1fr}.reservation-card__content{padding:16px}.reservation-actions{flex-direction:column}.reservation-cancel-actions{flex-direction:column-reverse}.reservation-cancel-actions button{width:100%}}
@media(max-width:430px){.reservation-card{grid-template-columns:1fr}.reservation-card__image{min-height:180px}.reservation-card__image img{max-height:165px}}

/* Sprint 9.5.6 — avisos de vencimiento */
.reservations-stats .is-warning{border-color:rgba(255,190,64,.32);background:rgba(255,174,38,.08)}
.reservations-stats .is-warning strong{color:#ffd36a}
.reservations-deadline-alert{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 22px;padding:15px 18px;border:1px solid rgba(255,190,64,.34);border-radius:14px;background:linear-gradient(135deg,rgba(255,177,39,.14),rgba(255,116,38,.07));color:#eaf2f8}
.reservations-deadline-alert[hidden]{display:none}.reservations-deadline-alert strong{color:#ffd36a}.reservations-deadline-alert span{color:#becbd5;font-size:.86rem}
.reservation-card.is-ending-soon{border-color:rgba(255,190,64,.48);box-shadow:0 18px 46px rgba(0,0,0,.24),0 0 0 1px rgba(255,190,64,.08) inset}
.reservation-card.is-ending-soon .reservation-status{background:rgba(255,178,35,.16);color:#ffd36a}
.reservation-card.is-ending-soon .reservation-countdown{border-color:rgba(255,190,64,.28);background:rgba(255,174,38,.07)}
.reservation-card.is-ending-soon .reservation-countdown strong{color:#ffd36a}
@media(max-width:720px){.reservations-deadline-alert{align-items:flex-start;flex-direction:column}.reservations-stats{flex-wrap:wrap}.reservations-stats div{min-width:calc(33.333% - 7px)}}
