.voucher-ui { min-width: 0; overflow-wrap: anywhere; }
.voucher-ui .panel, .voucher-ui .voucher-card { padding: clamp(1rem, 2.5vw, 1.75rem); }
.voucher-ui .voucher-stack { display: grid; gap: 1.25rem; margin-block: 1.25rem; }
.voucher-ui .voucher-grid, .voucher-ui .voucher-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)); align-items: start; gap: 1.25rem; }
.voucher-ui .voucher-grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 20rem)); align-items: stretch; gap: 1rem; }
.voucher-ui .voucher-card { border: 1px solid var(--byp-line); border-radius: var(--radius-md); background: var(--byp-surface); min-width: 0; }
.voucher-ui .voucher-gift-card { display: flex; flex-direction: column; min-width: 0; overflow: hidden; border: 1px solid #0b4778; border-radius: 1rem; background: radial-gradient(circle at 95% 5%, rgb(255 255 255 / 15%) 0 4.5rem, transparent 4.6rem), linear-gradient(135deg, #073e6b, #09649b 58%, #0c78aa); box-shadow: 0 .35rem 1rem rgb(11 71 120 / 12%); }
.voucher-ui .voucher-gift-card-provider { background: radial-gradient(circle at 95% 5%, color-mix(in srgb, var(--voucher-provider-secondary) 45%, white) 0 4.5rem, transparent 4.6rem), linear-gradient(135deg, var(--voucher-provider-primary), color-mix(in srgb, var(--voucher-provider-primary) 78%, var(--voucher-provider-secondary))); }
.voucher-ui .voucher-gift-card-expired { filter: grayscale(1); }
.voucher-ui .voucher-gift-card-face { position: relative; display: grid; flex: 1 0 auto; align-content: space-between; gap: 1rem; width: 100%; min-height: 11rem; padding: 1rem; overflow: hidden; border: 0; border-top: 4px solid var(--byp-orange-600); border-radius: inherit; background: radial-gradient(circle at 95% 5%, rgb(255 255 255 / 15%) 0 4.5rem, transparent 4.6rem), linear-gradient(135deg, #073e6b, #09649b 58%, #0c78aa); color: #fff; text-align: left; cursor: pointer; }
.voucher-ui .voucher-gift-card-provider .voucher-gift-card-face { border-top-color: var(--voucher-provider-secondary); background: radial-gradient(circle at 95% 5%, color-mix(in srgb, var(--voucher-provider-secondary) 45%, white) 0 4.5rem, transparent 4.6rem), linear-gradient(135deg, var(--voucher-provider-primary), color-mix(in srgb, var(--voucher-provider-primary) 78%, var(--voucher-provider-secondary))); color: var(--voucher-provider-text); }
.voucher-ui .voucher-gift-card-face:focus-visible { outline: 3px solid #2e98ff; outline-offset: -4px; }
.voucher-ui .voucher-gift-logos { display: flex; align-items: center; justify-self: end; gap: .5rem; }
.voucher-ui .voucher-gift-brand, .voucher-ui .voucher-provider-brand { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; padding: .35rem; border-radius: 999px; background: #fff; box-shadow: 0 1px 5px rgb(0 0 0 / 18%); }
.voucher-ui .voucher-gift-brand img, .voucher-ui .voucher-provider-brand img { width: 100%; height: 100%; object-fit: contain; }
.voucher-ui .voucher-gift-title { display: grid; gap: .65rem; align-content: end; }
.voucher-ui .voucher-gift-title strong { font-size: clamp(1.2rem, 1.8vw, 1.55rem); line-height: 1.2; }
.voucher-ui .voucher-gift-title > span { width: fit-content; padding: .35rem .65rem; border: 1px solid rgb(255 255 255 / 38%); border-radius: .45rem; background: rgb(0 30 58 / 22%); font-weight: 700; }
.voucher-ui .voucher-card-toggle { display: flex; align-items: center; justify-content: space-between; gap: .5rem; font-size: .78rem; font-weight: 700; color: rgb(255 255 255 / 88%); }
.voucher-ui .voucher-card-toggle > span { font-size: 1.1rem; transition: transform .15s ease; }
.voucher-ui .voucher-gift-card-dialog { width: min(42rem, calc(100vw - 2rem)); max-height: calc(100dvh - 2rem); overflow-y: auto; padding: 0; border: 1px solid var(--byp-line); border-radius: 1rem; background: #fff; box-shadow: 0 24px 80px rgb(5 30 48 / 32%); }
.voucher-ui .voucher-gift-card-dialog::backdrop { background: rgb(5 30 48 / 55%); backdrop-filter: blur(2px); }
.voucher-ui .voucher-gift-card-details { padding: 1.1rem 1.25rem 1.25rem; background: #fff; }
.voucher-ui .voucher-gift-card-dialog .voucher-gift-card-details { transform: rotateY(180deg); }
.voucher-ui .voucher-gift-card-dialog:not(:has(.voucher-flip-front)) .voucher-gift-card-details { transform: none; }
.voucher-ui .voucher-flip-front { position: absolute; inset: 0; margin: 0; border: 0; pointer-events: none; }
.voucher-ui .voucher-flip-front .voucher-gift-card-face { height: 100%; }
.voucher-ui .voucher-gift-card-details > header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; margin-bottom: 1rem; }
.voucher-ui .voucher-gift-card-details > header > div { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem; }
.voucher-ui .voucher-gift-card-details h2 { margin: 0 0 1rem; font-size: 1.35rem; }
.voucher-ui .voucher-gift-card-details > p { line-height: 1.5; }
.voucher-ui .voucher-gift-card-details > small { color: var(--byp-muted); }
.voucher-ui .voucher-card header, .voucher-ui .voucher-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .85rem; margin-bottom: 1rem; }
.voucher-ui .voucher-actions { justify-content: flex-start; margin-block: 1rem 0; }
.voucher-ui .field { display: grid; align-content: start; gap: .5rem; min-width: 0; }
.voucher-ui input:not([type=checkbox]), .voucher-ui select, .voucher-ui textarea { width: 100%; min-width: 0; min-height: 44px; padding: .75rem; }
.voucher-ui textarea { resize: vertical; }
.voucher-ui input[type=checkbox] { width: 1.25rem; height: 1.25rem; flex-shrink: 0; }
.voucher-ui .voucher-check { display: flex; align-items: flex-start; gap: .75rem; padding: .85rem; border: 1px solid var(--byp-line); border-radius: .55rem; }
.voucher-ui .button { min-height: 44px; white-space: normal; height: auto; text-align: center; overflow-wrap: anywhere; }
.voucher-ui :is(button, a, input, select, textarea, summary):focus-visible { outline: 3px solid var(--byp-blue-700); outline-offset: 3px; }
.voucher-ui dl { display: grid; grid-template-columns: minmax(7rem, 1fr) minmax(0, 2fr); gap: .65rem 1rem; margin-block: 1rem; }
.voucher-ui dt { color: var(--byp-muted); }
.voucher-ui dd { margin: 0; min-width: 0; }
.voucher-ui .voucher-status { display: inline-block; padding: .35rem .7rem; border-radius: .5rem; background: var(--byp-blue-100); color: var(--byp-navy-950); font-weight: 650; }
.voucher-ui .voucher-status[data-state=Available], .voucher-ui .voucher-status[data-state=Confirmed] { background: var(--byp-success-soft); color: var(--byp-success); }
.voucher-ui .voucher-status[data-state=Expired], .voucher-ui .voucher-status[data-state=Retired], .voucher-ui .voucher-status[data-state=Cancelled], .voucher-ui .voucher-status[data-state=Declined] { background: var(--byp-danger-soft); color: var(--byp-danger); }
.voucher-ui .voucher-archive > summary { color: var(--byp-muted); cursor: pointer; }
.voucher-ui .voucher-archive > p { margin-block: .75rem 0; color: var(--byp-muted); font-size: .9rem; }
.voucher-ui .voucher-archive .voucher-status[data-state=Expired] { background: #edf1f3; color: #52636d; }
.voucher-ui .voucher-table-wrap { overflow-x: auto; max-width: 100%; border: 1px solid var(--byp-line); border-radius: .65rem; }
.voucher-ui .voucher-table { width: 100%; min-width: 760px; table-layout: fixed; border-collapse: collapse; }
.voucher-ui .voucher-table :is(th, td) { padding: 1rem; white-space: normal; overflow-wrap: anywhere; vertical-align: top; text-align: left; }
.voucher-ui .voucher-table th { background: var(--byp-blue-50); }
.voucher-ui .voucher-table td { border-top: 1px solid var(--byp-line); }
.voucher-ui .voucher-table small { display: block; margin-top: .4rem; }
.voucher-ui .voucher-notice { padding: 1rem 1.25rem; border-left: 4px solid var(--byp-blue-700); background: var(--byp-blue-50); border-radius: .5rem; }
.voucher-ui .voucher-confirm { padding: 1.25rem; border: 2px solid var(--byp-warning); border-radius: .75rem; background: var(--byp-warning-soft); }
.voucher-ui .voucher-fee-help summary { cursor: pointer; padding: .5rem 0; }
.voucher-ui .voucher-provider-notice { display: grid; gap: .35rem; margin: 1rem 0 .5rem; padding: 1rem 1.25rem; border-left: 4px solid var(--byp-orange-600); border-radius: .4rem; background: #fff8f3; color: var(--byp-ink); }
.voucher-ui .voucher-provider-notice > span { color: var(--byp-muted); }
.voucher-ui .voucher-provider-notice details { margin-top: .3rem; }
.voucher-ui .voucher-provider-notice summary { color: var(--byp-blue-700); font-weight: 700; cursor: pointer; }
.voucher-ui .voucher-provider-notice details p { margin: .65rem 0 0; color: var(--byp-ink); }
.voucher-ui .voucher-fee-help p { padding: .75rem; background: var(--byp-blue-50); }
.voucher-ui .modal-card { max-height: calc(100dvh - 2rem); overflow-y: auto; width: min(42rem, calc(100vw - 2rem)); padding: 1.5rem; }
.voucher-ui :is(.filter-bar, .button-row, .booking-request-row, .flight-card, .simulator-slot-card) { gap: 1rem; flex-wrap: wrap; }
.voucher-ui :is(.flight-details, .flight-action, .booking-request-row > div) { min-width: 0; }
@media (max-width: 640px) {
    .voucher-ui .page-heading, .voucher-ui .panel-heading { flex-direction: column; align-items: stretch; gap: 1rem; }
    .voucher-ui .filter-bar { display: grid; grid-template-columns: minmax(0, 1fr); }
    .voucher-ui .flight-card, .voucher-ui .simulator-slot-card, .voucher-ui .booking-request-row { display: flex; flex-direction: column; align-items: stretch; }
    .voucher-ui .flight-action { grid-template-columns: minmax(0, 1fr); justify-items: stretch; }
    .voucher-ui .voucher-actions > *, .voucher-ui .button-row > * { flex: 1 1 100%; }
    .voucher-ui dl { grid-template-columns: minmax(0, 1fr); gap: .25rem; }
    .voucher-ui dd { margin-bottom: .75rem; }
}

.bursary-card { padding:1rem; border:1px solid #b49a5d; border-radius:20px; color:#30291b; background:linear-gradient(135deg,#fffcf2,#e7dcc0 52%,#fdfaf1); box-shadow:0 10px 30px #76613a1f; min-width:0; }
.bursary-card header { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.bursary-card header img { width:40px; height:40px; object-fit:contain; }
.bursary-badge { border:1px solid #8c743f; border-radius:30px; padding:.35rem .7rem; font-size:.8rem; font-weight:700; }
.bursary-sponsor { margin:.6rem 0; font-size:.65rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
.bursary-card h3 { margin:.6rem 0; font-size:1rem; line-height:1.15; color:#30291b; }
.bursary-benefit { display:flex; align-items:center; gap:1rem; margin:.65rem 0; }
.bursary-benefit strong { font-size:3rem; line-height:1; font-weight:800; letter-spacing:-.06em; }
.bursary-benefit span { max-width:9rem; font-size:.95rem; }
.bursary-card dl { display:grid; grid-template-columns:auto minmax(0,1fr); gap:.5rem 1rem; border-top:1px solid #b49a5d70; padding-top:1rem; }
.bursary-card dd { margin:0; overflow-wrap:anywhere; }
.bursary-card dt { font-weight:700; }
.bursary-code { font-family:monospace; font-size:.8rem; }
.bursary-card footer { border-top:1px solid #b49a5d70; padding-top:1rem; font-size:.85rem; }
.student-issue-list { max-height:28rem; overflow:auto; }
.student-issue-row { display:flex; align-items:start; gap:.8rem; padding:.8rem; border-bottom:1px solid #d7e4eb; }
.student-issue-row input { margin-top:.3rem; }
.student-issue-row small { display:block; overflow-wrap:anywhere; }

.bursary-term { margin:.5rem 0; font-size:.8rem; line-height:1.5; }
.bursary-state { margin:.5rem 0; font-size:.8rem; font-weight:700; }
.bursary-card { position:relative; }
.bursary-award-toggle { padding:.6rem 0 0; width:100%; border:0; border-top:1px solid #b49a5d70; background:transparent; color:inherit; font:inherit; font-size:.85rem; font-weight:700; text-align:left; cursor:pointer; }
.bursary-award-toggle::after { content:""; position:absolute; inset:0; border-radius:20px; }
.bursary-card:has(.bursary-award-toggle:focus-visible) { outline:3px solid var(--byp-blue-700); outline-offset:3px; }
.voucher-ui .bursary-award-dialog .voucher-gift-card-details { background:linear-gradient(135deg,#fffcf2,#e7dcc0 52%,#fdfaf1); color:#30291b; }
.voucher-party-popper { position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:2; }
.voucher-party-popper-icon { position:absolute; left:1rem; bottom:1rem; font-size:2rem; }
.voucher-party-popper-piece { position:absolute; left:2.5rem; bottom:2.5rem; width:6px; height:10px; border-radius:1px; }

.voucher-ui .voucher-store-actions { justify-content: flex-end; }
.voucher-ui .voucher-student-name { color: #111827; font-size: 1.15rem; }
.voucher-ui .voucher-student-name strong { font-weight: 750; }
