/* One screen, no scrolling: the card is centred in the visible viewport and shrinks on short screens. */
html { height: 100%; overflow: hidden; overscroll-behavior: none; }

body {
    align-items: center;
    background:
        radial-gradient(circle at 8% 4%, rgba(93, 83, 180, 0.28), transparent 26rem),
        url("navy-gradient-background.webp") center / cover no-repeat,
        var(--navy-deep);
    display: flex;
    height: 100vh;
    height: 100dvh;
    justify-content: center;
    overflow: hidden;
    overscroll-behavior: none;
    padding: 16px;
}

.page-art {
    background:
        url("neural-network-overlay.png") center / cover no-repeat,
        url("violet-ribbon-frame.webp") center / cover no-repeat;
    inset: 0;
    opacity: .09;
    pointer-events: none;
    position: fixed;
}

.shell {
    background: var(--navy);
    border: 1px solid rgba(136, 91, 255, 0.58);
    border-radius: 24px;
    box-shadow: 0 28px 80px rgba(0, 0, 0, .42), 0 0 42px rgba(108, 67, 255, .1);
    max-width: 440px;
    overflow: hidden;
    position: relative;
    width: 100%;
}

.brand {
    align-items: center;
    background:
        radial-gradient(circle, rgba(255, 255, 255, .9), rgba(255, 255, 255, 0) 70%) center / 80% 80% no-repeat,
        url("violet-ribbon-frame.webp") center / 100% 100% no-repeat,
        linear-gradient(145deg, #fff 0%, #f8f7fb 58%, #eeedf4 100%);
    display: flex;
    justify-content: center;
    min-height: 210px;
    padding: 56px 32px 28px;
    position: relative;
}

.sponsor { height: auto; left: 18px; position: absolute; top: 16px; width: 92px; }
.event-logo { height: auto; max-width: 300px; width: 82%; }

.panel { padding: 30px 26px 32px; text-align: center; }

.view { animation: rise .35s ease both; }
@keyframes rise { from { opacity: 0; transform: translateY(8px); } }

h1 { font-size: 1.45rem; font-weight: 700; line-height: 1.5; margin: 0 0 4px; }
.helper { color: var(--muted); font-size: .95rem; margin: 0 0 20px; }
.eyebrow { color: var(--violet); font-size: 1rem; font-weight: 700; margin: 14px 0 0; }
.block { width: 100%; }
#query { font-size: 1.2rem; letter-spacing: .04em; min-height: 56px; text-align: center; }
#query::placeholder { letter-spacing: 0; text-align: center; }
#submit { margin-top: 6px; min-height: 54px; font-size: 1.1rem; }

.result { text-align: center; }
.result .status-icon { margin-bottom: 6px; }
.result h1 { margin-top: 8px; }
.result .name { font-size: 1.9rem; line-height: 1.4; margin: 2px 0 10px; overflow-wrap: anywhere; }
.result .helper { margin-bottom: 18px; }
.show-staff {
    background: var(--violet-soft);
    border: 1px solid rgba(138, 104, 255, .45);
    border-radius: 12px;
    color: #d9cfff;
    font-size: 1rem;
    font-weight: 700;
    margin: 0;
    padding: 12px 16px;
}

.sr-only {
    border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden;
    padding: 0; position: absolute; white-space: nowrap; width: 1px;
}

@media (max-width: 380px) {
    .brand { min-height: 180px; padding: 50px 22px 22px; }
    .panel { padding: 24px 18px 26px; }
    .result .name { font-size: 1.6rem; }
}

/* Short screens (small phones, browser bars shown): compress the header so the card still fits. */
@media (max-height: 640px) {
    .brand { min-height: 0; padding: 42px 24px 16px; }
    .event-logo { max-width: 230px; }
    .panel { padding: 20px 22px 22px; }
    .helper { margin-bottom: 14px; }
}

@media (max-height: 520px) {
    body { padding: 8px; }
    .brand { padding: 30px 20px 10px; }
    .sponsor { left: 12px; top: 10px; width: 68px; }
    .event-logo { max-width: 160px; }
    .panel { padding: 14px 18px 16px; }
    h1 { font-size: 1.2rem; }
    .helper { font-size: .88rem; margin-bottom: 10px; }
    #query, #submit { min-height: 48px; }
    .status-icon { height: 52px; width: 52px; }
}

/* Too short for any layout (phone in landscape): allow scrolling rather than hide the button. */
@media (max-height: 420px) {
    html, body { overflow: auto; }
    body { height: auto; min-height: 100dvh; }
}
