:root {
    --blue: #1557d6;
    --blue-dark: #0b2d68;
    --blue-soft: #eaf1ff;
    --sky: #eef7ff;
    --yellow: #ffd95a;
    --ink: #172033;
    --muted: #6b7486;
    --line: #dfe5ef;
    --white: #ffffff;
    --green: #15803d;
    --green-soft: #eaf8ef;
    --red: #c92a2a;
    --red-soft: #fff0f0;
    --orange: #b45309;
    --shadow: 0 18px 50px rgba(18, 45, 86, .10);
    --radius: 22px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    font-family: "Nunito", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--ink);
    background: #f7f9fc;
    line-height: 1.55;
}
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
img { max-width: 100%; }
.container { width: min(1180px, calc(100% - 32px)); margin-inline: auto; }
.narrow { width: min(720px, calc(100% - 32px)); }
.grow { flex: 1; min-width: 0; }
.muted { color: var(--muted); font-weight: 500; }

.site-header, .admin-topbar {
    position: sticky;
    top: 0;
    z-index: 30;
    background: rgba(255,255,255,.94);
    border-bottom: 1px solid rgba(223,229,239,.9);
    backdrop-filter: blur(16px);
}
.header-inner { height: 74px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.brand { display: inline-flex; align-items: center; gap: 11px; }
.brand-mark {
    width: 42px; height: 42px; border-radius: 14px;
    display: grid; place-items: center;
    color: var(--white); font-size: 23px; font-weight: 900;
    background: linear-gradient(145deg, #2476ff, var(--blue-dark));
    box-shadow: 0 8px 18px rgba(21,87,214,.25);
}
.brand > span:last-child { display: grid; line-height: 1.05; }
.brand strong { font-size: 16px; letter-spacing: -.2px; }
.brand small { margin-top: 4px; font-size: 10px; font-weight: 900; letter-spacing: 1.6px; color: var(--blue); }
.brand--image { gap: 0; min-width: 0; }
.site-brand-logo {
    display: block;
    width: auto;
    height: var(--site-logo-height, 44px);
    max-width: min(360px, 58vw);
    object-fit: contain;
    object-position: left center;
}
.site-header nav { display: flex; gap: 24px; font-weight: 800; font-size: 14px; }
.site-header nav a:hover { color: var(--blue); }

.hero {
    overflow: hidden;
    color: var(--white);
    background:
        radial-gradient(circle at 80% 20%, rgba(255,217,90,.28), transparent 24%),
        radial-gradient(circle at 8% 90%, rgba(56,189,248,.28), transparent 28%),
        linear-gradient(135deg, var(--hero-start, #0c2c67) 0%, var(--hero-middle, #1557d6) 58%, var(--hero-end, #3280ef) 100%);
}
.hero-grid { min-height: 450px; display: grid; grid-template-columns: 1.35fr .65fr; align-items: center; gap: 70px; padding-block: 60px; }
.eyebrow { display: inline-block; color: var(--blue); font-size: 12px; font-weight: 900; letter-spacing: 1.7px; text-transform: uppercase; }
.hero .eyebrow { color: var(--hero-accent, var(--yellow)); }
.hero h1 { max-width: 710px; margin: 12px 0 16px; font-size: clamp(38px, 6vw, 66px); line-height: 1.03; letter-spacing: -2.5px; }
.hero p { max-width: 720px; margin: 0; font-size: 18px; color: rgba(255,255,255,.83); }
.hero-points { display: flex; flex-wrap: wrap; gap: 12px 24px; margin-top: 27px; font-weight: 800; font-size: 14px; }
.hero-ticket { transform: rotate(5deg); filter: drop-shadow(0 26px 30px rgba(0,0,0,.25)); }
.ticket-mini-top { width: 280px; margin: auto; padding: 16px 22px; border-radius: 24px 24px 0 0; color: var(--blue-dark); background: var(--hero-accent, var(--yellow)); font-weight: 900; letter-spacing: 2px; text-align: center; }
.ticket-mini-body { width: 320px; min-height: 235px; padding: 34px; border-radius: 22px; background: var(--white); color: var(--ink); display: grid; align-content: center; gap: 8px; text-align: center; }
.ticket-mini-body strong { font-size: 25px; }
.ticket-mini-body span { color: var(--muted); }
.ticket-mini-body small { font-weight: 900; letter-spacing: 2px; color: var(--blue); }
.ticket-dots { margin: 18px -34px; border-top: 3px dashed var(--line); }

.booking-section { padding: 58px 0 80px; }
.section-heading, .admin-page-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 26px; }
.section-heading h2, .admin-page-heading h1 { margin: 5px 0 0; font-size: clamp(28px,4vw,40px); line-height: 1.15; letter-spacing: -1px; }
.section-heading p, .admin-page-heading p { margin: 6px 0 0; color: var(--muted); }
.text-link { color: var(--blue); font-weight: 900; }
.text-link:hover { text-decoration: underline; }
.date-tabs { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 160px)); justify-content: start; gap: 10px; margin-bottom: 30px; }
.date-tab { min-width: 0; padding: 13px 8px; border: 1px solid var(--line); border-radius: 16px; background: var(--white); display: grid; justify-items: center; transition: .2s ease; }
.date-tab small { font-weight: 800; color: var(--muted); }
.date-tab strong { font-size: 23px; line-height: 1.1; }
.date-tab span { font-size: 12px; font-weight: 800; color: var(--muted); }
.date-tab:hover { transform: translateY(-2px); border-color: #acc7ff; }
.date-tab.active { background: var(--blue); color: var(--white); border-color: var(--blue); box-shadow: 0 12px 25px rgba(21,87,214,.22); }
.date-tab.active small, .date-tab.active span { color: rgba(255,255,255,.75); }

.class-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 22px; }
.class-card { position: relative; overflow: hidden; padding: 24px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--white); box-shadow: 0 8px 25px rgba(15,35,70,.05); }
.class-card-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.class-status, .status-pill { display: inline-flex; width: max-content; align-items: center; padding: 6px 10px; border-radius: 999px; font-size: 11px; font-weight: 900; text-transform: uppercase; letter-spacing: .6px; }
.class-status.available, .class-status.open, .status-pill.confirmed, .status-pill.attended { background: var(--green-soft); color: var(--green); }
.class-status.full, .class-status.closed, .class-status.cancelled, .status-pill.cancelled, .status-pill.absent { background: var(--red-soft); color: var(--red); }
.class-time { font-size: 18px; font-weight: 900; color: var(--blue-dark); }
.class-card-body { padding: 25px 0 19px; }
.class-category { color: var(--blue); font-size: 12px; font-weight: 900; letter-spacing: .8px; text-transform: uppercase; }
.class-card h3 { margin: 6px 0 18px; font-size: 30px; line-height: 1.15; }
.class-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; color: var(--muted); font-size: 13px; font-weight: 700; }
.seat-progress { height: 7px; margin-bottom: 20px; overflow: hidden; border-radius: 999px; background: #edf1f7; }
.seat-progress span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,var(--blue),#44a4ff); }

.btn { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; gap: 8px; padding: 10px 18px; border: 1px solid transparent; border-radius: 12px; font-weight: 900; transition: .18s ease; }
.btn:hover { transform: translateY(-1px); }
.btn-primary { color: var(--white); background: var(--blue); box-shadow: 0 8px 18px rgba(21,87,214,.18); }
.btn-primary:hover { background: #0f49ba; }
.btn-light { color: var(--ink); background: var(--white); border-color: var(--line); }
.btn-light:hover { border-color: #aab7c8; }
.btn-disabled { cursor: not-allowed; color: #8b94a5; background: #edf1f6; }
.btn-danger-outline { color: var(--red); background: transparent; border-color: #efb4b4; }
.btn-whatsapp { color: var(--white); background: #1fa855; }
.btn-block { width: 100%; }

.booking-form { margin-top: 18px; padding-top: 22px; border-top: 1px solid var(--line); }
.booking-form h4 { margin: 0 0 14px; font-size: 20px; }
.form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
.form-grid.three { grid-template-columns: repeat(3,minmax(0,1fr)); }
label { display: grid; gap: 7px; margin-bottom: 14px; font-size: 13px; font-weight: 900; }
input, select, textarea { width: 100%; border: 1px solid #cfd7e4; border-radius: 11px; background: var(--white); color: var(--ink); padding: 11px 13px; outline: none; transition: border-color .18s, box-shadow .18s; }
textarea { resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(21,87,214,.12); }
.check-label { grid-template-columns: auto 1fr; align-items: start; font-weight: 700; color: var(--muted); }
.check-label input { width: 18px; height: 18px; margin-top: 2px; }
.form-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }
.form-actions.end { padding-top: 14px; border-top: 1px solid var(--line); }
.stack-form { display: grid; gap: 4px; margin-top: 24px; }

.empty-state { padding: 65px 24px; border: 1px dashed #bdc9d8; border-radius: var(--radius); background: var(--white); text-align: center; }
.empty-state h3, .empty-state h2 { margin: 8px 0; }
.empty-state p { color: var(--muted); }
.empty-icon { font-size: 44px; }
.alert { margin: 18px 0; padding: 13px 16px; border-radius: 12px; font-weight: 800; }
.alert.success { color: var(--green); background: var(--green-soft); border: 1px solid #b9e5c8; }
.alert.error { color: var(--red); background: var(--red-soft); border: 1px solid #f0c1c1; }
.site-footer { color: #dbe7ff; background: var(--blue-dark); }
.footer-inner { min-height: 76px; display: flex; justify-content: space-between; align-items: center; font-size: 13px; font-weight: 800; }

/* Ticket */
.ticket-page { min-height: calc(100vh - 150px); padding: 50px 0 70px; background: radial-gradient(circle at 20% 10%,#dfeaff,transparent 30%),#f7f9fc; }
.success-banner { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; padding: 14px 18px; border: 1px solid #b9e5c8; border-radius: 15px; background: var(--green-soft); color: var(--green); }
.success-banner > span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: var(--white); background: var(--green); font-weight: 900; }
.success-banner p { margin: 1px 0 0; }
.ticket-card { overflow: hidden; border-radius: 28px; color: var(--ink); background: var(--white); box-shadow: var(--shadow); }
.ticket-header { display: flex; justify-content: space-between; align-items: center; padding: 24px 28px; border-bottom: 1px solid var(--line); }
.brand-ticket .brand-mark { width: 38px; height: 38px; border-radius: 12px; }
.ticket-main { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 24px; padding: 38px 38px 28px; }
.ticket-main small, .ticket-details small { display: block; margin-bottom: 5px; color: var(--muted); font-size: 10px; font-weight: 900; letter-spacing: 1.5px; }
.ticket-main h1 { margin: 0; color: var(--blue-dark); font-size: clamp(30px,6vw,48px); line-height: 1.05; }
.ticket-student { margin: 10px 0 0; font-size: 22px; font-weight: 900; }
.ticket-qr { width: 128px; min-height: 128px; padding: 8px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); }
.ticket-qr img, .ticket-qr canvas { width: 100% !important; height: auto !important; }
.ticket-divider { position: relative; height: 26px; overflow: hidden; }
.ticket-divider::before, .ticket-divider::after { content: ""; position: absolute; top: 2px; width: 44px; height: 44px; border-radius: 50%; background: #f7f9fc; }
.ticket-divider::before { left: -22px; }
.ticket-divider::after { right: -22px; }
.ticket-divider span { position: absolute; left: 30px; right: 30px; top: 13px; border-top: 2px dashed var(--line); }
.ticket-details { display: grid; grid-template-columns: repeat(3,1fr); gap: 25px; padding: 25px 38px 34px; }
.ticket-details strong { display: block; }
.ticket-footer-note { padding: 16px 28px; color: var(--white); background: linear-gradient(90deg,var(--blue-dark),var(--blue)); text-align: center; font-weight: 900; }
.ticket-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px; }
.cancel-box { margin-top: 25px; padding: 18px; border: 1px solid var(--line); border-radius: 15px; background: var(--white); }
.cancel-box summary { cursor: pointer; font-weight: 900; }
.cancel-box p { color: var(--muted); }
.lookup-page, .login-page { padding-block: 70px; }
.panel, .login-card { padding: 28px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--white); box-shadow: 0 10px 30px rgba(15,35,70,.05); }
.panel h1, .login-card h1 { margin: 7px 0; }
.panel > p, .login-card > p { color: var(--muted); }

/* Admin */
.admin-body { background: #f4f7fb; }
.admin-topbar { background: var(--blue-dark); border-bottom: 0; }
.admin-topbar .brand strong { color: var(--white); }
.admin-topbar .brand small { color: #85b5ff; }
.admin-account { display: flex; align-items: center; gap: 14px; color: var(--white); font-size: 13px; font-weight: 800; }
.admin-account a { padding: 7px 12px; border: 1px solid rgba(255,255,255,.25); border-radius: 9px; }
.admin-shell { display: grid; grid-template-columns: 220px 1fr; gap: 28px; min-height: calc(100vh - 74px); padding-block: 28px 60px; }
.admin-sidebar { align-self: start; position: sticky; top: 102px; display: grid; gap: 5px; padding: 14px; border: 1px solid var(--line); border-radius: 18px; background: var(--white); }
.admin-sidebar a { padding: 11px 12px; border-radius: 10px; color: #485269; font-size: 13px; font-weight: 900; }
.admin-sidebar a:hover { color: var(--blue); background: var(--blue-soft); }
.admin-content { min-width: 0; }
.admin-page-heading { align-items: center; }
.stats-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; margin-bottom: 22px; }
.stat-card { padding: 20px; border: 1px solid var(--line); border-radius: 17px; background: var(--white); }
.stat-card small { display: block; color: var(--muted); font-weight: 800; }
.stat-card strong { display: block; margin: 6px 0 0; color: var(--blue-dark); font-size: 34px; line-height: 1; }
.stat-card span { color: var(--muted); font-size: 12px; }
.dashboard-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 18px; }
.admin-panel { overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: var(--white); }
.panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 20px; border-bottom: 1px solid var(--line); }
.panel-heading h2 { margin: 0; font-size: 19px; }
.panel-heading p { margin: 2px 0 0; color: var(--muted); font-size: 12px; }
.panel-heading a { color: var(--blue); font-size: 12px; font-weight: 900; }
.admin-class-list, .recent-list { display: grid; }
.admin-class-item, .recent-list > a { display: flex; align-items: center; gap: 13px; padding: 14px 18px; border-bottom: 1px solid #edf0f5; }
.admin-class-item:last-child, .recent-list > a:last-child { border-bottom: 0; }
.admin-class-item:hover, .recent-list > a:hover { background: #f9fbff; }
.time-box { width: 58px; font-weight: 900; color: var(--blue-dark); }
.time-box small { display: block; color: var(--muted); }
.admin-class-item .grow, .recent-list .grow { display: grid; }
.admin-class-item .grow span, .recent-list small { color: var(--muted); font-size: 12px; }
.capacity-box { text-align: right; }
.capacity-box strong, .capacity-box span { display: block; }
.capacity-box span { color: var(--muted); font-size: 11px; }
.avatar { flex: 0 0 auto; width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; color: var(--blue); background: var(--blue-soft); font-weight: 900; }
.mini-empty { padding: 35px 20px; color: var(--muted); text-align: center; }
.filter-tabs { display: inline-flex; gap: 5px; padding: 5px; margin-bottom: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); }
.filter-tabs a { padding: 7px 13px; border-radius: 8px; color: var(--muted); font-size: 12px; font-weight: 900; }
.filter-tabs a.active { color: var(--white); background: var(--blue); }
.filter-bar { display: grid; grid-template-columns: minmax(220px,1fr) 170px 170px auto auto; gap: 10px; align-items: center; margin-bottom: 16px; }
.filter-bar input, .filter-bar select { margin: 0; }
.table-card { overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: var(--white); }
.table-responsive { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th { padding: 13px 15px; color: var(--muted); background: #f7f9fc; text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .6px; }
td { padding: 14px 15px; border-top: 1px solid #edf0f5; vertical-align: middle; }
td > a { color: var(--blue); font-weight: 900; }
.table-sub { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; }
.table-empty { padding: 38px; color: var(--muted); text-align: center; }
.actions-cell { white-space: nowrap; }
.actions-cell a, .actions-cell button { margin-right: 8px; border: 0; padding: 0; color: var(--blue); background: none; font-size: 12px; font-weight: 900; }
.actions-cell form { display: inline; }
.status-form select { min-width: 125px; padding: 7px 9px; font-size: 12px; }
.admin-form { max-width: 860px; }

@media (max-width: 980px) {
    .hero-grid { grid-template-columns: 1fr; min-height: auto; gap: 35px; }
    .hero-ticket { display: none; }
    .admin-shell { grid-template-columns: 1fr; }
    .admin-sidebar { position: static; grid-template-columns: repeat(6,auto); overflow-x: auto; }
    .stats-grid { grid-template-columns: repeat(2,1fr); }
    .dashboard-grid { grid-template-columns: 1fr; }
    .filter-bar { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
    .container, .narrow { width: min(100% - 22px, 1180px); }
    .site-header nav { display: none; }
    .hero-grid { padding-block: 44px; }
    .hero h1 { letter-spacing: -1.5px; }
    .hero p { font-size: 16px; }
    .date-tabs { display: flex; overflow-x: auto; padding-bottom: 7px; scroll-snap-type: x proximity; }
    .date-tab { flex: 0 0 88px; scroll-snap-align: start; }
    .class-grid { grid-template-columns: 1fr; }
    .section-heading, .admin-page-heading { align-items: flex-start; flex-direction: column; }
    .form-grid, .form-grid.three { grid-template-columns: 1fr; }
    .ticket-main { grid-template-columns: 1fr; padding: 28px 24px; }
    .ticket-qr { width: 110px; min-height: 110px; }
    .ticket-details { grid-template-columns: repeat(2,1fr); padding: 20px 24px 28px; }
    .ticket-actions { grid-template-columns: 1fr; }
    .admin-shell { width: 100%; padding-top: 12px; }
    .admin-sidebar { border-radius: 0; border-left: 0; border-right: 0; padding-inline: 12px; }
    .admin-content { padding-inline: 11px; }
    .stats-grid { grid-template-columns: 1fr 1fr; }
    .filter-bar { grid-template-columns: 1fr; }
    .admin-account span { display: none; }
}
@media (max-width: 430px) {
    .hero h1 { font-size: 38px; }
    .hero-points { display: grid; gap: 8px; }
    .stats-grid { grid-template-columns: 1fr; }
    .ticket-details { grid-template-columns: 1fr; }
    .footer-inner { align-items: flex-start; flex-direction: column; justify-content: center; gap: 2px; }
}

@media print {
    .site-header, .site-footer, .ticket-actions, .cancel-box, .success-banner { display: none !important; }
    body, .ticket-page { background: white; }
    .ticket-page { padding: 0; }
    .ticket-card { box-shadow: none; border: 1px solid #ddd; }
}

/* Admin account security v1.3 */
.alert.warning { color: var(--orange); background: #fff8e8; border: 1px solid #f1d49b; }
.btn-secondary { color: var(--blue-dark); background: var(--blue-soft); border-color: #bed1fa; }
.btn-secondary:hover { background: #dce8ff; }
.admin-profile-link { border-color: transparent !important; }
.admin-profile-link:hover { background: rgba(255,255,255,.09); }
.login-links { margin-top: 18px; text-align: center; }
.login-links a { color: var(--blue); font-size: 13px; font-weight: 900; }
.login-links a:hover { text-decoration: underline; }
.form-help { margin-top: -2px; color: var(--muted); font-size: 11px; font-weight: 700; line-height: 1.4; }
.profile-summary { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 14px; margin-bottom: 18px; }
.profile-summary > div { min-width: 0; padding: 18px; border: 1px solid var(--line); border-radius: 16px; background: var(--white); }
.profile-summary small { display: block; margin-bottom: 5px; color: var(--muted); font-size: 11px; font-weight: 800; }
.profile-summary strong { display: block; overflow-wrap: anywhere; color: var(--blue-dark); font-size: 15px; }
.recovery-status.enabled { color: var(--green); }
.recovery-status.disabled { color: var(--red); }
.security-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; align-items: start; }
.security-card { padding: 22px; border: 1px solid var(--line); border-radius: 18px; background: var(--white); box-shadow: 0 8px 24px rgba(15,35,70,.04); }
.security-card-heading { display: flex; align-items: flex-start; gap: 13px; padding-bottom: 16px; border-bottom: 1px solid #edf0f5; }
.security-card-heading h2 { margin: 0; font-size: 20px; }
.security-card-heading p { margin: 3px 0 0; color: var(--muted); font-size: 12px; }
.security-icon { flex: 0 0 auto; width: 38px; height: 38px; display: grid; place-items: center; border-radius: 12px; color: var(--blue); background: var(--blue-soft); font-size: 12px; font-weight: 900; }
.security-card .stack-form { margin-top: 18px; }
.security-note { margin-top: 16px; padding: 12px 14px; border-radius: 11px; color: #75510a; background: #fff8e8; font-size: 12px; font-weight: 800; }
.danger-zone { border-color: #e4d8d8; }
.danger-zone .security-icon { color: var(--red); background: var(--red-soft); }
.recovery-card { max-width: 720px; margin-inline: auto; }
.recovered-account { margin: 18px 0; padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: #f7f9fc; text-align: center; }
.recovered-account small { display: block; color: var(--muted); font-weight: 800; }
.recovered-account strong { display: block; margin-top: 5px; color: var(--blue-dark); font-size: 20px; overflow-wrap: anywhere; }

@media (max-width: 980px) {
    .profile-summary { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .security-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
    .profile-summary { grid-template-columns: 1fr; }
    .security-card { padding: 18px; border-radius: 15px; }
}

/* Website appearance customization v1.4 */
.hero-height-compact .hero-grid { min-height: 340px; padding-block: 42px; }
.hero-height-normal .hero-grid { min-height: 450px; }
.hero-height-tall .hero-grid { min-height: 560px; padding-block: 78px; }
.hero-grid-single { grid-template-columns: minmax(0, 820px); justify-content: center; text-align: center; }
.hero-grid-single .hero-copy { margin-inline: auto; }
.hero-grid-single .hero-copy h1,
.hero-grid-single .hero-copy p { margin-inline: auto; }
.hero-grid-single .hero-points { justify-content: center; }
.hero-custom-visual {
    width: min(100%, 430px);
    min-height: 320px;
    justify-self: center;
    display: grid;
    place-items: center;
    overflow: hidden;
    border-radius: 28px;
    filter: drop-shadow(0 26px 30px rgba(0,0,0,.22));
}
.hero-custom-visual img { width: 100%; height: 100%; max-height: 420px; display: block; }
.hero-image-fit-contain img { object-fit: contain; }
.hero-image-fit-cover { background: rgba(255,255,255,.12); }
.hero-image-fit-cover img { object-fit: cover; }

.appearance-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 22px; align-items: start; }
.appearance-form { display: grid; gap: 18px; }
.appearance-form .security-card { margin: 0; }
.appearance-actions { display: flex; flex-wrap: wrap; gap: 10px; position: sticky; bottom: 12px; z-index: 8; padding: 14px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.94); box-shadow: 0 12px 30px rgba(15,35,70,.10); backdrop-filter: blur(12px); }
.appearance-preview-panel { position: sticky; top: 102px; padding: 16px; border: 1px solid var(--line); border-radius: 18px; background: var(--white); }
.appearance-preview-label { margin-bottom: 10px; color: var(--muted); font-size: 11px; font-weight: 900; letter-spacing: 1px; text-transform: uppercase; }
.appearance-preview { padding: 24px; border-radius: 16px; color: white; background: linear-gradient(135deg,var(--hero-start),var(--hero-middle) 58%,var(--hero-end)); }
.appearance-preview > span { color: var(--hero-accent); font-size: 10px; font-weight: 900; letter-spacing: 1.4px; text-transform: uppercase; }
.appearance-preview h2 { margin: 8px 0 9px; font-size: 28px; line-height: 1.05; }
.appearance-preview p { margin: 0; color: rgba(255,255,255,.82); font-size: 12px; }
.appearance-preview > div { display: grid; gap: 4px; margin-top: 14px; }
.appearance-preview small { font-weight: 800; }
.color-field-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.color-field { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 7px 10px; border: 1px solid #cfd7e4; border-radius: 11px; background: var(--white); }
.color-field input[type="color"] { width: 44px; height: 32px; flex: 0 0 auto; padding: 2px; border: 0; border-radius: 7px; box-shadow: none; }
.color-field code { color: var(--muted); font-size: 12px; }
.current-hero-image { display: grid; gap: 12px; padding: 13px; border: 1px solid var(--line); border-radius: 14px; background: #f7f9fc; }
.current-hero-image img { width: 100%; max-height: 260px; object-fit: contain; border-radius: 10px; background: white; }

@media (max-width: 1100px) {
    .appearance-layout { grid-template-columns: 1fr; }
    .appearance-preview-panel { position: static; }
}
@media (max-width: 980px) {
    .hero-custom-visual { width: min(100%, 420px); min-height: 240px; }
    .hero-custom-visual img { max-height: 360px; }
}
@media (max-width: 600px) {
    .color-field-grid { grid-template-columns: 1fr; }
    .appearance-actions { bottom: 5px; }
}
@media (max-width: 980px) {
    .hero-height-compact .hero-grid,
    .hero-height-normal .hero-grid,
    .hero-height-tall .hero-grid { min-height: auto; padding-block: 46px; }
}

/* Editable public footer and admin settings v1.5 */
.site-footer-complete {
    color: var(--footer-text, #dbe7ff);
    background:
        radial-gradient(circle at 82% 10%, color-mix(in srgb, var(--footer-accent, #85b5ff) 18%, transparent), transparent 28%),
        var(--footer-bg, #0b2d68);
}
.footer-main-grid {
    display: grid;
    grid-template-columns: minmax(250px,1.3fr) repeat(3,minmax(170px,1fr));
    gap: 42px;
    padding-block: 54px 40px;
}
.footer-brand-column { max-width: 350px; }
.footer-brand { display: inline-flex; align-items: center; gap: 12px; }
.footer-brand-mark {
    width: 44px; height: 44px; display: grid; place-items: center;
    border-radius: 14px; color: var(--footer-bg, #0b2d68);
    background: var(--footer-accent, #85b5ff); font-size: 23px; font-weight: 900;
}
.footer-brand > span:last-child { display: grid; line-height: 1.05; }
.footer-brand strong { color: #fff; font-size: 18px; }
.footer-brand small { margin-top: 5px; color: var(--footer-accent, #85b5ff); font-size: 10px; font-weight: 900; letter-spacing: 1.6px; }
.footer-brand-column > p { margin: 20px 0 0; color: color-mix(in srgb, var(--footer-text, #dbe7ff) 80%, transparent); font-size: 14px; line-height: 1.75; }
.footer-column h3 { margin: 3px 0 18px; color: #fff; font-size: 15px; }
.footer-link-list { display: grid; gap: 11px; }
.footer-link-list a, .footer-info-line { display: flex; align-items: flex-start; gap: 9px; color: var(--footer-text, #dbe7ff); font-size: 13px; font-weight: 700; overflow-wrap: anywhere; }
.footer-link-list a:hover { color: var(--footer-accent, #85b5ff); }
.footer-link-list a > span, .footer-info-line > span { flex: 0 0 auto; min-width: 20px; color: var(--footer-accent, #85b5ff); font-size: 11px; font-weight: 900; }
.footer-address { margin: 0 0 15px; color: var(--footer-text, #dbe7ff); font-size: 13px; line-height: 1.7; }
.footer-map-button {
    display: inline-flex; align-items: center; gap: 7px; padding: 9px 12px;
    border: 1px solid color-mix(in srgb, var(--footer-accent, #85b5ff) 45%, transparent);
    border-radius: 10px; color: var(--footer-accent, #85b5ff); font-size: 12px; font-weight: 900;
}
.footer-map-button:hover { background: color-mix(in srgb, var(--footer-accent, #85b5ff) 12%, transparent); }
.footer-socials { display: grid; gap: 9px; }
.footer-socials a { display: inline-flex; width: max-content; align-items: center; gap: 9px; color: var(--footer-text, #dbe7ff); font-size: 13px; font-weight: 800; }
.footer-socials a:hover { color: var(--footer-accent, #85b5ff); }
.footer-socials a span {
    width: 30px; height: 30px; display: grid; place-items: center;
    border: 1px solid color-mix(in srgb, var(--footer-accent, #85b5ff) 38%, transparent);
    border-radius: 9px; color: var(--footer-accent, #85b5ff); font-size: 10px; font-weight: 900;
}
.footer-bottom-row {
    min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 20px;
    border-top: 1px solid color-mix(in srgb, var(--footer-text, #dbe7ff) 18%, transparent);
    color: color-mix(in srgb, var(--footer-text, #dbe7ff) 82%, transparent); font-size: 12px; font-weight: 800;
}
.footer-settings-layout { display: grid; grid-template-columns: minmax(0,1fr) 360px; gap: 22px; align-items: start; }
.footer-settings-form { display: grid; gap: 18px; }
.footer-settings-form .security-card { margin: 0; }
.footer-enable-field { margin: 0 0 12px; padding: 13px; border: 1px solid #bed1fa; border-radius: 12px; background: var(--blue-soft); color: var(--blue-dark); }
.footer-preview-panel { position: sticky; top: 102px; padding: 16px; border: 1px solid var(--line); border-radius: 18px; background: var(--white); }
.footer-preview { overflow: hidden; padding: 22px; border-radius: 16px; color: var(--footer-text); background: var(--footer-bg); }
.footer-preview > strong { color: #fff; font-size: 18px; }
.footer-preview > p { margin: 9px 0 17px; color: color-mix(in srgb, var(--footer-text) 82%, transparent); font-size: 11px; line-height: 1.5; }
.footer-preview-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 7px; }
.footer-preview-grid span { min-width: 0; padding: 7px; border-radius: 7px; color: var(--footer-accent); background: color-mix(in srgb, var(--footer-accent) 10%, transparent); font-size: 9px; font-weight: 900; text-align: center; }
.footer-preview-bottom { display: flex; justify-content: space-between; gap: 12px; margin-top: 18px; padding-top: 12px; border-top: 1px solid color-mix(in srgb, var(--footer-text) 20%, transparent); }
.footer-preview-bottom small { color: var(--footer-text); font-size: 9px; font-weight: 800; }

@media (max-width: 1100px) {
    .footer-main-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .footer-settings-layout { grid-template-columns: 1fr; }
    .footer-preview-panel { position: static; }
}
@media (max-width: 720px) {
    .footer-main-grid { grid-template-columns: 1fr; gap: 30px; padding-block: 42px 34px; }
    .footer-brand-column { max-width: none; }
    .footer-bottom-row { align-items: flex-start; flex-direction: column; justify-content: center; gap: 3px; padding-block: 16px; }
}
@media (max-width: 430px) {
    .footer-preview-grid { grid-template-columns: 1fr; }
}

/* Website logo uploader v1.8 */
.logo-settings-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(230px,.7fr); gap: 24px; align-items: start; }
.logo-upload-preview {
    min-height: 132px;
    padding: 22px;
    border: 1px dashed #b9c7dc;
    border-radius: 18px;
    background: linear-gradient(135deg,#f9fbff,#eef4ff);
    display: grid;
    place-items: center;
    gap: 14px;
    text-align: center;
}
.logo-upload-preview img { max-width: 100%; max-height: 68px; width: auto; object-fit: contain; }
.logo-upload-preview .empty-logo-preview { color: var(--muted); font-weight: 800; font-size: 13px; }
.logo-size-row { display: grid; grid-template-columns: minmax(0,1fr) 110px; gap: 14px; align-items: end; }
.logo-preview-strip {
    min-height: 78px;
    padding: 14px 18px;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fff;
    display: flex;
    align-items: center;
}
.logo-preview-strip img { display: block; width: auto; max-width: 100%; object-fit: contain; }
@media (max-width: 700px) {
    .site-brand-logo { max-width: 62vw; }
    .logo-settings-grid { grid-template-columns: 1fr; }
    .logo-size-row { grid-template-columns: 1fr; }
}

/* Three-header horizontal carousel v1.9 */
.hero-slider {
    position: relative;
    overflow: hidden;
    background: #0c2c67;
    touch-action: pan-y;
}
.hero-slider-track {
    display: flex;
    width: 100%;
    transition: transform .68s cubic-bezier(.22,.75,.22,1);
    will-change: transform;
}
.hero-slide {
    flex: 0 0 100%;
    min-width: 100%;
}
.hero-slider.is-dragging,
.hero-slider.is-dragging * { cursor: grabbing !important; }
.hero-slider-arrow {
    position: absolute;
    z-index: 12;
    top: 50%;
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    padding: 0;
    border: 1px solid rgba(255,255,255,.28);
    border-radius: 50%;
    color: #fff;
    background: rgba(8,31,78,.32);
    box-shadow: 0 12px 30px rgba(2,19,58,.22);
    backdrop-filter: blur(10px);
    transform: translateY(-50%);
    cursor: pointer;
    transition: background .2s ease, transform .2s ease, border-color .2s ease;
}
.hero-slider-arrow:hover {
    border-color: rgba(255,255,255,.55);
    background: rgba(8,31,78,.62);
}
.hero-slider-arrow:active { transform: translateY(-50%) scale(.94); }
.hero-slider-arrow svg {
    width: 23px;
    height: 23px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.hero-slider-arrow-prev { left: max(18px, calc((100vw - 1260px) / 2 - 58px)); }
.hero-slider-arrow-next { right: max(18px, calc((100vw - 1260px) / 2 - 58px)); }
.hero-slider-dots {
    position: absolute;
    z-index: 12;
    left: 50%;
    bottom: 20px;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 11px;
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 999px;
    background: rgba(7,27,68,.26);
    backdrop-filter: blur(10px);
    transform: translateX(-50%);
}
.hero-slider-dots button {
    width: 9px;
    height: 9px;
    padding: 0;
    border: 0;
    border-radius: 99px;
    background: rgba(255,255,255,.45);
    cursor: pointer;
    transition: width .22s ease, background .22s ease, transform .22s ease;
}
.hero-slider-dots button:hover { transform: scale(1.12); }
.hero-slider-dots button.active {
    width: 27px;
    background: #fff;
}
.hero-slider .hero-grid { padding-bottom: 78px; }
.hero-slider .hero-grid-single { padding-inline: 70px; }

/* Header slider admin editor */
.slider-appearance-layout { align-items: start; }
.slider-options-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}
.slider-options-grid .check-label {
    min-height: 58px;
    align-items: center;
    padding: 13px 14px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #f8faff;
}
.slider-slide-editor {
    padding: 0;
    overflow: hidden;
}
.slider-slide-editor > summary { list-style: none; }
.slider-slide-editor > summary::-webkit-details-marker { display: none; }
.slider-slide-summary {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 14px;
    padding: 20px 22px;
    cursor: pointer;
    user-select: none;
}
.slider-slide-summary > span:nth-child(2) { display: grid; gap: 3px; }
.slider-slide-summary strong { color: var(--ink); font-size: 18px; }
.slider-slide-summary small { color: var(--muted); font-size: 12px; font-weight: 800; }
.slider-summary-arrow {
    color: var(--muted);
    font-size: 22px;
    transition: transform .2s ease;
}
.slider-slide-editor[open] .slider-summary-arrow { transform: rotate(180deg); }
.slider-slide-editor-body {
    display: grid;
    gap: 18px;
    padding: 0 22px 24px;
    border-top: 1px solid var(--line);
}
.slider-enable-check { margin-top: 20px; }
.slider-primary-note {
    margin-top: 20px;
    padding: 12px 14px;
    border-radius: 12px;
    color: #174478;
    background: #eef6ff;
    font-size: 13px;
    font-weight: 800;
}
.slider-editor-divider { height: 1px; background: var(--line); }
.slider-editor-subtitle { margin: 0; font-size: 16px; }
.slider-preview-panel { display: grid; gap: 14px; }
.slider-mini-previews { display: grid; gap: 12px; }
.slider-mini-preview {
    display: grid;
    gap: 7px;
    min-height: 145px;
    padding: 18px;
    border-radius: 16px;
    color: #fff;
    background: linear-gradient(135deg,var(--hero-start),var(--hero-middle) 58%,var(--hero-end));
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.13);
}
.slider-mini-preview.disabled { filter: grayscale(.7); opacity: .55; }
.slider-mini-preview-top { display: flex; justify-content: space-between; gap: 10px; }
.slider-mini-preview-top span,
.slider-mini-preview > small {
    color: var(--hero-accent);
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 1.4px;
    text-transform: uppercase;
}
.slider-mini-preview-top i {
    padding: 3px 7px;
    border-radius: 999px;
    color: #fff;
    background: rgba(255,255,255,.16);
    font-size: 9px;
    font-style: normal;
    font-weight: 900;
}
.slider-mini-preview strong { font-size: 20px; line-height: 1.08; }
.slider-feature-note {
    display: grid;
    gap: 8px;
    padding: 16px;
    border-radius: 15px;
    color: #24415f;
    background: #f1f6fc;
    font-size: 13px;
}
.slider-feature-note strong { margin-bottom: 2px; color: var(--ink); }

@media (max-width: 1100px) {
    .hero-slider-arrow-prev { left: 14px; }
    .hero-slider-arrow-next { right: 14px; }
}
@media (max-width: 760px) {
    .hero-slider-arrow { width: 39px; height: 39px; top: auto; bottom: 16px; transform: none; }
    .hero-slider-arrow:active { transform: scale(.94); }
    .hero-slider-arrow-prev { left: 16px; }
    .hero-slider-arrow-next { right: 16px; }
    .hero-slider-dots { bottom: 18px; }
    .hero-slider .hero-grid { padding-bottom: 76px; }
    .slider-options-grid { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
    .hero-slider-arrow { display: none; }
    .hero-slider-dots { bottom: 13px; }
    .hero-slider .hero-grid { padding-bottom: 58px; }
    .slider-slide-summary { padding: 17px; }
    .slider-slide-editor-body { padding-inline: 17px; }
}
@media (prefers-reduced-motion: reduce) {
    .hero-slider-track { transition: none; }
}

/* UTEC EXTRA CLASS — Master Level & level dropdown upgrade v2.0 */
.field-help {
    display: block;
    margin-top: 7px;
    color: #6b7891;
    font-size: .78rem;
    line-height: 1.45;
}

.level-selection-fieldset {
    margin: 4px 0 22px;
    padding: 22px;
    border: 1px solid #dce5f3;
    border-radius: 18px;
    background: #f8fbff;
}

.level-selection-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
    margin-bottom: 16px;
}

.level-selection-title {
    padding: 0;
    font-size: 1rem;
    font-weight: 900;
    color: #0d1d3a;
}

.level-selection-heading p {
    margin: 5px 0 0;
    color: #6b7891;
    font-size: .86rem;
}

.level-selection-actions {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.text-button {
    padding: 0;
    border: 0;
    background: transparent;
    color: #175bd8;
    font: inherit;
    font-size: .82rem;
    font-weight: 800;
    cursor: pointer;
}

.text-button:hover { text-decoration: underline; }

.level-checkbox-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
}

.level-check-card {
    position: relative;
    display: flex !important;
    align-items: center;
    gap: 12px;
    min-height: 72px;
    padding: 14px;
    border: 1px solid #d6e0ef;
    border-radius: 14px;
    background: #fff;
    cursor: pointer;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.level-check-card:hover {
    border-color: #8db4f7;
    box-shadow: 0 8px 22px rgba(22, 78, 169, .08);
    transform: translateY(-1px);
}

.level-check-card input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.level-check-control {
    display: grid;
    flex: 0 0 28px;
    width: 28px;
    height: 28px;
    place-items: center;
    border: 2px solid #c6d3e6;
    border-radius: 9px;
    color: transparent;
    font-size: .86rem;
    font-weight: 900;
    transition: .18s ease;
}

.level-check-card input:checked + .level-check-control {
    border-color: #1f5fe0;
    background: #1f5fe0;
    color: #fff;
    box-shadow: 0 6px 14px rgba(31, 95, 224, .25);
}

.level-check-card:has(input:checked) {
    border-color: #78a4f4;
    background: #f3f7ff;
}

.level-check-card strong,
.level-check-card small {
    display: block;
}

.level-check-card strong {
    color: #101f3c;
    font-size: .9rem;
}

.level-check-card small {
    margin-top: 3px;
    color: #6d7a91;
    font-size: .76rem;
}

.level-master-link {
    display: inline-block;
    margin-top: 14px;
    color: #175bd8;
    font-size: .82rem;
    font-weight: 800;
}

.master-level-intro,
.level-add-panel,
.level-help-panel {
    margin-bottom: 18px;
}

.master-level-intro {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.master-level-intro h2,
.level-add-panel h2 {
    margin: 0 0 6px;
}

.master-level-intro p,
.level-help-panel p {
    margin: 0;
    color: #68768e;
}

.master-level-count {
    flex: 0 0 auto;
    padding: 9px 13px;
    border-radius: 999px;
    background: #e9f7ef;
    color: #08783c;
    font-size: .78rem;
    font-weight: 900;
}

.level-edit-form {
    position: relative;
    display: grid;
    grid-template-columns: minmax(170px, 1fr) minmax(170px, 1fr) 90px 105px minmax(190px, 1.15fr) auto;
    align-items: end;
    gap: 14px;
    margin-bottom: 12px;
}

.level-edit-form-add {
    grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) 90px 105px auto;
    margin: 0;
}

.level-edit-form label {
    min-width: 0;
}

.level-edit-form input[type="text"],
.level-edit-form input[type="number"] {
    width: 100%;
}

.level-order-badge {
    position: absolute;
    top: -8px;
    left: -8px;
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border-radius: 10px;
    background: #0f326f;
    color: #fff;
    font-size: .7rem;
    font-weight: 900;
    box-shadow: 0 6px 16px rgba(15, 50, 111, .2);
}

.level-active-toggle {
    display: flex !important;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    gap: 8px;
    padding: 0 12px;
    border: 1px solid #d7e1ef;
    border-radius: 12px;
    background: #f8fbff;
    font-size: .82rem;
    font-weight: 800;
}

.level-active-toggle input {
    width: 17px;
    height: 17px;
    accent-color: #1f5fe0;
}

.level-preview {
    min-width: 0;
    padding: 11px 13px;
    border-radius: 12px;
    background: #f4f7fb;
}

.level-preview small,
.level-preview strong,
.level-preview span {
    display: block;
}

.level-preview small {
    margin-bottom: 4px;
    color: #77849a;
    font-size: .68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .07em;
}

.level-preview strong {
    overflow: hidden;
    color: #13254a;
    font-size: .84rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.level-preview span {
    margin-top: 4px;
    color: #7a879b;
    font-size: .72rem;
}

.table-level-summary {
    display: inline-block;
    max-width: 260px;
    color: #34435c;
    font-size: .82rem;
    line-height: 1.45;
}

@media (max-width: 1180px) {
    .level-edit-form,
    .level-edit-form-add {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .level-edit-form .btn,
    .level-edit-form-add .btn,
    .level-preview {
        width: 100%;
    }
}

@media (max-width: 680px) {
    .level-selection-heading,
    .master-level-intro {
        flex-direction: column;
    }

    .level-checkbox-grid,
    .level-edit-form,
    .level-edit-form-add {
        grid-template-columns: 1fr;
    }

    .level-selection-fieldset {
        padding: 17px;
    }
}

/* UTEC EXTRA CLASS — Professional booking form v2.1 */
.booking-form {
    margin-top: 20px;
    padding: 26px;
    border: 1px solid #d8e3f2;
    border-radius: 20px;
    background: linear-gradient(180deg, #fbfdff 0%, #f7faff 100%);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.9);
}

.booking-form-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 22px;
    padding-bottom: 18px;
    border-bottom: 1px solid #dfe7f2;
}

.booking-form-heading h4 {
    margin: 3px 0 4px;
    color: #10264d;
    font-size: 22px;
    line-height: 1.2;
}

.booking-form-heading p {
    max-width: 470px;
    margin: 0;
    color: #69778e;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.55;
}

.booking-form-kicker {
    display: block;
    color: #175bd8;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 1.3px;
    text-transform: uppercase;
}

.required-note {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 7px;
    padding: 7px 10px;
    border: 1px solid #dce5f2;
    border-radius: 999px;
    background: #fff;
    color: #69778e;
    font-size: 10px;
    font-weight: 800;
    white-space: nowrap;
}

.required-note i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #e64b4b;
    box-shadow: 0 0 0 3px rgba(230,75,75,.12);
}

.booking-fields {
    align-items: start;
    gap: 20px 16px;
}

.booking-form .field-group {
    display: flex;
    align-self: start;
    flex-direction: column;
    gap: 8px;
    min-width: 0;
    margin: 0;
}

.booking-form .field-label {
    display: flex;
    align-items: center;
    gap: 5px;
    color: #17243b;
    font-size: 13px;
    font-weight: 900;
    line-height: 1.3;
}

.booking-form .field-label b {
    color: #df3f47;
    font-size: 14px;
}

.booking-form .field-label em {
    margin-left: 3px;
    padding: 3px 7px;
    border-radius: 999px;
    background: #edf2f8;
    color: #748197;
    font-size: 9px;
    font-style: normal;
    font-weight: 900;
    letter-spacing: .5px;
    text-transform: uppercase;
}

.booking-form input,
.booking-form select,
.booking-form textarea {
    min-height: 50px;
    border: 1.5px solid #cbd7e7;
    border-radius: 14px;
    background-color: #fff;
    color: #14213a;
    padding: 13px 15px;
    box-shadow: 0 2px 7px rgba(15,45,90,.025);
}

.booking-form input::placeholder,
.booking-form textarea::placeholder {
    color: #929eb0;
    opacity: 1;
}

.booking-form select {
    appearance: none;
    padding-right: 44px;
    background-image:
        linear-gradient(45deg, transparent 50%, #53627a 50%),
        linear-gradient(135deg, #53627a 50%, transparent 50%);
    background-position:
        calc(100% - 19px) 21px,
        calc(100% - 14px) 21px;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    cursor: pointer;
}

.booking-form input:hover,
.booking-form select:hover,
.booking-form textarea:hover {
    border-color: #aebfd6;
}

.booking-form input:focus,
.booking-form select:focus,
.booking-form textarea:focus {
    border-color: #1d60df;
    box-shadow: 0 0 0 4px rgba(29,96,223,.11), 0 4px 12px rgba(20,64,135,.05);
}

.booking-form textarea {
    min-height: 104px;
    line-height: 1.55;
    resize: vertical;
}

.booking-form .field-help {
    display: block;
    min-height: 35px;
    margin: 0;
    color: #738097;
    font-size: 11px;
    font-weight: 650;
    line-height: 1.45;
}

.booking-consent {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: start;
    gap: 11px;
    margin: 18px 0 0;
    padding: 14px 15px;
    border: 1px solid #dce5f2;
    border-radius: 14px;
    background: #fff;
    color: #53627a;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.5;
}

.booking-consent input {
    width: 19px;
    height: 19px;
    min-height: 0;
    margin: 1px 0 0;
    padding: 0;
    accent-color: #1c5edb;
    box-shadow: none;
}

.booking-form-actions {
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid #dfe7f2;
}

.booking-form-actions .btn {
    min-height: 48px;
    padding-inline: 22px;
    border-radius: 13px;
}

@media (max-width: 720px) {
    .booking-form {
        padding: 22px 20px;
        border-radius: 18px;
    }

    .booking-form-heading {
        flex-direction: column;
        gap: 12px;
    }

    .booking-form .field-help {
        min-height: 0;
    }
}

@media (max-width: 430px) {
    .booking-form {
        padding: 20px 16px;
        margin-inline: -4px;
    }

    .booking-form-actions {
        display: grid;
        grid-template-columns: 1fr;
    }

    .booking-form-actions .btn {
        width: 100%;
    }

    .booking-form-actions .btn-primary {
        order: -1;
    }
}

/* =========================================================
   UTEC EXTRA CLASS — FREE / PAID & PAYMENT SYSTEM v2.3
   ========================================================= */
.class-card {
    overflow: hidden;
}
.class-card-free { border-top: 4px solid #1cb56f; }
.class-card-paid { border-top: 4px solid #f2b63d; }
.class-type-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 5px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .08em;
    line-height: 1;
}
.class-type-badge.free,
.class-type-inline.free {
    color: #087746;
    background: #e6f8ef;
    border: 1px solid #b6ead0;
}
.class-type-badge.paid,
.class-type-inline.paid {
    color: #8a5300;
    background: #fff3d8;
    border: 1px solid #f2d697;
}
.class-card-label-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
.class-card-label-row .class-status {
    flex: 0 0 auto;
    margin: 0;
}
.class-price-line {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 6px;
    margin: 10px 0 16px;
}
.class-price-line strong {
    color: #10295d;
    font-size: 22px;
    font-weight: 900;
}
.class-card-free .class-price-line strong { color: #087746; }
.class-price-line span {
    color: #71809f;
    font-size: 13px;
    font-weight: 700;
}
.booking-summary-strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 0 0 20px;
    padding: 14px;
    border-radius: 16px;
    border: 1px solid #dbe5f5;
    background: #f7faff;
}
.booking-summary-strip.paid {
    background: #fff9ec;
    border-color: #f2dfae;
}
.booking-summary-strip.free {
    background: #f0fbf6;
    border-color: #cceedd;
}
.booking-summary-strip div {
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.booking-summary-strip small {
    color: #7b89a5;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.booking-summary-strip strong {
    color: #142b59;
    font-size: 14px;
}
.class-type-inline {
    display: inline-flex;
    width: fit-content;
    margin-top: 7px;
    padding: 3px 8px;
    border-radius: 999px;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .04em;
}

/* Admin schedule editor */
.class-editor-form {
    padding: 0;
    overflow: hidden;
}
.class-editor-section {
    padding: 28px 30px;
    border-bottom: 1px solid #e8edf6;
}
.class-editor-section:last-of-type { border-bottom: 0; }
.class-editor-section-title {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 22px;
}
.class-editor-section-title > span,
.payment-step,
.payment-section-heading > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    border-radius: 11px;
    color: #fff;
    background: linear-gradient(135deg, #1658d5, #2d83f0);
    font-size: 12px;
    font-weight: 900;
}
.class-editor-section-title h2,
.payment-panel-heading h2,
.payment-section-heading h2 {
    margin: 0 0 3px;
    color: #122957;
    font-size: 19px;
}
.class-editor-section-title p,
.payment-panel-heading p,
.payment-section-heading p {
    margin: 0;
    color: #74819c;
    font-size: 13px;
}
.class-type-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.class-type-option {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 14px;
    min-height: 132px;
    padding: 20px;
    border: 2px solid #dfe6f2;
    border-radius: 18px;
    background: #fff;
    cursor: pointer;
    transition: .18s ease;
}
.class-type-option:hover {
    transform: translateY(-1px);
    border-color: #a9bee4;
    box-shadow: 0 12px 26px rgba(26, 57, 111, .08);
}
.class-type-option.selected {
    border-color: #1d64dc;
    background: #f5f9ff;
    box-shadow: 0 0 0 3px rgba(29, 100, 220, .08);
}
.class-type-option:nth-child(2).selected {
    border-color: #e0a629;
    background: #fffbf1;
    box-shadow: 0 0 0 3px rgba(224, 166, 41, .10);
}
.class-type-option input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.class-type-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    border-radius: 14px;
    color: #0a7547;
    background: #e7f8f0;
    font-weight: 900;
}
.class-type-option:nth-child(2) .class-type-icon {
    color: #8a5300;
    background: #fff0cb;
}
.class-type-option strong {
    display: block;
    margin: 2px 0 7px;
    color: #132c5b;
    font-size: 15px;
}
.class-type-option small {
    display: block;
    color: #6f7d98;
    line-height: 1.55;
}
.paid-price-panel {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 18px;
    margin-top: 16px;
    padding: 18px 20px;
    border: 1px solid #f0d99b;
    border-radius: 16px;
    background: #fffaf0;
}
.paid-price-panel[hidden] { display: none !important; }
.currency-input,
.input-suffix {
    display: flex;
    align-items: stretch;
    overflow: hidden;
    border: 1px solid #d7dfec;
    border-radius: 12px;
    background: #fff;
}
.currency-input > span,
.input-suffix > span {
    display: inline-flex;
    align-items: center;
    padding: 0 14px;
    color: #54627c;
    background: #f1f4f9;
    border-right: 1px solid #d7dfec;
    font-weight: 900;
}
.input-suffix > span {
    border-right: 0;
    border-left: 1px solid #d7dfec;
}
.currency-input input,
.input-suffix input {
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.payment-setting-shortcut {
    color: #215dc1;
    font-size: 13px;
    font-weight: 900;
    white-space: nowrap;
}
.class-editor-actions {
    padding: 22px 30px 28px;
    background: #f8faff;
}
.admin-booking-type-preview {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: -4px 0 18px;
    padding: 12px 14px;
    border-radius: 12px;
    font-size: 13px;
}
.admin-booking-type-preview.free { color: #087746; background: #edf9f3; border: 1px solid #c9ead9; }
.admin-booking-type-preview.paid { color: #875300; background: #fff7e4; border: 1px solid #edd7a0; }
.admin-booking-type-preview span { font-weight: 700; }

/* Payment settings admin */
.payment-admin-form {
    display: grid;
    gap: 20px;
}
.payment-setting-card {
    padding: 26px;
}
.payment-panel-heading {
    align-items: flex-start;
    margin-bottom: 22px;
}
.payment-panel-heading > div:first-child {
    display: grid;
    grid-template-columns: 34px 1fr;
    column-gap: 13px;
}
.payment-panel-heading h2,
.payment-panel-heading p { grid-column: 2; }
.payment-panel-heading .payment-step { grid-row: 1 / span 2; }
.switch-control {
    display: inline-flex !important;
    align-items: center;
    gap: 9px;
    margin: 0 !important;
    cursor: pointer;
}
.switch-control input {
    position: absolute;
    opacity: 0;
}
.switch-control > span {
    position: relative;
    width: 44px;
    height: 24px;
    border-radius: 999px;
    background: #cbd4e3;
    transition: .2s ease;
}
.switch-control > span::after {
    content: '';
    position: absolute;
    top: 3px;
    left: 3px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 2px 6px rgba(0,0,0,.18);
    transition: .2s ease;
}
.switch-control input:checked + span { background: #1d67dd; }
.switch-control input:checked + span::after { transform: translateX(20px); }
.switch-control b { color: #33445f; font-size: 13px; }
.payment-qris-admin-grid {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 24px;
    align-items: center;
}
.qris-preview-admin {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
    padding: 14px;
    border: 1px dashed #bfcce0;
    border-radius: 18px;
    background: #f8faff;
}
.qris-preview-admin img {
    display: block;
    width: 100%;
    max-height: 270px;
    object-fit: contain;
    border-radius: 10px;
}
.qris-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    color: #72809b;
    text-align: center;
}
.qris-empty strong { color: #253a61; }
.bank-account-admin-list { display: grid; gap: 14px; }
.bank-account-admin-card {
    padding: 18px;
    border: 1px solid #dfe6f1;
    border-radius: 16px;
    background: #fbfcff;
}
.bank-account-number {
    margin-bottom: 12px;
    color: #1c376a;
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .07em;
}
.payment-save-bar {
    position: sticky;
    bottom: 14px;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 16px 18px;
    border: 1px solid rgba(161, 180, 214, .55);
    border-radius: 16px;
    background: rgba(255,255,255,.96);
    box-shadow: 0 14px 38px rgba(18, 44, 93, .14);
    backdrop-filter: blur(10px);
}
.payment-save-bar div { display: flex; flex-direction: column; }
.payment-save-bar strong { color: #17305f; }
.payment-save-bar span { color: #74819a; font-size: 12px; }

/* Public payment page */
.payment-page {
    min-height: calc(100vh - 75px);
    padding: 34px 0 64px;
    background: linear-gradient(180deg, #f3f7fd 0%, #fff 42%);
}
.payment-page-container { max-width: 1160px; }
.payment-page-heading {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: flex-end;
    margin-bottom: 22px;
}
.payment-page-heading h1 { margin: 3px 0 5px; color: #10295a; }
.payment-page-heading p { margin: 0; color: #6e7d98; }
.payment-created-banner { margin-bottom: 18px; }
.payment-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 22px;
    align-items: start;
}
.payment-main-column { display: grid; gap: 16px; }
.payment-countdown-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 22px 24px;
    border-radius: 20px;
    color: #fff;
    background: linear-gradient(135deg, #0e3375, #1b65db);
    box-shadow: 0 18px 34px rgba(14, 55, 124, .2);
}
.payment-countdown-card.urgent {
    background: linear-gradient(135deg, #8c3f10, #d56a18);
}
.payment-countdown-label {
    display: block;
    margin-bottom: 4px;
    color: rgba(255,255,255,.78);
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.payment-countdown-card strong {
    display: block;
    font-size: 42px;
    line-height: 1;
    letter-spacing: .03em;
}
.payment-countdown-card p { margin: 7px 0 0; color: rgba(255,255,255,.82); font-size: 13px; }
.payment-lock-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 58px;
    height: 58px;
    flex: 0 0 58px;
    border-radius: 18px;
    background: rgba(255,255,255,.13);
    font-size: 27px;
}
.payment-card,
.payment-summary-card,
.payment-result-card {
    border: 1px solid #e0e7f2;
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 14px 34px rgba(34, 63, 112, .08);
}
.payment-card { padding: 26px; }
.payment-section-heading {
    display: flex;
    align-items: flex-start;
    gap: 13px;
    margin-bottom: 20px;
}
.payment-method-list { display: grid; gap: 11px; }
.payment-method-option {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 76px;
    padding: 14px 16px;
    border: 1.5px solid #dce4f0;
    border-radius: 15px;
    background: #fff;
    cursor: pointer;
    transition: .18s ease;
}
.payment-method-option:hover { border-color: #9db6e2; background: #f9fbff; }
.payment-method-option:has(input:checked) {
    border-color: #2468d7;
    background: #f4f8ff;
    box-shadow: 0 0 0 3px rgba(36, 104, 215, .08);
}
.payment-method-option input {
    position: absolute;
    opacity: 0;
}
.payment-method-radio {
    width: 20px;
    height: 20px;
    flex: 0 0 20px;
    border: 2px solid #afbad0;
    border-radius: 50%;
    box-shadow: inset 0 0 0 4px #fff;
}
.payment-method-option input:checked ~ .payment-method-radio { border-color: #2267d8; background: #2267d8; }
.payment-method-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    width: 100%;
}
.payment-method-name { display: flex; flex-direction: column; gap: 3px; }
.payment-method-name b { color: #163060; }
.payment-method-name small { color: #71809b; }
.payment-method-tag {
    padding: 5px 8px;
    border-radius: 999px;
    color: #0d7548;
    background: #e7f8ef;
    font-size: 10px;
    font-weight: 900;
}
.copy-account-button {
    padding: 7px 10px;
    border: 1px solid #cbd8ec;
    border-radius: 9px;
    color: #205dbd;
    background: #fff;
    font: inherit;
    font-size: 11px;
    font-weight: 900;
    cursor: pointer;
}
.qris-payment-panel {
    display: grid;
    grid-template-columns: 190px 1fr;
    gap: 20px;
    align-items: center;
    margin: 12px 0 2px;
    padding: 18px;
    border: 1px solid #dfe6f2;
    border-radius: 16px;
    background: #fbfcff;
}
.qris-payment-panel img {
    width: 100%;
    max-height: 220px;
    object-fit: contain;
    border-radius: 10px;
    background: #fff;
}
.qris-payment-panel small { display: block; color: #7a879f; font-weight: 800; }
.qris-payment-panel strong { display: block; margin: 3px 0 8px; color: #172e5b; font-size: 18px; }
.qris-payment-panel p { margin: 0; color: #61708c; line-height: 1.6; }
.payment-instruction-box {
    margin: 18px 0;
    padding: 15px 16px;
    border-left: 4px solid #2a6bd8;
    border-radius: 0 12px 12px 0;
    background: #f3f7fe;
}
.payment-instruction-box strong { color: #17315f; }
.payment-instruction-box p { margin: 5px 0 0; color: #64728d; line-height: 1.6; }
.payment-upload-box {
    padding-top: 20px;
    border-top: 1px solid #e4eaf3;
}
.payment-file-drop {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 94px;
    padding: 18px;
    border: 2px dashed #b9c7dc;
    border-radius: 16px;
    background: #fafcff;
    cursor: pointer;
    transition: .18s ease;
}
.payment-file-drop:hover,
.payment-file-drop.has-file { border-color: #286bd9; background: #f2f7ff; }
.payment-file-drop input { position: absolute; opacity: 0; pointer-events: none; }
.payment-file-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    flex: 0 0 46px;
    border-radius: 14px;
    color: #175bc8;
    background: #e5efff;
    font-size: 23px;
    font-weight: 900;
}
.payment-file-drop span:last-child { display: flex; flex-direction: column; gap: 4px; }
.payment-file-drop strong { color: #18315e; }
.payment-file-drop small { color: #74819a; }
.payment-submit-button { margin-top: 18px; min-height: 50px; }
.payment-security-note { margin: 11px 0 0; color: #7a879e; font-size: 12px; text-align: center; }
.payment-summary-column {
    position: sticky;
    top: 92px;
    display: grid;
    gap: 14px;
}
.payment-summary-card { padding: 23px; }
.payment-summary-card h2 { margin: 13px 0 16px; color: #142d5c; }
.payment-class-meta { display: grid; gap: 10px; color: #5f6f8b; font-size: 13px; }
.payment-total-row {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px;
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid #e5eaf2;
}
.payment-total-row span { color: #687793; font-size: 13px; }
.payment-total-row strong { color: #0f2d64; font-size: 25px; }
.payment-help-card {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 17px 18px;
    border: 1px solid #cfe7da;
    border-radius: 16px;
    color: #176642;
    background: #effaf4;
}
.payment-help-card span { font-size: 12px; }
.payment-help-card strong { font-size: 13px; }
.payment-result-card {
    max-width: 720px;
    margin: 28px auto;
    padding: 48px 42px;
    text-align: center;
}
.payment-result-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    margin: 0 auto 18px;
    border-radius: 22px;
    color: #fff;
    background: linear-gradient(135deg, #20a968, #55cc8d);
    font-size: 32px;
    font-weight: 900;
}
.payment-result-card.review .payment-result-icon { background: linear-gradient(135deg, #2165d6, #55a0f3); }
.payment-result-card.expired .payment-result-icon { background: linear-gradient(135deg, #8f6219, #d9a53a); }
.payment-result-card.rejected .payment-result-icon { background: linear-gradient(135deg, #a52e3a, #e45c67); }
.payment-result-card h1 { margin: 7px 0 12px; color: #112c5d; }
.payment-result-card > p { max-width: 560px; margin: 0 auto 20px; color: #64738e; line-height: 1.7; }
.payment-result-summary {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin: 20px 0;
    padding: 14px;
    border-radius: 13px;
    background: #f5f8fd;
    color: #687793;
}
.payment-result-summary strong { color: #16315f; }

/* Payment review admin */
.payment-review-stats {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 18px;
}
.payment-review-stats a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 14px 16px;
    border: 1px solid #dfe6f0;
    border-radius: 14px;
    color: #60708d;
    background: #fff;
    font-size: 12px;
    font-weight: 800;
}
.payment-review-stats a.active {
    color: #174ea7;
    border-color: #8bb0ec;
    background: #f2f7ff;
}
.payment-review-stats strong { color: #17315e; font-size: 20px; }
.payment-review-list { display: grid; gap: 16px; }
.payment-review-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 190px;
    gap: 20px;
    padding: 22px;
    border: 1px solid #dfe6f1;
    border-radius: 19px;
    background: #fff;
    box-shadow: 0 10px 25px rgba(30, 58, 105, .06);
}
.payment-review-title h2 { margin: 10px 0 3px; color: #16305f; }
.payment-review-title p { margin: 0; color: #71809b; }
.payment-review-data {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-top: 18px;
}
.payment-review-data div {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 12px;
    border-radius: 12px;
    background: #f7f9fd;
}
.payment-review-data small { color: #7b879d; font-size: 10px; font-weight: 900; text-transform: uppercase; }
.payment-review-data strong { color: #1a335f; font-size: 13px; }
.payment-review-data span { color: #75819a; font-size: 11px; }
.payment-proof-admin {
    display: flex;
    align-items: stretch;
}
.payment-proof-admin a,
.proof-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 175px;
    padding: 10px;
    border: 1px solid #dce4ef;
    border-radius: 14px;
    background: #f9fbff;
    text-align: center;
}
.payment-proof-admin img {
    width: 100%;
    height: 125px;
    object-fit: cover;
    border-radius: 9px;
}
.payment-proof-admin a span { margin-top: 8px; color: #1b5fc4; font-size: 11px; font-weight: 900; }
.proof-empty strong { color: #40516f; }
.proof-empty span { margin-top: 5px; color: #7c899f; font-size: 11px; }
.payment-review-actions {
    grid-column: 1 / -1;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding-top: 16px;
    border-top: 1px solid #e7ebf2;
}
.payment-reject-box { flex: 1; }
.payment-reject-box summary { color: #9b3542; font-size: 13px; font-weight: 900; cursor: pointer; }
.payment-reject-box form { margin-top: 12px; padding: 14px; border-radius: 12px; background: #fff6f7; }
.table-action-emphasis { display: block; margin-top: 6px; color: #1d5dc1; font-size: 11px; font-weight: 900; }
.stat-card-link { text-decoration: none; }
.stat-card.needs-attention { border-color: #e5b64d; background: #fffbf1; }
.ticket-status-stack { display: flex; flex-direction: column; align-items: flex-end; gap: 7px; }

.status-pill.pending_payment { color: #855500; background: #fff1cc; }
.status-pill.payment_review { color: #1558b8; background: #e7f0ff; }
.status-pill.paid { color: #087746; background: #e4f7ed; }
.status-pill.payment_rejected { color: #9b2f3e; background: #ffe9ec; }
.status-pill.expired { color: #6d6072; background: #eeeaf0; }

@media (max-width: 980px) {
    .payment-layout { grid-template-columns: 1fr; }
    .payment-summary-column { position: static; grid-row: 1; }
    .payment-review-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .payment-review-card { grid-template-columns: 1fr 170px; }
    .payment-review-data { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
    .class-type-options,
    .payment-qris-admin-grid,
    .qris-payment-panel { grid-template-columns: 1fr; }
    .class-type-option { min-height: auto; }
    .paid-price-panel,
    .payment-save-bar,
    .payment-page-heading,
    .payment-review-actions { align-items: stretch; flex-direction: column; }
    .payment-setting-shortcut { white-space: normal; }
    .booking-summary-strip { grid-template-columns: 1fr; }
    .payment-qris-admin-grid { align-items: stretch; }
    .qris-preview-admin { min-height: 180px; }
    .payment-page { padding-top: 22px; }
    .payment-countdown-card { padding: 19px; }
    .payment-countdown-card strong { font-size: 36px; }
    .payment-card { padding: 20px 17px; }
    .payment-method-content { align-items: flex-start; flex-direction: column; }
    .payment-method-tag { align-self: flex-start; }
    .qris-payment-panel img { max-height: 280px; }
    .payment-result-card { padding: 36px 22px; }
    .payment-result-summary { flex-direction: column; gap: 7px; }
    .payment-review-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .payment-review-card { grid-template-columns: 1fr; }
    .payment-proof-admin { min-height: 160px; }
    .payment-review-data { grid-template-columns: 1fr 1fr; }
    .class-editor-section { padding: 23px 18px; }
    .class-editor-actions { padding: 18px; }
    .class-card-label-row { flex-direction: column; gap: 8px; }
}

@media (max-width: 480px) {
    .payment-review-data { grid-template-columns: 1fr; }
    .payment-review-stats { grid-template-columns: 1fr; }
    .payment-method-option { align-items: flex-start; }
    .payment-summary-card { padding: 19px; }
}

/* ========================================================================== 
   UTEC Admin Modern Education Dashboard v2.4
   ========================================================================== */
:root {
    --admin-navy: #082d67;
    --admin-navy-deep: #052354;
    --admin-blue: #1463e6;
    --admin-blue-2: #2878f1;
    --admin-bg: #f3f7fd;
    --admin-card: #ffffff;
    --admin-border: #dfe8f5;
    --admin-text: #10264d;
    --admin-muted: #6e7f9b;
    --admin-shadow: 0 12px 32px rgba(18, 58, 112, .07);
}

.admin-body {
    min-height: 100vh;
    margin: 0;
    color: var(--admin-text);
    background: var(--admin-bg);
    font-family: "Nunito", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.admin-body * { box-sizing: border-box; }
.admin-body a { text-decoration: none; }

.admin-layout {
    min-height: 100vh;
    display: grid;
    grid-template-columns: 270px minmax(0, 1fr);
}

.admin-sidebar {
    position: sticky;
    top: 0;
    z-index: 80;
    height: 100vh;
    width: auto;
    padding: 22px 16px 18px;
    border-radius: 0;
    border: 0;
    color: #fff;
    background:
        radial-gradient(circle at 0 100%, rgba(34, 126, 255, .25), transparent 40%),
        linear-gradient(180deg, #052b65 0%, #073777 55%, #052a61 100%);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    box-shadow: 12px 0 40px rgba(6, 39, 91, .12);
}

.admin-sidebar-brand {
    min-height: 58px;
    padding: 0 8px 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.admin-brand-lockup {
    color: #fff;
    display: inline-flex;
    align-items: center;
    gap: 12px;
}

.admin-brand-mark {
    width: 46px;
    height: 46px;
    border-radius: 14px;
    display: grid;
    place-items: center;
    font-size: 23px;
    font-weight: 900;
    background: linear-gradient(145deg, #2881ff, #0757d5);
    box-shadow: 0 10px 24px rgba(0, 30, 91, .35), inset 0 1px 0 rgba(255,255,255,.25);
}

.admin-brand-lockup strong {
    display: block;
    font-size: 19px;
    line-height: 1.1;
    letter-spacing: -.01em;
}

.admin-brand-lockup small {
    display: block;
    margin-top: 4px;
    color: #a9c8ff;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .18em;
}

.admin-sidebar-close {
    display: none;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 10px;
    color: #fff;
    background: rgba(255,255,255,.10);
    font-size: 26px;
    cursor: pointer;
}

.admin-nav { display: flex; flex-direction: column; gap: 17px; }
.admin-nav-group { display: flex; flex-direction: column; gap: 4px; }
.admin-nav-label {
    padding: 0 13px 7px;
    color: #9eb8e4;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .1em;
}

.admin-nav-link {
    min-height: 45px;
    padding: 0 13px;
    border-radius: 11px;
    color: #e5efff;
    display: flex;
    align-items: center;
    gap: 11px;
    font-size: 14px;
    font-weight: 700;
    transition: .2s ease;
}
.admin-nav-link svg { width: 21px; height: 21px; flex: 0 0 auto; }
.admin-nav-link span { flex: 1; }
.admin-nav-link:hover { color: #fff; background: rgba(255,255,255,.09); transform: translateX(2px); }
.admin-nav-link.active {
    color: #fff;
    background: linear-gradient(135deg, #1970f2, #0753db);
    box-shadow: 0 9px 20px rgba(0, 45, 133, .28), inset 0 1px 0 rgba(255,255,255,.18);
}
.admin-nav-badge {
    min-width: 24px;
    height: 24px;
    padding: 0 6px;
    border-radius: 999px;
    display: grid;
    place-items: center;
    color: #6e4700;
    background: #ffbf2f;
    font-size: 11px;
    font-style: normal;
}

.admin-help-card {
    margin-top: auto;
    padding: 15px;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 15px;
    color: #fff;
    background: rgba(33, 115, 225, .22);
    display: flex;
    align-items: center;
    gap: 12px;
}
.admin-help-card:hover { background: rgba(42, 129, 246, .30); }
.admin-help-icon {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: #1370ee;
    box-shadow: inset 0 0 0 5px rgba(255,255,255,.12);
}
.admin-help-icon svg { width: 24px; height: 24px; }
.admin-help-card strong, .admin-help-card small, .admin-help-card b { display: block; }
.admin-help-card strong { font-size: 13px; }
.admin-help-card small { color: #b9cef1; font-size: 11px; margin-top: 2px; }
.admin-help-card b { color: #33dd8a; font-size: 12px; margin-top: 2px; }

.admin-sidebar-overlay { display: none; }

.admin-main { min-width: 0; display: flex; flex-direction: column; min-height: 100vh; }

.admin-topbar {
    position: sticky;
    top: 0;
    z-index: 60;
    height: 74px;
    padding: 0 30px;
    color: var(--admin-text);
    background: rgba(255,255,255,.94);
    border-bottom: 1px solid var(--admin-border);
    backdrop-filter: blur(16px);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.admin-topbar-left, .admin-topbar-right { display: flex; align-items: center; }
.admin-topbar-left { gap: 17px; }
.admin-topbar-left h1 { margin: 0; color: var(--admin-text); font-size: 21px; font-weight: 900; }
.admin-menu-button {
    width: 40px;
    height: 40px;
    padding: 9px;
    border: 0;
    border-radius: 11px;
    color: var(--admin-text);
    background: transparent;
    cursor: pointer;
}
.admin-menu-button:hover { background: #edf4ff; }
.admin-menu-button svg { width: 22px; height: 22px; }
.admin-topbar-right { gap: 13px; }
.admin-notification-button {
    position: relative;
    width: 42px;
    height: 42px;
    border-radius: 12px;
    display: grid;
    place-items: center;
    color: var(--admin-text);
}
.admin-notification-button:hover { background: #edf4ff; }
.admin-notification-button svg { width: 21px; height: 21px; }
.admin-notification-button span {
    position: absolute;
    top: 1px;
    right: 0;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    border: 2px solid #fff;
    border-radius: 999px;
    display: grid;
    place-items: center;
    color: #fff;
    background: #ee3341;
    font-size: 9px;
    font-weight: 900;
}
.admin-topbar-divider { width: 1px; height: 28px; background: #d6deea; }

.admin-user-menu { position: relative; }
.admin-user-menu summary {
    list-style: none;
    min-height: 48px;
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
}
.admin-user-menu summary::-webkit-details-marker { display: none; }
.admin-user-avatar {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #fff;
    background: linear-gradient(145deg, #69a4ff, #2c73e9);
    font-weight: 900;
}
.admin-user-copy strong, .admin-user-copy small { display: block; }
.admin-user-copy strong { color: var(--admin-text); font-size: 13px; }
.admin-user-copy small { color: var(--admin-muted); font-size: 11px; margin-top: 1px; }
.admin-user-chevron svg { width: 17px; height: 17px; transform: rotate(90deg); transition: .2s ease; }
.admin-user-menu[open] .admin-user-chevron svg { transform: rotate(-90deg); }
.admin-user-dropdown {
    position: absolute;
    right: 0;
    top: calc(100% + 9px);
    width: 220px;
    padding: 8px;
    border: 1px solid var(--admin-border);
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 18px 45px rgba(22, 55, 105, .16);
}
.admin-user-dropdown a {
    min-height: 42px;
    padding: 0 11px;
    border-radius: 9px;
    color: var(--admin-text);
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    font-weight: 750;
}
.admin-user-dropdown a:hover { background: #f0f5fd; }
.admin-user-dropdown a.danger { color: #d33d48; }
.admin-user-dropdown svg { width: 18px; height: 18px; }

.admin-content {
    width: 100%;
    max-width: 1640px;
    margin: 0 auto;
    padding: 24px 30px 34px;
    flex: 1;
}

.admin-system-footer {
    width: calc(100% - 60px);
    max-width: 1580px;
    margin: 0 auto;
    padding: 0 0 20px;
    color: #8290a8;
    border-top: 1px solid #dce5f2;
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    padding-top: 15px;
}

.admin-welcome-card,
.admin-page-hero,
.admin-filter-card,
.admin-modern-panel,
.admin-kpi-card,
.admin-payment-kpi {
    border: 1px solid var(--admin-border);
    background: var(--admin-card);
    box-shadow: var(--admin-shadow);
}

.admin-welcome-card {
    min-height: 118px;
    padding: 21px 24px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
}
.admin-kicker, .admin-welcome-copy .admin-kicker {
    color: var(--admin-blue);
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .14em;
}
.admin-welcome-copy h2 { margin: 7px 0 4px; font-size: 28px; line-height: 1.15; color: #10264d; }
.admin-welcome-copy p { margin: 0; color: var(--admin-muted); font-size: 14px; }
.admin-welcome-actions { display: flex; align-items: center; gap: 12px; }
.admin-date-box { min-width: 210px; display: flex; align-items: center; gap: 11px; color: var(--admin-text); }
.admin-date-icon { width: 38px; height: 38px; border-radius: 11px; background: #eef4fe; display: grid; place-items: center; color: #7085a6; }
.admin-date-box strong, .admin-date-box small { display: block; }
.admin-date-box strong { font-size: 12px; }
.admin-date-box small { margin-top: 3px; color: var(--admin-muted); font-size: 11px; }

.admin-body .btn {
    min-height: 43px;
    padding: 0 18px;
    border: 1px solid transparent;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-family: inherit;
    font-size: 13px;
    font-weight: 900;
    line-height: 1;
    cursor: pointer;
    transition: .18s ease;
}
.admin-body .btn:hover { transform: translateY(-1px); }
.admin-body .btn-primary { color: #fff; background: linear-gradient(135deg, #1768e9, #0754dc); box-shadow: 0 9px 18px rgba(14, 93, 226, .18); }
.admin-body .btn-outline, .admin-body .btn-light { color: #12315f; background: #fff; border-color: #b9cae2; }
.admin-body .btn-outline:hover, .admin-body .btn-light:hover { border-color: #4b82d1; color: #0b5cda; }
.admin-body .btn-danger-outline { color: #d73542; background: #fff; border-color: #f04a56; }
.admin-body .btn-large { min-height: 48px; padding: 0 24px; }
.admin-body .btn-small { min-height: 35px; padding: 0 15px; font-size: 12px; }
.admin-body .btn.full { width: 100%; }

.admin-kpi-grid { margin-top: 15px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.admin-kpi-card {
    position: relative;
    min-height: 123px;
    padding: 21px 20px;
    border-radius: 15px;
    color: var(--admin-text);
    display: flex;
    align-items: flex-start;
    gap: 15px;
    overflow: hidden;
}
.admin-kpi-card:hover { transform: translateY(-2px); border-color: #bfd3ef; box-shadow: 0 16px 34px rgba(18,58,112,.10); }
.admin-kpi-icon {
    width: 48px;
    height: 48px;
    flex: 0 0 auto;
    border-radius: 50%;
    display: grid;
    place-items: center;
    font-size: 23px;
    font-style: normal;
    font-weight: 900;
}
.tone-blue .admin-kpi-icon { color: #1463e6; background: #e5efff; }
.tone-green .admin-kpi-icon { color: #0aa65d; background: #e7f8ef; }
.tone-amber .admin-kpi-icon { color: #ec9c00; background: #fff3d9; }
.tone-purple .admin-kpi-icon { color: #7d3fe6; background: #f1e9ff; }
.admin-kpi-copy { min-width: 0; }
.admin-kpi-copy small, .admin-kpi-copy strong, .admin-kpi-copy em { display: block; }
.admin-kpi-copy small { color: #526783; font-size: 12px; font-weight: 800; }
.admin-kpi-copy strong { margin-top: 5px; color: #10264d; font-size: 25px; line-height: 1.12; font-style: normal; }
.admin-kpi-copy em { margin-top: 6px; color: var(--admin-muted); font-size: 11px; font-style: normal; }
.admin-kpi-arrow { margin-left: auto; width: 30px; height: 30px; border-radius: 50%; background: #f0f5fc; display: grid; place-items: center; color: #59708f; font-size: 23px; }
.admin-kpi-trend { position: absolute; right: 18px; bottom: 18px; color: #0aa65d; font-size: 11px; font-weight: 900; }

.admin-dashboard-grid {
    margin-top: 15px;
    display: grid;
    grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
    gap: 15px;
}
.admin-modern-panel { border-radius: 15px; overflow: hidden; }
.admin-panel-header {
    min-height: 66px;
    padding: 15px 18px;
    border-bottom: 1px solid var(--admin-border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
}
.admin-panel-header h3 { margin: 0; color: var(--admin-text); font-size: 15px; }
.admin-panel-header p { margin: 3px 0 0; color: var(--admin-muted); font-size: 11px; }
.admin-panel-header > a { color: #0861df; font-size: 11px; font-weight: 900; }
.admin-action-list { padding: 6px 18px 9px; }
.admin-action-row {
    min-height: 46px;
    border-bottom: 1px solid #edf1f7;
    color: #233b60;
    display: grid;
    grid-template-columns: 34px minmax(0,1fr) 28px 15px;
    align-items: center;
    gap: 10px;
    font-size: 12px;
    font-weight: 750;
}
.admin-action-row:last-child { border-bottom: 0; }
.admin-action-row:hover { background: #f7faff; }
.admin-action-symbol { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: 13px; font-weight: 900; }
.admin-action-row.amber .admin-action-symbol, .admin-action-row.amber b { color: #c77a00; background: #fff3d6; }
.admin-action-row.blue .admin-action-symbol, .admin-action-row.blue b { color: #1768e9; background: #e9f1ff; }
.admin-action-row.red .admin-action-symbol, .admin-action-row.red b { color: #e33b47; background: #ffe9eb; }
.admin-action-row.purple .admin-action-symbol, .admin-action-row.purple b { color: #773ee5; background: #f1eaff; }
.admin-action-row.teal .admin-action-symbol, .admin-action-row.teal b { color: #00a4a7; background: #e4f8f8; }
.admin-action-row b { width: 25px; height: 25px; border-radius: 50%; display: grid; place-items: center; font-size: 10px; }
.admin-action-row i { color: #6c809d; font-size: 20px; font-style: normal; }

.admin-recent-table { padding: 5px 18px 9px; }
.admin-recent-row {
    min-height: 48px;
    border-bottom: 1px solid #edf1f7;
    color: var(--admin-text);
    display: grid;
    grid-template-columns: 32px minmax(100px,1.15fr) auto 55px minmax(105px,auto);
    align-items: center;
    gap: 10px;
    font-size: 11px;
}
.admin-recent-row:last-child { border-bottom: 0; }
.admin-recent-row:hover { background: #f7faff; }
.admin-mini-avatar { width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; color: #1664dd; background: #e9f1ff; font-size: 12px; font-weight: 900; }
.admin-recent-name strong, .admin-recent-name small { display: block; }
.admin-recent-name strong { font-size: 12px; }
.admin-recent-name small { margin-top: 2px; color: var(--admin-muted); font-size: 10px; }
.admin-recent-time { color: var(--admin-muted); text-align: center; }
.class-type-badge {
    display: inline-flex;
    min-height: 23px;
    padding: 0 9px;
    border-radius: 7px;
    align-items: center;
    justify-content: center;
    width: max-content;
    font-size: 9px;
    font-weight: 900;
}
.class-type-badge.free { color: #0e61db; background: #e8f1ff; }
.class-type-badge.paid { color: #b87600; background: #fff0ce; }
.status-pill {
    display: inline-flex;
    min-height: 24px;
    padding: 0 9px;
    border-radius: 999px;
    align-items: center;
    justify-content: center;
    width: max-content;
    font-size: 9px;
    line-height: 1.15;
    font-weight: 900;
    text-transform: uppercase;
}
.status-pill.confirmed, .status-pill.paid, .status-pill.attended, .status-pill.open { color: #078341; background: #e4f7eb; }
.status-pill.pending_payment { color: #a26b00; background: #fff0c8; }
.status-pill.payment_review { color: #075ccf; background: #e3efff; }
.status-pill.payment_rejected, .status-pill.expired, .status-pill.cancelled, .status-pill.full { color: #d32f3b; background: #ffe7e9; }
.status-pill.absent, .status-pill.closed { color: #697a91; background: #edf1f6; }

.admin-today-panel, .admin-chart-panel { min-height: 250px; }
.admin-today-class-grid { padding: 13px 17px 17px; display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
.admin-today-card { padding: 15px; border: 1px solid #dce6f3; border-radius: 12px; }
.admin-today-card-head { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; }
.admin-today-card-head strong { font-size: 13px; }
.admin-today-card p { margin: 6px 0 0; color: #5a7090; font-size: 11px; }
.admin-today-card > small { display: block; margin-top: 7px; color: #687e9b; font-size: 10px; }
.admin-capacity-line { margin-top: 13px; display: flex; justify-content: space-between; color: #4f6584; font-size: 10px; }
.admin-progress { height: 5px; margin-top: 6px; border-radius: 999px; background: #e6edf7; overflow: hidden; }
.admin-progress span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #1b6ee9, #0759e2); }
.admin-today-card .btn { margin-top: 13px; width: 100%; }

.admin-bar-chart { height: 184px; padding: 14px 20px 15px; display: grid; grid-template-columns: repeat(7, minmax(35px,1fr)); align-items: end; gap: 13px; }
.admin-bar-item { min-width: 0; height: 100%; display: grid; grid-template-rows: 20px 1fr 20px; align-items: end; text-align: center; }
.admin-bar-value { color: #233b60; font-size: 10px; font-weight: 900; }
.admin-bar-track { height: 100%; display: flex; align-items: end; justify-content: center; border-bottom: 1px dashed #dce5f1; }
.admin-bar-track span { width: min(36px,70%); min-height: 4px; border-radius: 6px 6px 2px 2px; background: #cfe0fb; }
.admin-bar-item.current .admin-bar-track span { background: linear-gradient(180deg, #2375ed, #0756dd); }
.admin-bar-item small { color: #566b89; font-size: 9px; white-space: nowrap; }
.admin-empty-compact { min-height: 150px; padding: 25px; display: grid; place-items: center; align-content: center; text-align: center; color: var(--admin-muted); }
.admin-empty-compact strong, .admin-empty-compact span { display: block; }
.admin-empty-compact strong { color: var(--admin-text); font-size: 14px; }
.admin-empty-compact span { margin-top: 5px; font-size: 11px; }
.admin-empty-compact.large { min-height: 280px; }

/* Page hero and filters */
.admin-page-hero {
    padding: 20px 24px;
    border-radius: 15px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}
.admin-page-hero.compact { min-height: 105px; }
.admin-page-hero h2 { margin: 6px 0 3px; color: var(--admin-text); font-size: 25px; }
.admin-page-hero p { margin: 0; color: var(--admin-muted); font-size: 13px; }
.admin-filter-card {
    margin-top: 15px;
    padding: 16px 18px;
    border-radius: 15px;
    display: flex;
    align-items: end;
    gap: 16px;
}
.admin-filter-field { min-width: 150px; }
.admin-filter-field.grow { flex: 1; }
.admin-filter-field > label { display: block; margin-bottom: 7px; color: #354a69; font-size: 11px; font-weight: 900; }
.admin-filter-field select,
.admin-search-input input,
.admin-body .filter-bar input,
.admin-body .filter-bar select,
.admin-body .admin-form input,
.admin-body .admin-form select,
.admin-body .admin-form textarea,
.admin-body .panel input,
.admin-body .panel select,
.admin-body .panel textarea {
    min-height: 42px;
    border: 1px solid #cbd8e9;
    border-radius: 9px;
    color: #1a3156;
    background: #fff;
    font: inherit;
    font-size: 12px;
    outline: 0;
}
.admin-filter-field select, .admin-search-input input { width: 100%; padding: 0 12px; }
.admin-filter-field select:focus, .admin-search-input input:focus,
.admin-body .admin-form input:focus, .admin-body .admin-form select:focus, .admin-body .admin-form textarea:focus { border-color: #3980e5; box-shadow: 0 0 0 3px rgba(44,118,229,.11); }
.admin-segmented { display: flex; min-height: 42px; padding: 3px; border: 1px solid #d5e0ee; border-radius: 10px; background: #f7f9fd; }
.admin-segmented a { min-width: 76px; padding: 0 12px; border-radius: 7px; color: #637793; display: grid; place-items: center; font-size: 11px; font-weight: 900; }
.admin-segmented a.active { color: #fff; background: #1262e3; box-shadow: 0 5px 12px rgba(18,98,227,.20); }
.admin-search-input { position: relative; }
.admin-search-input button { position: absolute; right: 5px; top: 5px; width: 32px; height: 32px; border: 0; border-radius: 8px; color: #5b718f; background: transparent; font-size: 18px; cursor: pointer; }
.admin-search-input input { padding-right: 42px; }
.admin-search-input.compact { width: min(370px, 100%); }

/* Modern tables */
.admin-table-panel { margin-top: 15px; }
.admin-table-wrap { overflow-x: auto; }
.admin-modern-table { width: 100%; min-width: 1180px; border-collapse: collapse; }
.admin-modern-table th { height: 49px; padding: 0 13px; color: #435879; background: #fbfcfe; border-bottom: 1px solid #dce5f1; text-align: left; font-size: 10px; font-weight: 900; white-space: nowrap; }
.admin-modern-table td { padding: 13px; border-bottom: 1px solid #e6edf6; vertical-align: middle; color: #253d62; font-size: 11px; }
.admin-modern-table tbody tr:hover { background: #f8fbff; }
.admin-modern-table tbody tr:last-child td { border-bottom: 0; }
.admin-theme-cell { min-width: 190px; display: flex; align-items: center; gap: 10px; }
.admin-theme-icon { width: 37px; height: 37px; flex: 0 0 auto; border-radius: 50%; display: grid; place-items: center; color: #fff; font-size: 14px; font-weight: 900; }
.theme-blue { background: #1262e3; }.theme-green { background: #38bd74; }.theme-purple { background: #8042ea; }.theme-amber { background: #ffac20; }.theme-teal { background: #21bdc0; }
.admin-theme-cell strong, .admin-theme-cell small { display: block; }
.admin-theme-cell strong { color: var(--admin-text); font-size: 11px; }
.admin-theme-cell small { max-width: 180px; margin-top: 2px; color: var(--admin-muted); font-size: 9px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.table-sub { display: block; margin-top: 3px; color: var(--admin-muted); font-size: 9px; }
.admin-time-cell { display: flex; gap: 4px; align-items: center; color: #55708f; }
.admin-level-compact { display: block; max-width: 145px; line-height: 1.3; }
.admin-person-cell { display: flex; align-items: center; gap: 8px; }
.admin-person-cell > span { width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; color: #fff; background: #6298ec; font-weight: 900; }
.admin-person-cell strong, .admin-person-cell small { display: block; }
.admin-person-cell strong { font-size: 10px; }.admin-person-cell small { color: var(--admin-muted); font-size: 8px; }
.admin-capacity-table { display: flex; justify-content: space-between; gap: 8px; color: #536985; font-size: 9px; }
.admin-capacity-table strong { color: var(--admin-text); font-size: 12px; }
.admin-progress.mini { width: 80px; height: 4px; }
.admin-row-actions { display: flex; align-items: center; gap: 5px; white-space: nowrap; }
.admin-row-actions a, .admin-row-actions button { min-height: 31px; padding: 0 9px; border: 1px solid #6ea0ed; border-radius: 7px; color: #0a60dc; background: #fff; display: inline-flex; align-items: center; font-family: inherit; font-size: 9px; font-weight: 900; cursor: pointer; }
.admin-row-actions button { border-color: #ff8088; color: #db3340; }
.admin-row-actions form { margin: 0; }
.admin-table-footer { min-height: 52px; padding: 0 16px; border-top: 1px solid #e3ebf5; display: flex; align-items: center; justify-content: space-between; color: var(--admin-muted); font-size: 10px; }
.admin-table-footer a { color: #0961df; font-weight: 900; }
.admin-table-empty { min-height: 250px; display: grid; place-items: center; align-content: center; text-align: center; }
.admin-table-empty strong, .admin-table-empty span { display: block; }.admin-table-empty strong { color: var(--admin-text); }.admin-table-empty span { margin-top: 4px; color: var(--admin-muted); }

/* Payment workspace */
.admin-payment-kpis { margin-top: 15px; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; }
.admin-payment-kpi { min-height: 105px; padding: 20px; border-radius: 15px; color: var(--admin-text); display: flex; align-items: center; gap: 14px; }
.admin-payment-kpi > span:nth-child(2) { min-width: 0; }
.admin-payment-kpi small, .admin-payment-kpi strong, .admin-payment-kpi em { display: block; }
.admin-payment-kpi small { color: #526783; font-size: 11px; font-weight: 800; }
.admin-payment-kpi strong { margin-top: 3px; color: var(--admin-text); font-size: 22px; }
.admin-payment-kpi em { margin-top: 3px; color: var(--admin-muted); font-size: 10px; font-style: normal; }
.admin-payment-kpi i { margin-left: auto; font-size: 24px; font-style: normal; color: #6380a4; }
.admin-payment-filter { margin-top: 15px; padding: 12px 15px; border: 1px solid var(--admin-border); border-radius: 14px; background: #fff; display: flex; align-items: center; justify-content: space-between; gap: 12px; box-shadow: var(--admin-shadow); }
.admin-payment-filter-tabs { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; }
.admin-payment-filter-tabs a { min-height: 34px; padding: 0 11px; border-radius: 8px; color: #667a96; display: inline-flex; align-items: center; gap: 6px; font-size: 10px; font-weight: 900; }
.admin-payment-filter-tabs a span { min-width: 18px; height: 18px; padding: 0 4px; border-radius: 999px; display: grid; place-items: center; background: #edf2f9; font-size: 8px; }
.admin-payment-filter-tabs a.active { color: #fff; background: #1262e3; }
.admin-payment-filter-tabs a.active span { background: rgba(255,255,255,.20); }
.admin-payment-workspace { margin-top: 15px; display: grid; grid-template-columns: minmax(0,1.25fr) minmax(410px,.75fr); gap: 15px; align-items: start; }
.admin-payment-list-panel, .admin-payment-detail-panel { min-width: 0; }
.admin-payment-list-head { min-height: 38px; padding: 0 16px; border-bottom: 1px solid #e2eaf4; color: #647792; background: #fbfcfe; display: grid; grid-template-columns: 1.35fr 1fr .65fr .55fr .95fr; align-items: center; gap: 10px; font-size: 9px; font-weight: 900; }
.admin-payment-list { padding: 0 8px 8px; }
.admin-payment-row { position: relative; min-height: 62px; padding: 7px 9px; border-bottom: 1px solid #e7edf5; border-radius: 9px; color: var(--admin-text); display: grid; grid-template-columns: 1.35fr 1fr .65fr .55fr .95fr; align-items: center; gap: 10px; font-size: 10px; }
.admin-payment-row.selected { border: 1px solid #2d79ed; background: #f6faff; box-shadow: inset 4px 0 #1463e6; }
.admin-payment-row:not(.selected):hover { background: #f8fbff; }
.admin-payment-row strong, .admin-payment-row small { display: block; }
.admin-payment-row strong { font-size: 10px; }.admin-payment-row small { margin-top: 2px; color: var(--admin-muted); font-size: 8px; }
.admin-payment-person { display: flex; align-items: center; gap: 8px; }
.admin-payment-person > span { min-width: 0; }
.admin-payment-row > span:last-child { display: flex; align-items: center; justify-content: space-between; gap: 5px; }
.admin-payment-row > span:last-child i { font-size: 18px; font-style: normal; color: #5d789a; }
.admin-method-pill { display: inline-flex; min-height: 22px; padding: 0 7px; border: 1px solid #82abeb; border-radius: 6px; color: #0c61dd; align-items: center; font-size: 8px; font-weight: 900; }
.admin-payment-detail-panel { position: sticky; top: 89px; }
.admin-payment-detail-body { padding: 17px; display: grid; grid-template-columns: minmax(150px,.7fr) minmax(210px,1.3fr); gap: 18px; }
.admin-payment-detail-body h4 { margin: 0 0 11px; color: var(--admin-text); font-size: 12px; }
.admin-proof-preview { min-height: 235px; border: 1px solid #d6e0ed; border-radius: 10px; background: #f5f8fc; display: grid; place-items: center; overflow: hidden; }
.admin-proof-preview img { width: 100%; height: 235px; object-fit: contain; }
.admin-proof-column .btn { margin-top: 9px; }
.admin-proof-placeholder { min-height: 235px; padding: 20px; border: 1px dashed #bdcce0; border-radius: 10px; color: var(--admin-muted); background: #f8fafd; display: grid; place-items: center; align-content: center; text-align: center; }
.admin-proof-placeholder span { font-size: 31px; }.admin-proof-placeholder strong { margin-top: 8px; color: var(--admin-text); font-size: 11px; }.admin-proof-placeholder small { margin-top: 4px; font-size: 9px; }
.admin-detail-list { margin: 0; }
.admin-detail-list > div { min-height: 34px; display: grid; grid-template-columns: 100px 1fr; gap: 9px; align-items: center; border-bottom: 1px solid #edf1f6; }
.admin-detail-list dt { color: #637794; font-size: 9px; }.admin-detail-list dd { margin: 0; color: #203a60; font-size: 10px; font-weight: 800; }
.admin-contact-card { margin-top: 13px; padding: 10px; border: 1px solid #dce5f1; border-radius: 10px; display: flex; align-items: center; gap: 9px; }
.admin-contact-card > span:nth-child(2) { flex: 1; }.admin-contact-card strong, .admin-contact-card small { display: block; }.admin-contact-card strong { font-size: 10px; }.admin-contact-card small { margin-top: 2px; color: var(--admin-muted); font-size: 8px; }.admin-contact-card a { min-height: 29px; padding: 0 9px; border: 1px solid #24b968; border-radius: 7px; color: #14934f; display: inline-flex; align-items: center; font-size: 8px; font-weight: 900; }
.admin-payment-decision { padding: 14px 17px 17px; border-top: 1px solid #e3eaf3; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 11px; }
.admin-reject-details { position: relative; }
.admin-reject-details summary { list-style: none; width: 100%; }
.admin-reject-details summary::-webkit-details-marker { display: none; }
.admin-reject-details form { position: absolute; z-index: 20; bottom: calc(100% + 8px); left: 0; width: 320px; padding: 13px; border: 1px solid #e0e7f1; border-radius: 11px; background: #fff; box-shadow: 0 15px 38px rgba(20,52,100,.18); }
.admin-reject-details label { color: #314968; font-size: 10px; font-weight: 900; }
.admin-reject-details textarea { width: 100%; margin: 7px 0; padding: 9px; border: 1px solid #ced9e8; border-radius: 8px; font: inherit; font-size: 10px; }

/* Compatibility for every existing admin page */
.admin-body .admin-page-heading { padding: 20px 24px; border: 1px solid var(--admin-border); border-radius: 15px; background: #fff; box-shadow: var(--admin-shadow); display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.admin-body .admin-page-heading h1 { margin: 5px 0 3px; color: var(--admin-text); font-size: 25px; }
.admin-body .admin-page-heading p { margin: 0; color: var(--admin-muted); font-size: 13px; }
.admin-body .eyebrow { color: var(--admin-blue); font-size: 10px; font-weight: 900; letter-spacing: .13em; }
.admin-body .panel, .admin-body .table-card, .admin-body .filter-bar, .admin-body .payment-review-card, .admin-body .payment-review-stats, .admin-body .footer-settings-card, .admin-body .appearance-card, .admin-body .profile-card { border-color: var(--admin-border); border-radius: 15px; background: #fff; box-shadow: var(--admin-shadow); }
.admin-body .filter-bar { margin-top: 15px; padding: 14px; }
.admin-body .table-card { margin-top: 15px; overflow: hidden; }
.admin-body .table-card table { width: 100%; }
.admin-body .table-card th { color: #425878; background: #fbfcfe; }
.admin-body .admin-form.panel { margin-top: 15px; padding: 22px; }
.admin-body .form-grid { gap: 14px; }
.admin-body .admin-form label { color: #354a69; font-size: 11px; font-weight: 900; }
.admin-body .admin-form input, .admin-body .admin-form select { width: 100%; padding: 0 12px; }
.admin-body .admin-form textarea { width: 100%; padding: 10px 12px; }
.admin-body .alert { margin-bottom: 15px; border-radius: 11px; }

@media (max-width: 1280px) {
    .admin-layout { grid-template-columns: 235px minmax(0,1fr); }
    .admin-sidebar { padding-left: 12px; padding-right: 12px; }
    .admin-nav-link { padding: 0 10px; font-size: 12px; }
    .admin-brand-lockup strong { font-size: 17px; }
    .admin-content { padding-left: 20px; padding-right: 20px; }
    .admin-welcome-actions { flex-wrap: wrap; justify-content: flex-end; }
    .admin-date-box { min-width: 170px; }
    .admin-payment-workspace { grid-template-columns: minmax(0,1fr) 400px; }
}

@media (max-width: 1050px) {
    .admin-layout { display: block; }
    .admin-sidebar {
        position: fixed;
        left: 0;
        top: 0;
        width: 275px;
        transform: translateX(-102%);
        transition: transform .24s ease;
    }
    .admin-sidebar-close { display: grid; place-items: center; }
    .admin-body.admin-sidebar-open .admin-sidebar { transform: translateX(0); }
    .admin-sidebar-overlay { position: fixed; inset: 0; z-index: 70; border: 0; background: rgba(5,23,53,.48); opacity: 0; visibility: hidden; display: block; transition: .2s ease; }
    .admin-body.admin-sidebar-open .admin-sidebar-overlay { opacity: 1; visibility: visible; }
    .admin-topbar { padding: 0 20px; }
    .admin-kpi-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .admin-welcome-card { align-items: flex-start; }
    .admin-welcome-actions { max-width: 470px; }
    .admin-dashboard-grid { grid-template-columns: 1fr; }
    .admin-payment-workspace { grid-template-columns: 1fr; }
    .admin-payment-detail-panel { position: static; }
    .admin-payment-detail-body { grid-template-columns: 230px 1fr; }
    .admin-filter-card { flex-wrap: wrap; }
    .admin-filter-field.grow { flex-basis: 100%; }
}

@media (max-width: 760px) {
    .admin-topbar { height: 65px; padding: 0 14px; }
    .admin-topbar-left h1 { font-size: 17px; }
    .admin-user-copy, .admin-topbar-divider { display: none; }
    .admin-user-avatar { width: 38px; height: 38px; }
    .admin-content { padding: 14px 12px 25px; }
    .admin-system-footer { width: calc(100% - 24px); }
    .admin-welcome-card, .admin-page-hero { padding: 18px; flex-direction: column; align-items: stretch; }
    .admin-welcome-copy h2, .admin-page-hero h2 { font-size: 22px; }
    .admin-welcome-actions { max-width: none; justify-content: stretch; }
    .admin-date-box { width: 100%; min-width: 0; }
    .admin-welcome-actions .btn { flex: 1; }
    .admin-kpi-grid, .admin-payment-kpis { grid-template-columns: 1fr; }
    .admin-kpi-card { min-height: 105px; }
    .admin-dashboard-grid { gap: 12px; }
    .admin-recent-row { grid-template-columns: 32px minmax(0,1fr) auto; }
    .admin-recent-row .admin-recent-time, .admin-recent-row .status-pill { display: none; }
    .admin-today-class-grid { grid-template-columns: 1fr; }
    .admin-bar-chart { padding-left: 10px; padding-right: 10px; gap: 5px; }
    .admin-bar-item small { transform: rotate(-35deg); transform-origin: center; }
    .admin-filter-card { display: grid; grid-template-columns: 1fr 1fr; }
    .admin-filter-field, .admin-filter-field.grow, .admin-filter-tabs-field { min-width: 0; flex-basis: auto; }
    .admin-filter-tabs-field, .admin-filter-field.grow { grid-column: 1 / -1; }
    .admin-payment-filter { align-items: stretch; flex-direction: column; }
    .admin-payment-filter-tabs { overflow-x: auto; flex-wrap: nowrap; padding-bottom: 3px; }
    .admin-payment-filter-tabs a { flex: 0 0 auto; }
    .admin-search-input.compact { width: 100%; }
    .admin-payment-list-head { display: none; }
    .admin-payment-row { grid-template-columns: minmax(0,1fr) auto; gap: 8px; min-height: 75px; }
    .admin-payment-row > span:nth-child(2), .admin-payment-row > span:nth-child(4) { display: none; }
    .admin-payment-row > span:nth-child(3) { text-align: right; }
    .admin-payment-row > span:nth-child(5) { grid-column: 1 / -1; justify-content: flex-start; }
    .admin-payment-row > span:nth-child(5) i { margin-left: auto; }
    .admin-payment-detail-body { grid-template-columns: 1fr; }
    .admin-payment-decision { grid-template-columns: 1fr; }
    .admin-reject-details form { position: static; width: 100%; margin-top: 8px; }
    .admin-body .admin-page-heading { flex-direction: column; align-items: stretch; }
}

@media (max-width: 480px) {
    .admin-sidebar { width: min(88vw, 290px); }
    .admin-topbar-right { gap: 7px; }
    .admin-notification-button { width: 38px; height: 38px; }
    .admin-welcome-actions { display: grid; grid-template-columns: 1fr; }
    .admin-welcome-actions .btn { width: 100%; }
    .admin-filter-card { grid-template-columns: 1fr; }
    .admin-filter-tabs-field, .admin-filter-field.grow { grid-column: auto; }
    .admin-segmented a { min-width: 0; flex: 1; }
    .admin-system-footer { flex-direction: column; gap: 5px; }
}

/* ========================================================================== 
   UTEC Admin Sidebar Contrast Fix v2.4.1
   Ensures legacy generic anchor rules cannot darken sidebar content.
   ========================================================================== */
.admin-body .admin-sidebar a.admin-brand-lockup {
    color: #ffffff !important;
}

.admin-body .admin-sidebar a.admin-brand-lockup strong {
    color: #ffffff !important;
}

.admin-body .admin-sidebar a.admin-brand-lockup small {
    color: #b8d0fb !important;
}

.admin-body .admin-sidebar a.admin-nav-link {
    color: rgba(235, 243, 255, .90) !important;
}

.admin-body .admin-sidebar a.admin-nav-link svg {
    color: currentColor !important;
    opacity: .96;
}

.admin-body .admin-sidebar a.admin-nav-link:hover,
.admin-body .admin-sidebar a.admin-nav-link:focus-visible {
    color: #ffffff !important;
    background: rgba(255, 255, 255, .10);
}

.admin-body .admin-sidebar a.admin-nav-link.active {
    color: #ffffff !important;
}

.admin-body .admin-sidebar a.admin-help-card,
.admin-body .admin-sidebar a.admin-help-card strong {
    color: #ffffff !important;
}

.admin-body .admin-sidebar a.admin-help-card small {
    color: #c4d7f7 !important;
}

.admin-body .admin-sidebar a.admin-help-card b {
    color: #38e58e !important;
}

.admin-body .admin-sidebar .admin-nav-label {
    color: #a9c1ea !important;
}

/* ========================================================================== 
   UTEC EXTRA CLASS — PUBLIC MOBILE EXPERIENCE v2.6
   ========================================================================== */
.public-menu-button,
.public-mobile-menu,
.public-menu-overlay,
.mobile-detail-action,
.date-scroll-button,
.class-theme-visual {
    display: none;
}

.public-class-card {
    transition: opacity .35s ease, transform .35s ease, box-shadow .2s ease;
}
.public-class-card.is-visible { opacity: 1; transform: translateY(0); }
.public-class-card[hidden] { display: none !important; }
.class-filter-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: -2px 0 24px;
}
.class-filter-bar button {
    min-height: 40px;
    padding: 8px 18px;
    border: 1px solid #cfd9e8;
    border-radius: 999px;
    color: #1c3157;
    background: #fff;
    font-size: 13px;
    font-weight: 900;
    transition: .18s ease;
}
.class-filter-bar button:hover { border-color: #8db3f5; color: var(--blue); }
.class-filter-bar button.active {
    color: #fff;
    border-color: var(--blue);
    background: linear-gradient(135deg, #1761df, #0e51c8);
    box-shadow: 0 8px 18px rgba(21,87,214,.2);
}
.filter-empty-state { margin-top: 16px; }
.date-scroll-shell { position: relative; }
.class-card-shell { min-width: 0; }
.class-card-content { min-width: 0; }

/* Theme visual language: used as a polished fallback before per-class image upload. */
.class-theme-visual,
.class-detail-visual {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    color: #fff;
    background: linear-gradient(145deg, #1f6be5, #0a347c);
}
.class-theme-visual::before,
.class-detail-visual::before,
.class-theme-visual::after,
.class-detail-visual::after {
    content: "";
    position: absolute;
    z-index: -1;
    border-radius: 50%;
    background: rgba(255,255,255,.14);
}
.class-theme-visual::before,
.class-detail-visual::before { width: 150px; height: 150px; right: -58px; top: -48px; }
.class-theme-visual::after,
.class-detail-visual::after { width: 90px; height: 90px; left: -32px; bottom: -24px; }
.class-theme-detective { background: linear-gradient(145deg, #6b411d, #1c2335 62%, #0b1425); }
.class-theme-art { background: linear-gradient(145deg, #f59e0b, #e54b73 55%, #7c3aed); }
.class-theme-speaking { background: linear-gradient(145deg, #14b8a6, #1670dc 58%, #153c8a); }
.class-theme-story { background: linear-gradient(145deg, #8b5cf6, #4f46e5 58%, #21306c); }
.class-theme-vocabulary { background: linear-gradient(145deg, #0ea5e9, #2563eb 58%, #173a8c); }
.class-theme-science { background: linear-gradient(145deg, #10b981, #0f8f94 55%, #155e75); }
.class-theme-math { background: linear-gradient(145deg, #f97316, #e11d48 58%, #831843); }
.class-theme-general { background: linear-gradient(145deg, #2563eb, #6246d7 58%, #243b7f); }

/* Detail & booking page */
.class-detail-section {
    min-height: calc(100vh - 74px);
    padding: 42px 0 76px;
    background:
        radial-gradient(circle at 10% 0%, rgba(73,136,255,.12), transparent 25%),
        radial-gradient(circle at 95% 15%, rgba(255,211,86,.13), transparent 22%),
        #f5f8fd;
}
.class-detail-container { width: min(1080px, calc(100% - 32px)); }
.class-detail-back {
    display: inline-flex;
    align-items: center;
    margin-bottom: 18px;
    color: #245dbf;
    font-size: 13px;
    font-weight: 900;
}
.class-detail-back:hover { text-decoration: underline; }
.class-detail-grid {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    gap: 24px;
    align-items: start;
}
.class-detail-summary-card,
.class-detail-booking-card {
    overflow: hidden;
    border: 1px solid #dce5f2;
    border-radius: 26px;
    background: #fff;
    box-shadow: 0 20px 55px rgba(18,52,104,.09);
}
.class-detail-summary-card { position: sticky; top: 96px; }
.class-detail-visual {
    min-height: 430px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 28px;
}
.class-detail-icon {
    font-size: 112px;
    filter: drop-shadow(0 18px 25px rgba(0,0,0,.2));
    transform: translateY(-28px);
}
.class-detail-glow {
    position: absolute;
    inset: 18% 17% auto;
    height: 45%;
    border-radius: 50%;
    background: rgba(255,255,255,.18);
    filter: blur(35px);
}
.class-detail-overlay {
    position: absolute;
    inset: auto 0 0;
    padding: 80px 26px 26px;
    background: linear-gradient(transparent, rgba(3,18,46,.9));
}
.class-detail-overlay h1 {
    margin: 12px 0 6px;
    color: #fff;
    font-size: 34px;
    line-height: 1.08;
    letter-spacing: -1px;
}
.class-detail-overlay p { margin: 0; color: rgba(255,255,255,.78); font-size: 14px; }
.class-detail-facts {
    display: grid;
    grid-template-columns: repeat(2, minmax(0,1fr));
    gap: 1px;
    background: #e7edf6;
}
.class-detail-facts > div {
    min-height: 82px;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 18px;
    background: #fff;
}
.detail-fact-icon {
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: #edf4ff;
    font-size: 17px;
}
.class-detail-facts span:last-child { display: grid; min-width: 0; }
.class-detail-facts small { color: #7a879d; font-size: 10px; font-weight: 900; text-transform: uppercase; letter-spacing: .5px; }
.class-detail-facts strong { color: #19325b; font-size: 13px; line-height: 1.35; }
.text-success { color: #0a8a52 !important; }
.text-danger { color: #c83d4a !important; }
.class-detail-price {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin: 18px;
    padding: 16px 18px;
    border-radius: 17px;
}
.class-detail-price.free { color: #087746; background: #edf9f3; border: 1px solid #c8ebda; }
.class-detail-price.paid { color: #8b5600; background: #fff7e7; border: 1px solid #f2deab; }
.class-detail-price span { font-size: 12px; font-weight: 800; }
.class-detail-price strong { font-size: 22px; font-weight: 900; }
.class-detail-booking-card { padding: 28px; }
.detail-booking-heading {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 18px;
    padding-bottom: 20px;
    border-bottom: 1px solid #e3e9f2;
}
.detail-booking-icon {
    width: 46px;
    height: 46px;
    flex: 0 0 46px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    color: #fff;
    background: linear-gradient(145deg, #2877f2, #1253c8);
    box-shadow: 0 9px 20px rgba(21,87,214,.2);
}
.detail-booking-heading h2 { margin: 3px 0 4px; font-size: 25px; letter-spacing: -.5px; }
.detail-booking-heading p { margin: 0; color: #748197; font-size: 13px; }
.detail-booking-form { margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none; }
.detail-booking-fields { grid-template-columns: 1fr; gap: 14px; }
.detail-booking-fields .field-group { margin: 0; }
.detail-booking-fields .field-help { display: none; }
.detail-booking-consent { margin-top: 18px; }
.detail-submit-button { min-height: 54px; margin-top: 18px; border-radius: 15px; font-size: 16px; }
.detail-data-note { margin: 13px 0 0; color: #78879d; font-size: 11px; text-align: center; }
.detail-unavailable-state { padding: 45px 24px; text-align: center; }
.detail-unavailable-state > span { font-size: 44px; }
.detail-unavailable-state h3 { margin: 12px 0 6px; }
.detail-unavailable-state p { margin: 0 0 20px; color: #748197; }

@media (min-width: 721px) {
    .public-class-card { opacity: 1; transform: none; }
}

@media (max-width: 720px) {
    html { scroll-padding-top: 72px; }
    body:not(.admin-body) {
        overflow-x: hidden;
        background: #f5f8fd;
    }
    body.public-menu-open { overflow: hidden; }
    .container,
    .narrow { width: min(100% - 24px, 1180px); }

    /* Mobile header and drawer */
    .public-site-header {
        border-bottom: 1px solid #e2e8f2;
        background: rgba(255,255,255,.97);
        box-shadow: 0 5px 18px rgba(20,48,92,.05);
    }
    .public-site-header .header-inner { height: 66px; gap: 12px; }
    .public-site-header .site-brand-logo { height: min(var(--site-logo-height, 42px), 42px); max-width: 70vw; }
    .public-site-header .brand-mark { width: 39px; height: 39px; border-radius: 12px; }
    .public-site-header .brand strong { font-size: 15px; }
    .public-desktop-nav { display: none !important; }
    .public-menu-button {
        width: 42px;
        height: 42px;
        flex: 0 0 42px;
        display: grid;
        align-content: center;
        gap: 5px;
        padding: 9px;
        border: 0;
        border-radius: 13px;
        color: #14315f;
        background: #f2f6fc;
    }
    .public-menu-button span { display: block; width: 100%; height: 2px; border-radius: 99px; background: currentColor; }
    .public-menu-overlay {
        position: fixed;
        inset: 0;
        z-index: 89;
        display: block;
        background: rgba(6,25,58,.46);
        opacity: 0;
        transition: opacity .22s ease;
        backdrop-filter: blur(3px);
    }
    .public-menu-overlay[hidden] { display: none; }
    .public-menu-open .public-menu-overlay { opacity: 1; }
    .public-mobile-menu {
        position: fixed;
        inset: 0 0 0 auto;
        z-index: 90;
        width: min(84vw, 330px);
        display: flex;
        flex-direction: column;
        padding: 22px;
        color: #fff;
        background: linear-gradient(180deg, #0a397d, #06285e);
        box-shadow: -18px 0 50px rgba(4,20,48,.28);
        transform: translateX(105%);
        transition: transform .24s ease;
    }
    .public-menu-open .public-mobile-menu { transform: translateX(0); }
    .public-mobile-menu-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 24px; }
    .public-mobile-menu-head strong { font-size: 15px; letter-spacing: .7px; }
    .public-mobile-menu-head button { width: 38px; height: 38px; border: 1px solid rgba(255,255,255,.2); border-radius: 12px; color: #fff; background: rgba(255,255,255,.08); font-size: 26px; line-height: 1; }
    .public-mobile-menu nav { display: grid; gap: 9px; }
    .public-mobile-menu nav a { display: flex; align-items: center; gap: 12px; min-height: 50px; padding: 10px 13px; border-radius: 14px; color: #fff; background: rgba(255,255,255,.07); font-weight: 800; }
    .public-mobile-menu nav a span { width: 28px; text-align: center; }
    .public-mobile-menu > p { margin: auto 0 0; padding: 16px; border-radius: 16px; color: rgba(255,255,255,.72); background: rgba(255,255,255,.06); font-size: 12px; }

    /* Compact, image-led hero */
    .hero-slider {
        width: calc(100% - 24px);
        margin: 12px auto 0;
        overflow: hidden;
        border-radius: 23px;
        box-shadow: 0 16px 35px rgba(11,50,110,.16);
    }
    .hero-slide { min-height: 255px; }
    .hero-slider .hero-grid,
    .hero-height-compact .hero-grid,
    .hero-height-normal .hero-grid,
    .hero-height-tall .hero-grid {
        position: relative;
        min-height: 255px;
        display: block;
        padding: 27px 23px 53px;
    }
    .hero-copy { position: relative; z-index: 3; max-width: 100%; }
    .hero-slide:has(.hero-custom-visual) .hero-copy { max-width: 61%; }
    .hero .eyebrow { font-size: 9px; letter-spacing: 1.25px; }
    .hero h1 { max-width: none; margin: 8px 0 10px; font-size: clamp(25px, 7.4vw, 31px); line-height: 1.06; letter-spacing: -.8px; }
    .hero p {
        display: -webkit-box;
        overflow: hidden;
        max-width: none;
        font-size: 12.5px;
        line-height: 1.48;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;
    }
    .hero-points { display: none; }
    .hero-ticket { display: none !important; }
    .hero-custom-visual {
        position: absolute;
        z-index: 2;
        right: -4px;
        bottom: 0;
        width: 44%;
        height: 94%;
        min-height: 0;
        padding: 0;
        border: 0;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
    }
    .hero-custom-visual img { width: 100%; height: 100%; max-height: none; object-fit: contain; object-position: right bottom; }
    .hero-slider-dots { bottom: 16px; gap: 6px; }
    .hero-slider-dots button { width: 7px; height: 7px; border-width: 1px; }
    .hero-slider-dots button.active { width: 20px; }
    .hero-slider .hero-grid { padding-bottom: 48px; }

    /* Booking discovery */
    .public-booking-section { padding: 27px 0 54px; }
    .public-section-heading { align-items: flex-start; margin-bottom: 17px; }
    .public-section-heading .eyebrow { font-size: 10px; }
    .public-section-heading h2 { margin-top: 4px; font-size: 25px; letter-spacing: -.6px; }
    .public-section-heading p { margin-top: 4px; font-size: 12px; }
    .ticket-lookup-link { align-self: flex-start; margin-top: 4px; font-size: 11px; white-space: nowrap; }
    .ticket-lookup-link span { display: none; }
    .date-scroll-shell { display: grid; grid-template-columns: 34px minmax(0,1fr) 34px; align-items: center; gap: 5px; margin-bottom: 14px; }
    .date-scroll-button {
        width: 34px;
        height: 42px;
        display: grid;
        place-items: center;
        border: 1px solid #d7e0ed;
        border-radius: 13px;
        color: #1b4d9f;
        background: #fff;
        font-size: 25px;
        box-shadow: 0 5px 12px rgba(24,55,100,.06);
    }
    .date-tabs {
        display: flex;
        gap: 8px;
        margin: 0;
        padding: 3px 1px 8px;
        overflow-x: auto;
        scrollbar-width: none;
        scroll-snap-type: x mandatory;
    }
    .date-tabs::-webkit-scrollbar { display: none; }
    .date-tab {
        min-width: 70px;
        flex: 0 0 70px;
        scroll-snap-align: center;
        padding: 10px 7px;
        border-radius: 15px;
        box-shadow: 0 6px 15px rgba(22,50,95,.045);
    }
    .date-tab small { font-size: 10px; }
    .date-tab strong { font-size: 20px; }
    .date-tab span { font-size: 10px; }
    .date-tab.active { box-shadow: 0 10px 23px rgba(21,87,214,.24); }
    .class-filter-bar { gap: 8px; margin: 0 0 14px; overflow-x: auto; scrollbar-width: none; }
    .class-filter-bar::-webkit-scrollbar { display: none; }
    .class-filter-bar button { flex: 0 0 auto; min-height: 37px; padding: 7px 17px; font-size: 12px; }

    /* Compact premium schedule cards */
    .public-class-grid { grid-template-columns: 1fr; gap: 13px; }
    .public-class-card {
        padding: 11px;
        border-top-width: 1px;
        border-radius: 21px;
        opacity: 0;
        transform: translateY(14px);
        box-shadow: 0 13px 30px rgba(15,48,98,.08);
    }
    .public-class-card.class-card-free { border-left: 4px solid #20ad6d; }
    .public-class-card.class-card-paid { border-left: 4px solid #efa927; }
    .class-card-shell { display: grid; grid-template-columns: 112px minmax(0,1fr); gap: 13px; align-items: stretch; }
    .class-theme-visual {
        min-height: 158px;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        border-radius: 16px;
        box-shadow: inset 0 0 0 1px rgba(255,255,255,.16), 0 9px 20px rgba(12,40,85,.14);
    }
    .class-theme-icon { font-size: 47px; filter: drop-shadow(0 9px 12px rgba(0,0,0,.18)); }
    .class-theme-visual small { position: absolute; inset: auto 8px 10px; color: rgba(255,255,255,.7); font-size: 7px; font-weight: 900; letter-spacing: .7px; text-align: center; }
    .class-theme-glow { position: absolute; width: 74px; height: 74px; border-radius: 50%; background: rgba(255,255,255,.18); filter: blur(20px); }
    .class-card-top { gap: 7px; }
    .class-type-badge { min-height: 23px; padding: 4px 8px; font-size: 8.5px; }
    .class-time { font-size: 12px; }
    .class-card-body { padding: 9px 0 8px; }
    .class-card-label-row { display: block; }
    .class-category { display: block; overflow: hidden; max-width: 100%; color: #42618f; font-size: 9px; line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; }
    .class-card-label-row .class-status { display: none; }
    .public-class-card h3 { margin: 4px 0 7px; font-size: 19px; line-height: 1.15; letter-spacing: -.3px; }
    .class-price-line { margin: 4px 0 7px; gap: 4px; line-height: 1.2; }
    .class-price-line strong { font-size: 14px; }
    .class-price-line span { overflow: hidden; max-width: 100%; font-size: 9px; white-space: nowrap; text-overflow: ellipsis; }
    .class-meta { display: grid; gap: 2px; font-size: 10px; line-height: 1.35; }
    .seat-progress { height: 5px; margin: 6px 0 9px; }
    .desktop-booking-action,
    .desktop-inline-booking-form { display: none !important; }
    .mobile-detail-action {
        min-height: 39px;
        display: flex;
        justify-content: space-between;
        padding: 8px 13px;
        border-radius: 12px;
        font-size: 11.5px;
        box-shadow: 0 7px 15px rgba(21,87,214,.17);
    }
    .public-empty-state { padding: 44px 18px; }

    /* Dedicated detail & booking screen */
    .class-detail-section { min-height: calc(100vh - 66px); padding: 16px 0 42px; }
    .class-detail-container { width: min(100% - 18px, 1080px); }
    .class-detail-back { margin: 2px 4px 12px; font-size: 12px; }
    .class-detail-grid { grid-template-columns: 1fr; gap: 13px; }
    .class-detail-summary-card,
    .class-detail-booking-card { border-radius: 22px; box-shadow: 0 14px 35px rgba(18,52,104,.08); }
    .class-detail-summary-card { position: static; }
    .class-detail-visual { min-height: 325px; padding: 20px; }
    .class-detail-icon { font-size: 88px; transform: translateY(-24px); }
    .class-detail-overlay { padding: 65px 19px 19px; }
    .class-detail-overlay h1 { margin: 9px 0 4px; font-size: 27px; }
    .class-detail-overlay p { font-size: 11.5px; }
    .class-detail-facts { grid-template-columns: repeat(2, minmax(0,1fr)); }
    .class-detail-facts > div { min-height: 73px; gap: 9px; padding: 13px 11px; }
    .detail-fact-icon { width: 34px; height: 34px; flex-basis: 34px; border-radius: 11px; font-size: 15px; }
    .class-detail-facts small { font-size: 8.5px; }
    .class-detail-facts strong { font-size: 11px; }
    .class-detail-price { margin: 13px; padding: 13px 15px; }
    .class-detail-price strong { font-size: 19px; }
    .class-detail-booking-card { padding: 19px 16px 18px; }
    .detail-booking-heading { gap: 11px; margin-bottom: 14px; padding-bottom: 15px; }
    .detail-booking-icon { width: 40px; height: 40px; flex-basis: 40px; border-radius: 12px; }
    .detail-booking-heading h2 { margin-top: 2px; font-size: 21px; }
    .detail-booking-heading p { font-size: 11.5px; }
    .detail-booking-form { margin: 0; padding: 0; }
    .detail-booking-fields { gap: 12px; }
    .detail-booking-fields input,
    .detail-booking-fields select { min-height: 49px; border-radius: 13px; }
    .detail-booking-consent { padding: 13px; font-size: 11px; }
    .detail-submit-button {
        position: sticky;
        bottom: max(8px, env(safe-area-inset-bottom));
        z-index: 5;
        min-height: 54px;
        box-shadow: 0 12px 28px rgba(21,87,214,.25);
    }
}

@media (max-width: 380px) {
    .class-card-shell { grid-template-columns: 98px minmax(0,1fr); gap: 10px; }
    .class-theme-visual { min-height: 148px; }
    .public-class-card h3 { font-size: 17px; }
    .public-section-heading h2 { font-size: 22px; }
    .hero-slide:has(.hero-custom-visual) .hero-copy { max-width: 65%; }
}

@media (prefers-reduced-motion: reduce) {
    .public-class-card,
    .public-mobile-menu,
    .public-menu-overlay { transition: none !important; }
}

/* ========================================================================== 
   UTEC EXTRA CLASS — PER-CLASS THEME IMAGE v2.7
   ========================================================================== */
.class-theme-image-editor {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 230px;
    gap: 26px;
    align-items: center;
    margin-top: 22px;
    padding: 22px;
    border: 1px solid #d9e5f5;
    border-radius: 22px;
    background: linear-gradient(145deg, #f8fbff, #eef5ff);
}
.class-theme-image-copy h3 { margin: 5px 0 7px; color: #102957; font-size: 20px; }
.class-theme-image-copy p { margin: 0; color: #667a9d; line-height: 1.65; }
.class-theme-image-kicker { color: #1761df; font-size: 11px; font-weight: 900; letter-spacing: 1.1px; text-transform: uppercase; }
.class-theme-image-copy ul { display: grid; gap: 6px; margin: 14px 0 17px; padding-left: 18px; color: #52698f; font-size: 13px; }
.class-theme-upload-button {
    width: fit-content;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 17px;
    border: 1px solid #1d64df;
    border-radius: 13px;
    color: #fff;
    background: linear-gradient(135deg, #216ce9, #1251c7);
    box-shadow: 0 9px 20px rgba(24,92,211,.18);
    cursor: pointer;
    font-weight: 900;
}
.class-theme-upload-button input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.class-theme-remove-option { display: flex; align-items: center; gap: 9px; margin-top: 13px; color: #9b3340; font-size: 13px; font-weight: 800; }
.class-theme-remove-option input { width: 17px; height: 17px; }
.class-theme-image-preview {
    position: relative;
    aspect-ratio: 3 / 4;
    overflow: hidden;
    border: 1px solid #cfdcf0;
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 14px 32px rgba(21,57,110,.13);
}
.class-theme-image-preview img { width: 100%; height: 100%; display: block; object-fit: cover; }
.class-theme-image-placeholder { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 18px; color: #7084a7; text-align: center; }
.class-theme-image-placeholder span { font-size: 36px; }
.class-theme-image-placeholder strong { color: #18345f; }
.class-theme-image-preview-badge { position: absolute; right: 10px; bottom: 10px; padding: 5px 8px; border-radius: 999px; color: #fff; background: rgba(8,25,57,.8); font-size: 10px; font-weight: 900; }
.class-theme-image-preview.has-dimension-warning { box-shadow: 0 0 0 3px rgba(223,62,79,.2), 0 14px 32px rgba(21,57,110,.13); }
.class-theme-image-preview.has-dimension-warning .class-theme-image-preview-badge { background: #c62e41; }

.class-theme-visual.has-theme-image,
.class-detail-visual.has-theme-image { background: #0a2455; }
.class-theme-visual.has-theme-image::before,
.class-theme-visual.has-theme-image::after,
.class-detail-visual.has-theme-image::before,
.class-detail-visual.has-theme-image::after { display: none; }
.class-theme-image,
.class-detail-theme-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
}
.class-theme-image-shade,
.class-detail-image-shade {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(1,14,39,.02) 40%, rgba(1,14,39,.58) 100%);
    pointer-events: none;
}
.class-detail-visual.has-theme-image { min-height: 560px; }
.class-detail-visual.has-theme-image .class-detail-overlay { z-index: 2; }

@media (max-width: 760px) {
    .class-theme-image-editor { grid-template-columns: 1fr; padding: 18px; }
    .class-theme-image-preview { width: min(230px, 100%); margin-inline: auto; }
    .class-theme-visual.has-theme-image { min-height: 158px; }
    .class-detail-visual.has-theme-image { min-height: 390px; }
}

@media (max-width: 380px) {
    .class-theme-visual.has-theme-image { min-height: 148px; }
    .class-detail-visual.has-theme-image { min-height: 360px; }
}

/* ========================================================================== 
   UTEC EXTRA CLASS — THEME IMAGE TRUE 3:4 FRAME v2.7.2
   Keeps 1080 × 1440 posters in their intended portrait proportion on mobile.
   ========================================================================== */
@media (max-width: 720px) {
    .public-class-card {
        padding: 11px 11px 62px;
    }

    .class-card-shell {
        grid-template-columns: clamp(108px, 34vw, 126px) minmax(0, 1fr);
        align-items: start;
    }

    .class-theme-visual,
    .class-theme-visual.has-theme-image {
        width: 100%;
        height: auto;
        min-height: 0;
        aspect-ratio: 3 / 4;
        align-self: start;
        border-radius: 17px;
    }

    .class-theme-image {
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: 50% 50%;
    }

    .class-theme-image-shade {
        background: linear-gradient(180deg, rgba(1,14,39,0) 65%, rgba(1,14,39,.16) 100%);
    }

    .mobile-detail-action {
        position: absolute;
        right: 11px;
        bottom: 11px;
        left: 11px;
        width: auto;
        margin: 0;
        z-index: 3;
    }
}

@media (max-width: 380px) {
    .class-card-shell {
        grid-template-columns: 104px minmax(0, 1fr);
    }

    .class-theme-visual,
    .class-theme-visual.has-theme-image {
        min-height: 0;
        aspect-ratio: 3 / 4;
    }
}

/* =========================================================
   UTEC EXTRA CLASS — JPEG Ticket Final v2.8.3
   Clean white landscape ticket with navy accents.
   ========================================================= */
.jpeg-ticket-page { background: #f3f6fa; }
.jpeg-ticket-section { min-height: calc(100vh - 120px); padding: 42px 0 72px; }
.jpeg-ticket-container { max-width: 1180px; }
.jpeg-ticket-success { margin-bottom: 22px; }
.jpeg-ticket-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 22px; }
.jpeg-ticket-heading h1 { margin: 4px 0 6px; color: #0d2b62; font-size: clamp(28px, 4vw, 44px); line-height: 1.05; }
.jpeg-ticket-heading p { margin: 0; color: #6c7890; }
.jpeg-ticket-code-chip { flex: 0 0 auto; padding: 11px 16px; border: 1px solid #d9e2ee; border-radius: 999px; color: #0d2b62; background: #fff; font-size: 13px; font-weight: 900; letter-spacing: .07em; box-shadow: 0 8px 20px rgba(29, 55, 96, .06); }
.jpeg-ticket-stage { position: relative; width: 100%; max-width: 1100px; margin: 0 auto; overflow: hidden; border-radius: 24px; filter: drop-shadow(0 20px 34px rgba(19, 42, 78, .13)); }
.jpeg-ticket-canvas { position: absolute; top: 0; left: 0; width: 1600px; height: 900px; transform-origin: top left; display: grid; grid-template-columns: 1240px 360px; overflow: hidden; color: #111827; background: #fff; border: 1px solid #e5ebf3; border-radius: 34px; font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif; }
.jpeg-ticket-main-panel { position: relative; display: flex; flex-direction: column; min-width: 0; padding: 48px 58px 26px; background: #fff; }
.jpeg-ticket-brand-row, .jpeg-ticket-details-grid, .jpeg-ticket-meta-grid, .jpeg-ticket-slogan { position: relative; z-index: 2; }
.jpeg-ticket-brand-row { display: grid; grid-template-columns: 360px minmax(0, 1fr); align-items: center; gap: 28px; min-height: 92px; }
.jpeg-ticket-brand { display: flex; align-items: center; gap: 16px; min-width: 0; }
.jpeg-ticket-brand img { display: block; max-width: 330px; max-height: 76px; width: auto; height: auto; object-fit: contain; object-position: left center; }
.jpeg-ticket-fallback-mark { display: grid; place-items: center; width: 72px; height: 72px; border-radius: 18px; color: #fff; background: linear-gradient(145deg, #1671ef, #0a3e9f); box-shadow: 0 8px 16px rgba(21, 87, 214, .20); font-size: 38px; font-weight: 900; }
.jpeg-ticket-brand > span:last-child { display: grid; gap: 3px; color: #0d2b62; }
.jpeg-ticket-brand strong { font-size: 30px; line-height: 1; }
.jpeg-ticket-brand small { font-size: 14px; color: #1762d6; font-weight: 900; letter-spacing: .16em; }
.jpeg-ticket-title-block { min-width: 0; padding-right: 18px; text-align: center; color: #0d2b62; }
.jpeg-ticket-title-block > strong { display: block; font-family: Georgia, "Times New Roman", serif; font-size: 43px; font-weight: 500; letter-spacing: .055em; white-space: nowrap; }
.jpeg-ticket-title-block > span { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 12px; color: #0d2b62; font-size: 11px; }
.jpeg-ticket-title-block i { display: block; width: 110px; border-top: 1px solid #9eabc0; }
.jpeg-ticket-title-block b { font-size: 9px; }
.jpeg-ticket-title-block em { font-style: normal; font-size: 18px; line-height: 1; }
.jpeg-ticket-details-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 40px; margin-top: 26px; }
.jpeg-ticket-detail-column:first-child { padding-right: 20px; border-right: 1px solid #dbe3ee; }
.jpeg-ticket-detail-column:last-child { padding-left: 2px; }
.jpeg-ticket-detail { display: grid; grid-template-columns: 56px minmax(0, 1fr); align-items: center; gap: 16px; min-height: 89px; padding: 12px 0; border-bottom: 1px solid #dde4ee; }
.jpeg-ticket-detail:last-child { border-bottom: 0; }
.jpeg-ticket-detail-icon { display: grid; place-items: center; width: 48px; height: 48px; color: #0d2b62; }
.jpeg-ticket-detail-icon::after { content: ''; width: 1px; height: 30px; margin-left: 13px; background: #bac6d7; }
.jpeg-ticket-detail-icon { grid-template-columns: 40px 1px; }
.jpeg-ticket-detail-icon svg { width: 38px; height: 38px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.jpeg-ticket-detail small, .jpeg-ticket-meta-item small { display: block; margin-bottom: 5px; color: #0d2b62; font-size: 13px; font-weight: 900; letter-spacing: .10em; }
.jpeg-ticket-detail strong { display: -webkit-box; overflow: hidden; color: #111827; font-size: 25px; font-weight: 500; line-height: 1.22; white-space: normal; word-break: break-word; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; max-height: 2.44em; }
.jpeg-ticket-watermark { position: absolute; right: 18px; bottom: 74px; z-index: 0; display: grid; justify-items: center; color: #0d2b62; opacity: .035; pointer-events: none; }
.jpeg-ticket-watermark-mark { display: grid; place-items: center; width: 235px; height: 235px; border: 18px solid currentColor; border-radius: 50%; font-size: 118px; font-weight: 900; line-height: 1; }
.jpeg-ticket-watermark small { margin-top: -18px; font-family: Georgia, "Times New Roman", serif; font-size: 58px; line-height: .8; letter-spacing: .04em; text-align: center; }
.jpeg-ticket-meta-grid { display: grid; grid-template-columns: 1fr 1fr; margin-top: 22px; border: 1px solid #0d2b62; border-radius: 22px; overflow: hidden; background: rgba(255,255,255,.96); }
.jpeg-ticket-meta-item { display: grid; grid-template-columns: 60px minmax(0, 1fr); align-items: center; gap: 14px; min-height: 88px; padding: 14px 22px; }
.jpeg-ticket-meta-item:nth-child(odd) { border-right: 1px solid #cbd5e3; }
.jpeg-ticket-meta-item:nth-child(-n+2) { border-bottom: 1px solid #cbd5e3; }
.jpeg-ticket-meta-icon { display: grid; place-items: center; width: 48px; height: 48px; color: #0d2b62; }
.jpeg-ticket-meta-icon svg { width: 38px; height: 38px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.jpeg-ticket-meta-item strong { display: block; color: #111827; font-size: 24px; font-weight: 500; line-height: 1.2; }
.jpeg-ticket-meta-item span:not(.jpeg-ticket-meta-icon) { display: block; margin-top: 3px; color: #6d7890; font-size: 14px; font-weight: 700; }
.jpeg-ticket-type.free { color: #15803d; }
.jpeg-ticket-type.paid { color: #0d2b62; }
.jpeg-ticket-slogan { display: flex; align-items: center; justify-content: center; gap: 12px; min-height: 54px; margin-top: auto; color: #0d2b62; font-family: Georgia, "Times New Roman", serif; }
.jpeg-ticket-slogan span { flex: 1; border-top: 1px solid #0d2b62; opacity: .75; }
.jpeg-ticket-slogan b { font-size: 9px; }
.jpeg-ticket-slogan em { font-size: 24px; font-style: italic; white-space: nowrap; }
.jpeg-ticket-stub { position: relative; display: flex; align-items: center; justify-content: center; padding: 42px 24px; border-left: 2px dashed #aab6c7; text-align: center; background: #fff; }
.jpeg-ticket-stub::before, .jpeg-ticket-stub::after { content: ''; position: absolute; left: -23px; width: 46px; height: 46px; border-radius: 50%; background: #f3f6fa; }
.jpeg-ticket-stub::before { top: -23px; }
.jpeg-ticket-stub::after { bottom: -23px; }
.jpeg-ticket-stub-card { width: 100%; height: 100%; padding: 34px 26px 28px; border: 1px solid #0d2b62; border-radius: 22px; display: flex; flex-direction: column; align-items: center; background: #fff; }
.jpeg-ticket-status-icon { display: grid; place-items: center; width: 78px; height: 78px; margin-bottom: 18px; border: 2px solid #0d2b62; border-radius: 50%; color: #0d2b62; font-size: 46px; font-weight: 400; }
.jpeg-ticket-stub > small, .jpeg-ticket-stub-card > small { color: #0d2b62; font-size: 16px; font-weight: 900; letter-spacing: .10em; }
.jpeg-ticket-status-text { margin-top: 8px; color: #0d2b62; font-family: Georgia, "Times New Roman", serif; font-size: 38px; font-weight: 500; letter-spacing: .025em; }
.jpeg-ticket-stub-separator { display: flex; align-items: center; gap: 10px; width: 100%; margin: 22px 0; color: #0d2b62; }
.jpeg-ticket-stub-separator span { flex: 1; border-top: 1px solid #0d2b62; opacity: .7; }
.jpeg-ticket-stub-separator b { font-size: 10px; }
.jpeg-ticket-qr-box { display: grid; place-items: center; width: 230px; height: 230px; padding: 12px; border: 1px solid #0d2b62; border-radius: 17px; background: #fff; }
.jpeg-ticket-qr-box img { display: block; width: 100%; height: 100%; object-fit: contain; }
.jpeg-ticket-stub-card p { margin: 20px 0 0; color: #0d2b62; font-size: 18px; line-height: 1.48; }
.jpeg-ticket-validity { margin-top: auto; color: #0d2b62; font-family: Georgia, "Times New Roman", serif; font-size: 17px; line-height: 1.45; }
.jpeg-ticket-validity em, .jpeg-ticket-validity span { display: block; }
.jpeg-ticket-validity span { font-style: italic; }
.jpeg-ticket-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; max-width: 820px; margin: 24px auto 0; }
.jpeg-ticket-actions .btn { min-height: 56px; font-size: 15px; }
.jpeg-ticket-actions .btn span { margin-right: 7px; font-size: 20px; }
.jpeg-ticket-share-note { max-width: 820px; margin: 13px auto 0; color: #748096; font-size: 13px; line-height: 1.5; text-align: center; }
.jpeg-ticket-qr-source { position: fixed; left: -9999px; top: 0; width: 280px; height: 280px; }
.jpeg-ticket-actions button:disabled { cursor: wait; opacity: .72; }

@media (max-width: 760px) {
    .jpeg-ticket-section { padding: 24px 0 56px; }
    .jpeg-ticket-heading { align-items: flex-start; flex-direction: column; gap: 12px; }
    .jpeg-ticket-heading p { font-size: 13px; }
    .jpeg-ticket-code-chip { font-size: 11px; }
    .jpeg-ticket-stage { border-radius: 12px; }
    .jpeg-ticket-actions { grid-template-columns: 1fr; }
    .jpeg-ticket-actions .btn { width: 100%; }
}

@media print {
    .jpeg-ticket-heading, .jpeg-ticket-actions, .jpeg-ticket-share-note, .jpeg-ticket-success { display: none !important; }
    .jpeg-ticket-section { padding: 0; }
    .jpeg-ticket-stage { max-width: none; filter: none; }
}

/* ========================================================================== 
   UTEC EXTRA CLASS — PUBLIC HOMEPAGE REDESIGN v2.9
   Parent-facing booking experience: premium, lively, and brand-consistent.
   ========================================================================== */
html { scroll-behavior: smooth; }
.sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.public-booking-page {
    background:
        radial-gradient(circle at 15% 48%, rgba(43, 112, 239, .075), transparent 25%),
        radial-gradient(circle at 92% 54%, rgba(117, 80, 220, .065), transparent 24%),
        #f6f9fe;
}
.public-site-header {
    position: sticky;
    top: 0;
    z-index: 85;
    border-bottom: 1px solid rgba(218, 226, 239, .9);
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 7px 25px rgba(17, 48, 96, .055);
    backdrop-filter: blur(16px);
}
.public-site-header .header-inner { min-height: 72px; }
.public-site-header .site-brand-logo {
    max-width: 250px;
    object-fit: contain;
    object-position: left center;
}
.public-desktop-nav-v29 {
    display: flex;
    align-items: center;
    gap: 25px;
    margin-left: auto;
}
.public-desktop-nav-v29 > a {
    position: relative;
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    color: #11294f;
    font-size: 13px;
    font-weight: 900;
    white-space: nowrap;
}
.public-desktop-nav-v29 > a:not(.public-nav-cta)::after {
    content: "";
    position: absolute;
    right: 0;
    bottom: 1px;
    left: 0;
    height: 2px;
    border-radius: 99px;
    background: #1761df;
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .2s ease;
}
.public-desktop-nav-v29 > a:not(.public-nav-cta):hover { color: #155ad3; }
.public-desktop-nav-v29 > a:not(.public-nav-cta):hover::after { transform: scaleX(1); }
.public-desktop-nav-v29 .public-nav-cta {
    min-height: 46px;
    gap: 8px;
    padding: 10px 19px;
    border-radius: 14px;
    color: #fff;
    background: linear-gradient(135deg, #216eed, #1255cf);
    box-shadow: 0 11px 25px rgba(24, 91, 211, .22);
    transition: transform .2s ease, box-shadow .2s ease;
}
.public-desktop-nav-v29 .public-nav-cta:hover {
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 30px rgba(24, 91, 211, .28);
}

.public-booking-page .hero-slider {
    box-shadow: inset 0 -1px rgba(255, 255, 255, .13);
}
.public-booking-page .hero::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: .32;
    background:
        radial-gradient(circle at 9% 16%, rgba(255,255,255,.24) 0 2px, transparent 3px),
        radial-gradient(circle at 88% 20%, rgba(255,255,255,.18) 0 2px, transparent 3px),
        radial-gradient(circle at 76% 72%, rgba(255,255,255,.15) 0 3px, transparent 4px);
    background-size: 180px 160px, 220px 190px, 260px 230px;
}
.public-booking-page .hero-copy h1 {
    text-wrap: balance;
    letter-spacing: -1.8px;
    text-shadow: 0 9px 30px rgba(1, 27, 83, .18);
}
.public-booking-page .hero-copy p { max-width: 720px; }
.public-booking-page .hero-points { gap: 22px; }
.public-booking-page .hero-points span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 900;
}

.public-booking-steps {
    position: relative;
    z-index: 12;
    margin-top: -62px;
}
.public-booking-steps-card {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid rgba(215, 224, 238, .9);
    border-radius: 25px;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 22px 48px rgba(19, 53, 105, .13);
}
.public-booking-steps-card article {
    position: relative;
    min-height: 120px;
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 25px 30px;
}
.public-booking-steps-card article + article::before {
    content: "";
    position: absolute;
    top: 26px;
    bottom: 26px;
    left: 0;
    border-left: 1px solid #e0e7f1;
}
.public-booking-steps-card .step-icon {
    width: 58px;
    height: 58px;
    flex: 0 0 58px;
    display: grid;
    place-items: center;
    border-radius: 18px;
    font-size: 20px;
    font-weight: 1000;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.48);
}
.step-blue { color: #1e64de; background: #eaf2ff; }
.step-green { color: #24a45a; background: #eaf9f0; }
.step-purple { color: #7656d9; background: #f1edff; }
.public-booking-steps-card strong {
    display: block;
    margin-bottom: 5px;
    color: #112a50;
    font-size: 18px;
    font-weight: 1000;
}
.public-booking-steps-card p {
    margin: 0;
    color: #667893;
    font-size: 13px;
    line-height: 1.55;
}

.public-schedule-section {
    padding: 66px 0 70px;
    background:
        linear-gradient(180deg, rgba(246,249,254,0), #f4f8fe 30%, #f7faff 100%);
}
.public-schedule-panel {
    position: relative;
    overflow: hidden;
    padding: 34px;
    border: 1px solid #dfe7f2;
    border-radius: 30px;
    background: rgba(255, 255, 255, .95);
    box-shadow: 0 20px 55px rgba(25, 61, 113, .08);
}
.public-schedule-panel::before,
.public-schedule-panel::after {
    content: "";
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
    filter: blur(2px);
}
.public-schedule-panel::before {
    width: 260px;
    height: 260px;
    top: -155px;
    right: -100px;
    background: rgba(45, 111, 232, .055);
}
.public-schedule-panel::after {
    width: 170px;
    height: 170px;
    bottom: -110px;
    left: -80px;
    background: rgba(116, 82, 220, .045);
}
.public-schedule-heading {
    position: relative;
    z-index: 1;
    align-items: flex-end;
    margin-bottom: 26px;
}
.public-schedule-heading h2 {
    margin-top: 6px;
    color: #10294e;
    font-size: clamp(30px, 3vw, 42px);
    letter-spacing: -1.3px;
}
.public-schedule-heading p { margin-top: 7px; }
.schedule-heading-actions {
    display: flex;
    align-items: center;
    gap: 13px;
}
.schedule-availability {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 9px 13px;
    border: 1px solid #d9e7dc;
    border-radius: 13px;
    color: #177b48;
    background: #f1fbf5;
    font-size: 12px;
    font-weight: 900;
}
.schedule-availability i {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #22ad63;
    box-shadow: 0 0 0 5px rgba(34, 173, 99, .1);
}
.ticket-lookup-button {
    min-height: 44px;
    gap: 8px;
    padding-inline: 16px;
    border-color: #c6d6ed;
    color: #1858bd;
    background: #fff;
}
.public-date-shell { margin-bottom: 22px; }
.public-date-tabs {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(115px, 1fr));
    gap: 11px;
    overflow: visible;
}
.public-date-tabs .date-tab {
    min-height: 112px;
    align-content: center;
    gap: 2px;
    padding: 14px 10px 12px;
    border-color: #d9e3f0;
    border-radius: 18px;
    box-shadow: 0 8px 21px rgba(25, 60, 111, .045);
}
.public-date-tabs .date-tab small { font-size: 12px; }
.public-date-tabs .date-tab strong { color: #122a50; font-size: 28px; }
.public-date-tabs .date-tab span { color: #6f7f98; }
.public-date-tabs .date-tab em {
    margin-top: 6px;
    color: #6d7e98;
    font-size: 10px;
    font-style: normal;
    font-weight: 900;
}
.public-date-tabs .date-tab.active {
    background: linear-gradient(145deg, #236fec, #1354cc);
    box-shadow: 0 15px 28px rgba(21, 87, 214, .25);
}
.public-date-tabs .date-tab.active strong,
.public-date-tabs .date-tab.active em { color: #fff; }
.public-date-tabs .date-tab.active small,
.public-date-tabs .date-tab.active span { color: rgba(255,255,255,.8); }
.public-filter-summary-row {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 22px;
}
.public-class-filter { margin: 0; }
.public-class-filter button {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 43px;
    padding: 9px 16px;
}
.public-class-filter button span {
    min-width: 24px;
    height: 24px;
    display: inline-grid;
    place-items: center;
    padding: 0 6px;
    border-radius: 999px;
    color: #31527f;
    background: #eef3fa;
    font-size: 10px;
}
.public-class-filter button.active span {
    color: #1857bf;
    background: #fff;
}
.schedule-summary {
    margin: 0;
    color: #687a95;
    font-size: 12px;
    font-weight: 800;
}
.schedule-summary span { margin-right: 6px; color: #245fc7; }

.public-premium-class-grid {
    position: relative;
    z-index: 1;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}
.public-premium-class-grid .public-class-card {
    position: relative;
    overflow: hidden;
    padding: 0;
    border: 1px solid #dce5f1;
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 11px 28px rgba(19, 52, 100, .075);
    transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.public-premium-class-grid .public-class-card:hover {
    transform: translateY(-6px);
    border-color: #c1d5f5;
    box-shadow: 0 22px 42px rgba(19, 52, 100, .14);
}
.public-premium-class-grid .class-card-shell { display: block; }
.public-premium-class-grid .class-theme-visual,
.public-premium-class-grid .class-theme-visual.has-theme-image {
    display: flex;
    width: 100%;
    min-height: 0;
    aspect-ratio: 4 / 3;
    border-radius: 0;
}
.public-premium-class-grid .class-theme-image { transition: transform .45s ease; }
.public-premium-class-grid .public-class-card:hover .class-theme-image { transform: scale(1.045); }
.public-premium-class-grid .class-theme-image-shade {
    background: linear-gradient(180deg, rgba(3,16,42,.04) 35%, rgba(3,16,42,.42) 100%);
}
.class-visual-type,
.class-visual-seat {
    position: absolute;
    z-index: 3;
    top: 12px;
}
.class-visual-type { left: 12px; }
.class-visual-seat {
    right: 12px;
    min-height: 28px;
    display: inline-flex;
    align-items: center;
    padding: 5px 9px;
    border-radius: 9px;
    color: #1d573c;
    background: rgba(255,255,255,.94);
    box-shadow: 0 5px 14px rgba(8, 28, 57, .12);
    font-size: 9px;
    font-weight: 1000;
}
.class-visual-seat.low { color: #9c4f00; background: #fff5e7; }
.public-premium-class-grid .class-card-content { padding: 17px; }
.public-premium-class-grid .class-card-body { padding: 0; }
.public-premium-class-grid .class-category {
    display: block;
    overflow: hidden;
    color: #3863a4;
    font-size: 10px;
    font-weight: 1000;
    letter-spacing: .45px;
    text-transform: uppercase;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.public-premium-class-grid h3 {
    min-height: 2.45em;
    margin: 7px 0 8px;
    color: #11294e;
    font-size: 20px;
    line-height: 1.22;
    letter-spacing: -.35px;
}
.premium-class-time {
    display: flex;
    align-items: center;
    gap: 6px;
    color: #536985;
    font-size: 12px;
    font-weight: 900;
}
.premium-class-time span { color: #1d61ce; }
.public-premium-class-grid .class-price-line {
    min-height: 42px;
    margin: 10px 0 9px;
    align-items: baseline;
    flex-wrap: wrap;
}
.public-premium-class-grid .class-price-line strong { font-size: 16px; }
.public-premium-class-grid .class-price-line span { font-size: 9.5px; }
.premium-class-meta {
    min-height: 38px;
    display: grid;
    gap: 3px;
    color: #6b7b92;
    font-size: 10.5px;
}
.public-premium-class-grid .seat-progress { margin: 13px 0 13px; }
.public-detail-action {
    min-height: 43px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-inline: 14px;
    border-radius: 13px;
    font-size: 12px;
}

.public-benefits-section {
    padding: 72px 0;
    background: #fff;
}
.public-benefits-heading {
    max-width: 760px;
    margin: 0 auto 34px;
    text-align: center;
}
.public-benefits-heading h2 {
    margin: 7px 0 10px;
    color: #11294e;
    font-size: clamp(30px, 3.3vw, 44px);
    line-height: 1.16;
    letter-spacing: -1.2px;
}
.public-benefits-heading p { margin: 0; color: #687994; line-height: 1.7; }
.public-benefits-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 17px;
}
.public-benefits-grid article {
    min-height: 210px;
    padding: 25px;
    border: 1px solid #e0e7f1;
    border-radius: 23px;
    background: linear-gradient(145deg, #fff, #f8fbff);
    box-shadow: 0 11px 29px rgba(23, 56, 105, .055);
}
.public-benefits-grid article > span {
    width: 51px;
    height: 51px;
    display: grid;
    place-items: center;
    margin-bottom: 18px;
    border-radius: 16px;
    background: #edf4ff;
    font-size: 23px;
}
.public-benefits-grid strong { display: block; margin-bottom: 8px; color: #15315c; font-size: 17px; }
.public-benefits-grid p { margin: 0; color: #718099; font-size: 13px; line-height: 1.65; }

.public-final-cta {
    padding: 34px 0 72px;
    background: #fff;
}
.public-final-cta-card {
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    padding: 38px 42px;
    border-radius: 28px;
    color: #fff;
    background: linear-gradient(135deg, #103e8d, #1761df 56%, #357fea);
    box-shadow: 0 22px 45px rgba(22, 83, 190, .22);
}
.public-final-cta-card::before,
.public-final-cta-card::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    background: rgba(255,255,255,.08);
}
.public-final-cta-card::before { width: 220px; height: 220px; right: -80px; top: -120px; }
.public-final-cta-card::after { width: 130px; height: 130px; left: 48%; bottom: -90px; }
.public-final-cta-card > * { position: relative; z-index: 1; }
.public-final-cta-card .eyebrow { color: #ffdd6b; }
.public-final-cta-card h2 { margin: 6px 0 7px; color: #fff; font-size: clamp(26px, 3vw, 38px); letter-spacing: -.8px; }
.public-final-cta-card p { margin: 0; color: rgba(255,255,255,.82); }
.public-final-cta-actions { display: flex; gap: 11px; flex: 0 0 auto; }
.public-final-cta-actions .btn { min-height: 48px; }
.public-final-cta-actions .btn-primary { color: #1454bf; background: #fff; box-shadow: none; }
.public-final-cta-actions .btn-light { color: #fff; border-color: rgba(255,255,255,.5); background: rgba(255,255,255,.09); }

@media (max-width: 1180px) {
    .public-desktop-nav-v29 { gap: 15px; }
    .public-desktop-nav-v29 > a { font-size: 11.5px; }
    .public-premium-class-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 930px) {
    .public-desktop-nav-v29 > a:nth-child(4) { display: none; }
    .public-booking-steps-card article { padding: 22px; }
    .public-premium-class-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .public-benefits-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
    .public-site-header .header-inner { min-height: 66px; }
    .public-booking-page .hero-copy h1 { letter-spacing: -.7px; }
    .public-booking-steps { margin-top: -25px; }
    .public-booking-steps-card {
        grid-template-columns: 1fr;
        border-radius: 21px;
    }
    .public-booking-steps-card article {
        min-height: 88px;
        gap: 14px;
        padding: 17px 18px;
    }
    .public-booking-steps-card article + article::before {
        top: 0;
        right: 18px;
        bottom: auto;
        left: 18px;
        border-top: 1px solid #e4eaf3;
        border-left: 0;
    }
    .public-booking-steps-card .step-icon {
        width: 46px;
        height: 46px;
        flex-basis: 46px;
        border-radius: 14px;
        font-size: 15px;
    }
    .public-booking-steps-card strong { margin-bottom: 2px; font-size: 15px; }
    .public-booking-steps-card p { font-size: 11px; }
    .public-schedule-section { padding: 35px 0 45px; }
    .public-schedule-panel {
        margin-inline: -3px;
        padding: 20px 15px;
        border-radius: 24px;
    }
    .public-schedule-heading { align-items: flex-start; }
    .public-schedule-heading h2 { font-size: 25px; }
    .schedule-heading-actions { width: 100%; justify-content: space-between; }
    .schedule-availability { min-height: 38px; font-size: 10px; }
    .ticket-lookup-button { min-height: 38px; padding: 7px 12px; font-size: 10px; }
    .public-date-shell { margin-inline: -1px; }
    .public-date-tabs {
        display: flex;
        gap: 9px;
        overflow-x: auto;
        padding: 3px 4px 8px;
        scroll-snap-type: x proximity;
        scrollbar-width: none;
    }
    .public-date-tabs::-webkit-scrollbar { display: none; }
    .public-date-tabs .date-tab {
        min-width: 85px;
        min-height: 96px;
        flex: 0 0 85px;
        scroll-snap-align: start;
        border-radius: 16px;
    }
    .public-date-tabs .date-tab strong { font-size: 23px; }
    .public-filter-summary-row { align-items: flex-start; flex-direction: column; gap: 10px; }
    .public-class-filter { width: 100%; overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; }
    .public-class-filter::-webkit-scrollbar { display: none; }
    .schedule-summary { font-size: 10.5px; }
    .public-premium-class-grid { grid-template-columns: 1fr; gap: 13px; }
    .public-premium-class-grid .public-class-card {
        padding: 11px 11px 61px;
        border-radius: 23px;
    }
    .public-premium-class-grid .class-card-shell {
        display: grid;
        grid-template-columns: clamp(108px, 34vw, 126px) minmax(0, 1fr);
        gap: 13px;
        align-items: start;
    }
    .public-premium-class-grid .class-theme-visual,
    .public-premium-class-grid .class-theme-visual.has-theme-image {
        aspect-ratio: 3 / 4;
        border-radius: 17px;
    }
    .public-premium-class-grid .class-card-content { padding: 0; }
    .class-visual-type { top: 8px; left: 8px; }
    .class-visual-seat { display: none; }
    .public-premium-class-grid h3 { min-height: 0; margin: 5px 0 6px; font-size: 18px; }
    .public-premium-class-grid .class-price-line { min-height: 0; margin: 5px 0 6px; }
    .premium-class-meta { min-height: 0; font-size: 10px; }
    .public-premium-class-grid .seat-progress { margin: 7px 0 8px; }
    .public-detail-action {
        position: absolute;
        right: 11px;
        bottom: 11px;
        left: 11px;
        z-index: 3;
        min-height: 39px;
    }
    .public-benefits-section { padding: 48px 0; }
    .public-benefits-heading { margin-bottom: 22px; text-align: left; }
    .public-benefits-heading h2 { font-size: 27px; }
    .public-benefits-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
    .public-benefits-grid article { min-height: 185px; padding: 18px; border-radius: 19px; }
    .public-benefits-grid article > span { width: 43px; height: 43px; margin-bottom: 13px; border-radius: 13px; font-size: 19px; }
    .public-benefits-grid strong { font-size: 14px; }
    .public-benefits-grid p { font-size: 11px; }
    .public-final-cta { padding: 16px 0 48px; }
    .public-final-cta-card {
        align-items: flex-start;
        flex-direction: column;
        padding: 27px 23px;
        border-radius: 24px;
    }
    .public-final-cta-card h2 { font-size: 28px; }
    .public-final-cta-actions { width: 100%; }
    .public-final-cta-actions .btn { flex: 1; font-size: 11px; }
}

@media (max-width: 430px) {
    .public-benefits-grid { grid-template-columns: 1fr; }
    .public-benefits-grid article { min-height: auto; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .public-premium-class-grid .public-class-card,
    .public-premium-class-grid .class-theme-image,
    .public-desktop-nav-v29 .public-nav-cta { transition: none !important; }
}

/* =========================================================
   UTEC Homepage Content Builder v3.0
   ========================================================= */
body.public-booking-page { font-family: var(--hp-font, Nunito), sans-serif; background: var(--hp-background, #f5f8fd); }
.public-site-header.is-sticky { position: sticky; top: 0; z-index: 120; }
.homepage-preview-banner { position: sticky; top: 0; z-index: 1000; display:flex; justify-content:center; gap:14px; padding:8px 16px; color:#fff; background:#7a4ce0; font-size:13px; font-weight:800; }
.homepage-preview-banner a { color:#fff; text-decoration:underline; }
.public-desktop-nav-v30 a { color:#102548; }
.public-desktop-nav-v30 .public-nav-cta { color:#fff; background:var(--hp-primary); }
.mobile-menu-cta { color:#fff!important; background:var(--hp-primary); border-radius:14px; }

.hero-builder-slider-v30 { position:relative; overflow:hidden; background:var(--hp-navy); }
.hero-builder-slide { position:relative; flex:0 0 100%; min-width:100%; background:linear-gradient(112deg,var(--hb-start),var(--hb-middle) 52%,var(--hb-end)); overflow:hidden; }
.hero-builder-slide::before { content:""; position:absolute; inset:0; opacity:.12; background:radial-gradient(circle at 12% 20%,#fff 0 2px,transparent 3px),radial-gradient(circle at 85% 70%,#fff 0 2px,transparent 3px); background-size:90px 90px,130px 130px; }
.hero-builder-stage { position:relative; width:min(100%,1600px); height:var(--hb-desktop-height); margin:auto; overflow:hidden; }
.hero-builder-stage-mobile { display:none; height:var(--hb-mobile-height); }
.hero-builder-element { position:absolute; z-index:2; line-height:1.2; }
.hero-builder-eyebrow { text-transform:uppercase; letter-spacing:.14em; font-weight:900; }
.hero-builder-title { font-weight:900; letter-spacing:-.035em; }
.hero-builder-description { line-height:1.55; font-weight:600; }
.hero-builder-points { font-weight:800; }
.hero-builder-image img { display:block; width:100%; height:100%; }
.hero-builder-button { display:grid; place-items:center; min-height:48px; padding:10px 18px; border-radius:14px; font-weight:900; box-shadow:0 14px 28px rgba(0,0,0,.15); }
.public-builder-section-heading { max-width:760px; margin:0 auto 24px; text-align:center; }
.public-builder-section-heading h2 { margin:8px 0; color:#102548; font-size:clamp(28px,4vw,42px); }
.public-builder-section-heading p { margin:0; color:#71809a; }
.builder-step-icon { position:relative; background:color-mix(in srgb,var(--step-color) 13%,white)!important; color:var(--step-color)!important; }
.builder-step-icon b { font-size:24px; }
.builder-step-icon i { position:absolute; right:-8px; bottom:-6px; display:grid; place-items:center; min-width:30px; height:24px; padding:0 6px; border-radius:999px; color:#fff; background:var(--step-color); font-size:11px; font-style:normal; font-weight:900; }
.public-premium-class-grid { grid-template-columns:repeat(var(--public-card-columns,3),minmax(0,1fr)); }
.public-benefits-grid article { border-radius:var(--hp-radius); }
.public-benefits-grid article > span { color:var(--benefit-color); background:color-mix(in srgb,var(--benefit-color) 12%,white); }
.public-final-cta-card { background:linear-gradient(120deg,var(--cta-start,#12469c),var(--cta-end,#327ff0)); border-radius:var(--hp-radius); }

/* Admin builder shared */
.hp-builder-heading-actions { display:flex; flex-wrap:wrap; gap:10px; }
.hp-builder-form,.hb-form { padding-bottom:92px; }
.hp-builder-layout { display:grid; grid-template-columns:220px minmax(0,1fr); gap:20px; align-items:start; }
.hp-builder-sections { position:sticky; top:92px; display:grid; gap:6px; padding:12px; border:1px solid #dfe7f2; border-radius:20px; background:#fff; box-shadow:0 12px 28px rgba(21,50,94,.06); }
.hp-builder-sections button,.hp-builder-sections a { width:100%; padding:12px 14px; border:0; border-radius:12px; color:#52627d; background:transparent; font:inherit; font-weight:800; text-align:left; cursor:pointer; }
.hp-builder-sections button:hover,.hp-builder-sections button.active,.hp-builder-sections a:hover { color:#fff; background:linear-gradient(135deg,#1761dc,#2e7cf3); }
.hp-builder-editor { min-width:0; }
.hp-editor-panel { display:none; padding:26px; border:1px solid #dfe7f2; border-radius:24px; background:#fff; box-shadow:0 12px 28px rgba(21,50,94,.06); }
.hp-editor-panel.active { display:block; }
.hp-panel-title { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:24px; padding-bottom:18px; border-bottom:1px solid #e7edf5; }
.hp-panel-title > div { display:flex; align-items:center; gap:12px; }
.hp-panel-title > div > span { display:grid; place-items:center; width:38px; height:38px; border-radius:12px; color:#fff; background:#1761dc; font-weight:900; }
.hp-panel-title h2 { margin:0; color:#102548; font-size:23px; }
.hp-panel-title p { max-width:460px; margin:4px 0 0; color:#71809a; font-size:13px; text-align:right; }
.hp-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-bottom:14px; }
.hp-form-grid.three { grid-template-columns:repeat(3,minmax(0,1fr)); }
.hp-form-grid.four { grid-template-columns:repeat(4,minmax(0,1fr)); }
.hp-form-grid.compact { gap:9px; margin-bottom:9px; }
.hp-editor-panel label,.hb-properties label,.hp-media-upload label { display:grid; gap:7px; color:#233957; font-size:13px; font-weight:800; }
.hp-editor-panel input[type=text],.hp-editor-panel input[type=number],.hp-editor-panel select,.hp-editor-panel textarea,.hb-properties input[type=text],.hb-properties input[type=number],.hb-properties select,.hb-properties textarea,.hp-media-upload input[type=file] { width:100%; border:1px solid #d7e1ee; border-radius:12px; padding:11px 12px; color:#102548; background:#fbfdff; font:inherit; font-weight:600; }
.hp-editor-panel textarea,.hb-properties textarea { resize:vertical; }
.hp-editor-panel input[type=color],.hb-properties input[type=color] { width:100%; min-height:44px; border:1px solid #d7e1ee; border-radius:10px; padding:4px; background:#fff; }
.hp-checkbox { display:flex!important; grid-template-columns:auto 1fr; align-items:center; justify-content:flex-start; gap:8px!important; }
.hp-toggle-row { display:flex; flex-wrap:wrap; gap:10px; margin:14px 0 18px; }
.hp-toggle-row label { display:flex; align-items:center; gap:7px; padding:10px 13px; border:1px solid #dfe7f2; border-radius:999px; background:#f8fbff; }
.hp-repeater { display:grid; gap:10px; margin:14px 0 20px; }
.hp-repeater-item { display:grid; grid-template-columns:85px 1fr 1fr; gap:10px; align-items:end; padding:12px; border:1px solid #e0e7f0; border-radius:16px; background:#f9fbfe; }
.hp-card-editor-grid { display:grid; gap:14px; margin-top:16px; }
.hp-card-editor-grid.two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.hp-card-editor-grid.three { grid-template-columns:repeat(3,minmax(0,1fr)); }
.hp-card-editor { display:grid; gap:10px; padding:16px; border:1px solid #dfe7f2; border-radius:18px; background:#f9fbfe; }
.hp-card-editor-top { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.hp-card-editor-top input[type=color] { width:54px; min-height:36px; }
.hp-live-preview { margin-top:20px; padding:24px; border-radius:22px; background:#f4f8fe; }
.hp-global-preview article { max-width:560px; margin:auto; padding:24px; border-radius:var(--hp-radius); background:#fff; box-shadow:0 12px 30px rgba(19,58,116,.08); }
.hp-global-preview span { color:var(--hp-primary); font-weight:900; text-transform:uppercase; }
.hp-global-preview h3 { color:var(--hp-navy); font-size:28px; }
.hp-global-preview button { border:0; border-radius:12px; padding:12px 18px; color:#fff; background:var(--hp-primary); font-weight:900; }
.hp-cta-preview { color:#fff; background:linear-gradient(120deg,var(--cta-start),var(--cta-end)); }
.hp-cta-preview span { color:#ffe175; font-weight:900; text-transform:uppercase; }
.hp-cta-preview h3 { margin:8px 0; color:#fff; font-size:28px; }
.hp-cta-preview p { margin:0; color:#eaf2ff; }
.hp-builder-savebar { position:fixed; right:22px; bottom:18px; left:calc(260px + 22px); z-index:80; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:14px 18px; border:1px solid #d7e1ee; border-radius:18px; background:rgba(255,255,255,.96); box-shadow:0 18px 42px rgba(20,48,92,.18); backdrop-filter:blur(12px); }
.hp-builder-savebar > div:first-child { display:grid; gap:2px; }
.hp-builder-savebar > div:first-child span { color:#71809a; font-size:12px; }
.hp-builder-savebar > div:last-child { display:flex; gap:9px; }

/* Header Visual Builder */
.hb-toolbar-card { display:grid; grid-template-columns:1fr auto; gap:12px 18px; margin-bottom:18px; padding:14px; border:1px solid #dfe7f2; border-radius:20px; background:#fff; }
.hb-slide-tabs,.hb-device-tabs,.hb-general-options { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.hb-slide-tabs button,.hb-device-tabs button { border:1px solid #d9e3f0; border-radius:11px; padding:9px 14px; color:#4d5f7c; background:#f8fbff; font-weight:900; cursor:pointer; }
.hb-slide-tabs button.active,.hb-device-tabs button.active { color:#fff; border-color:#1761dc; background:#1761dc; }
.hb-general-options { grid-column:1/-1; padding-top:10px; border-top:1px solid #e7edf5; }
.hb-general-options label { display:flex; align-items:center; gap:6px; color:#52627d; font-size:12px; font-weight:800; }
.hb-general-options input[type=number] { width:58px; padding:6px; border:1px solid #d9e3f0; border-radius:8px; }
.hb-workspace { display:grid; grid-template-columns:330px minmax(0,1fr); gap:18px; align-items:start; }
.hb-properties { max-height:calc(100vh - 190px); overflow:auto; padding:16px; border:1px solid #dfe7f2; border-radius:20px; background:#fff; }
.hb-slide-properties,.hb-mode-properties { display:none; }
.hb-slide-properties.active,.hb-mode-properties.active { display:block; }
.hb-property-group { display:grid; gap:10px; margin-bottom:16px; padding-bottom:16px; border-bottom:1px solid #e8edf4; }
.hb-property-group h3 { margin:0; color:#102548; font-size:16px; }
.hb-element-editor { margin-bottom:10px; border:1px solid #dfe7f2; border-radius:14px; background:#fbfdff; }
.hb-element-editor summary { padding:11px 13px; color:#233957; font-weight:900; cursor:pointer; }
.hb-element-editor > label,.hb-element-editor > div { margin:0 12px 12px; }
.hb-canvas-area { min-width:0; }
.hb-canvas-help { display:flex; justify-content:space-between; gap:12px; margin-bottom:9px; color:#75829a; font-size:12px; }
.hb-canvas-shell { display:none; overflow:auto; padding:18px; border:1px solid #dfe7f2; border-radius:20px; background:#e9eef6; }
.hb-canvas-shell.active { display:block; }
.hb-canvas { position:relative; width:min(100%,1100px); height:var(--hb-height); margin:auto; overflow:hidden; border-radius:16px; background:linear-gradient(115deg,var(--hb-start),var(--hb-middle) 52%,var(--hb-end)); box-shadow:0 20px 40px rgba(20,47,91,.18); }
.hb-canvas.mobile { max-width:430px; }
.hb-canvas-element { position:absolute; z-index:2; min-width:30px; min-height:24px; outline:1px dashed rgba(255,255,255,.5); cursor:move; touch-action:none; user-select:none; }
.hb-canvas-element:hover { outline:2px solid #ffd95a; }
.hb-canvas-element i { position:absolute; right:-7px; bottom:-7px; width:15px; height:15px; border:2px solid #fff; border-radius:4px; background:#1761dc; cursor:nwse-resize; }
.hb-text-element { line-height:1.18; font-weight:800; }
.hb-text-element[data-hb-element=title] { font-weight:900; }
.hb-image-element img { width:100%; height:100%; display:block; }
.hb-image-placeholder { display:grid; place-items:center; width:100%; height:100%; min-height:100px; color:#fff; border:2px dashed rgba(255,255,255,.65); background:rgba(255,255,255,.12); }
.hb-button-element { display:grid; place-items:center; min-height:44px; border-radius:12px; font-weight:900; }
.hb-button-element.is-hidden { opacity:.25; }

/* Versions & media */
.hp-version-list { display:grid; gap:10px; }
.hp-version-list article { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 16px; border:1px solid #e1e8f1; border-radius:15px; background:#fbfdff; }
.hp-version-list article > div { display:grid; gap:3px; }
.hp-version-list span { color:#728098; font-size:12px; }
.hp-media-upload form { display:flex; align-items:end; gap:14px; }
.hp-media-upload label { flex:1; }
.hp-media-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:18px; }
.hp-media-grid article { overflow:hidden; border:1px solid #dfe7f2; border-radius:18px; background:#fff; box-shadow:0 12px 28px rgba(21,50,94,.06); }
.hp-media-grid img { width:100%; aspect-ratio:16/10; object-fit:cover; background:#eef3fa; }
.hp-media-grid article > div { display:grid; gap:5px; padding:13px; }
.hp-media-grid span,.hp-media-grid code { color:#71809a; font-size:11px; overflow-wrap:anywhere; }
.hp-media-grid form { padding:0 13px 13px; }

@media (max-width: 1050px) {
  .hp-builder-layout,.hb-workspace { grid-template-columns:1fr; }
  .hp-builder-sections { position:static; grid-template-columns:repeat(3,minmax(0,1fr)); }
  .hb-properties { max-height:none; }
  .hp-builder-savebar { left:18px; right:18px; }
  .hp-card-editor-grid.three { grid-template-columns:1fr; }
  .hp-media-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 760px) {
  .hero-builder-stage-desktop { display:none; }
  .hero-builder-stage-mobile { display:block; }
  .hero-builder-title { line-height:1.08; }
  .public-premium-class-grid { grid-template-columns:1fr; }
  .hp-builder-sections { display:flex; overflow:auto; }
  .hp-builder-sections button,.hp-builder-sections a { flex:0 0 auto; }
  .hp-editor-panel { padding:18px; }
  .hp-panel-title { display:block; }
  .hp-panel-title p { text-align:left; }
  .hp-form-grid,.hp-form-grid.three,.hp-form-grid.four,.hp-card-editor-grid.two,.hp-repeater-item { grid-template-columns:1fr; }
  .hp-builder-savebar { flex-direction:column; align-items:stretch; }
  .hp-builder-savebar > div:last-child { display:grid; grid-template-columns:1fr 1fr; }
  .hp-builder-savebar .btn:first-child { display:none; }
  .hb-toolbar-card { grid-template-columns:1fr; }
  .hb-device-tabs { justify-content:flex-start; }
  .hb-canvas-shell { padding:8px; }
  .hp-media-grid { grid-template-columns:1fr; }
  .hp-media-upload form { flex-direction:column; align-items:stretch; }
}

/* ========================================================================== 
   UTEC EXTRA CLASS — Navbar + Schedule Stability Patch v3.0.1
   Approved public navbar refinement and horizontal-scroll bug fix.
   ========================================================================== */
html,
body {
    width: 100%;
    max-width: 100%;
    overflow-x: clip;
}
@supports not (overflow: clip) {
    html,
    body { overflow-x: hidden; }
}

/* Refined public navbar */
.public-site-header {
    border-bottom: 1px solid #e8eef7;
    background: rgba(255, 255, 255, .95);
    box-shadow: 0 10px 30px rgba(18, 49, 94, .07);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
}
.public-site-header .header-inner {
    width: min(1240px, calc(100% - 40px));
    min-height: 80px;
    gap: 28px;
}
.public-site-header .brand {
    flex: 0 1 auto;
    min-width: 0;
}
.public-site-header .site-brand-logo {
    width: auto;
    height: 50px !important;
    max-width: 245px;
    object-fit: contain;
    object-position: left center;
}
.public-desktop-nav-refined {
    display: flex;
    align-items: center;
    gap: clamp(20px, 2vw, 32px);
    margin-left: auto;
}
.public-desktop-nav-refined > a {
    position: relative;
    min-height: 48px;
    padding: 0;
    color: #102548;
    font-size: 14px;
    font-weight: 650;
    letter-spacing: -.01em;
    white-space: nowrap;
}
.public-desktop-nav-refined > a:not(.public-nav-cta)::after {
    right: 0;
    bottom: 0;
    left: 0;
    height: 3px;
    border-radius: 99px;
    background: #1761df;
}
.public-desktop-nav-refined > a:not(.public-nav-cta).is-active {
    color: #155ad3;
}
.public-desktop-nav-refined > a:not(.public-nav-cta).is-active::after {
    transform: scaleX(1);
}
.public-desktop-nav-refined .public-nav-cta {
    min-height: 50px;
    gap: 10px;
    padding: 11px 20px;
    border: 0;
    border-radius: 14px;
    color: #fff;
    background: linear-gradient(135deg, #2575f3, #1558d4);
    box-shadow: 0 12px 26px rgba(22, 91, 216, .24);
}
.public-desktop-nav-refined .public-nav-cta svg,
.mobile-menu-cta svg {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.9;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.public-desktop-nav-refined .public-nav-cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 32px rgba(22, 91, 216, .3);
}
.mobile-menu-cta {
    display: flex !important;
    align-items: center;
    gap: 10px;
}

/* Keep the entire schedule module within the viewport on every active date. */
.public-booking-page,
.public-schedule-section,
.public-schedule-section .container,
.public-schedule-panel,
.public-schedule-heading,
.schedule-heading-actions,
.public-date-shell,
.public-date-tabs,
.public-filter-summary-row,
.public-class-filter,
.public-premium-class-grid,
.public-premium-class-grid .public-class-card {
    min-width: 0;
    max-width: 100%;
}
.public-schedule-section .container {
    overflow: visible;
}
.public-schedule-panel {
    width: 100%;
    overflow: hidden;
}
.public-date-shell {
    width: 100%;
    overflow: hidden;
}
.public-date-tabs {
    width: 100%;
    min-width: 0;
}
.public-date-tabs .date-tab {
    min-width: 0;
}
.public-filter-summary-row,
.public-premium-class-grid {
    width: 100%;
}
.public-premium-class-grid > * {
    min-width: 0;
}

@media (max-width: 1180px) {
    .public-site-header .header-inner {
        width: min(1120px, calc(100% - 30px));
        gap: 20px;
    }
    .public-site-header .site-brand-logo {
        height: 46px !important;
        max-width: 215px;
    }
    .public-desktop-nav-refined {
        gap: 18px;
    }
    .public-desktop-nav-refined > a {
        font-size: 12.5px;
    }
    .public-desktop-nav-refined .public-nav-cta {
        padding-inline: 16px;
    }
}

@media (max-width: 930px) {
    .public-site-header .header-inner {
        min-height: 72px;
    }
    .public-site-header .site-brand-logo {
        height: 43px !important;
        max-width: 200px;
    }
}

@media (max-width: 720px) {
    .public-site-header .header-inner {
        width: calc(100% - 28px);
        min-height: 68px;
        gap: 12px;
    }
    .public-site-header .site-brand-logo {
        height: 40px !important;
        max-width: min(230px, 72vw);
    }
    .public-menu-button {
        flex: 0 0 auto;
    }
    .public-schedule-panel {
        overflow: hidden;
    }
    .public-date-shell {
        display: grid;
        grid-template-columns: 34px minmax(0, 1fr) 34px;
        overflow: visible;
    }
    .public-date-tabs {
        overflow-x: auto;
        overscroll-behavior-inline: contain;
        -webkit-overflow-scrolling: touch;
    }
    .public-filter-summary-row {
        overflow: visible;
    }
    .public-class-filter {
        max-width: 100%;
    }
}

/* =========================================================
   UTEC EXTRA CLASS v3.0.3 – forced navbar + mobile hero fix
   This block intentionally uses stronger selectors because
   Header Visual Builder writes element coordinates inline.
   ========================================================= */

/* Desktop navigation: move menu labels down to the visual center. */
@media (min-width: 931px) {
    .public-site-header .header-inner {
        min-height: 82px !important;
        align-items: center !important;
    }
    .public-desktop-nav-refined {
        align-self: stretch;
        align-items: center !important;
    }
    .public-desktop-nav-refined > a:not(.public-nav-cta) {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        min-height: 54px !important;
        padding-top: 7px !important;
        line-height: 1 !important;
        transform: translateY(4px) !important;
    }
    .public-desktop-nav-refined > a:not(.public-nav-cta)::after {
        bottom: 2px !important;
    }
    .public-desktop-nav-refined .public-nav-cta {
        transform: translateY(1px);
    }
}

/* Points remain simple on desktop, but are now split safely. */
.hero-builder-stage-desktop .hero-builder-points {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
}
.hero-builder-stage-desktop .hero-point-chip {
    display: inline-flex;
    align-items: center;
}
.hero-builder-stage-desktop .hero-point-chip + .hero-point-chip::before {
    content: "•";
    margin-right: 18px;
    opacity: .7;
}

@media (max-width: 760px) {
    /* Compact public navbar matching the approved preview. */
    .public-site-header {
        background: rgba(255,255,255,.98) !important;
        box-shadow: 0 1px 0 rgba(16,37,72,.07) !important;
        backdrop-filter: blur(14px);
    }
    .public-site-header .header-inner {
        width: calc(100% - 22px) !important;
        min-height: 76px !important;
        align-items: center !important;
        gap: 10px !important;
    }
    .public-site-header .brand {
        min-width: 0;
        flex: 1 1 auto;
    }
    .public-site-header .site-brand-logo {
        display: block;
        height: 43px !important;
        width: auto !important;
        max-width: min(250px, 75vw) !important;
        object-fit: contain !important;
        object-position: left center !important;
    }
    .public-menu-button {
        display: grid !important;
        place-content: center;
        gap: 5px;
        width: 54px !important;
        height: 54px !important;
        flex: 0 0 54px !important;
        border: 0 !important;
        border-radius: 18px !important;
        color: #183a70 !important;
        background: linear-gradient(180deg,#f8fbff,#edf3fb) !important;
        box-shadow: 0 10px 24px rgba(25,58,112,.11) !important;
    }
    .public-menu-button span {
        width: 25px !important;
        height: 3px !important;
        border-radius: 99px !important;
    }

    /* Turn the mobile hero into a compact rounded card. */
    .hero-builder-slider-v30 {
        padding: 14px 0 22px !important;
        background: #f2f6fc !important;
        overflow: hidden !important;
    }
    .hero-builder-slider-v30 .hero-slider-track {
        align-items: stretch;
    }
    .hero-builder-slider-v30 .hero-builder-slide {
        padding: 0 12px !important;
        background: transparent !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile {
        display: block !important;
        position: relative !important;
        width: 100% !important;
        height: 520px !important;
        min-height: 520px !important;
        margin: 0 auto !important;
        padding: 0 !important;
        overflow: hidden !important;
        border-radius: 25px !important;
        background: linear-gradient(125deg,var(--hb-start),var(--hb-middle) 56%,var(--hb-end)) !important;
        box-shadow: 0 18px 34px rgba(20,70,157,.18) !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile::before {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;
        opacity: .18;
        background:
          radial-gradient(circle at 8% 14%,#fff 0 2px,transparent 3px),
          radial-gradient(circle at 89% 18%,#fff 0 2px,transparent 3px),
          radial-gradient(circle at 76% 62%,#fff 0 2px,transparent 3px);
        background-size: 88px 88px, 118px 118px, 102px 102px;
    }

    /* Override builder's inline positions so content cannot overlap. */
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-eyebrow {
        left: 7% !important;
        top: 8% !important;
        width: 86% !important;
        font-size: 11px !important;
        line-height: 1.35 !important;
        letter-spacing: .14em !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-title {
        left: 7% !important;
        top: 17% !important;
        width: 86% !important;
        max-width: none !important;
        font-size: clamp(31px,9.2vw,42px) !important;
        line-height: 1.05 !important;
        letter-spacing: -.035em !important;
        text-wrap: balance;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-description {
        left: 7% !important;
        top: 43% !important;
        width: 86% !important;
        max-width: none !important;
        display: -webkit-box;
        overflow: hidden;
        font-size: 14px !important;
        line-height: 1.55 !important;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 4;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-points {
        left: 7% !important;
        top: 67% !important;
        width: 57% !important;
        max-width: 57% !important;
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 8px !important;
        font-size: 11px !important;
        line-height: 1 !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-point-chip {
        display: inline-flex;
        align-items: center;
        min-height: 34px;
        padding: 8px 12px;
        border: 1px solid rgba(255,255,255,.35);
        border-radius: 999px;
        color: #12315e;
        background: rgba(255,255,255,.92);
        box-shadow: 0 8px 18px rgba(12,43,98,.12);
        font-weight: 900;
        white-space: nowrap;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-point-chip:nth-child(1)::before { content:"★"; color:#28a86b; margin-right:6px; }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-point-chip:nth-child(2)::before { content:"☺"; color:#e3a800; margin-right:6px; }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-point-chip:nth-child(3)::before { content:"♡"; color:#7457dc; margin-right:6px; }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-image {
        left: 55% !important;
        top: 64% !important;
        width: 38% !important;
        height: 31% !important;
        filter: drop-shadow(0 12px 22px rgba(0,0,0,.17));
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-image img {
        width: 100% !important;
        height: 100% !important;
        object-fit: contain !important;
        object-position: right bottom !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-button {
        display: none !important;
    }
    .hero-builder-slider-v30 .hero-slider-dots {
        bottom: 38px !important;
        z-index: 8;
    }

    /* Neat transition to the booking steps card. */
    .public-booking-steps {
        position: relative;
        z-index: 5;
        margin-top: -32px !important;
    }
    .public-booking-steps .container {
        width: calc(100% - 24px) !important;
    }
    .public-booking-steps-card {
        border-radius: 25px !important;
        box-shadow: 0 20px 42px rgba(22,54,105,.14) !important;
    }
}

@media (max-width: 390px) {
    .hero-builder-slider-v30 .hero-builder-stage-mobile {
        height: 500px !important;
        min-height: 500px !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-title {
        font-size: clamp(29px,9vw,36px) !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-description {
        font-size: 13px !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-builder-points {
        width: 60% !important;
        max-width: 60% !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile .hero-point-chip {
        min-height: 31px;
        padding: 7px 10px;
        font-size: 10px;
    }
}

/* =========================================================
   Registered participants public section v3.0.6
   ========================================================= */
.registered-participants-section {
    position: relative;
    padding: 68px 0 82px;
    overflow: hidden;
    background:
        radial-gradient(circle at 88% 10%, rgba(40, 117, 241, .10), transparent 30%),
        linear-gradient(180deg, #f7fbff 0%, #ffffff 62%, #f9fbff 100%);
}
.registered-participants-section::after {
    content: "";
    position: absolute;
    right: -10%;
    bottom: -150px;
    left: -10%;
    height: 190px;
    border-radius: 50% 50% 0 0;
    background: linear-gradient(90deg, #103c89, #1764df 55%, #367ff0);
    opacity: .08;
    pointer-events: none;
}
.registered-section-heading {
    position: relative;
    max-width: 760px;
    margin-bottom: 28px;
    padding-left: 20px;
}
.registered-section-heading::before {
    content: "";
    position: absolute;
    top: 3px;
    bottom: 38px;
    left: 0;
    width: 6px;
    border-radius: 99px;
    background: linear-gradient(180deg, #155bd8, #2e7ff2);
    box-shadow: 0 6px 16px rgba(29, 101, 226, .24);
}
.registered-section-heading h2 {
    margin: 0;
    color: #102548;
    font-size: clamp(28px, 3.2vw, 40px);
    line-height: 1.15;
    letter-spacing: -.035em;
}
.registered-section-heading p {
    margin: 10px 0 0;
    color: #71809a;
    font-size: 15px;
    line-height: 1.65;
}
.registered-session-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
    align-items: start;
}
.registered-session-card {
    min-width: 0;
    overflow: hidden;
    border: 1px solid #dce6f3;
    border-radius: 20px;
    background: rgba(255,255,255,.96);
    box-shadow: 0 18px 42px rgba(22, 59, 115, .08);
}
.registered-session-card-header {
    padding: 20px 22px 18px;
    border-bottom: 1px solid #dfe8f4;
    background:
        linear-gradient(135deg, rgba(226, 240, 255, .96), rgba(248, 251, 255, .98));
}
.registered-session-date {
    display: block;
    margin-bottom: 7px;
    color: #1761dc;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .01em;
}
.registered-session-card h3 {
    margin: 0;
    color: #102548;
    font-size: 21px;
    line-height: 1.28;
    letter-spacing: -.02em;
}
.registered-session-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    margin-top: 13px;
    color: #53637e;
    font-size: 12px;
    font-weight: 700;
}
.registered-session-meta span,
.registered-session-meta strong {
    position: relative;
    padding-left: 13px;
}
.registered-session-meta span::before,
.registered-session-meta strong::before {
    content: "";
    position: absolute;
    top: .48em;
    left: 0;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #2f7df0;
}
.registered-session-meta strong {
    color: #1761dc;
}
.registered-participant-table {
    padding: 0 18px 16px;
}
.registered-participant-table-head,
.registered-participant-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
}
.registered-participant-table-head {
    padding: 13px 2px 10px;
    color: #71809a;
    border-bottom: 1px solid #e5ebf4;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.registered-participant-table-head span:last-child {
    text-align: right;
}
.registered-participant-row {
    min-height: 48px;
    padding: 8px 2px;
    border-bottom: 1px solid #edf1f6;
}
.registered-participant-row:last-child {
    border-bottom: 0;
}
.registered-participant-name {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 9px;
    color: #172b4d;
    font-size: 12.5px;
    font-weight: 800;
    overflow-wrap: anywhere;
}
.registered-participant-name i {
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: 1px solid #cfe0f8;
    border-radius: 50%;
    color: #1761dc;
    background: #eff6ff;
    font-size: 11px;
    font-style: normal;
    font-weight: 900;
}
.registered-level-badge {
    max-width: 190px;
    padding: 7px 10px;
    border: 1px solid transparent;
    border-radius: 9px;
    font-size: 10.5px;
    font-weight: 800;
    line-height: 1.25;
    text-align: center;
    white-space: normal;
}
.registered-level-badge.level-elemental-1 { color: #5531a7; background: #f1edff; border-color: #ded4ff; }
.registered-level-badge.level-elemental-2 { color: #1559a9; background: #eaf5ff; border-color: #cfe8fb; }
.registered-level-badge.level-big-bang-1 { color: #2e6b32; background: #edf8ed; border-color: #d2ead3; }
.registered-level-badge.level-big-bang-2 { color: #9a5b00; background: #fff5e6; border-color: #f2dfbc; }
.registered-level-badge.level-big-bang-3 { color: #9a2f72; background: #fff0f8; border-color: #f2d4e7; }
.registered-level-badge.level-default { color: #475871; background: #f1f4f8; border-color: #dfe5ed; }
.registered-participants-empty {
    position: relative;
    z-index: 1;
    padding: 42px 24px;
    border: 1px dashed #c8d9ef;
    border-radius: 20px;
    color: #71809a;
    background: rgba(255,255,255,.75);
    text-align: center;
}
.registered-participants-empty h3 {
    margin: 0 0 8px;
    color: #102548;
}
.registered-participants-empty p {
    margin: 0;
}

@media (max-width: 1050px) {
    .registered-session-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
    .registered-participants-section { padding: 50px 0 64px; }
    .registered-section-heading { margin-bottom: 20px; padding-left: 16px; }
    .registered-section-heading::before { width: 5px; bottom: 34px; }
    .registered-section-heading h2 { font-size: 28px; }
    .registered-session-grid { grid-template-columns: 1fr; gap: 16px; }
    .registered-session-card-header { padding: 18px 18px 16px; }
    .registered-participant-table { padding-inline: 14px; }
}
@media (max-width: 430px) {
    .registered-participant-table-head { display: none; }
    .registered-participant-row {
        grid-template-columns: 1fr;
        gap: 7px;
        padding-block: 11px;
    }
    .registered-level-badge {
        max-width: none;
        width: fit-content;
        margin-left: 37px;
        text-align: left;
    }
    .registered-session-meta { display: grid; gap: 7px; }
}

/* =========================================================
   Registered participant manual carousel v3.0.7
   ========================================================= */
.registered-participants-v307 {
    padding: 64px 0 82px;
    overflow: hidden;
    background:
        radial-gradient(circle at 86% 4%, rgba(37, 111, 236, .11), transparent 30%),
        linear-gradient(180deg, #f6faff 0%, #ffffff 62%, #f8fbff 100%);
}
.registered-participants-v307::after { display: none; }
.registered-overview-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 20px 34px;
    align-items: center;
    margin-bottom: 28px;
    padding: 28px 30px;
    border: 1px solid #d9e7f7;
    border-radius: 24px;
    background: linear-gradient(135deg, rgba(239,247,255,.98), rgba(255,255,255,.97));
    box-shadow: 0 18px 44px rgba(21, 67, 132, .07);
}
.registered-overview-copy h2 {
    margin: 0;
    color: #102548;
    font-size: clamp(30px, 3.2vw, 42px);
    line-height: 1.12;
    letter-spacing: -.035em;
}
.registered-overview-copy p {
    margin: 9px 0 0;
    color: #63738e;
    font-size: 15px;
}
.registered-overview-stats {
    display: flex;
    overflow: hidden;
    border: 1px solid #dbe7f5;
    border-radius: 17px;
    background: rgba(255,255,255,.9);
}
.registered-overview-stats span {
    min-width: 135px;
    display: grid;
    gap: 2px;
    padding: 15px 20px;
    text-align: center;
}
.registered-overview-stats span + span { border-left: 1px solid #e1e9f3; }
.registered-overview-stats strong { color: #1761dc; font-size: 25px; line-height: 1; }
.registered-overview-stats small { color: #6f7e96; font-size: 11px; font-weight: 800; }
.registered-toolbar {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 14px;
}
.registered-search-field {
    min-width: 270px;
    flex: 1 1 420px;
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 48px;
    padding: 0 16px;
    border: 1px solid #cfdeef;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 7px 18px rgba(24, 68, 128, .04);
}
.registered-search-field svg {
    width: 21px;
    height: 21px;
    flex: 0 0 auto;
    fill: none;
    stroke: #6d7d96;
    stroke-width: 2;
    stroke-linecap: round;
}
.registered-search-field input {
    width: 100%;
    min-width: 0;
    border: 0;
    outline: 0;
    color: #14294a;
    background: transparent;
    font: inherit;
}
.registered-search-field input::placeholder { color: #8a97aa; }
.registered-filter-tabs { display: flex; gap: 10px; }
.registered-filter-tabs button {
    min-width: 108px;
    min-height: 44px;
    padding: 9px 18px;
    border: 1px solid #c8d9ee;
    border-radius: 999px;
    color: #1c4a91;
    background: #fff;
    font: inherit;
    font-size: 13px;
    font-weight: 900;
    cursor: pointer;
    transition: transform .2s ease, box-shadow .2s ease, color .2s ease, background .2s ease;
}
.registered-filter-tabs button:hover { transform: translateY(-1px); box-shadow: 0 8px 18px rgba(25,88,190,.10); }
.registered-filter-tabs button.is-active { color: #fff; border-color: #1761dc; background: linear-gradient(135deg,#1761dc,#2d7df1); box-shadow: 0 10px 22px rgba(23,97,220,.20); }
.registered-carousel-shell { position: relative; }
.registered-session-track {
    display: flex;
    gap: 22px;
    width: 100%;
    overflow-x: auto;
    padding: 2px 3px 18px;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-width: none;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
}
.registered-session-track::-webkit-scrollbar { display: none; }
.registered-participants-v307 .registered-session-card {
    flex: 0 0 calc((100% - 22px) / 2);
    scroll-snap-align: start;
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow: hidden;
    border: 1px solid #d9e4f1;
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 17px 38px rgba(20,55,108,.08);
}
.registered-participants-v307 .registered-session-card[hidden] { display: none !important; }
.registered-participants-v307 .registered-session-card-header {
    padding: 22px 24px 19px;
    border-bottom: 1px solid #dfe8f4;
    background: linear-gradient(135deg,#eff7ff 0%,#f9fcff 76%);
}
.registered-session-card-topline { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.registered-participants-v307 .registered-session-date { margin: 0; font-size: 12px; }
.registered-class-type {
    flex: 0 0 auto;
    padding: 6px 12px;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 10px;
    font-weight: 900;
}
.registered-class-type-free { color: #18823d; border-color: #cdebd7; background: #effaf2; }
.registered-class-type-paid { color: #6640a8; border-color: #dfd5f4; background: #f5f0ff; }
.registered-participants-v307 .registered-session-card h3 { margin-top: 10px; font-size: clamp(20px,2vw,25px); }
.registered-participants-v307 .registered-session-meta { margin-top: 12px; }
.registered-participants-v307 .registered-participant-table { flex: 1 1 auto; padding: 0 20px; }
.registered-participants-v307 .registered-participant-table-head { padding-top: 14px; }
.registered-participants-v307 .registered-participant-row { min-height: 52px; padding: 9px 2px; }
.registered-participants-v307 .registered-participant-name { font-size: 13px; }
.registered-participants-v307 .registered-participant-name b { min-width: 0; font-weight: 800; overflow-wrap: anywhere; }
.registered-participants-v307 .registered-level-badge { max-width: 205px; padding: 7px 11px; font-size: 10.5px; }
.registered-expand-button {
    width: 100%;
    min-height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: auto;
    border: 0;
    border-top: 1px solid #e4ebf4;
    color: #1761dc;
    background: #fff;
    font: inherit;
    font-size: 12.5px;
    font-weight: 900;
    cursor: pointer;
}
.registered-expand-button svg {
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.2;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: transform .2s ease;
}
.registered-expand-button .registered-expand-hide { display: none; }
.registered-session-card.is-expanded .registered-expand-button .registered-expand-show { display: none; }
.registered-session-card.is-expanded .registered-expand-button .registered-expand-hide { display: inline; }
.registered-session-card.is-expanded .registered-expand-button svg { transform: rotate(-90deg); }
.registered-card-spacer { min-height: 18px; }
.registered-carousel-arrow {
    position: absolute;
    z-index: 3;
    top: 50%;
    width: 50px;
    height: 50px;
    display: grid;
    place-items: center;
    border: 1px solid #d8e3f0;
    border-radius: 50%;
    color: #164f9e;
    background: rgba(255,255,255,.96);
    box-shadow: 0 12px 28px rgba(18,54,108,.14);
    cursor: pointer;
    transform: translateY(-50%);
}
.registered-carousel-arrow svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.registered-carousel-arrow-prev { left: -68px; }
.registered-carousel-arrow-next { right: -68px; }
.registered-carousel-arrow:disabled { opacity: .32; cursor: default; }
.registered-carousel-footer { display: grid; justify-items: center; gap: 10px; margin-top: 4px; }
.registered-carousel-dots { display: flex; gap: 6px; min-height: 9px; }
.registered-carousel-dots button { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 50%; background: #d3deed; cursor: pointer; }
.registered-carousel-dots button.is-active { width: 22px; border-radius: 99px; background: #1761dc; }
.registered-carousel-footer p { margin: 0; color: #78879d; font-size: 12px; }
.registered-carousel-footer p span { margin-right: 6px; color: #1761dc; font-size: 18px; }
.registered-filter-empty { padding: 34px 22px; border: 1px dashed #c9d9ec; border-radius: 20px; color: #71809a; background: rgba(255,255,255,.78); text-align: center; }
.registered-filter-empty h3 { margin: 0 0 7px; color: #102548; }
.registered-filter-empty p { margin: 0; }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }

@media (max-width: 1280px) {
    .registered-carousel-arrow-prev { left: 8px; }
    .registered-carousel-arrow-next { right: 8px; }
    .registered-session-track { padding-inline: 58px; }
}
@media (max-width: 860px) {
    .registered-overview-panel { grid-template-columns: 1fr; padding: 24px; }
    .registered-overview-stats { justify-self: start; }
    .registered-toolbar { flex-direction: column; align-items: stretch; }
    .registered-search-field { min-width: 0; flex-basis: auto; }
    .registered-filter-tabs { justify-content: flex-start; }
    .registered-participants-v307 .registered-session-card { flex-basis: calc(100% - 78px); }
}
@media (max-width: 720px) {
    .registered-participants-v307 { padding: 46px 0 64px; }
    .registered-overview-panel { margin-bottom: 20px; padding: 22px 20px; border-radius: 20px; }
    .registered-overview-copy h2 { font-size: 30px; }
    .registered-overview-copy p { font-size: 14px; line-height: 1.55; }
    .registered-overview-stats { width: 100%; }
    .registered-overview-stats span { min-width: 0; flex: 1 1 50%; padding: 13px 10px; }
    .registered-filter-tabs { gap: 8px; }
    .registered-filter-tabs button { min-width: 0; flex: 1 1 0; padding-inline: 12px; }
    .registered-session-track { gap: 14px; padding-inline: 8px; }
    .registered-participants-v307 .registered-session-card { flex-basis: calc(100% - 16px); border-radius: 20px; }
    .registered-participants-v307 .registered-session-card-header { padding: 19px 18px 16px; }
    .registered-participants-v307 .registered-session-card h3 { font-size: 22px; }
    .registered-participants-v307 .registered-participant-table { padding-inline: 15px; }
    .registered-participants-v307 .registered-participant-table-head { display: none; }
    .registered-participants-v307 .registered-participant-row { grid-template-columns: minmax(0,1fr) auto; gap: 8px; min-height: 54px; padding-block: 8px; }
    .registered-participants-v307 .registered-level-badge { width: auto; max-width: 175px; margin-left: 0; text-align: center; }
    .registered-carousel-arrow { width: 44px; height: 44px; }
    .registered-carousel-arrow-prev { left: -7px; }
    .registered-carousel-arrow-next { right: -7px; }
    .registered-carousel-footer p { max-width: 290px; text-align: center; }
}
@media (max-width: 430px) {
    .registered-overview-copy h2 { font-size: 28px; }
    .registered-search-field { min-height: 50px; }
    .registered-overview-stats { display: none; }
    .registered-participants-v307 .registered-participant-name { font-size: 12.5px; }
    .registered-participants-v307 .registered-participant-name i { width: 30px; height: 30px; }
    .registered-participants-v307 .registered-level-badge { max-width: 150px; padding: 6px 8px; font-size: 9.5px; }
    .registered-session-meta { gap: 7px 12px; }
}

@media (prefers-reduced-motion: reduce) {
    .registered-session-track { scroll-behavior: auto; }
    .registered-filter-tabs button,
    .registered-expand-button svg { transition: none; }
}

/* =========================================================
   Registered participants corrective patch v3.0.8
   Fixes the v3.0.7 card expansion and equal-height defects.
   ========================================================= */
.registered-participants-v307 .registered-participant-row[hidden] {
    display: none !important;
}
.registered-participants-v307 .registered-session-track {
    align-items: flex-start;
}
.registered-participants-v307 .registered-session-card {
    height: auto;
    align-self: flex-start;
}
.registered-participants-v307 .registered-participant-table {
    flex: 0 0 auto;
}
.registered-participants-v307 .registered-carousel-shell {
    margin-inline: 38px;
}
.registered-participants-v307 .registered-carousel-arrow-prev {
    left: -30px;
}
.registered-participants-v307 .registered-carousel-arrow-next {
    right: -30px;
}

@media (max-width: 860px) {
    .registered-participants-v307 .registered-carousel-shell {
        margin-inline: 0;
    }
    .registered-participants-v307 .registered-carousel-arrow-prev {
        left: -7px;
    }
    .registered-participants-v307 .registered-carousel-arrow-next {
        right: -7px;
    }
}

/* =========================================================
   FREE BOOKING VERIFICATION + WEEKLY QUOTA — v3.1.0
   ========================================================= */
.free-booking-page-v310 .class-detail-section {
    padding-top: 38px;
    background:
        radial-gradient(circle at 10% 4%, rgba(72, 140, 255, .10), transparent 28%),
        radial-gradient(circle at 96% 30%, rgba(115, 170, 255, .12), transparent 30%),
        #f7faff;
}
.free-booking-page-v310 .class-detail-container { max-width: 1320px; }
.free-class-selected-v310 {
    display: grid;
    grid-template-columns: 176px minmax(0, 1fr);
    gap: 24px;
    align-items: center;
    margin: 20px 0 26px;
    padding: 18px;
    border: 1px solid #d7e5fa;
    border-radius: 24px;
    background: linear-gradient(115deg, #ffffff 0%, #f4f9ff 100%);
    box-shadow: 0 16px 44px rgba(31, 76, 145, .09);
}
.free-class-selected-visual {
    height: 132px;
    border-radius: 18px;
    overflow: hidden;
    display: grid;
    place-items: center;
    font-size: 54px;
    background: linear-gradient(145deg, #e9f3ff, #cfe5ff);
}
.free-class-selected-visual img { width: 100%; height: 100%; object-fit: cover; display: block; }
.free-class-selected-kicker {
    display: block;
    color: #145bd7;
    font-size: 12px;
    line-height: 1.2;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .1em;
}
.free-class-selected-title { display: flex; align-items: center; gap: 12px; margin-top: 5px; }
.free-class-selected-title h1 { margin: 0; color: #0b2859; font-size: clamp(25px, 2.6vw, 36px); line-height: 1.16; }
.free-class-selected-title span {
    display: inline-flex; align-items: center; justify-content: center;
    padding: 5px 10px; border-radius: 9px; background: #159447; color: #fff;
    font-size: 12px; font-weight: 900; letter-spacing: .03em;
}
.free-class-selected-meta { display: flex; flex-wrap: wrap; gap: 12px 22px; margin-top: 13px; color: #254872; font-weight: 700; font-size: 14px; }
.free-class-selected-copy > small { display: block; margin-top: 10px; color: #5d718f; font-weight: 700; }

.free-booking-layout-v310 {
    display: grid;
    grid-template-columns: minmax(0, 1.85fr) minmax(300px, .8fr);
    gap: 24px;
    align-items: start;
    padding-bottom: 58px;
}
.free-booking-form-card-v310,
.free-booking-info-card-v310,
.free-booking-limit-card-v310 {
    border: 1px solid #dbe7f7;
    background: rgba(255,255,255,.98);
    box-shadow: 0 16px 48px rgba(29, 72, 135, .09);
}
.free-booking-form-card-v310 { border-radius: 26px; padding: clamp(22px, 3vw, 36px); }
.free-booking-heading-v310 { display: flex; gap: 16px; align-items: flex-start; padding-bottom: 22px; margin-bottom: 23px; border-bottom: 1px solid #e1e9f5; }
.free-booking-heading-icon-v310 {
    flex: 0 0 52px; width: 52px; height: 52px; display: grid; place-items: center;
    border-radius: 16px; background: linear-gradient(145deg, #2776f1, #0d4fd1); color: #fff;
    box-shadow: 0 10px 22px rgba(27, 94, 218, .23); font-size: 24px;
}
.free-booking-heading-v310 span:not(.free-booking-heading-icon-v310) { color: #1757cc; font-size: 12px; font-weight: 900; letter-spacing: .14em; text-transform: uppercase; }
.free-booking-heading-v310 h2 { margin: 5px 0 5px; color: #0c2859; font-size: clamp(25px, 3vw, 34px); line-height: 1.15; }
.free-booking-heading-v310 p { margin: 0; color: #6a7b96; }
.free-booking-fields-v310 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px 18px; }
.free-booking-field-full-v310 { grid-column: 1 / -1; }
.free-booking-form-v310 .field-group { margin: 0; }
.free-booking-form-v310 .field-label { display: block; margin-bottom: 8px; color: #10264b; font-weight: 800; font-size: 14px; }
.free-booking-form-v310 .field-label b { color: #ec374b; }
.free-booking-form-v310 input,
.free-booking-form-v310 select {
    width: 100%; min-height: 56px; padding: 0 16px; border: 1px solid #cbd9ee; border-radius: 14px;
    background: #fff; color: #10264b; font: inherit; font-weight: 600;
    transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
.free-booking-form-v310 input:focus,
.free-booking-form-v310 select:focus { outline: 0; border-color: #3178ec; box-shadow: 0 0 0 4px rgba(49, 120, 236, .12); }
.free-booking-form-v310 .field-group > small { display: block; margin-top: 7px; color: #7889a2; font-size: 12px; }

.student-verification-card-v310 {
    margin-top: 24px; padding: 18px; display: grid; grid-template-columns: 52px minmax(0, 1fr) auto; gap: 14px; align-items: center;
    border: 1px solid #cdddf1; border-radius: 17px; background: #f6f9fe;
    transition: background .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.student-verification-icon-v310 { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 50%; background: #e5edf8; color: #536b8e; font-size: 21px; font-weight: 900; }
.student-verification-copy-v310 span { display: block; color: #24466f; font-size: 12px; font-weight: 900; text-transform: uppercase; letter-spacing: .07em; }
.student-verification-copy-v310 strong { display: block; margin-top: 3px; color: #102a55; font-size: clamp(18px, 2.2vw, 26px); line-height: 1.2; overflow-wrap: anywhere; }
.student-verification-copy-v310 p { margin: 5px 0 0; color: #647895; font-size: 13px; }
.student-verification-badge-v310 { justify-self: end; padding: 7px 10px; border-radius: 999px; background: #e7edf6; color: #536782; font-size: 11px; font-weight: 900; white-space: nowrap; }
.student-verification-card-v310.is-loading { border-color: #9ebff5; background: #f1f7ff; }
.student-verification-card-v310.is-loading .student-verification-icon-v310 { color: #175cd3; background: #dceaff; animation: freeBookingPulse 1.1s infinite ease-in-out; }
.student-verification-card-v310.is-verified { border-color: #99d7ac; background: linear-gradient(110deg, #f2fff5, #fbfffc); box-shadow: 0 9px 25px rgba(31, 150, 73, .08); }
.student-verification-card-v310.is-verified .student-verification-icon-v310 { color: #117b38; background: #d9f5e1; }
.student-verification-card-v310.is-verified .student-verification-copy-v310 strong { color: #12652c; }
.student-verification-card-v310.is-verified .student-verification-badge-v310 { color: #14783a; background: #daf5e2; }
.student-verification-card-v310.is-error,
.student-verification-card-v310.is-full { border-color: #efb4b8; background: #fff5f5; }
.student-verification-card-v310.is-error .student-verification-icon-v310,
.student-verification-card-v310.is-full .student-verification-icon-v310 { color: #be2735; background: #ffe0e2; }
.student-verification-card-v310.is-error .student-verification-badge-v310,
.student-verification-card-v310.is-full .student-verification-badge-v310 { color: #b62331; background: #ffe1e3; }
@keyframes freeBookingPulse { 50% { transform: scale(.92); opacity: .65; } }

.free-quota-card-v310 { margin-top: 18px; padding: 18px; border: 1px solid #cfe0f7; border-radius: 17px; background: #f7fbff; }
.free-quota-card-head-v310 { display: grid; grid-template-columns: 1.2fr .7fr 1fr; gap: 14px; }
.free-quota-card-head-v310 > div { padding-right: 12px; border-right: 1px solid #dce7f5; }
.free-quota-card-head-v310 > div:last-child { border-right: 0; padding-right: 0; }
.free-quota-card-head-v310 span { display: block; color: #657896; font-size: 12px; font-weight: 700; }
.free-quota-card-head-v310 strong { display: block; margin-top: 4px; color: #123160; font-size: 15px; }
.free-quota-card-head-v310 strong b { font-size: 20px; color: #135cd5; }
.free-quota-progress-v310 { height: 8px; margin-top: 16px; overflow: hidden; border-radius: 999px; background: #dfe7f2; }
.free-quota-progress-v310 span { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #1f72ef, #1050ce); transition: width .35s ease; }
.free-quota-progress-v310 span.is-full { background: linear-gradient(90deg, #ee5a64, #cf2635); }
.free-quota-bookings-v310 { margin-top: 16px; padding-top: 14px; border-top: 1px solid #dce7f5; }
.free-quota-bookings-v310 > span { color: #304b71; font-size: 12px; font-weight: 900; }
.free-quota-bookings-v310 ol { margin: 9px 0 0; padding-left: 22px; color: #17365f; }
.free-quota-bookings-v310 li { padding: 4px 0; }
.free-quota-bookings-v310 li strong,
.free-quota-bookings-v310 li small { display: block; }
.free-quota-bookings-v310 li small { margin-top: 2px; color: #71829b; }
.free-booking-error-v310 { margin-top: 16px; padding: 13px 15px; border: 1px solid #efb2b7; border-radius: 13px; background: #fff1f2; color: #a91e2c; font-weight: 800; font-size: 14px; }
.free-booking-consent-v310 { margin-top: 20px; padding: 16px; border: 1px solid #d2deee; border-radius: 15px; background: #fff; align-items: flex-start; }
.free-booking-consent-v310 input { flex: 0 0 auto; width: 20px; min-height: 20px; height: 20px; margin-top: 1px; padding: 0; }
.free-booking-consent-v310 span { color: #314c71; font-size: 13px; line-height: 1.55; }
.free-booking-submit-v310 { margin-top: 18px; min-height: 58px; border-radius: 15px; font-size: 16px; box-shadow: 0 12px 24px rgba(21, 87, 214, .18); }
.free-booking-submit-v310:disabled { background: #b8c7dd; border-color: #b8c7dd; color: #eef3fa; box-shadow: none; cursor: not-allowed; opacity: 1; }

.free-booking-info-v310 { display: grid; gap: 20px; }
.free-booking-info-card-v310 { padding: 26px; border-radius: 24px; }
.free-booking-info-card-v310 h2 { margin: 0 0 8px; color: #102b5b; font-size: 23px; }
.free-booking-info-card-v310 ol { list-style: none; margin: 0; padding: 0; }
.free-booking-info-card-v310 li { display: grid; grid-template-columns: 38px 1fr; gap: 13px; padding: 22px 0; border-bottom: 1px solid #dde6f3; }
.free-booking-info-card-v310 li:last-child { border-bottom: 0; padding-bottom: 4px; }
.free-booking-info-card-v310 li > b { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: #155dd7; color: #fff; }
.free-booking-info-card-v310 li strong { color: #15315f; font-size: 15px; }
.free-booking-info-card-v310 li p { margin: 6px 0 0; color: #657995; font-size: 13px; line-height: 1.65; }
.free-booking-limit-card-v310 { display: flex; gap: 16px; align-items: flex-start; padding: 24px; border-radius: 22px; }
.free-booking-limit-card-v310 > span { flex: 0 0 58px; width: 58px; height: 58px; display: grid; place-items: center; border-radius: 50%; background: #edf5ff; font-size: 30px; }
.free-booking-limit-card-v310 strong { color: #1559cd; }
.free-booking-limit-card-v310 p { margin: 7px 0 0; color: #657995; font-size: 13px; line-height: 1.6; }

@media (max-width: 980px) {
    .free-booking-layout-v310 { grid-template-columns: 1fr; }
    .free-booking-info-v310 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 680px) {
    .free-booking-page-v310 .class-detail-section { padding-top: 18px; }
    .free-class-selected-v310 { grid-template-columns: 86px minmax(0, 1fr); gap: 14px; padding: 12px; border-radius: 18px; }
    .free-class-selected-visual { height: 86px; border-radius: 14px; font-size: 36px; }
    .free-class-selected-title { align-items: flex-start; }
    .free-class-selected-title h1 { font-size: 21px; }
    .free-class-selected-meta { display: grid; gap: 5px; margin-top: 8px; font-size: 12px; }
    .free-class-selected-copy > small { font-size: 11px; }
    .free-booking-form-card-v310 { padding: 20px 16px; border-radius: 20px; }
    .free-booking-heading-v310 { gap: 12px; }
    .free-booking-heading-icon-v310 { flex-basis: 46px; width: 46px; height: 46px; border-radius: 14px; }
    .free-booking-fields-v310 { grid-template-columns: 1fr; gap: 17px; }
    .free-booking-field-full-v310 { grid-column: auto; }
    .student-verification-card-v310 { grid-template-columns: 44px minmax(0, 1fr); padding: 15px; }
    .student-verification-icon-v310 { width: 42px; height: 42px; }
    .student-verification-badge-v310 { grid-column: 2; justify-self: start; }
    .student-verification-copy-v310 strong { font-size: 19px; }
    .free-quota-card-head-v310 { grid-template-columns: 1fr 1fr; }
    .free-quota-card-head-v310 > div:nth-child(2) { border-right: 0; }
    .free-quota-card-head-v310 > div:last-child { grid-column: 1 / -1; border-top: 1px solid #dce7f5; padding-top: 10px; }
    .free-booking-info-v310 { grid-template-columns: 1fr; }
    .free-booking-info-card-v310 { padding: 21px; }
    .free-booking-limit-card-v310 { padding: 20px; }
}

/* =========================================================
   ADMIN MASTER SISWA — v3.1.0
   ========================================================= */
.student-admin-stats-v310 { margin-bottom: 22px; }
.student-code-chip-v310 {
    display: inline-flex; align-items: center; padding: 7px 10px; border-radius: 9px;
    background: #eef5ff; color: #1357ca; font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px; font-weight: 900; border: 1px solid #ccdef8;
}
.quota-mini-v310 { display: inline-flex; flex-direction: column; align-items: center; min-width: 62px; padding: 6px 9px; border-radius: 10px; background: #eaf8ef; color: #16783a; }
.quota-mini-v310 b { font-size: 15px; }
.quota-mini-v310 small { font-size: 10px; font-weight: 800; }
.quota-mini-v310.is-full { background: #fff0f1; color: #bc2a36; }
.admin-pagination-v310 { display: flex; justify-content: center; gap: 7px; margin-top: 22px; }
.admin-pagination-v310 a { min-width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid #d5e0ef; border-radius: 10px; background: #fff; color: #325274; font-weight: 800; }
.admin-pagination-v310 a.active { border-color: #195fd8; background: #195fd8; color: #fff; }
.student-admin-form-v310 { display: grid; gap: 30px; }
.student-admin-form-section-v310 { display: grid; grid-template-columns: minmax(200px,.55fr) minmax(0,1.45fr); gap: 30px; padding-bottom: 28px; border-bottom: 1px solid #e2e9f3; }
.student-admin-form-section-v310:last-of-type { border-bottom: 0; }
.student-admin-form-section-v310 h2 { margin: 5px 0 8px; color: #102d5d; }
.student-admin-form-section-v310 > div:first-child > p { margin: 0; color: #6a7c95; line-height: 1.6; }
.student-contact-grid-v310 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.student-contact-card-v310 { padding: 18px; border: 1px solid #dbe5f2; border-radius: 16px; background: #f8fbff; }
.student-contact-card-v310 > strong { display: block; margin-bottom: 14px; color: #164fba; }
.student-contact-card-v310 label { display: block; margin-top: 12px; }
.student-import-layout-v310 { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; align-items: start; }
.student-import-layout-v310 h2, .student-import-result-v310 h2 { color: #102d5d; }
.student-import-guide-v310 ol { padding-left: 22px; color: #405b7a; }
.student-import-guide-v310 li { margin: 10px 0; }
.student-import-guide-v310 code { padding: 3px 6px; border-radius: 6px; background: #edf4ff; color: #1854bd; }
.student-import-result-v310 { margin-bottom: 22px; }
.student-import-result-v310 details { margin-top: 18px; }
.student-import-result-v310 summary { cursor: pointer; color: #1656c6; font-weight: 800; }
.student-import-result-v310 ul { max-height: 280px; overflow: auto; color: #6b4860; }
@media (max-width: 900px) {
    .student-admin-form-section-v310 { grid-template-columns: 1fr; gap: 16px; }
    .student-import-layout-v310 { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
    .student-contact-grid-v310 { grid-template-columns: 1fr; }
}

/* EXTRA CLASS FREE automatic first-booking profile (v3.1.1) */
.first-booking-notice-v311 {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 18px;
    border: 1px solid #b9e6c7;
    border-radius: 18px;
    background: linear-gradient(135deg, #f2fff6 0%, #ffffff 100%);
    color: #123f25;
}
.first-booking-notice-v311[hidden] { display: none !important; }
.first-booking-notice-icon-v311 {
    display: grid;
    place-items: center;
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: #d9f7e2;
    color: #14823b;
    font-size: 19px;
    font-weight: 900;
}
.first-booking-notice-v311 strong {
    display: block;
    margin: 1px 0 4px;
    color: #0b5c2b;
    font-size: 16px;
}
.first-booking-notice-v311 p {
    margin: 0;
    color: #547060;
    line-height: 1.55;
}
.free-booking-page-v311 .free-booking-error-v310 {
    border-radius: 16px;
    line-height: 1.55;
}
@media (max-width: 640px) {
    .first-booking-notice-v311 { padding: 15px; border-radius: 15px; }
    .first-booking-notice-icon-v311 { flex-basis: 34px; width: 34px; height: 34px; }
}

/* =====================================================================
   UTEC EXTRA CLASS — Student verification & admin alerts v3.2.0
   ===================================================================== */
.admin-alert-controls-v320{display:flex;align-items:center;gap:8px}.admin-alert-controls-v320 button{border:1px solid #d8e4f5;background:#fff;color:#49627f;border-radius:12px;min-height:38px;padding:0 12px;display:inline-flex;align-items:center;gap:7px;font:700 12px/1 Nunito,sans-serif;cursor:pointer;transition:.2s}.admin-alert-controls-v320 button:hover{border-color:#2d72de;color:#0b54c7}.admin-alert-controls-v320 button.active{background:#eef8f1;border-color:#b8dfc4;color:#16813e}.admin-alert-controls-v320 button i{width:8px;height:8px;border-radius:50%;background:#a8b6ca}.admin-alert-controls-v320 button.active i{background:#25a653}.admin-alert-controls-v320 button b{font-size:16px}.admin-alert-controls-v320 [data-test-sound]{padding-inline:10px;color:#0b54c7;background:#edf5ff}
.admin-booking-alert-toast-v320{position:fixed;top:82px;right:24px;z-index:9999;width:min(430px,calc(100vw - 32px));display:grid;grid-template-columns:44px 1fr auto 28px;align-items:center;gap:12px;padding:15px 16px;background:#fff;border:1px solid #cfe0fa;border-radius:16px;box-shadow:0 18px 50px rgba(13,54,112,.2)}.admin-booking-alert-toast-v320[hidden]{display:none}.admin-booking-alert-icon-v320{width:44px;height:44px;border-radius:13px;background:#edf5ff;display:grid;place-items:center;font-size:21px}.admin-booking-alert-toast-v320 strong{display:block;color:#0a2853;font-size:14px}.admin-booking-alert-toast-v320 p{margin:3px 0 0;color:#5f718a;font-size:12px;line-height:1.45}.admin-booking-alert-toast-v320 a{color:#0b60dc;font-weight:800;font-size:12px}.admin-booking-alert-toast-v320 button{border:0;background:transparent;color:#71849d;font-size:22px;cursor:pointer}
.student-admin-heading-v320{margin-bottom:18px}.student-stat-grid-v320{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:18px}.student-stat-card-v320{background:#fff;border:1px solid #e0e8f4;border-radius:16px;padding:16px;display:flex;justify-content:space-between;align-items:center;color:#526782;box-shadow:0 8px 24px rgba(29,63,111,.05)}.student-stat-card-v320 span{font-size:12px;font-weight:800}.student-stat-card-v320 strong{font-size:24px;color:#0b2f69}.student-stat-card-v320.warning{border-color:#f1dcab;background:#fffaf0}.student-stat-card-v320.review{border-color:#cbdcff;background:#f6f9ff}.student-stat-card-v320.success{border-color:#bfe7ca;background:#f4fcf6}.student-stat-card-v320.danger{border-color:#f1c1c6;background:#fff6f7}.student-stat-card-v320.muted{background:#f6f8fb}.student-filter-v320{grid-template-columns:minmax(280px,1fr) 220px auto auto}.student-table-card-v320 table{min-width:1040px}.student-pending-note-v320{display:block;margin-top:5px;color:#d17a00;font-size:11px;font-weight:800}.quota-number-v320{color:#1465d8}.quota-number-v320.full{color:#d92f3b}.student-status-pill-v320{display:inline-flex;align-items:center;justify-content:center;min-height:29px;padding:5px 11px;border-radius:999px;font-size:11px;font-weight:900;white-space:nowrap}.student-status-pill-v320.unverified{color:#a66500;background:#fff2d6;border:1px solid #f2d49a}.student-status-pill-v320.review{color:#1558b4;background:#edf5ff;border:1px solid #bcd5f7}.student-status-pill-v320.verified{color:#167339;background:#eaf8ee;border:1px solid #b8e3c4}.student-status-pill-v320.blocked{color:#c42b36;background:#fff0f2;border:1px solid #f2bdc2}.student-status-pill-v320.archived{color:#69778b;background:#f0f3f7;border:1px solid #d8dee7}.student-pagination-v320{display:flex;justify-content:center;gap:6px;padding:17px;border-top:1px solid #e7edf5}.student-pagination-v320 a,.student-pagination-v320 span{min-width:34px;height:34px;border:1px solid #dbe5f2;border-radius:9px;display:grid;place-items:center;color:#49627e;font-weight:800;font-size:12px}.student-pagination-v320 a.active{background:#1763dd;color:#fff;border-color:#1763dd}
.student-detail-layout-v320{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:20px}.student-detail-main-v320{display:grid;gap:20px}.student-profile-card-v320,.student-action-card-v320{background:#fff;border:1px solid #dfe8f4;border-radius:18px;padding:20px;box-shadow:0 10px 30px rgba(28,67,119,.06)}.student-profile-head-v320{display:flex;align-items:center;gap:15px;margin-bottom:20px}.student-avatar-v320{width:62px;height:62px;border-radius:20px;background:linear-gradient(145deg,#e7f1ff,#cbdfff);display:grid;place-items:center;color:#0b58c8;font-weight:900;font-size:25px}.student-profile-head-v320 h2{margin:7px 0 4px;color:#0b2a59;font-size:24px}.student-profile-head-v320 code{font-size:12px;color:#0b61db;background:#edf5ff;border:1px solid #c8dcf7;border-radius:8px;padding:5px 8px}.student-profile-data-v320{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;margin:0 0 18px}.student-profile-data-v320>div{display:grid;grid-template-columns:145px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid #e9eef5}.student-profile-data-v320 dt{font-size:12px;color:#718299}.student-profile-data-v320 dd{margin:0;color:#17365e;font-weight:800;font-size:13px}.student-review-reason-v320,.student-blocked-reason-v320{padding:13px 15px;border-radius:13px;margin:0 0 15px}.student-review-reason-v320{background:#eef5ff;border:1px solid #c9dbf4;color:#24568f}.student-blocked-reason-v320{background:#fff1f2;border:1px solid #f1c4c8;color:#a9343c}.student-review-reason-v320 p,.student-blocked-reason-v320 p{margin:5px 0 0;font-size:12px}.student-detail-actions-v320{display:grid;align-content:start;gap:16px}.student-action-card-v320.primary{border-color:#c2d9f8}.student-action-card-v320 h3{margin:6px 0 7px;color:#0c2d5b;font-size:18px}.student-action-card-v320>p{margin:0 0 14px;color:#657993;font-size:12px}.student-action-stack-v320{display:grid;gap:9px}.btn-success{background:#18a64e!important;color:#fff!important;border-color:#18a64e!important}.btn-warning{background:#f4a000!important;color:#fff!important;border-color:#f4a000!important}.btn-danger{background:#e43d48!important;color:#fff!important;border-color:#e43d48!important}.student-inline-action-v320{border:1px solid #e0e8f3;border-radius:12px;background:#fafcff}.student-inline-action-v320 summary{cursor:pointer;padding:11px 13px;color:#345271;font-size:12px;font-weight:900}.student-inline-action-v320 form{display:grid;gap:9px;padding:0 12px 12px}.student-inline-action-v320 textarea,.student-inline-action-v320 select,.student-inline-action-v320 input[type=text]{width:100%;border:1px solid #d6e1ef;border-radius:10px;padding:10px 11px;font:600 12px/1.4 Nunito,sans-serif}.student-inline-action-v320.danger{border-color:#f1c4c8;background:#fff8f8}.student-inline-action-v320.danger summary{color:#bd303b}.similar-student-v320{display:grid;gap:9px;padding:12px 0;border-bottom:1px solid #e9eef5}.similar-student-v320:last-child{border-bottom:0}.similar-student-v320 strong{display:block;color:#18375e;font-size:13px}.similar-student-v320 small{display:block;color:#7889a0;margin-top:3px;font-size:11px}.similar-student-v320 form{display:flex;gap:7px}.student-log-list-v320{list-style:none;margin:0;padding:0;display:grid;gap:12px}.student-log-list-v320 li{padding-left:14px;border-left:3px solid #c9dcf7}.student-log-list-v320 strong{display:block;font-size:12px;color:#213e63}.student-log-list-v320 small{display:block;margin-top:2px;color:#7b8ca2;font-size:10px}.student-log-list-v320 p{margin:4px 0 0;font-size:11px;color:#5f7188}.student-section-head-v320{padding:18px 20px 8px}.student-section-head-v320 h2{margin:3px 0;color:#0b2d5e;font-size:19px}.student-edit-form-v320{max-width:900px}.student-edit-form-v320 .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.student-edit-form-v320 label{display:grid;gap:7px}.student-edit-form-v320 label span{font-size:12px;font-weight:900;color:#15395f}.student-edit-form-v320 .full{grid-column:1/-1}
.status-pill.pending_verification{color:#a66500;background:#fff2d6}.status-pill.needs_correction{color:#1558b4;background:#edf5ff}.status-pill.rejected{color:#c42b36;background:#fff0f2}.ticket-verification-notice-v320{display:flex;align-items:flex-start;gap:12px;padding:15px 17px;border-radius:15px;margin:0 0 18px;border:1px solid}.ticket-verification-notice-v320>span{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;font-weight:900}.ticket-verification-notice-v320 strong{display:block;font-size:14px}.ticket-verification-notice-v320 p{margin:4px 0 0;font-size:12px;line-height:1.55}.ticket-verification-notice-v320.warning{background:#fff8e8;border-color:#efd59d;color:#7e5600}.ticket-verification-notice-v320.warning>span{background:#ffeab9}.ticket-verification-notice-v320.success{background:#edf9f1;border-color:#bae3c5;color:#1c6d38}.ticket-verification-notice-v320.success>span{background:#d9f2e0}.ticket-verification-notice-v320.error{background:#fff1f2;border-color:#efc0c5;color:#a52e38}.ticket-verification-notice-v320.error>span{background:#ffdfe2}.jpeg-ticket-success.is-pending{background:#fff8e8!important;border-color:#efd59d!important;color:#7e5600!important}
@media(max-width:1100px){.student-stat-grid-v320{grid-template-columns:repeat(3,minmax(0,1fr))}.student-detail-layout-v320{grid-template-columns:1fr}.student-detail-actions-v320{grid-template-columns:repeat(2,minmax(0,1fr))}.student-action-card-v320.primary{grid-column:1/-1}.admin-alert-controls-v320 button span{display:none}}
@media(max-width:760px){.admin-alert-controls-v320{gap:5px}.admin-alert-controls-v320 button{min-width:34px;padding:0 8px}.admin-alert-controls-v320 [data-test-sound]{display:none}.admin-booking-alert-toast-v320{top:72px;right:12px;width:calc(100vw - 24px);grid-template-columns:40px 1fr auto 24px}.student-stat-grid-v320{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.student-stat-card-v320{padding:13px}.student-stat-card-v320 strong{font-size:20px}.student-filter-v320{grid-template-columns:1fr}.student-detail-actions-v320{grid-template-columns:1fr}.student-action-card-v320.primary{grid-column:auto}.student-profile-data-v320{grid-template-columns:1fr}.student-profile-data-v320>div{grid-template-columns:120px 1fr}.student-edit-form-v320 .form-grid{grid-template-columns:1fr}.student-edit-form-v320 .full{grid-column:auto}.student-profile-card-v320,.student-action-card-v320{padding:16px}.student-profile-head-v320 h2{font-size:20px}}
.dashboard-student-verification-v320,.dashboard-master-student-v320{background:#fff;border:1px solid #dfe8f4;border-radius:18px;padding:20px;margin-bottom:18px;box-shadow:0 10px 30px rgba(28,67,119,.06)}.dashboard-verification-grid-v320{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.dashboard-verification-card-v320{position:relative;display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;padding:17px;border:1px solid #efd7a7;background:#fffaf0;border-radius:15px;color:#17375f}.dashboard-new-badge-v320{position:absolute;top:8px;right:10px;padding:3px 7px;border-radius:999px;background:#f59b00;color:#fff;font-size:9px;font-weight:900}.dashboard-avatar-v320{width:48px;height:48px;border-radius:15px;background:#e9f2ff;color:#0c5acb;display:grid;place-items:center;font-size:20px;font-weight:900}.dashboard-verification-card-v320 strong{display:block;font-size:13px}.dashboard-verification-card-v320 small{display:block;margin-top:3px;color:#667b96;font-size:11px}.dashboard-verification-card-v320 em{display:inline-block;margin-top:7px;padding:4px 8px;border-radius:999px;background:#fff0cf;color:#9b6200;font-size:10px;font-style:normal;font-weight:900}.dashboard-verification-card-v320>b{font-size:24px;color:#0d5ed4}.dashboard-master-student-v320 table{min-width:840px}.dashboard-master-student-v320 code{color:#0b61d9;font-weight:800;font-size:11px}@media(max-width:900px){.dashboard-verification-grid-v320{grid-template-columns:1fr}.dashboard-student-verification-v320,.dashboard-master-student-v320{padding:15px}}

/* =============================================================
   Verification issuance & public participant status v3.3.0
   ============================================================= */
.registered-status-legend-v330 {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 18px;
    margin-top: 14px;
    color: #52647e;
    font-size: 12px;
    font-weight: 800;
}
.registered-status-legend-v330 span { display: inline-flex; align-items: center; gap: 7px; }
.registered-status-legend-v330 i { width: 10px; height: 10px; border-radius: 50%; }
.registered-status-legend-v330 i.pending { background: #aab5c5; }
.registered-status-legend-v330 i.confirmed { background: #25a451; }
.registered-participants-v307 .registered-participant-table-head,
.registered-participants-v307 .registered-participant-row {
    grid-template-columns: minmax(0, 1fr) minmax(130px, auto) minmax(118px, auto);
}
.registered-participants-v307 .registered-participant-table-head span:nth-child(2),
.registered-participants-v307 .registered-participant-table-head span:nth-child(3) { text-align: right; }
.registered-status-badge-v330 {
    justify-self: end;
    min-width: 112px;
    padding: 7px 10px;
    border: 1px solid transparent;
    border-radius: 10px;
    font-size: 9.5px;
    font-weight: 900;
    line-height: 1.2;
    text-align: center;
    white-space: normal;
}
.registered-status-badge-v330.pending {
    color: #68768a;
    border-color: #dfe5ec;
    background: #f1f3f6;
}
.registered-status-badge-v330.confirmed {
    color: #18813d;
    border-color: #ccebd6;
    background: #edf9f1;
}
.ticket-inactive-actions-v330 {
    margin-top: 22px;
    padding: 20px 24px;
    border: 1px solid #f0d7a1;
    border-radius: 18px;
    color: #815600;
    background: #fff9eb;
    text-align: center;
}
.ticket-inactive-actions-v330 strong { display: block; margin-bottom: 5px; color: #9a6100; font-size: 18px; }
.ticket-inactive-actions-v330 p { margin: 0; color: #7c6a48; line-height: 1.55; }
.student-status-pill-v320.rejected { color: #bd2636; border-color: #f1c3ca; background: #fff0f2; }
.status-pill.expired { color: #6d7787; background: #eef1f5; }

@media (max-width: 720px) {
    .registered-status-legend-v330 { gap: 8px 14px; margin-top: 12px; font-size: 11px; }
    .registered-participants-v307 .registered-participant-row {
        grid-template-columns: minmax(0,1fr) auto;
        grid-template-areas:
            "participant status"
            "level status";
        gap: 5px 8px;
        min-height: 68px;
    }
    .registered-participants-v307 .registered-participant-name { grid-area: participant; }
    .registered-participants-v307 .registered-level-badge { grid-area: level; justify-self: start; }
    .registered-status-badge-v330 { grid-area: status; align-self: center; min-width: 94px; max-width: 105px; padding: 7px 7px; font-size: 8.8px; }
}
.registered-booking-order-v330 {
    flex: 0 0 18px;
    color: #7d8ba0;
    font-style: normal;
    font-size: 10px;
    font-weight: 900;
    text-align: right;
}
@media (max-width: 430px) {
    .registered-booking-order-v330 { flex-basis: 15px; font-size: 9px; }
}

/* =========================================================
   Public class level visibility upgrade v3.3.2
   ========================================================= */
.public-premium-class-grid .public-class-level-panel {
    margin: 0 0 13px;
    padding: 11px;
    border: 1px solid #d8e6f8;
    border-radius: 14px;
    background: linear-gradient(145deg, #f4f8ff 0%, #eaf3ff 100%);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.9);
}
.public-premium-class-grid .public-class-level-heading {
    display: block;
    margin: 0 0 7px;
    color: #1956b8;
    font-size: 10px;
    font-weight: 1000;
    letter-spacing: .45px;
    line-height: 1.2;
    text-transform: uppercase;
}
.public-premium-class-grid .public-class-level-list {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 7px;
}
.public-premium-class-grid .public-class-level-count-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.public-premium-class-grid .public-class-level-count-3,
.public-premium-class-grid .public-class-level-count-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.public-premium-class-grid .public-class-level-item {
    display: flex;
    min-width: 0;
    min-height: 50px;
    flex-direction: column;
    justify-content: center;
    padding: 8px 9px;
    border: 1px solid #cfdef2;
    border-radius: 10px;
    background: rgba(255,255,255,.76);
}
.public-premium-class-grid .public-class-level-item strong {
    overflow-wrap: normal;
    word-break: normal;
    color: #102c58;
    font-size: 13px;
    font-weight: 1000;
    letter-spacing: -.15px;
    line-height: 1.18;
}
.public-premium-class-grid .public-class-level-item small {
    display: block;
    margin-top: 4px;
    color: #516c94;
    font-size: 9.5px;
    font-weight: 800;
    line-height: 1.15;
}
.public-premium-class-grid .public-class-level-unavailable {
    grid-column: 1 / -1;
}

@media (min-width: 980px) {
    .public-premium-class-grid .public-class-level-count-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
    .public-premium-class-grid .public-class-level-count-4 {
        display: flex;
        align-items: stretch;
        gap: 6px;
    }
    .public-premium-class-grid .public-class-level-count-3 .public-class-level-item,
    .public-premium-class-grid .public-class-level-count-4 .public-class-level-item {
        min-height: 52px;
        padding-inline: 7px;
    }
    .public-premium-class-grid .public-class-level-count-4 .public-class-level-item {
        flex: 1 1 0;
    }
    .public-premium-class-grid .public-class-level-count-4 .public-class-level-item-long {
        flex-grow: 1.3;
    }
    .public-premium-class-grid .public-class-level-count-4 .public-class-level-item strong {
        white-space: nowrap;
        font-size: 10.5px;
        letter-spacing: -.3px;
    }
    .public-premium-class-grid .public-class-level-count-4 .public-class-level-item small {
        white-space: nowrap;
        font-size: 8.5px;
    }
}

@media (max-width: 760px) {
    .public-premium-class-grid .public-class-level-panel {
        margin-bottom: 8px;
        padding: 8px;
        border-radius: 11px;
    }
    .public-premium-class-grid .public-class-level-heading {
        margin-bottom: 5px;
        font-size: 8.5px;
    }
    .public-premium-class-grid .public-class-level-list,
    .public-premium-class-grid .public-class-level-count-2,
    .public-premium-class-grid .public-class-level-count-3,
    .public-premium-class-grid .public-class-level-count-4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 5px;
    }
    .public-premium-class-grid .public-class-level-count-1 {
        grid-template-columns: minmax(0, 1fr);
    }
    .public-premium-class-grid .public-class-level-item {
        min-height: 43px;
        padding: 6px 7px;
        border-radius: 8px;
    }
    .public-premium-class-grid .public-class-level-item strong,
    .public-premium-class-grid .public-class-level-count-4 .public-class-level-item strong {
        font-size: 11.5px;
        line-height: 1.15;
    }
    .public-premium-class-grid .public-class-level-item small,
    .public-premium-class-grid .public-class-level-count-4 .public-class-level-item small {
        margin-top: 3px;
        font-size: 8.5px;
    }
}

@media (max-width: 390px) {
    .public-premium-class-grid .public-class-level-item strong,
    .public-premium-class-grid .public-class-level-count-4 .public-class-level-item strong {
        font-size: 10.5px;
    }
}


/* =========================================================
   Public class card compact information flow v3.3.3
   Keeps textual information close together on desktop while
   retaining equal card heights and bottom-aligned actions.
   ========================================================= */
@media (min-width: 761px) {
    .public-premium-class-grid .public-class-card {
        height: 100%;
    }
    .public-premium-class-grid .class-card-shell {
        display: flex;
        height: 100%;
        flex-direction: column;
    }
    .public-premium-class-grid .class-card-content {
        display: flex;
        flex: 1 1 auto;
        flex-direction: column;
    }
    .public-premium-class-grid .class-card-body {
        flex: 0 0 auto;
    }
    .public-premium-class-grid h3 {
        min-height: 0;
        margin: 9px 0 11px;
    }
    .public-premium-class-grid .class-price-line {
        min-height: 0;
        margin: 9px 0 11px;
    }
    .public-premium-class-grid .premium-class-meta {
        min-height: 0;
    }
    .public-premium-class-grid .seat-progress {
        margin-top: auto;
    }
}

/* =========================================================
   Teacher and classroom readability upgrade v3.3.4
   Slightly enlarges the teacher and room labels while keeping
   the compact information flow introduced in v3.3.3.
   ========================================================= */
.public-premium-class-grid .premium-class-meta {
    gap: 4px;
    font-size: 11.5px;
    font-weight: 700;
    line-height: 1.35;
}
.public-premium-class-grid .premium-class-meta span {
    min-width: 0;
}

@media (max-width: 760px) {
    .public-premium-class-grid .premium-class-meta {
        font-size: 10.75px;
        line-height: 1.3;
    }
}


/* =========================================================
   UTEC EXTRA CLASS v3.4.34 — Public Schedule Date Carousel
   Keeps all available dates in one horizontal strip.
   ========================================================= */
.public-schedule-panel .public-date-shell {
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr) 44px !important;
    align-items: center;
    gap: 12px;
    width: 100%;
    max-width: 100%;
    margin: 0 0 8px;
    overflow: visible !important;
}
.public-schedule-panel .public-date-tabs {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 11px;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    margin: 0;
    padding: 4px 2px 10px;
    overflow-x: auto !important;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
}
.public-schedule-panel .public-date-tabs::-webkit-scrollbar { display: none; }
.public-schedule-panel .public-date-tabs .date-tab {
    flex: 0 0 clamp(112px, 11.2vw, 132px) !important;
    min-width: 112px !important;
    max-width: 132px;
    min-height: 122px;
    scroll-snap-align: start;
    scroll-snap-stop: always;
}
.public-schedule-panel .date-scroll-button {
    display: grid !important;
    place-items: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 1px solid #d7e2f2;
    border-radius: 50%;
    color: #1558bd;
    background: #fff;
    box-shadow: 0 8px 22px rgba(20, 64, 132, .09);
    font-size: 30px;
    line-height: 1;
    cursor: pointer;
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease, opacity .18s ease;
}
.public-schedule-panel .date-scroll-button:hover:not(:disabled) {
    transform: translateY(-1px);
    border-color: #a9c5f1;
    box-shadow: 0 11px 25px rgba(20, 64, 132, .14);
}
.public-schedule-panel .date-scroll-button:focus-visible {
    outline: 3px solid rgba(38, 111, 236, .2);
    outline-offset: 2px;
}
.public-schedule-panel .date-scroll-button:disabled,
.public-schedule-panel .date-scroll-button.is-disabled {
    opacity: .28;
    cursor: default;
    transform: none;
    box-shadow: none;
}
.public-schedule-panel .date-scroll-hint {
    margin: 2px 0 20px;
    color: #8a96aa;
    font-size: 12px;
    font-weight: 600;
    text-align: center;
}
.public-schedule-panel .date-scroll-hint::before {
    content: "";
    display: block;
    width: 34px;
    height: 3px;
    margin: 0 auto 7px;
    border-radius: 999px;
    background: #dfe7f3;
}
.public-schedule-panel .date-scroll-hint[hidden] { display: none !important; }

@media (max-width: 760px) {
    .public-schedule-panel .public-date-shell {
        grid-template-columns: 38px minmax(0, 1fr) 38px !important;
        gap: 7px;
        margin-inline: 0;
    }
    .public-schedule-panel .date-scroll-button {
        width: 38px;
        height: 38px;
        font-size: 25px;
    }
    .public-schedule-panel .public-date-tabs {
        gap: 9px;
        padding: 3px 1px 9px;
    }
    .public-schedule-panel .public-date-tabs .date-tab {
        flex-basis: 92px !important;
        min-width: 92px !important;
        max-width: 92px;
        min-height: 106px;
        padding: 12px 8px 10px;
    }
    .public-schedule-panel .date-scroll-hint {
        margin-bottom: 15px;
        font-size: 11px;
    }
}

@media (max-width: 390px) {
    .public-schedule-panel .public-date-shell {
        grid-template-columns: 34px minmax(0, 1fr) 34px !important;
        gap: 5px;
    }
    .public-schedule-panel .date-scroll-button {
        width: 34px;
        height: 34px;
        font-size: 22px;
    }
    .public-schedule-panel .public-date-tabs .date-tab {
        flex-basis: 86px !important;
        min-width: 86px !important;
        max-width: 86px;
    }
}

/* v3.4.37 — Hero slide 2 clean rebuild using original transparent PNG assets */
.hero-slide-with-mascots .hero-builder-stage { overflow:hidden; }
.hero-slide-with-mascots .hero-mascot {
    position:absolute;
    bottom:-3%;
    z-index:1;
    pointer-events:none;
    filter:drop-shadow(0 18px 28px rgba(5,29,73,.20));
}
.hero-slide-with-mascots .hero-mascot img {
    display:block;
    width:100%;
    height:100%;
    object-fit:contain;
    object-position:center bottom;
    background:transparent!important;
}
.hero-slide-with-mascots .hero-builder-stage-desktop .hero-mascot-oliver {
    left:1.5%;
    width:24.5%;
    height:92%;
}
.hero-slide-with-mascots .hero-builder-stage-desktop .hero-mascot-ellie {
    right:2.4%;
    width:21.5%;
    height:86%;
    bottom:-1.5%;
}
.hero-slide-with-mascots .hero-builder-stage-desktop .hero-builder-eyebrow {
    left:31%!important;
    top:11%!important;
    width:38%!important;
    text-align:center!important;
}
.hero-slide-with-mascots .hero-builder-stage-desktop .hero-builder-title {
    left:28%!important;
    top:22%!important;
    width:44%!important;
    text-align:center!important;
    line-height:1.12!important;
}
.hero-slide-with-mascots .hero-builder-stage-desktop .hero-builder-description {
    left:31%!important;
    top:51%!important;
    width:38%!important;
    text-align:center!important;
    line-height:1.55!important;
}
.hero-slide-with-mascots .hero-builder-stage-desktop .hero-builder-points {
    left:30%!important;
    top:73%!important;
    width:40%!important;
    display:flex!important;
    justify-content:center!important;
    flex-wrap:wrap!important;
    gap:16px!important;
    text-align:center!important;
}
.hero-slide-with-mascots .hero-builder-stage-desktop .hero-builder-button { display:none!important; }

@media(max-width:900px){
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        height:500px!important;
        min-height:500px!important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot {
        display:block!important;
        z-index:1;
        bottom:-1.5%;
        filter:drop-shadow(0 12px 18px rgba(5,29,73,.18));
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-oliver {
        left:-4%;
        width:34%;
        height:43%;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-ellie {
        right:-3%;
        width:31%;
        height:42%;
        bottom:-1%;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-eyebrow {
        left:12%!important;
        top:7%!important;
        width:76%!important;
        text-align:center!important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-title {
        left:10%!important;
        top:16%!important;
        width:80%!important;
        font-size:clamp(28px,8.5vw,38px)!important;
        text-align:center!important;
        line-height:1.08!important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-description {
        left:12%!important;
        top:39%!important;
        width:76%!important;
        font-size:13px!important;
        line-height:1.5!important;
        text-align:center!important;
        -webkit-line-clamp:4!important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-points {
        left:20%!important;
        top:61%!important;
        width:60%!important;
        max-width:60%!important;
        justify-content:center!important;
        gap:6px!important;
        text-align:center!important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-point-chip {
        min-height:30px!important;
        padding:6px 9px!important;
        font-size:9.5px!important;
    }
}

@media(max-width:430px){
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-oliver { left:-6%; width:35%; height:40%; }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-ellie { right:-5%; width:32%; height:39%; }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-description { top:40%!important; }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-points { top:62%!important; }
}

/* =========================================================
   v3.4.38 — Responsive Hero Header Refinement
   Scope: public homepage hero Header 1 + Header 2 only.
   Desktop Header 1 remains unchanged. Header 2 uses original
   approved transparent Oliver & Ellie PNG assets.
   ========================================================= */

/* Keep desktop slider arrows away from Oliver/Ellie faces. */
@media (min-width: 901px) {
    .hero-builder-slider-v30 .hero-slider-arrow-prev { left: 28px !important; }
    .hero-builder-slider-v30 .hero-slider-arrow-next { right: 28px !important; }
}

@media (max-width: 900px) {
    /* Shared mobile hero frame: roomier and more intentional. */
    .hero-builder-slider-v30 .hero-builder-stage-mobile {
        height: 610px !important;
        min-height: 610px !important;
    }

    /* -----------------------------------------------------
       HEADER 1 MOBILE — retain existing asset/content,
       enlarge the existing illustration and lower it into
       the visual base while keeping Active/Fun/Friendly.
       ----------------------------------------------------- */
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-eyebrow {
        left: 8% !important;
        top: 6.5% !important;
        width: 84% !important;
        font-size: 11px !important;
        line-height: 1.35 !important;
        text-align: left !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-title {
        left: 8% !important;
        top: 15% !important;
        width: 84% !important;
        font-size: clamp(33px, 9.8vw, 43px) !important;
        line-height: 1.05 !important;
        text-align: left !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-description {
        left: 8% !important;
        top: 40.5% !important;
        width: 84% !important;
        font-size: 14px !important;
        line-height: 1.52 !important;
        text-align: left !important;
        -webkit-line-clamp: 5 !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-points {
        left: 8% !important;
        top: 66% !important;
        width: 36% !important;
        max-width: 36% !important;
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 9px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-point-chip {
        width: 100% !important;
        min-height: 38px !important;
        justify-content: flex-start !important;
        padding: 8px 13px !important;
        font-size: 11px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-image {
        left: 40% !important;
        top: 62% !important;
        width: 56% !important;
        height: 35% !important;
        z-index: 2 !important;
        filter: drop-shadow(0 12px 22px rgba(0,0,0,.16)) !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-image img {
        object-fit: contain !important;
        object-position: center bottom !important;
    }

    /* -----------------------------------------------------
       HEADER 2 MOBILE — approved cleaner layout:
       remove the three benefit chips and give Oliver/Ellie
       substantially more visual presence in the lower half.
       ----------------------------------------------------- */
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        height: 610px !important;
        min-height: 610px !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-eyebrow {
        left: 10% !important;
        top: 7% !important;
        width: 80% !important;
        font-size: 11px !important;
        line-height: 1.35 !important;
        text-align: center !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-title {
        left: 8% !important;
        top: 15.5% !important;
        width: 84% !important;
        font-size: clamp(30px, 9.2vw, 40px) !important;
        line-height: 1.07 !important;
        text-align: center !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-description {
        left: 10% !important;
        top: 40.5% !important;
        width: 80% !important;
        font-size: 13.5px !important;
        line-height: 1.5 !important;
        text-align: center !important;
        -webkit-line-clamp: 4 !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-points {
        display: none !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot {
        display: block !important;
        z-index: 2 !important;
        filter: drop-shadow(0 12px 18px rgba(5,29,73,.17)) !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-oliver {
        left: -2.5% !important;
        bottom: -1.5% !important;
        width: 44% !important;
        height: 48% !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-ellie {
        right: -2.5% !important;
        bottom: -1.2% !important;
        width: 42% !important;
        height: 47% !important;
    }

    /* Dots remain clear of character shoes and the steps card. */
    .hero-builder-slider-v30 .hero-slider-dots {
        bottom: 15px !important;
        z-index: 9 !important;
    }
}

@media (max-width: 430px) {
    .hero-builder-slider-v30 .hero-builder-stage-mobile,
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        height: 590px !important;
        min-height: 590px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-title {
        font-size: clamp(31px, 9.4vw, 39px) !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-description {
        top: 40% !important;
        font-size: 13px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-points {
        top: 65.5% !important;
        width: 38% !important;
        max-width: 38% !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-image {
        left: 39% !important;
        top: 62.5% !important;
        width: 58% !important;
        height: 34% !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-title {
        font-size: clamp(29px, 9vw, 37px) !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-description {
        top: 40% !important;
        font-size: 13px !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-oliver {
        left: -3.5% !important;
        width: 45% !important;
        height: 47% !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-ellie {
        right: -3.5% !important;
        width: 43% !important;
        height: 46% !important;
    }
}

@media (max-width: 370px) {
    .hero-builder-slider-v30 .hero-builder-stage-mobile,
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        height: 565px !important;
        min-height: 565px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-title {
        font-size: 30px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-description,
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-description {
        font-size: 12px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-point-chip {
        min-height: 34px !important;
        padding: 7px 10px !important;
        font-size: 10px !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-oliver {
        width: 46% !important;
        height: 45% !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-ellie {
        width: 44% !important;
        height: 44% !important;
    }
}


/* =========================================================
   v3.4.39 — Mobile Hero Exact Layout Fix
   Mobile-only implementation based on the approved preview.
   Desktop styles are intentionally untouched.
   ========================================================= */
@media (max-width: 900px) {
    .hero-builder-slider-v30 {
        padding: 12px 0 22px !important;
        overflow: hidden !important;
    }
    .hero-builder-slider-v30 .hero-builder-slide {
        padding: 0 10px !important;
    }
    .hero-builder-slider-v30 .hero-builder-stage-mobile {
        width: 100% !important;
        height: 520px !important;
        min-height: 520px !important;
        border-radius: 24px !important;
        overflow: hidden !important;
    }
    .hero-builder-slider-v30 .hero-slider-arrow {
        width: 34px !important;
        height: 34px !important;
        opacity: .92 !important;
    }
    .hero-builder-slider-v30 .hero-slider-arrow-prev { left: 16px !important; }
    .hero-builder-slider-v30 .hero-slider-arrow-next { right: 16px !important; }
    .hero-builder-slider-v30 .hero-slider-dots {
        left: 50% !important;
        right: auto !important;
        bottom: 11px !important;
        transform: translateX(-50%) !important;
        z-index: 12 !important;
    }

    /* Header 1 mobile — match approved preview, with large separate mascots. */
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-image {
        display: none !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-primary-mascot {
        display: block !important;
        position: absolute !important;
        z-index: 2 !important;
        pointer-events: none !important;
        filter: drop-shadow(0 12px 18px rgba(5,29,73,.14)) !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-primary-mascot img {
        display: block !important;
        width: 100% !important;
        height: 100% !important;
        object-fit: contain !important;
        object-position: center bottom !important;
        background: transparent !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-eyebrow {
        left: 7% !important;
        top: 5.5% !important;
        width: 86% !important;
        font-size: 10.5px !important;
        line-height: 1.25 !important;
        text-align: left !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-title {
        left: 7% !important;
        top: 12.5% !important;
        width: 86% !important;
        font-size: clamp(32px, 9.5vw, 40px) !important;
        line-height: 1.02 !important;
        text-align: left !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-description {
        left: 7% !important;
        top: 33.5% !important;
        width: 86% !important;
        font-size: 13px !important;
        line-height: 1.45 !important;
        text-align: left !important;
        -webkit-line-clamp: 4 !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-points {
        left: 7% !important;
        top: 53.5% !important;
        width: 86% !important;
        max-width: 86% !important;
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: wrap !important;
        gap: 7px !important;
        align-items: center !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-point-chip {
        width: auto !important;
        min-height: 32px !important;
        padding: 7px 11px !important;
        font-size: 10.5px !important;
        justify-content: center !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-mascot-oliver {
        left: 3% !important;
        bottom: -5% !important;
        width: 47% !important;
        height: 39% !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-mascot-ellie {
        right: 1% !important;
        bottom: -4% !important;
        width: 43% !important;
        height: 38% !important;
    }

    /* Header 2 mobile — clean copy + large mascots, no benefit chips. */
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        height: 520px !important;
        min-height: 520px !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-eyebrow {
        left: 9% !important;
        top: 5.5% !important;
        width: 82% !important;
        font-size: 10.5px !important;
        text-align: center !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-title {
        left: 7% !important;
        top: 12.5% !important;
        width: 86% !important;
        font-size: clamp(30px, 9vw, 38px) !important;
        line-height: 1.04 !important;
        text-align: center !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-description {
        left: 9% !important;
        top: 32.5% !important;
        width: 82% !important;
        font-size: 12.5px !important;
        line-height: 1.43 !important;
        text-align: center !important;
        -webkit-line-clamp: 4 !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-points {
        display: none !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot {
        display: block !important;
        position: absolute !important;
        z-index: 2 !important;
        bottom: -2% !important;
        pointer-events: none !important;
        filter: drop-shadow(0 12px 18px rgba(5,29,73,.14)) !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot img {
        width: 100% !important;
        height: 100% !important;
        object-fit: contain !important;
        object-position: center bottom !important;
        background: transparent !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-oliver {
        left: -1% !important;
        width: 50% !important;
        height: 48% !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-ellie {
        right: -1% !important;
        width: 45% !important;
        height: 47% !important;
    }

    /* Keep the booking-step panel from covering slider content. */
    .public-booking-steps {
        margin-top: -20px !important;
    }
}

@media (max-width: 430px) {
    .hero-builder-slider-v30 .hero-builder-stage-mobile,
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        height: 510px !important;
        min-height: 510px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-title {
        font-size: clamp(31px, 9.2vw, 38px) !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-description {
        top: 34% !important;
        font-size: 12.5px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-points {
        top: 54% !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-mascot-oliver {
        left: 2% !important;
        width: 48% !important;
        height: 39% !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-mascot-ellie {
        right: 0 !important;
        width: 44% !important;
        height: 38% !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-title {
        font-size: clamp(29px, 8.8vw, 36px) !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-description {
        top: 33.5% !important;
        font-size: 12.25px !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-oliver {
        width: 51% !important;
        height: 47% !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-mascot-ellie {
        width: 46% !important;
        height: 46% !important;
    }
}

@media (max-width: 390px) {
    .hero-builder-slider-v30 .hero-builder-stage-mobile,
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        height: 500px !important;
        min-height: 500px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-title {
        font-size: 34px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-description,
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-description {
        font-size: 12px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-point-chip {
        min-height: 30px !important;
        padding: 6px 9px !important;
        font-size: 10px !important;
    }
}

@media (max-width: 360px) {
    .hero-builder-slider-v30 .hero-builder-stage-mobile,
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        height: 488px !important;
        min-height: 488px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-title {
        font-size: 31px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-builder-points {
        gap: 5px !important;
    }
    .hero-slide-primary .hero-builder-stage-mobile .hero-point-chip {
        padding: 6px 8px !important;
        font-size: 9.5px !important;
    }
    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-builder-title {
        font-size: 30px !important;
    }
}

/* =========================================================
   v3.4.40 — Mobile Header 1 Exact Match
   Scope: Header 1 mobile only. Header 2 and desktop remain
   exactly as v3.4.39.
   The approved preview is rendered as a single visual asset
   so typography, spacing, badges and mascot composition do
   not drift between preview and the uploaded website.
   ========================================================= */
@media (max-width: 900px) {
    /* Header 1 uses the approved preview as the source of truth. */
    .hero-slide-primary .hero-builder-stage-mobile {
        width: 100% !important;
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: 892 / 1212 !important;
        border-radius: 24px !important;
        overflow: hidden !important;
        background: transparent !important;
    }

    .hero-slide-primary .hero-builder-stage-mobile .hero-primary-approved-preview {
        display: block !important;
        position: absolute !important;
        inset: 0 !important;
        width: 100% !important;
        height: 100% !important;
        max-width: none !important;
        object-fit: fill !important;
        object-position: center !important;
        z-index: 6 !important;
        pointer-events: none !important;
        user-select: none !important;
        -webkit-user-drag: none !important;
    }

    /* The approved Header 1 artwork already contains the visual
       pagination pill. Keep the real dots clickable but visually
       transparent while slide 1 is active, preventing duplication.
       They return to the existing v3.4.39 appearance on Header 2+. */
    .hero-builder-slider-v30[data-hero-index="0"] .hero-slider-dots {
        opacity: 0.001 !important;
    }
}


/* =========================================================
   v3.4.41 — Mobile Header 2 Exact Preview Match
   Scope: Header 2 mobile only.
   Header 1 v3.4.40 and all desktop layouts remain untouched.
   ========================================================= */
@media (max-width: 900px) {
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        width: 100% !important;
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: 995 / 1442 !important;
        border-radius: 24px !important;
        overflow: hidden !important;
        background: transparent !important;
    }

    .hero-slide-with-mascots .hero-builder-stage-mobile .hero-secondary-approved-preview {
        display: block !important;
        position: absolute !important;
        inset: 0 !important;
        width: 100% !important;
        height: 100% !important;
        max-width: none !important;
        object-fit: fill !important;
        object-position: center !important;
        z-index: 6 !important;
        pointer-events: none !important;
        user-select: none !important;
        -webkit-user-drag: none !important;
    }

    /* Header 2 approved artwork already includes its visible pagination.
       Keep the real dots available to the slider but visually transparent
       while slide 2 is active, preventing duplicate dots. */
    .hero-builder-slider-v30[data-hero-index="1"] .hero-slider-dots {
        opacity: 0.001 !important;
    }
}


/* =========================================================
   v3.4.42 — Header 1–3 Final Exact Artwork
   - Mobile 1–3 standardized at 995 × 1442
   - Desktop 1–3 use dedicated approved landscape artwork
   - No stretching, no hero height jumping between slides
   ========================================================= */

.hero-builder-stage .hero-approved-artwork {
    position: absolute !important;
    inset: 0 !important;
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    object-fit: fill !important;
    object-position: center !important;
    user-select: none !important;
    pointer-events: none !important;
    -webkit-user-drag: none !important;
    z-index: 8 !important;
}

@media (min-width: 901px) {
    .hero-builder-slider-v30 .hero-builder-stage-desktop {
        width: 100% !important;
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: 2172 / 724 !important;
        overflow: hidden !important;
        background: transparent !important;
    }

    .hero-builder-slider-v30 .hero-builder-stage-mobile {
        display: none !important;
    }

    /* Approved desktop artwork is the visible source of truth. */
    .hero-builder-slider-v30 .hero-slider-arrow {
        display: none !important;
    }
}

@media (max-width: 900px) {
    .hero-builder-slider-v30 .hero-builder-stage-mobile,
    .hero-slide-primary .hero-builder-stage-mobile,
    .hero-slide-with-mascots .hero-builder-stage-mobile {
        display: block !important;
        width: 100% !important;
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: 995 / 1442 !important;
        border-radius: 24px !important;
        overflow: hidden !important;
        background: transparent !important;
    }

    .hero-builder-slider-v30 .hero-builder-stage-desktop {
        display: none !important;
    }

    /* All approved mobile artworks own their visible pagination treatment.
       Keep the real controls functional but visually hidden to prevent duplication. */
    .hero-builder-slider-v30 .hero-slider-dots {
        opacity: 0.001 !important;
    }

    .hero-builder-slider-v30 .hero-slider-arrow {
        display: none !important;
    }
}


/* =========================================================
   v3.4.43 — Desktop Hero Slider Navigation Fix
   Scope: desktop controls only.
   Header artwork and all mobile layouts remain unchanged.
   ========================================================= */
@media (min-width: 901px) {
    .hero-builder-slider-v30 .hero-slider-arrow {
        display: grid !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
        top: 50% !important;
        bottom: auto !important;
        width: 46px !important;
        height: 46px !important;
        transform: translateY(-50%) !important;
        z-index: 30 !important;
        border: 1px solid rgba(255,255,255,.42) !important;
        background: rgba(8,31,78,.42) !important;
        backdrop-filter: blur(10px);
    }

    .hero-builder-slider-v30 .hero-slider-arrow:hover {
        background: rgba(8,31,78,.72) !important;
        border-color: rgba(255,255,255,.72) !important;
    }

    .hero-builder-slider-v30 .hero-slider-arrow:active {
        transform: translateY(-50%) scale(.94) !important;
    }

    .hero-builder-slider-v30 .hero-slider-arrow-prev {
        left: 24px !important;
    }

    .hero-builder-slider-v30 .hero-slider-arrow-next {
        right: 24px !important;
    }

    .hero-builder-slider-v30 .hero-slider-dots {
        display: flex !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
        z-index: 30 !important;
        bottom: 18px !important;
    }
}


/* =========================================================
   v3.4.44 — Desktop Hero Bottom Spacing + Header 3 Balance
   Scope: desktop Hero/Header only.
   Mobile artwork/layout remains exactly as v3.4.43.
   ========================================================= */
@media (min-width: 901px) {
    /* Keep pagination clearly inside the hero safe area. */
    .hero-builder-slider-v30 .hero-slider-dots {
        bottom: 34px !important;
        z-index: 40 !important;
    }

    /* Separate the hero from the 3-step panel; no desktop overlap. */
    .public-booking-steps {
        margin-top: 24px !important;
        z-index: 12 !important;
    }

    /* Keep the step panel visually stable below all three slides. */
    .public-booking-steps .container {
        position: relative;
        z-index: 2;
    }
}

/* =========================================================
   v3.4.44 — Header 3 Desktop Vertical Safe-Area Correction
   Scope: Header 3 desktop artwork only.
   Prevents the artwork from sitting too high / touching the
   top edge of the hero frame. Header 1, Header 2 and mobile
   remain unchanged.
   ========================================================= */
@media (min-width: 901px) {
    .hero-builder-slider-v30 .hero-builder-slide:nth-child(3) .hero-approved-desktop {
        top: 22px !important;
        height: calc(100% - 22px) !important;
    }
}

/* =========================================================
   v3.4.44 — Header 3 Desktop Vertical Centering Refinement
   Scope: Header 3 desktop artwork only.
   Moves the complete Header 3 composition (copy + mascots)
   slightly lower so top/bottom breathing room feels balanced.
   ========================================================= */
@media (min-width: 901px) {
    .hero-builder-slider-v30 .hero-builder-slide:nth-child(3) .hero-approved-desktop {
        top: 34px !important;
        height: calc(100% - 34px) !important;
    }
}


/* =========================================================
   v3.4.45 — Approved Desktop Header 3 Center Lock
   Scope: Header 3 desktop only.
   Keeps the approved v3.4.44 vertical centering while Header 2
   receives its new approved artwork. Mobile remains untouched.
   ========================================================= */
@media (min-width: 901px) {
    .hero-builder-slider-v30 .hero-builder-slide:nth-child(3) .hero-approved-desktop {
        top: 34px !important;
        height: calc(100% - 34px) !important;
    }
}

/* v3.4.46 — reset header 3 desktop artwork offsets; use approved artwork directly */
@media (min-width: 901px) {
    .hero-builder-slider-v30 .hero-builder-slide:nth-child(3) .hero-approved-desktop {
        top: 0 !important;
        height: 100% !important;
    }
}


/* =========================================================
   v3.4.47 — Native desktop Header 2 & 3 final lock
   Removes legacy artwork offsets/stretch fixes.
   Artwork itself is native 2172x724.
   ========================================================= */
@media (min-width: 901px) {
    .hero-builder-slider-v30 .hero-builder-slide:nth-child(2) .hero-approved-desktop,
    .hero-builder-slider-v30 .hero-builder-slide:nth-child(3) .hero-approved-desktop {
        inset: 0 !important;
        top: 0 !important;
        width: 100% !important;
        height: 100% !important;
        object-fit: fill !important;
        object-position: center !important;
    }
    .hero-builder-slider-v30 .hero-slider-dots {
        bottom: 34px !important;
        z-index: 40 !important;
    }
}

/* =========================================================
   UTEC Signature Footer v3.4.52 — approved desktop + mobile
   Native HTML/CSS, no screenshot asset.
   ========================================================= */
.utec-footer-v352 {
    --uf-navy: #04143f;
    --uf-navy-2: #071d56;
    --uf-blue: #0b49b5;
    --uf-cyan: #16c7ff;
    --uf-yellow: #ffc626;
    --uf-purple: #8b42ff;
    --uf-text: #f6f8ff;
    position: relative;
    overflow: hidden;
    isolation: isolate;
    margin-top: 0;
    color: var(--uf-text);
    background:
        radial-gradient(circle at 86% 12%, rgba(153, 57, 255, .34) 0, rgba(74, 43, 207, .12) 14%, transparent 31%),
        radial-gradient(circle at 8% 78%, rgba(0, 181, 255, .18), transparent 25%),
        radial-gradient(circle at 72% 88%, rgba(82, 39, 205, .22), transparent 30%),
        linear-gradient(108deg, #06174b 0%, #06235f 38%, #06194d 67%, #10104a 100%);
    font-family: "Nunito", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.utec-footer-v352::before {
    content: "";
    position: absolute;
    inset: auto -7% 9% -7%;
    height: 180px;
    z-index: -2;
    opacity: .42;
    background:
        radial-gradient(120% 90% at 40% 100%, transparent 56%, rgba(45, 118, 255, .36) 57%, transparent 59%),
        radial-gradient(105% 80% at 62% 100%, transparent 58%, rgba(127, 48, 255, .40) 59%, transparent 61%),
        radial-gradient(100% 78% at 75% 100%, transparent 60%, rgba(19, 204, 255, .20) 61%, transparent 63%);
}
.utec-footer-v352::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -5;
    opacity: .16;
    background-image:
        linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
    background-size: 42px 42px;
    mask-image: linear-gradient(to bottom, rgba(0,0,0,.55), transparent 70%);
}
.uf352-glow { position: absolute; z-index: -3; border-radius: 50%; filter: blur(25px); pointer-events: none; }
.uf352-glow-a { width: 240px; height: 240px; right: 8%; top: 2%; background: rgba(121, 49, 255, .23); }
.uf352-glow-b { width: 190px; height: 190px; left: 3%; bottom: -70px; background: rgba(0, 171, 255, .20); }
.uf352-star { position: absolute; z-index: 1; color: var(--uf-yellow); text-shadow: 0 0 16px currentColor; pointer-events: none; }
.uf352-star-a { left: 5.4%; top: 17%; font-size: 20px; }
.uf352-star-b { left: 2.8%; top: 35%; color: #23d8ff; font-size: 17px; }
.uf352-star-c { right: 15.5%; top: 11%; color: #a35cff; font-size: 22px; }
.uf352-flight { position: absolute; width: 126px; height: 86px; z-index: 0; opacity: .82; border-top: 2px dashed rgba(255,255,255,.75); border-radius: 50%; pointer-events: none; }
.uf352-flight-left { left: -35px; top: 36%; transform: rotate(24deg); }
.uf352-flight-right { right: 4%; top: 7%; transform: rotate(18deg); }
.uf352-flight-right::after { content: "➤"; position: absolute; right: -7px; top: -15px; color: #25d2ff; font-size: 27px; transform: rotate(-15deg); text-shadow: 0 0 12px #1bbcff; }
.uf352-book { position: absolute; left: 2px; bottom: 48px; width: 128px; z-index: 0; opacity: .96; pointer-events: none; transform: rotate(-4deg); }
.uf352-book svg { width: 100%; height: auto; display: block; }
.uf352-globe { position: absolute; right: -91px; bottom: 32px; width: 335px; z-index: -1; opacity: .82; pointer-events: none; }
.uf352-globe svg { width: 100%; height: auto; display: block; }

.uf352-desktop { position: relative; z-index: 2; padding-top: 58px; }
.uf352-main-grid {
    display: grid;
    grid-template-columns: .92fr 1fr 1.2fr;
    gap: 48px;
    align-items: start;
    max-width: 1210px;
    margin: 0 auto;
    padding: 0 46px 42px;
}
.uf352-intro { padding-left: 18px; }
.uf352-intro h2 { margin: 0; color: #fff; font-size: clamp(27px, 2vw, 35px); font-weight: 800; line-height: 1.18; letter-spacing: -.025em; }
.uf352-intro h2 em { color: var(--uf-yellow); font-style: normal; }
.uf352-spark { margin-left: 8px; color: var(--uf-yellow); font-size: .8em; font-weight: 500; text-shadow: 0 0 14px currentColor; }
.uf352-intro > p { margin: 15px 0 17px; color: rgba(246,248,255,.88); font-size: 15px; font-weight: 500; line-height: 1.55; }
.uf352-booking {
    display: inline-flex;
    min-width: 265px;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    gap: 18px;
    padding: 10px 23px;
    border-radius: 13px;
    color: #07194b;
    background: linear-gradient(115deg, #ffd43b, #ffb812);
    box-shadow: 0 8px 28px rgba(255,190,29,.16), inset 0 1px 0 rgba(255,255,255,.55);
    font-size: 15px;
    font-weight: 900;
    transition: transform .18s ease, box-shadow .18s ease;
}
.uf352-booking:hover { transform: translateY(-2px); box-shadow: 0 10px 32px rgba(255,190,29,.24); }
.uf352-booking span { width: 20px; display: inline-flex; }
.uf352-booking svg { width: 20px; fill: none; stroke: currentColor; stroke-width: 2; }

.uf352-column { min-height: 270px; padding-left: 44px; border-left: 1px solid rgba(255,255,255,.65); }
.uf352-column h3 { margin: 1px 0 6px; color: var(--uf-yellow); font-size: 15px; font-weight: 900; letter-spacing: .1em; }
.uf352-heading-line { display: block; width: 37px; height: 3px; margin: 0 0 26px; border-radius: 3px; background: var(--uf-cyan); box-shadow: 0 0 13px rgba(22,199,255,.28); }
.uf352-info-list { display: grid; gap: 19px; }
.uf352-info-item { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 15px; align-items: center; min-width: 0; color: #fff; }
.uf352-info-item:hover { color: #fff; }
.uf352-icon { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; color: var(--uf-cyan); flex: 0 0 auto; }
.uf352-icon svg { width: 31px; height: 31px; fill: none; stroke: currentColor; stroke-width: 1.65; }
.uf352-icon svg path:first-child:not(.fill) { fill: none; }
.uf352-info-item small { display: block; margin-bottom: 3px; color: rgba(246,248,255,.78); font-size: 13px; font-weight: 600; }
.uf352-info-item strong { display: block; color: #fff; font-size: 14px; font-weight: 800; overflow-wrap: anywhere; }
.uf352-visit-copy { display: grid; grid-template-columns: 39px minmax(0, 1fr); gap: 13px; align-items: start; }
.uf352-visit-copy p { margin: 3px 0 23px; color: rgba(246,248,255,.93); font-size: 13px; font-weight: 600; line-height: 1.6; }
.uf352-map { display: inline-grid; grid-template-columns: 34px 1fr 24px; align-items: center; gap: 10px; width: min(100%, 320px); min-height: 48px; padding: 7px 16px; border: 1px solid #159eff; border-radius: 11px; color: #fff; background: rgba(8,45,117,.32); font-size: 14px; font-weight: 800; box-shadow: inset 0 0 24px rgba(15,120,255,.07); }
.uf352-map:hover { color: #fff; background: rgba(15,100,210,.22); }
.uf352-map .uf352-icon { width: 28px; height: 28px; }
.uf352-map .uf352-icon svg { width: 26px; height: 26px; }
.uf352-map-arrow { display: inline-flex; color: #11aefc; }
.uf352-map-arrow svg { width: 22px; fill: none; stroke: currentColor; stroke-width: 2; }

.uf352-socials { position: relative; z-index: 3; display: flex; min-height: 53px; align-items: center; justify-content: center; gap: 19px; border-top: 1px solid rgba(255,255,255,.16); border-bottom: 1px solid rgba(80,111,240,.22); }
.uf352-socials a { display: inline-flex; align-items: center; gap: 8px; color: #fff; font-size: 13px; font-weight: 700; }
.uf352-socials a:hover { color: #fff; opacity: .88; }
.uf352-socials a > span { display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; color: #fff; }
.uf352-socials svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.uf352-socials svg .fill { fill: currentColor; stroke: none; }
.uf352-socials i { width: 5px; height: 5px; border-radius: 50%; background: #16a9ff; box-shadow: 0 0 9px rgba(22,169,255,.7); }
.uf352-bottom { position: relative; z-index: 3; display: grid; grid-template-columns: 1fr .8fr 1fr; align-items: center; min-height: 60px; padding: 0 42px; border-top: 1px solid rgba(255,255,255,.04); color: rgba(246,248,255,.9); font-size: 12px; font-weight: 600; }
.uf352-bottom > span:nth-child(2) { text-align: center; }
.uf352-bottom > span:nth-child(3) { justify-self: end; }
.uf352-bottom b { margin: 0 6px; color: var(--uf-yellow); font-weight: 800; }
.uf352-bottom strong, .uf352-mobile-bottom strong { color: #5feaff; font-weight: 800; text-shadow: 0 0 10px rgba(95,234,255,.26); }
.uf352-say { position: relative; display: inline-block; padding: 0 4px 11px; color: var(--uf-yellow); font-family: "Segoe Script", "Bradley Hand", "Comic Sans MS", cursive; font-size: 25px; font-weight: 700; line-height: 1; transform: rotate(-1.2deg); text-shadow: 0 0 12px rgba(255,198,38,.18); white-space: nowrap; }
.uf352-say::after, .uf352-say::before { content: ""; position: absolute; left: 17%; right: 7%; height: 2px; border-radius: 999px; background: #fff; transform: rotate(-2deg); box-shadow: 0 0 7px rgba(255,255,255,.35); }
.uf352-say::after { bottom: 4px; }
.uf352-say::before { bottom: 0; left: 31%; right: 16%; opacity: .82; transform: rotate(2deg); }

.uf352-mobile { display: none; position: relative; z-index: 2; }

@media (max-width: 900px) {
    .uf352-main-grid { gap: 25px; padding-inline: 24px; }
    .uf352-column { padding-left: 24px; }
    .uf352-intro { padding-left: 0; }
    .uf352-globe { right: -130px; opacity: .55; }
}

@media (max-width: 700px) {
    .utec-footer-v352 { min-height: 0; background:
        radial-gradient(circle at 95% 82%, rgba(0,184,255,.32), transparent 23%),
        radial-gradient(circle at 4% 96%, rgba(255,190,28,.26), transparent 16%),
        radial-gradient(circle at 86% 7%, rgba(91,65,255,.26), transparent 20%),
        linear-gradient(145deg, #06184a 0%, #072767 50%, #061545 100%); }
    .utec-footer-v352::before { height: 110px; bottom: 1%; opacity: .48; }
    .uf352-desktop { display: none; }
    .uf352-mobile { display: block; }
    .uf352-glow-a { width: 140px; height: 140px; right: -30px; top: 10px; }
    .uf352-glow-b { width: 130px; height: 130px; left: -40px; bottom: -40px; }
    .uf352-flight-left { left: -45px; top: 9%; width: 95px; height: 70px; }
    .uf352-flight-right { right: 1%; top: 5%; width: 78px; height: 58px; }
    .uf352-flight-right::after { font-size: 22px; }
    .uf352-star-a { left: 5%; top: 5%; font-size: 17px; }
    .uf352-star-b { left: 14%; top: 15%; font-size: 14px; }
    .uf352-star-c { right: 18%; top: 7%; font-size: 15px; }
    .uf352-book { left: -7px; bottom: 45px; width: 100px; opacity: .86; }
    .uf352-globe { right: -77px; bottom: -8px; width: 210px; opacity: .72; }
    .uf352-mobile-inner { position: relative; z-index: 3; width: min(100%, 720px); margin: 0 auto; padding: 24px 22px 18px; }
    .uf352-mobile-intro { text-align: center; }
    .uf352-mobile-intro h2 { margin: 0; color: #fff; font-size: clamp(23px, 6.5vw, 31px); font-weight: 800; line-height: 1.16; letter-spacing: -.02em; }
    .uf352-mobile-intro h2 span { white-space: nowrap; }
    .uf352-mobile-intro h2 em { color: var(--uf-yellow); font-style: normal; }
    .uf352-mobile-intro h2 b { margin-left: 5px; color: var(--uf-yellow); font-size: .72em; font-weight: 600; }
    .uf352-mobile-intro p { margin: 8px auto 15px; color: rgba(246,248,255,.88); font-size: 12px; font-weight: 500; line-height: 1.45; }
    .uf352-mobile .uf352-booking { width: min(100%, 390px); min-width: 0; min-height: 42px; margin: 0 auto 10px; font-size: 13px; border-radius: 13px; }
    .uf352-mobile-row { border-top: 1px solid rgba(255,255,255,.17); }
    .uf352-mobile-row:last-of-type { border-bottom: 1px solid rgba(255,255,255,.17); }
    .uf352-mobile-row summary { list-style: none; display: grid; grid-template-columns: 42px 1fr 20px; gap: 10px; align-items: center; min-height: 58px; padding: 6px 1px; cursor: pointer; }
    .uf352-mobile-row summary::-webkit-details-marker { display: none; }
    .uf352-mobile-row .uf352-icon { width: 38px; height: 38px; }
    .uf352-mobile-row .uf352-icon svg { width: 29px; height: 29px; }
    .uf352-mobile-summary { min-width: 0; display: grid; gap: 2px; text-align: left; }
    .uf352-mobile-summary strong { color: var(--uf-yellow); font-size: 12px; font-weight: 900; letter-spacing: .03em; }
    .uf352-mobile-summary small { color: rgba(246,248,255,.9); font-size: 11px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .uf352-mobile-summary i { display: inline-block; width: 4px; height: 4px; margin: 0 7px 2px; border-radius: 50%; background: #18aaff; }
    .uf352-chevron { justify-self: end; color: #fff; font-size: 28px; font-weight: 300; transition: transform .2s ease; }
    .uf352-mobile-row[open] .uf352-chevron { transform: rotate(90deg); }
    .uf352-mobile-detail { display: grid; gap: 7px; padding: 2px 52px 13px; color: rgba(246,248,255,.83); font-size: 11px; line-height: 1.5; text-align: left; }
    .uf352-mobile-detail a { color: #fff; overflow-wrap: anywhere; }
    .uf352-mobile-detail p { margin: 0; }
    .uf352-mobile .uf352-socials { min-height: 48px; gap: 13px; border-top: 0; border-bottom-color: rgba(255,255,255,.15); }
    .uf352-mobile .uf352-socials a { gap: 6px; font-size: 11px; }
    .uf352-mobile .uf352-socials a > span { width: 20px; height: 20px; }
    .uf352-mobile .uf352-socials svg { width: 19px; height: 19px; }
    .uf352-mobile .uf352-socials i { width: 4px; height: 4px; }
    .uf352-mobile-bottom { position: relative; z-index: 4; display: grid; justify-items: center; gap: 4px; padding: 12px 0 0; color: rgba(246,248,255,.9); font-size: 10.5px; font-weight: 600; text-align: center; }
    .uf352-mobile-bottom b { color: var(--uf-yellow); }
    .uf352-mobile-bottom .uf352-say { margin-top: 2px; padding-bottom: 9px; font-size: 19px; }
    .uf352-mobile-bottom .uf352-say::after { height: 2px; bottom: 3px; }
    .uf352-mobile-bottom .uf352-say::before { height: 1.5px; bottom: 0; }
}

@media (max-width: 430px) {
    .uf352-mobile-inner { padding-inline: 15px; }
    .uf352-mobile-intro h2 { font-size: 24px; }
    .uf352-mobile-intro h2 span { font-size: 21px; }
    .uf352-mobile-summary small { font-size: 10px; }
    .uf352-mobile .uf352-socials { gap: 9px; }
    .uf352-mobile .uf352-socials a { font-size: 10px; }
    .uf352-mobile-bottom { font-size: 9.7px; }
    .uf352-mobile-bottom .uf352-say { font-size: 17px; }
}

@media print {
    .utec-footer-v352 { display: none !important; }
}

/* =========================================================
   UTEC Signature Footer v3.4.53 — visual-lock implementation
   Preview-approved proportions, icon system, desktop/mobile.
   New namespace: uf353 — does not patch v3.4.52 footer styles.
   ========================================================= */
.utec-footer-v353 {
    --uf353-navy: #03113d;
    --uf353-navy-2: #061e5b;
    --uf353-blue: #0a3f9c;
    --uf353-cyan: #13caff;
    --uf353-yellow: #ffc526;
    --uf353-purple: #8c45ff;
    --uf353-text: #f7f9ff;
    position: relative;
    overflow: hidden;
    isolation: isolate;
    margin-top: 0;
    color: var(--uf353-text);
    background:
        radial-gradient(circle at 87% 12%, rgba(146, 48, 255, .38) 0, rgba(91, 48, 224, .15) 15%, transparent 34%),
        radial-gradient(circle at 8% 76%, rgba(0, 181, 255, .18), transparent 28%),
        radial-gradient(circle at 69% 91%, rgba(97, 38, 223, .28), transparent 30%),
        linear-gradient(111deg, #041446 0%, #06215e 39%, #071a52 67%, #11104b 100%);
    font-family: "Nunito", "Noto Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.utec-footer-v353::before {
    content: "";
    position: absolute;
    left: -4%; right: -4%; bottom: 5%;
    height: 160px;
    z-index: -2;
    opacity: .58;
    background:
        radial-gradient(105% 75% at 45% 110%, transparent 55%, rgba(20, 125, 255, .27) 56%, transparent 58%),
        radial-gradient(102% 72% at 63% 108%, transparent 57%, rgba(128, 45, 255, .34) 58%, transparent 60%),
        radial-gradient(95% 68% at 78% 105%, transparent 60%, rgba(11, 214, 255, .16) 61%, transparent 63%);
}
.utec-footer-v353::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -5;
    opacity: .13;
    background-image:
        radial-gradient(circle at 20% 30%, rgba(255,255,255,.32) 0 1px, transparent 1.5px),
        radial-gradient(circle at 75% 18%, rgba(255,255,255,.2) 0 1px, transparent 1.5px);
    background-size: 64px 64px, 89px 89px;
    mask-image: linear-gradient(to bottom, rgba(0,0,0,.72), transparent 82%);
}
.uf353-glow { position: absolute; z-index: -3; border-radius: 50%; filter: blur(28px); pointer-events: none; }
.uf353-glow-a { width: 270px; height: 270px; right: 7%; top: -40px; background: rgba(126, 40, 255, .24); }
.uf353-glow-b { width: 230px; height: 230px; left: 1%; bottom: -95px; background: rgba(0, 187, 255, .18); }
.uf353-star { position: absolute; z-index: 1; color: var(--uf353-yellow); text-shadow: 0 0 17px currentColor; pointer-events: none; }
.uf353-star-a { left: 5.2%; top: 16%; font-size: 20px; }
.uf353-star-b { left: 2.7%; top: 35%; color: #21d8ff; font-size: 17px; }
.uf353-star-c { right: 15.8%; top: 10%; color: #a654ff; font-size: 22px; }
.uf353-flight { position: absolute; z-index: 0; width: 132px; height: 88px; opacity: .82; border-top: 2px dashed rgba(255,255,255,.78); border-radius: 50%; pointer-events: none; }
.uf353-flight-left { left: -39px; top: 36%; transform: rotate(23deg); }
.uf353-flight-right { right: 3%; top: 6%; transform: rotate(17deg); }
.uf353-flight-right::after { content: "➤"; position: absolute; right: -7px; top: -15px; color: #24d5ff; font-size: 27px; transform: rotate(-15deg); text-shadow: 0 0 13px #1fbfff; }
.uf353-book { position: absolute; left: 8px; bottom: 43px; width: 150px; z-index: 0; opacity: .98; pointer-events: none; transform: rotate(-4deg); }
.uf353-book::before { content: ""; position: absolute; inset: 40% 12% 0; z-index: -1; background: rgba(76,69,255,.58); filter: blur(24px); border-radius: 50%; }
.uf353-book svg { display: block; width: 100%; height: auto; }
.uf353-globe { position: absolute; right: -92px; bottom: 30px; width: 350px; z-index: -1; opacity: .93; pointer-events: none; }
.uf353-globe::before { content: ""; position: absolute; inset: 18%; z-index: -1; border-radius: 50%; background: rgba(60,79,255,.36); filter: blur(28px); }
.uf353-globe svg { display: block; width: 100%; height: auto; }

.uf353-desktop { position: relative; z-index: 2; width: 100%; padding-top: 54px; }
.uf353-main-grid {
    display: grid;
    grid-template-columns: minmax(320px,.86fr) minmax(330px,.94fr) minmax(430px,1.28fr);
    gap: 72px;
    align-items: start;
    width: min(1600px, calc(100% - 120px));
    margin: 0 auto;
    padding: 0 18px 35px;
}
.uf353-intro { min-width: 0; padding-left: 18px; }
.uf353-intro h2 { margin: 0; color: #fff; font-size: clamp(30px, 2.05vw, 38px); font-weight: 750; line-height: 1.18; letter-spacing: -.028em; }
.uf353-intro h2 em { color: var(--uf353-yellow); font-style: normal; }
.uf353-spark { margin-left: 8px; color: var(--uf353-yellow); font-size: .76em; font-weight: 500; text-shadow: 0 0 15px currentColor; }
.uf353-intro > p { margin: 15px 0 18px; color: rgba(247,249,255,.88); font-size: 15px; font-weight: 450; line-height: 1.55; }
.uf353-booking {
    display: inline-flex;
    min-width: 270px;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    gap: 18px;
    padding: 10px 24px;
    border-radius: 14px;
    color: #07194b;
    background: linear-gradient(115deg, #ffd63c, #ffb714);
    box-shadow: 0 9px 28px rgba(255,190,29,.16), inset 0 1px 0 rgba(255,255,255,.56);
    font-size: 15px;
    font-weight: 850;
    transition: transform .18s ease, box-shadow .18s ease;
}
.uf353-booking:hover { transform: translateY(-2px); box-shadow: 0 11px 32px rgba(255,190,29,.25); }
.uf353-booking span { display: inline-flex; width: 20px; }
.uf353-booking svg { width: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

.uf353-column { min-height: 278px; padding-left: 44px; border-left: 1px solid rgba(255,255,255,.62); }
.uf353-column h3 { margin: 1px 0 7px; color: var(--uf353-yellow); font-size: 15px; font-weight: 850; letter-spacing: .1em; }
.uf353-heading-line { display: block; width: 38px; height: 3px; margin: 0 0 25px; border-radius: 3px; background: var(--uf353-cyan); box-shadow: 0 0 13px rgba(19,202,255,.32); }
.uf353-info-list { display: grid; gap: 19px; }
.uf353-info-item { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 15px; align-items: center; min-width: 0; color: #fff; }
.uf353-info-item:hover { color: #fff; }
.uf353-icon { display: inline-flex; width: 36px; height: 36px; align-items: center; justify-content: center; color: var(--uf353-cyan); flex: 0 0 auto; }
.uf353-icon svg { width: 29px; height: 29px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.uf353-info-item small { display: block; margin-bottom: 3px; color: rgba(247,249,255,.76); font-size: 13px; font-weight: 500; }
.uf353-info-item strong { display: block; color: #fff; font-size: 14px; font-weight: 760; overflow-wrap: anywhere; }
.uf353-visit-copy { display: grid; grid-template-columns: 39px minmax(0,1fr); gap: 14px; align-items: start; }
.uf353-visit-copy p { margin: 3px 0 22px; color: rgba(247,249,255,.94); font-size: 13px; font-weight: 540; line-height: 1.62; }
.uf353-map { display: inline-grid; grid-template-columns: 32px 1fr 23px; align-items: center; gap: 11px; width: min(100%, 325px); min-height: 48px; padding: 7px 16px; border: 1px solid #129fff; border-radius: 11px; color: #fff; background: rgba(8,45,117,.27); font-size: 14px; font-weight: 760; box-shadow: inset 0 0 25px rgba(15,120,255,.07); }
.uf353-map:hover { color: #fff; background: rgba(15,100,210,.22); }
.uf353-map .uf353-icon { width: 27px; height: 27px; }
.uf353-map .uf353-icon svg { width: 25px; height: 25px; }
.uf353-map-arrow { display: inline-flex; color: #13b8ff; }
.uf353-map-arrow svg { width: 21px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

.uf353-socials { position: relative; z-index: 3; display: flex; min-height: 54px; align-items: center; justify-content: center; gap: 20px; border-top: 1px solid rgba(255,255,255,.17); border-bottom: 1px solid rgba(80,111,240,.22); }
.uf353-socials a { display: inline-flex; align-items: center; gap: 8px; color: #fff; font-size: 13px; font-weight: 650; }
.uf353-socials a:hover { color: #fff; opacity: .88; }
.uf353-socials a > span { display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; color: #fff; }
.uf353-socials svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.uf353-socials svg .fill { fill: currentColor; stroke: none; }
.uf353-socials i { width: 5px; height: 5px; border-radius: 50%; background: #16a9ff; box-shadow: 0 0 9px rgba(22,169,255,.7); }
.uf353-bottom { position: relative; z-index: 3; display: grid; grid-template-columns: 1fr .8fr 1fr; align-items: center; min-height: 61px; padding: 0 max(50px, calc((100vw - 1600px)/2 + 20px)); border-top: 1px solid rgba(255,255,255,.04); color: rgba(247,249,255,.9); font-size: 12px; font-weight: 530; }
.uf353-bottom > span:nth-child(2) { text-align: center; }
.uf353-bottom > span:nth-child(3) { justify-self: end; }
.uf353-bottom b { margin: 0 6px; color: var(--uf353-yellow); font-weight: 800; }
.uf353-bottom strong, .uf353-mobile-bottom strong { color: #72efff; font-weight: 800; text-shadow: 0 0 11px rgba(114,239,255,.34); }
.uf353-say { position: relative; display: inline-block; padding: 0 4px 11px; color: var(--uf353-yellow); font-family: "Segoe Script", "Bradley Hand", cursive; font-size: 24px; font-weight: 650; line-height: 1; transform: rotate(-1deg); text-shadow: 0 0 12px rgba(255,198,38,.18); white-space: nowrap; }
.uf353-say::after, .uf353-say::before { content: ""; position: absolute; left: 17%; right: 7%; height: 2px; border-radius: 999px; background: #fff; transform: rotate(-2deg); box-shadow: 0 0 7px rgba(255,255,255,.36); }
.uf353-say::after { bottom: 4px; }
.uf353-say::before { bottom: 0; left: 31%; right: 16%; opacity: .84; transform: rotate(2deg); }
.uf353-mobile { display: none; position: relative; z-index: 2; }

@media (max-width: 1250px) and (min-width: 701px) {
    .uf353-main-grid { grid-template-columns: .84fr .95fr 1.18fr; gap: 38px; width: calc(100% - 54px); }
    .uf353-column { padding-left: 28px; }
    .uf353-intro { padding-left: 4px; }
    .uf353-globe { right: -135px; opacity: .7; }
}

@media (max-width: 700px) {
    .utec-footer-v353 {
        min-height: 0;
        background:
            radial-gradient(circle at 96% 82%, rgba(0,184,255,.34), transparent 22%),
            radial-gradient(circle at 3% 96%, rgba(255,190,28,.24), transparent 15%),
            radial-gradient(circle at 87% 7%, rgba(91,65,255,.27), transparent 20%),
            linear-gradient(145deg, #06184a 0%, #072767 50%, #061545 100%);
    }
    .utec-footer-v353::before { height: 96px; bottom: 1%; opacity: .50; }
    .uf353-desktop { display: none; }
    .uf353-mobile { display: block; }
    .uf353-glow-a { width: 130px; height: 130px; right: -26px; top: 8px; }
    .uf353-glow-b { width: 120px; height: 120px; left: -38px; bottom: -38px; }
    .uf353-flight-left { left: -48px; top: 8%; width: 92px; height: 65px; }
    .uf353-flight-right { right: 1%; top: 5%; width: 75px; height: 54px; }
    .uf353-flight-right::after { font-size: 20px; }
    .uf353-star-a { left: 5%; top: 5%; font-size: 16px; }
    .uf353-star-b { left: 14%; top: 14%; font-size: 13px; }
    .uf353-star-c { right: 18%; top: 7%; font-size: 14px; }
    .uf353-book { left: -4px; bottom: 34px; width: 88px; opacity: .90; }
    .uf353-globe { right: -56px; bottom: -5px; width: 148px; opacity: .78; }
    .uf353-mobile-inner { position: relative; z-index: 3; width: 100%; margin: 0 auto; padding: 18px 17px 13px; }
    .uf353-mobile-intro { text-align: center; }
    .uf353-mobile-intro h2 { margin: 0; color: #fff; font-size: 20px; font-weight: 760; line-height: 1.16; letter-spacing: -.018em; }
    .uf353-mobile-intro h2 span { display: block; margin-top: 2px; font-size: 18px; white-space: nowrap; }
    .uf353-mobile-intro h2 em { color: var(--uf353-yellow); font-style: normal; }
    .uf353-mobile-intro h2 b { margin-left: 4px; color: var(--uf353-yellow); font-size: .72em; font-weight: 500; }
    .uf353-mobile-intro p { margin: 7px auto 12px; color: rgba(247,249,255,.88); font-size: 10.5px; font-weight: 450; line-height: 1.4; }
    .uf353-mobile .uf353-booking { width: min(100%, 370px); min-width: 0; min-height: 40px; margin: 0 auto 9px; padding-inline: 18px; border-radius: 12px; font-size: 12px; }
    .uf353-mobile-row { border-top: 1px solid rgba(255,255,255,.16); }
    .uf353-mobile-row:last-of-type { border-bottom: 1px solid rgba(255,255,255,.16); }
    .uf353-mobile-row summary { list-style: none; display: grid; grid-template-columns: 34px 1fr 18px; gap: 8px; align-items: center; min-height: 49px; padding: 4px 1px; cursor: pointer; }
    .uf353-mobile-row summary::-webkit-details-marker { display: none; }
    .uf353-mobile-row .uf353-icon { width: 31px; height: 31px; }
    .uf353-mobile-row .uf353-icon svg { width: 24px; height: 24px; stroke-width: 1.85; }
    .uf353-mobile-summary { min-width: 0; display: grid; gap: 1px; text-align: left; }
    .uf353-mobile-summary strong { color: var(--uf353-yellow); font-size: 11px; font-weight: 850; letter-spacing: .025em; }
    .uf353-mobile-summary small { color: rgba(247,249,255,.9); font-size: 9.7px; font-weight: 520; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .uf353-mobile-summary i { display: inline-block; width: 3.5px; height: 3.5px; margin: 0 5px 2px; border-radius: 50%; background: #18aaff; }
    .uf353-chevron { justify-self: end; color: #fff; font-size: 23px; font-weight: 300; transition: transform .2s ease; }
    .uf353-mobile-row[open] .uf353-chevron { transform: rotate(90deg); }
    .uf353-mobile-detail { display: grid; gap: 6px; padding: 1px 42px 10px; color: rgba(247,249,255,.83); font-size: 9.8px; line-height: 1.45; text-align: left; }
    .uf353-mobile-detail a { color: #fff; overflow-wrap: anywhere; }
    .uf353-mobile-detail p { margin: 0; }
    .uf353-mobile .uf353-socials { min-height: 43px; gap: 11px; border-top: 0; border-bottom-color: rgba(255,255,255,.14); }
    .uf353-mobile .uf353-socials a { gap: 5px; font-size: 9.8px; font-weight: 580; }
    .uf353-mobile .uf353-socials a > span { width: 18px; height: 18px; }
    .uf353-mobile .uf353-socials svg { width: 17px; height: 17px; }
    .uf353-mobile .uf353-socials i { width: 3.5px; height: 3.5px; }
    .uf353-mobile-bottom { position: relative; z-index: 4; display: grid; justify-items: center; gap: 3px; padding: 9px 72px 0; color: rgba(247,249,255,.9); font-size: 9.1px; font-weight: 520; text-align: center; }
    .uf353-mobile-bottom b { color: var(--uf353-yellow); }
    .uf353-mobile-bottom .uf353-say { margin-top: 2px; padding-bottom: 8px; font-size: 15px; }
    .uf353-mobile-bottom .uf353-say::after { height: 2px; bottom: 3px; }
    .uf353-mobile-bottom .uf353-say::before { height: 1.4px; bottom: 0; }
}

@media (max-width: 430px) {
    .uf353-mobile-inner { padding-inline: 14px; }
    .uf353-mobile-intro h2 { font-size: 19px; }
    .uf353-mobile-intro h2 span { font-size: 16.5px; }
    .uf353-mobile-summary small { font-size: 9.1px; }
    .uf353-mobile .uf353-socials { gap: 8px; }
    .uf353-mobile .uf353-socials a { font-size: 9.1px; }
    .uf353-mobile-bottom { padding-inline: 58px; font-size: 8.6px; }
    .uf353-mobile-bottom .uf353-say { font-size: 14px; }
}

@media print {
    .utec-footer-v353 { display: none !important; }
}
