/* ==========================================
   VSFS2026 MICROSITE
   COMPLETE CSS - FIXED FONT SIZES
   ========================================== */


/* ==========================================
   1. BALBOA FONTS
   ========================================== */

@font-face {
    font-family: 'Balboa ExtraBold';
    src: url('/assets/vsfs2026/fonts/Balboa-ExtraBold.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Balboa Black';
    src: url('/assets/vsfs2026/fonts/Balboa-Black.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Balboa Light';
    src: url('/assets/vsfs2026/fonts/Balboa-Light.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Balboa Medium';
    src: url('/assets/vsfs2026/fonts/Balboa-Medium.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Balboa Bold';
    src: url('/assets/vsfs2026/fonts/Balboa-Bold.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}


/* ==========================================
   2. GLOBAL SETTINGS
   ========================================== */

:root {
    --pink: #f3adc5;
    --ink: #050505;
}

* {
    box-sizing: border-box;
}

html {
    min-height: 100%;
    background: #111;
}

body {
    margin: 0;
    font-family: 'Balboa Medium', Arial, sans-serif;
    color: var(--ink);
}


/* ==========================================
   3. PAGE BACKGROUNDS
   ========================================== */

.vsfs-page {
    width: 100%;
    max-width: 560px;
    min-height: 100dvh;

    margin: 0 auto;

    position: relative;
    overflow: hidden;

    background-color: var(--pink);
    background-repeat: no-repeat;
    background-position: center top;
    background-size: 100% 100%;
}

.page-landing {
    background-image: url('/assets/vsfs2026/landing-bg.png');
    aspect-ratio: 1146 / 2048;
}

.page-form {
    background-image: url('/assets/vsfs2026/form-bg.png');
}

.page-qr {
    background-image: url('/assets/vsfs2026/qr-bg.png');
}


/* ==========================================
   4. IMAGE BUTTONS
   ========================================== */

.image-button {
    display: block;
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
}

.image-button img {
    display: block;
    width: 100%;
    height: auto;
}

.landing-start {
    position: absolute;
    width: 48%;
    left: 26%;
    top: 60%;
}


/* ==========================================
   5. REGISTRATION PAGE
   ========================================== */

.form-content {
    position: relative;
    z-index: 1;

    width: 79%;
    margin: 0 auto;

    padding-top: 17vh;
    padding-bottom: 9vh;

    text-align: center;
}

.angels-logo {
    display: block;
    width: 55%;
    height: auto;
    margin: 0 auto;
}


/* RED - Balboa ExtraBold */

.form-instruction {
    font-family: 'Balboa ExtraBold', sans-serif;
    font-size: 14px;
    font-weight: normal;

    margin: 4.5vh 0 2vh;
}


/* Registration form layout */

.registration-form,
.otp-form {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 25px;
}


/* YELLOW - Balboa Black */
/* Registration inputs and OTP input */

.registration-form input:not([type="checkbox"]):not([type="hidden"]),
.otp-form input {
    width: 100%;
    height: 48px;
    min-height: 48px;

    padding: 10px 8px;

    background: #050505;
    border: 1px solid #050505;
    border-radius: 0;

    color: var(--pink);

    font-family: 'Balboa Black', sans-serif;
    font-size: 15px;
    font-weight: normal;

    text-align: center;
}


/* Input placeholders */

.registration-form input::placeholder,
.otp-form input::placeholder {
    color: var(--pink);
    opacity: 1;

    font-family: 'Balboa Black', sans-serif;
    font-size: 15px;
    font-weight: normal;
}


/* Date of birth: transparent native picker with custom text overlay */
.page-register .dob-field {
    position: relative;
    width: 100%;
    height: 48px;
    min-height: 48px;
    margin: 0;
    background: #000;
    overflow: hidden;
}

.page-register .dob-placeholder {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #000;
    color: var(--pink);
    font-family: 'Balboa Black', sans-serif;
    font-size: 16px;
    font-weight: normal;
    pointer-events: none;
}

.page-register .dob-field input[type="date"] {
    position: absolute;
    inset: 0;
    z-index: 3;
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    opacity: 0;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
}

/* BLUE - Balboa Light */
/* Consent text */

.checkbox-line {
    display: flex;
    gap: 8px;
    align-items: flex-start;

    text-align: left;

    font-family: 'Balboa Light', sans-serif;
    font-size: 10px;
    font-weight: normal;
    line-height: 1.35;
}

.checkbox-line span,
.checkbox-line label,
.consent-text {
    font-family: 'Balboa Light', sans-serif;
    font-weight: normal;
}

.checkbox-line input {
    margin: 1px 0 0;
    flex: none;
    accent-color: #050505;
}


/* BROWN - Balboa Medium */
/* View Terms & Conditions */

.terms-link {
    font-family: 'Balboa Medium', sans-serif;
    font-size: 12px;
    font-weight: normal;

    text-decoration: underline;
    color: #000;

    margin: 5px 0;
}


/* Submit image button */

.submit-image {
    width: 52%;
    align-self: center;
    margin: 4px auto 0;
}

.inventory-error {
    width: 100%;
    padding: 12px;
    margin: 0 0 15px;

    background: #000000;
    color: #f3adc5;

    font-family: 'Balboa ExtraBold', sans-serif;
    font-size: 15px;
    line-height: 1.3;
    text-align: center;
}


/* ==========================================
   6. OTP PAGE
   ========================================== */

.otp-content {
    padding-top: 17vh;
}


/* RED - Balboa ExtraBold */

.otp-instruction {
    font-family: 'Balboa ExtraBold', sans-serif;
    font-size: 15px;
    font-weight: normal;

    margin: 9vh 0 2vh;
    line-height: 1.25;
}

.otp-form {
    gap: 20px;
}


/* YELLOW - Balboa Black */

.otp-form input {
    font-family: 'Balboa Black', sans-serif;
    font-size: 18px;
    font-weight: normal;
}

.otp-form input::placeholder {
    font-family: 'Balboa Black', sans-serif;
    font-size: 18px;
}


/* Resend OTP */

.resend-form {
    margin-top: 22px;
}

.text-button {
    background: transparent;
    border: 0;

    text-decoration: underline;

    font-family: 'Balboa Medium', sans-serif;
    font-size: 12px;
    font-weight: normal;

    cursor: pointer;
}


/* ==========================================
   TERMS & CONDITIONS FULL PAGE POPUP
   ========================================== */

/* Terms link on registration page */

.page-register .terms-popup-trigger {
    display: block;
    align-self: center;

    padding: 0;
    border: 0;
    background: transparent;

    color: #000000;

    font-family: 'Balboa Medium', sans-serif;
    font-size: 13px;
    font-weight: normal;

    text-decoration: underline;
    cursor: pointer;
}

/* Full page popup container */

.terms-modal {
    position: absolute;

    top: 0;
    left: 0;

    width: 100%;
    height: 100%;

    z-index: 9999;

    display: none;

    margin: 0;
    padding: 0;

    background: #f3adc5;
}

/* Show popup */

.terms-modal.is-open {
    display: block;
}

.terms-modal[hidden] {
    display: none !important;
}

/* Full-size popup panel */

.terms-modal-panel {
    position: relative;

    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;

    margin: 0;
    padding: 0;

    display: flex;
    flex-direction: column;

    overflow: hidden;

    background-color: #f3adc5;
    background-image: url('/assets/vsfs2026/form-bg.png');
    background-repeat: no-repeat;
    background-position: center top;
    background-size: 100% 100%;

    color: #000000;
}

/* Close X button */

.terms-modal-close {
    position: absolute;

    top: 6%;
    right: 12%;

    z-index: 10;

    display: flex;
    align-items: center;
    justify-content: center;

    width: 36px;
    height: 36px;

    margin: 0;
    padding: 0;

    border: 0;
    background: transparent;

    color: #000000;

    font-family: Arial, sans-serif;
    font-size: 30px;
    font-weight: bold;

    cursor: pointer;
}

/* Terms main heading */

.terms-modal-panel h1 {
    flex-shrink: 0;

    width: 75%;

    margin: 0 auto 20px;
    padding-top: 17vh;

    font-family: 'Balboa ExtraBold', sans-serif;
    font-size: 20px;
    font-weight: normal;
    line-height: 1.1;

    text-align: center;
}

/* Section headings */

.terms-modal-panel h2 {
    font-family: 'Balboa ExtraBold', sans-serif;
    font-size: 16px;
    font-weight: normal;

    text-align: center;

    margin: 22px 0 12px;
}

/* Scrollable legal content */

.terms-modal-scroll {
    flex: 1;
    min-height: 0;

    width: 75%;
    margin: 0 auto 9vh;

    overflow-y: auto;
    overscroll-behavior: contain;

    padding-right: 5px;

    font-family: 'Balboa Light', sans-serif;
    font-size: 11px;
    font-weight: normal;
    line-height: 1.45;

    scrollbar-width: thin;
    scrollbar-color: #000000 transparent;
}

/* Bullet list */

.terms-modal-scroll ul {
    list-style-type: disc;
    list-style-position: outside;

    padding-left: 18px;
    margin: 0 0 18px;
}

/* Bullet text */

.terms-modal-scroll li {
    font-family: 'Balboa Light', sans-serif;
    font-size: 11px;
    font-weight: normal;
    line-height: 1.45;

    margin-bottom: 12px;
}

.terms-modal-scroll li::marker {
    color: #000000;
}

/* Mobile screens */

@media (max-width: 375px) {

    .terms-modal-close {
        top: 5%;
        right: 10%;
    }

    .terms-modal-panel h1 {
        font-size: 18px;
        padding-top: 14vh;
    }

    .terms-modal-panel h2 {
        font-size: 15px;
    }

    .terms-modal-scroll,
    .terms-modal-scroll li {
        font-size: 10px;
    }
}


/* BLUE - Balboa Light */
/* Legal paragraphs */

.legal-copy {
    max-height: 66dvh;
    overflow-y: auto;

    font-family: 'Balboa Light', sans-serif;
    font-size: 11px;
    font-weight: normal;
    line-height: 1.45;

    padding-right: 4px;
}

.legal-copy p,
.legal-copy li,
.legal-copy span {
    font-family: 'Balboa Light', sans-serif;
    font-weight: normal;
}

.legal-copy p {
    margin: 0 0 12px;
}


/* ==========================================
   8. QR RESULT PAGE
   ========================================== */

/* QR page background and layout */

.page-qr {
    background-image: url('/assets/vsfs2026/qr-bg.png');

    display: flex;
    flex-direction: column;
    align-items: center;

    min-height: 100dvh;
    height: auto;

    overflow-x: hidden;
    overflow-y: visible;
}

/* QR result content */

.qr-result-content {
    position: relative;

    top: auto;
    left: auto;

    width: 84%;
    margin: 0 auto;

    padding-top: 40vh;
    padding-bottom: 45px;

    display: flex;
    flex-direction: column;
    align-items: center;

    text-align: center;
}

/* QR code white background */

.qr-white {
    display: flex;
    align-items: center;
    justify-content: center;

    width: 220px;
    aspect-ratio: 1;

    margin: 0 auto 3vh;

    background: #ffffff;
    padding: 8px;

    flex-shrink: 0;
}

.qr-white svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Thank You heading */

.qr-result-content h1,
.thank-you-title {
    font-family: 'Balboa ExtraBold', sans-serif;
    font-size: 40px;
    font-weight: normal;

    line-height: 1;
    margin: 0 0 9px;
}

/* QR instruction */

.qr-result-content p,
.qr-instruction {
    font-family: 'Balboa Bold', sans-serif;
    font-size: 20px;
    font-weight: normal;

    line-height: 1.2;
    margin: 0;
}

/* QR footer */

.qr-footer {
    display: flex;
    flex-direction: column;
    align-items: center;

    gap: 3px;
    margin-top: 4vh;

    font-family: 'Balboa Bold', sans-serif;
    font-weight: normal;
}

.qr-footer strong {
    font-family: 'Balboa Bold', sans-serif;
    font-size: 40px;
    font-weight: normal;
}

.qr-footer span,
.hashtag {
    font-family: 'Balboa Bold', sans-serif;
    font-size: 20px;
    font-weight: normal;
}


/* ==========================================
   9. ERROR / SUCCESS MESSAGES
   ========================================== */

.flash {
    position: relative;
    z-index: 10;

    width: 80%;
    margin: 10px auto -10px;
    padding: 8px;

    text-align: center;

    font-family: 'Balboa Light', sans-serif;
    font-size: 12px;
    font-weight: normal;
    line-height: 1.3;

    background: #fff;
}

.flash.errors {
    color: #a00000;
}

.flash.errors p {
    margin: 4px 0;
}


/* ==========================================
   10. ACCESSIBILITY
   ========================================== */

.sr-only {
    position: absolute;

    width: 1px;
    height: 1px;

    padding: 0;
    margin: -1px;

    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;

    border: 0;
}


/* ==========================================
   11. LARGER SCREENS
   ========================================== */

@media (min-width: 560px) {

    .form-content,
    .otp-content,
    .terms-content {
        padding-top: 120px;
    }

    .form-instruction {
        font-size: 17px;
    }

    .registration-form input:not([type="checkbox"]):not([type="hidden"]),
    .registration-form input::placeholder {
        font-size: 18px;
    }
    .page-register .registration-form input:not([type="checkbox"]):not([type="hidden"]) {
        height: 55px;
        min-height: 55px;
    }

    .dob-label {
        font-size: 14px;
    }
    .page-register .dob-field {
        height: 55px;
        min-height: 55px;
    }

    .page-register .dob-placeholder {
        font-size: 19px;
    }

    .checkbox-line {
        font-size: 12px;
    }

    .terms-link {
        font-size: 14px;
    }

    .terms-modal-panel h1 {
        padding-top: 120px;
        font-size: 24px;
    }

    .terms-modal-panel h2 {
        font-size: 19px;
    }

    .terms-modal-scroll,
    .terms-modal-scroll li {
        font-size: 13px;
    }

    .terms-content h1 {
        font-size: 24px;
    }

    .terms-content h2 {
        font-size: 19px;
    }

    .legal-copy {
        font-size: 13px;
    }

    .otp-instruction {
        font-size: 18px;
    }

    .otp-form input,
    .otp-form input::placeholder {
        font-size: 22px;
    }

    .qr-result-content h1 {
        font-size: 38px;
    }

    .qr-result-content p {
        font-size: 17px;
    }

    .qr-footer strong {
        font-size: 32px;
    }

    .qr-footer span {
        font-size: 16px;
    }

    .qr-white {
        width: 185px;
    }
}


/* ==========================================
   12. SMALL HEIGHT SCREENS
   ========================================== */

@media (max-height: 690px) {
    .form-content {
        padding-top: 12vh;
    }

    .form-instruction {
        margin-top: 2vh;
    }

    .registration-form {
        gap: 7px;
    }

    .otp-instruction {
        margin-top: 5vh;
    }

    .qr-result-content {
        padding-top: 38vh;
        padding-bottom: 35px;
    }

    .qr-white {
        width: 135px;
    }

    .qr-result-content h1 {
        font-size: 34px;
    }

    .qr-result-content p {
        font-size: 17px;
    }

    .qr-footer strong {
        font-size: 34px;
    }

    .qr-footer span {
        font-size: 17px;
    }
}

/* ==========================================
   13. SMALL MOBILE WIDTHS
   ========================================== */
@media (max-width: 375px) {
    .page-register .dob-field,
    .page-register .registration-form input:not([type="checkbox"]):not([type="hidden"]) {
        height: 43px;
        min-height: 43px;
    }

    .page-register .dob-placeholder { font-size: 14px; }
    .terms-modal-panel h1 { font-size: 18px; }
    .terms-modal-panel h2 { font-size: 15px; }
    .terms-modal-scroll,
    .terms-modal-scroll li { font-size: 10px; }

    .qr-result-content {
        padding-top: 40vh;
        padding-bottom: 35px;
    }

    .qr-white {
        width: 135px;
    }

    .qr-result-content h1 {
        font-size: 34px;
    }

    .qr-result-content p {
        font-size: 17px;
    }

    .qr-footer strong {
        font-size: 34px;
    }

    .qr-footer span {
        font-size: 17px;
    }
}

/* ==========================================
   14. REGISTRATION CHECKBOX
   ========================================== */
.page-register .checkbox-line input[type="checkbox"] {
    -webkit-appearance: none;
    appearance: none;
    position: relative;
    width: 18px;
    height: 18px;
    min-width: 18px;
    min-height: 18px;
    margin: 0;
    padding: 0;
    flex-shrink: 0;
    background: #000;
    border: 1px solid #000;
    border-radius: 0;
    cursor: pointer;
}

.page-register .checkbox-line input[type="checkbox"]:checked::after {
    content: "";
    position: absolute;
    left: 5px;
    top: 1px;
    width: 5px;
    height: 10px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.page-register .checkbox-line input[type="checkbox"]:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}
