
/* ALWAYS hide on Desktop/Web (Screens wider than 768px) */
@media (min-width: 769px) {
  #pwaInstallBar_removed {
    display: none !important;
  }
}

/* Show on Mobile/Responsive only */
@media (max-width: 768px) {
  #pwaInstallBar {
    /* JavaScript will toggle this to 'block' if not installed */
    display: none; 
  }
}

        :root {
            /* ── Ocean Indigo Blend Theme ── */
            --blue: #1E90FF;
            --deep-blue: #312E81;
            --light-blue: #38B6FF;
            --gradient-primary: linear-gradient(135deg, #4F46E5 0%, #1E90FF 100%);
            --gradient-splash: linear-gradient(160deg, #312E81 0%, #4F46E5 40%, #1E90FF 75%, #38B6FF 100%);
            --white: #FFFFFF;
            --dark: #1A1A2E;
            --gray: #6B7C93;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        html,
        body {
            height: 100%;
            width: 100%;
            overflow: hidden;
        }

        body {
            background: #ffffff;
            font-family: 'Inter', 'Poppins', sans-serif;
            position: fixed;
            width: 100%;
            height: 100%;
        }

        /* SPLASH */
        #splash-screen {
            position: fixed;
            width: 100%;
            height: 100vh;
            background: var(--gradient-splash);
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            z-index: 9999;
            transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
            overflow: hidden;
        }

        .splash-background {
            position: absolute;
            width: 100%;
            height: 100%;
            overflow: hidden;
            z-index: -1;
        }

        .bg-circle {
            position: absolute;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.12);
            animation: float 8s infinite ease-in-out;
        }

        .bg-circle:nth-child(1) {
            width: 300px;
            height: 300px;
            top: 10%;
            left: 5%;
            animation-delay: 0s;
        }

        .bg-circle:nth-child(2) {
            width: 200px;
            height: 200px;
            bottom: 15%;
            right: 10%;
            animation-delay: -2s;
        }

        .bg-circle:nth-child(3) {
            width: 150px;
            height: 150px;
            top: 50%;
            left: 80%;
            animation-delay: -4s;
        }

        @keyframes float {

            0%,
            100% {
                transform: translateY(0) rotate(0deg)
            }

            50% {
                transform: translateY(-20px) rotate(180deg)
            }
        }

        .logo-container {
            display: flex;
            flex-direction: column;
            align-items: center;
            text-align: center;
        }

        .main-logo {
            width: 110px;
            height: 110px;
            margin-bottom: 22px;
            filter: drop-shadow(0 12px 30px rgba(0, 0, 0, 0.22));
            animation: logoFloat 3s ease-in-out infinite;
            border-radius: 30px;
        }

        @keyframes logoFloat {

            0%,
            100% {
                transform: translateY(0) scale(1)
            }

            50% {
                transform: translateY(-12px) scale(1.03)
            }
        }

        .logo-text {
            color: #fff;
            font-size: 4rem;
            font-weight: 800;
            letter-spacing: 6px;
            text-shadow: 0 2px 0 rgba(0, 0, 0, 0.12), 0 6px 24px rgba(0, 0, 0, 0.2);
            line-height: 1;
        }

        .logo-text .accent {
            color: rgba(255, 255, 255, 0.65);
            font-weight: 300;
        }

        .logo-underline {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            margin: 10px auto 0;
        }

        .logo-underline .line {
            height: 2px;
            background: rgba(255, 255, 255, 0.45);
            border-radius: 2px;
            width: 50px;
        }

        .logo-underline .diamond {
            width: 7px;
            height: 7px;
            background: #fff;
            transform: rotate(45deg);
            border-radius: 1px;
        }

        .logo-underline .dot {
            width: 4px;
            height: 4px;
            background: rgba(255, 255, 255, 0.7);
            border-radius: 50%;
        }

        .tagline-wrap {
            margin-top: 16px;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 4px;
        }

        .tagline-eyebrow {
            font-size: .62rem;
            font-weight: 600;
            letter-spacing: 5px;
            text-transform: uppercase;
            color: rgba(255, 255, 255, 0.5);
        }

        .tagline {
            color: #fff;
            font-size: 1rem;
            font-weight: 600;
            letter-spacing: 2.5px;
            text-transform: uppercase;
            padding: 6px 20px;
            background: rgba(255, 255, 255, 0.12);
            backdrop-filter: blur(6px);
            border-radius: 4px;
            border-top: 1px solid rgba(255, 255, 255, 0.35);
            border-bottom: 1px solid rgba(255, 255, 255, 0.15);
        }

        .tagline::before,
        .tagline::after {
            content: '\2726';
            font-size: .5rem;
            color: rgba(255, 255, 255, 0.5);
            vertical-align: middle;
            margin: 0 6px;
        }

        .splash-brand { position: absolute; bottom: 24px; font-size: 0.72rem; color: rgba(255,255,255,0.5); letter-spacing: 2px; text-transform: uppercase; } .splash-brand span { color: rgba(255,255,255,0.8); font-weight: 600; }
        .loader {
            margin-top: 44px;
            width: 54px;
            height: 54px;
            border: 3px solid rgba(255, 255, 255, 0.2);
            border-top: 3px solid #fff;
            border-radius: 50%;
            animation: spin 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
        }

        @keyframes spin {
            0% {
                transform: rotate(0deg)
            }

            100% {
                transform: rotate(360deg)
            }
        }

        .fade-out {
            opacity: 0;
            transform: scale(1.1);
            pointer-events: none;
        }

        .loading-text {
            color: #fff;
            font-size: .9rem;
            font-weight: 500;
            margin-top: 16px;
            letter-spacing: 2px;
            text-transform: uppercase;
            opacity: .8;
        }

        /* CHECKING */
        #checking-overlay {
            display: none;
            position: fixed;
            inset: 0;
            z-index: 5000;
            background: rgba(30, 144, 255, 0.92);
            backdrop-filter: blur(8px);
            flex-direction: column;
            justify-content: center;
            align-items: center;
            gap: 18px;
        }

        .check-spinner {
            width: 56px;
            height: 56px;
            border: 4px solid rgba(255, 255, 255, 0.3);
            border-top: 4px solid #fff;
            border-radius: 50%;
            animation: spin 1s linear infinite;
        }

        .check-text {
            color: #fff;
            font-size: 1.05rem;
            font-weight: 700;
            letter-spacing: 1px;
        }

        .check-sub {
            color: rgba(255, 255, 255, 0.8);
            font-size: .82rem;
            font-weight: 500;
        }

        /* BG WORDS */
        #bg-word-canvas {
            position: fixed;
            inset: 0;
            z-index: 1;
            pointer-events: none;
            overflow: hidden;
        }

        .bg-word {
            position: absolute;
            font-family: 'Poppins', sans-serif;
            white-space: nowrap;
            pointer-events: none;
            will-change: transform, opacity;
            transform-origin: center center;
        }

        @keyframes wLR {
            0% {
                opacity: 0;
                transform: translateX(var(--sx)) scale(0.15)
            }

            12% {
                opacity: var(--op)
            }

            50% {
                opacity: var(--op);
                transform: translateX(var(--mx)) scale(1)
            }

            88% {
                opacity: var(--op)
            }

            100% {
                opacity: 0;
                transform: translateX(var(--ex)) scale(0.15)
            }
        }

        @keyframes wRL {
            0% {
                opacity: 0;
                transform: translateX(var(--sx)) scale(0.15)
            }

            12% {
                opacity: var(--op)
            }

            50% {
                opacity: var(--op);
                transform: translateX(var(--mx)) scale(1)
            }

            88% {
                opacity: var(--op)
            }

            100% {
                opacity: 0;
                transform: translateX(var(--ex)) scale(0.15)
            }
        }

        @keyframes wTB {
            0% {
                opacity: 0;
                transform: translateY(var(--sy)) scale(0.15)
            }

            12% {
                opacity: var(--op)
            }

            50% {
                opacity: var(--op);
                transform: translateY(var(--my)) scale(1)
            }

            88% {
                opacity: var(--op)
            }

            100% {
                opacity: 0;
                transform: translateY(var(--ey)) scale(0.15)
            }
        }

        @keyframes wBT {
            0% {
                opacity: 0;
                transform: translateY(var(--sy)) scale(0.15)
            }

            12% {
                opacity: var(--op)
            }

            50% {
                opacity: var(--op);
                transform: translateY(var(--my)) scale(1)
            }

            88% {
                opacity: var(--op)
            }

            100% {
                opacity: 0;
                transform: translateY(var(--ey)) scale(0.15)
            }
        }

        @keyframes wDG {
            0% {
                opacity: 0;
                transform: translate(var(--sx), var(--sy)) scale(0.12) rotate(var(--r))
            }

            15% {
                opacity: var(--op)
            }

            50% {
                opacity: var(--op);
                transform: translate(0px, 0px) scale(1) rotate(0deg)
            }

            85% {
                opacity: var(--op)
            }

            100% {
                opacity: 0;
                transform: translate(var(--ex), var(--ey)) scale(0.12) rotate(calc(0deg - var(--r)))
            }
        }

        /* LANDING */
        #landing-screen {
            display: none;
            position: fixed;
            width: 100%;
            height: 100vh;
            justify-content: space-between;
            align-items: center;
            padding: 0;
            z-index: 100;
            background: #ffffff;
            flex-direction: column;
            overflow: hidden;
        }

        /* Top blue brand header */
        .landing-header-band {
            width: 100%;
            background: linear-gradient(160deg, #0062CC 0%, #1E90FF 55%, #38B6FF 100%);
            display: flex;
            flex-direction: column;
            align-items: center;
            padding: 18px 24px 18px;
            position: relative;
            overflow: hidden;
            flex-shrink: 0;
            box-shadow: 0 4px 16px rgba(0, 98, 204, 0.15);
        }

        .landing-header-band::before {
            display: none;
        }

        .landing-header-band::after {
            display: none;
        }

        .brand-row {
            display: flex;
            align-items: center;
            gap: 14px;
            margin-bottom: 2px;
            position: relative;
            z-index: 1;
        }

        .landing-brand-logo {
            width: 52px;
            height: 52px;
            border-radius: 14px;
            object-fit: contain;
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.22);
        }

        .brand-text-col {
            display: flex;
            flex-direction: column;
        }

        .landing-brand-name {
            font-size: 2rem;
            font-weight: 800;
            color: #fff;
            letter-spacing: 3px;
            line-height: 1;
            text-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
        }

        .landing-brand-name .accent {
            color: rgba(255, 255, 255, 0.6);
            font-weight: 300;
        }

        .landing-tagline-badge {
            display: inline-flex;
            align-items: center;
            gap: 5px;
            background: rgba(255, 255, 255, 0.15);
            backdrop-filter: blur(6px);
            border: 1px solid rgba(255, 255, 255, 0.28);
            border-radius: 20px;
            padding: 3px 12px;
            margin-top: 4px;
            align-self: flex-start;
        }

        .landing-tagline-badge span {
            font-size: .62rem;
            font-weight: 700;
            color: rgba(255, 255, 255, 0.9);
            letter-spacing: 2px;
            text-transform: uppercase;
        }

        .landing-tagline-badge i {
            font-size: .55rem;
            color: rgba(255, 255, 255, 0.7);
        }



        /* Body / card area */
        .landing-body {
            flex: 1;
            width: 100%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-start;
            padding: 10px 20px 0;
            overflow: hidden;
        }

        .landing-container {
            width: 100%;
            max-width: 400px;
            display: flex;
            flex-direction: column;
            align-items: center;
            position: relative;
            z-index: 10;
        }

        /* MAIN CTA CARD */
        .main-cta-card {
            width: 100%;
            background: linear-gradient(145deg, #0D6ECC 0%, #1E90FF 45%, #38B6FF 100%);
            border-radius: 26px;
            padding: 18px 20px 44px;
            box-shadow: 0 16px 44px rgba(30, 144, 255, 0.38), 0 4px 12px rgba(0, 98, 204, 0.2);
            cursor: pointer;
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            position: relative;
            overflow: hidden;
            margin-bottom: 20px;
        }

        /* Decorative circles */
        .main-cta-card::before {
            content: '';
            position: absolute;
            top: -35px;
            right: -35px;
            width: 150px;
            height: 150px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.09);
        }

        .main-cta-card::after {
            content: '';
            position: absolute;
            bottom: -55px;
            left: -25px;
            width: 190px;
            height: 190px;
            border-radius: 50%;
            background: rgba(0, 0, 0, 0.06);
        }

        /* Extra shine line at top */
        .main-cta-card .card-shine {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 1px;
            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
        }

        .main-cta-card:hover {
            transform: translateY(-4px);
            box-shadow: 0 22px 52px rgba(30, 144, 255, 0.48), 0 6px 18px rgba(0, 98, 204, 0.25);
        }

        .main-cta-card:active {
            transform: translateY(-1px);
        }

        .cta-eyebrow {
            display: inline-flex;
            align-items: center;
            gap: 5px;
            font-size: .6rem;
            font-weight: 700;
            letter-spacing: 3px;
            text-transform: uppercase;
            color: rgba(255, 255, 255, 0.6);
            margin-bottom: 8px;
        }

        .cta-eyebrow::before {
            content: '';
            width: 18px;
            height: 1px;
            background: rgba(255, 255, 255, 0.4);
            display: inline-block;
        }

        .cta-eyebrow::after {
            content: '';
            width: 18px;
            height: 1px;
            background: rgba(255, 255, 255, 0.4);
            display: inline-block;
        }

        .cta-headline {
            font-size: 1.5rem;
            font-weight: 800;
            color: #fff;
            margin-bottom: 5px;
            line-height: 1.22;
            letter-spacing: -.3px;
            text-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
        }

        .cta-sub {
            font-size: .82rem;
            color: rgba(255, 255, 255, 0.78);
            font-weight: 500;
            margin-bottom: 16px;
            line-height: 1.55;
        }

        .cta-subject-wrap {
            background: rgba(255, 255, 255, 0.13);
            backdrop-filter: blur(10px);
            border: 1px solid rgba(255, 255, 255, 0.25);
            border-radius: 16px;
            padding: 12px 15px;
            margin-bottom: 14px;
            display: flex;
            align-items: center;
            gap: 12px;
            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
        }

        .cta-subject-icon {
            width: 40px;
            height: 40px;
            border-radius: 12px;
            background: rgba(255, 255, 255, 0.18);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 1.2rem;
            flex-shrink: 0;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        }

        .cta-subject-col {
            flex: 1;
            overflow: hidden;
        }

        .cta-subject-label {
            font-size: .56rem;
            font-weight: 700;
            letter-spacing: 2.5px;
            text-transform: uppercase;
            color: rgba(255, 255, 255, 0.55);
            margin-bottom: 3px;
        }

        .cta-subject-anim-wrap {
            height: 24px;
            overflow: hidden;
        }

        .cta-subject-text {
            font-size: 1.02rem;
            font-weight: 800;
            color: #fff;
            white-space: nowrap;
            display: block;
            animation: subjectIn 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;
            letter-spacing: -.1px;
        }

        @keyframes subjectIn {
            0% {
                opacity: 0;
                transform: translateY(10px) scale(0.9)
            }

            100% {
                opacity: 1;
                transform: translateY(0) scale(1)
            }
        }

        @keyframes subjectOut {
            0% {
                opacity: 1;
                transform: translateY(0)
            }

            100% {
                opacity: 0;
                transform: translateY(-10px)
            }
        }

        .cta-subject-text.exit {
            animation: subjectOut 0.22s ease-in both;
        }

        .cta-pills-row {
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
        }

        .cta-pill {
            font-size: .64rem;
            font-weight: 700;
            padding: 4px 11px;
            border-radius: 20px;
            background: rgba(255, 255, 255, 0.15);
            color: #fff;
            border: 1px solid rgba(255, 255, 255, 0.25);
            white-space: nowrap;
            backdrop-filter: blur(4px);
        }

        .cta-arrow {
            position: absolute;
            bottom: 20px;
            right: 18px;
            width: 32px;
            height: 32px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.18);
            border: 1px solid rgba(255, 255, 255, 0.3);
            display: flex;
            align-items: center;
            justify-content: center;
            color: #fff;
            font-size: .8rem;
            transition: all 0.3s;
        }

        .main-cta-card:hover .cta-arrow {
            background: rgba(255, 255, 255, 0.3);
            transform: translateX(3px);
        }

        /* TUTOR REGISTER */
        .tutor-register-btn {
            width: 100%;
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 9px 14px;
            border-radius: 14px;
            background: #F0F8FF;
            border: 1.5px solid rgba(30, 144, 255, 0.2);
            cursor: pointer;
            transition: all 0.25s;
            box-shadow: 0 2px 10px rgba(30, 144, 255, 0.07);
        }

        .tutor-register-btn:hover {
            border-color: var(--blue);
            background: #E8F4FF;
            box-shadow: 0 4px 16px rgba(30, 144, 255, 0.15);
            transform: translateY(-1px);
        }

        .tutor-register-btn:active {
            transform: translateY(0);
        }

        .tutor-btn-icon {
            width: 30px;
            height: 30px;
            border-radius: 9px;
            background: linear-gradient(135deg, #1E90FF, #38B6FF);
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            box-shadow: 0 4px 10px rgba(30, 144, 255, 0.32);
        }

        .tutor-btn-icon i {
            color: #fff;
            font-size: .75rem;
        }

        .tutor-btn-text {
            font-size: .82rem;
            font-weight: 700;
            color: var(--dark);
        }

        .tutor-btn-sub {
            font-size: .65rem;
            color: var(--blue);
            font-weight: 600;
            opacity: .75;
        }

        .tutor-btn-arrow {
            margin-left: auto;
            color: var(--blue);
            font-size: .75rem;
            opacity: .5;
        }

        /* AUTH */
        #auth-screen {
            display: none;
            position: fixed;
            width: 100%;
            height: 100%;
            justify-content: center;
            align-items: center;
            padding: 16px;
            z-index: 200;
            background: linear-gradient(160deg, #F5FAFF 0%, #EBF5FF 50%, #DDEFFF 100%);
            overflow-y: auto;
            overflow-x: hidden;
        }

        .auth-container {
            width: 100%;
            max-width: 380px;
            background: #fff;
            border: 1.5px solid rgba(30, 144, 255, 0.18);
            border-radius: 24px;
            padding: 26px 22px 24px;
            box-shadow: 0 20px 60px rgba(30, 144, 255, 0.14), 0 4px 16px rgba(0, 0, 0, 0.05);
            position: relative;
            z-index: 2;
        }

        .back-button {
            position: absolute;
            top: 16px;
            left: 16px;
            width: 34px;
            height: 34px;
            background: rgba(30, 144, 255, 0.07);
            border: 1.5px solid rgba(30, 144, 255, 0.18);
            border-radius: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
            cursor: pointer;
            transition: all 0.2s;
        }

        .back-button:hover {
            background: rgba(30, 144, 255, 0.14);
            transform: translateX(-2px);
        }

        .back-button i {
            color: var(--blue);
            font-size: .9rem;
        }

        .auth-header {
            text-align: center;
            margin-bottom: 20px;
            padding-top: 6px;
        }

        .auth-icon {
            width: 52px;
            height: 52px;
            background: var(--gradient-primary);
            border-radius: 16px;
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0 auto 12px;
            box-shadow: 0 8px 22px rgba(30, 144, 255, 0.3);
        }

        .auth-icon i {
            font-size: 1.5rem;
            color: #fff;
        }

        .auth-title {
            font-size: 1.15rem;
            font-weight: 800;
            color: var(--dark);
            margin-bottom: 4px;
        }

        .auth-subtitle {
            font-size: .82rem;
            color: var(--gray);
            font-weight: 500;
            line-height: 1.5;
        }

        .form-group {
            margin-bottom: 16px;
        }

        .form-label {
            display: block;
            font-size: .7rem;
            font-weight: 700;
            color: #8A9BB0;
            text-transform: uppercase;
            letter-spacing: .5px;
            margin-bottom: 8px;
        }

        .phone-input-wrapper {
            display: flex;
            align-items: stretch;
            background: #F6FAFF;
            border: 1.5px solid rgba(30, 144, 255, 0.2);
            border-radius: 14px;
            overflow: hidden;
            transition: all 0.2s;
        }

        .phone-input-wrapper:focus-within {
            border-color: var(--blue);
            box-shadow: 0 0 0 3px rgba(30, 144, 255, 0.12);
            background: #fff;
        }

        .country-code {
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 0 12px 0 13px;
            background: linear-gradient(135deg, rgba(30, 144, 255, 0.06), rgba(56, 182, 255, 0.03));
            border-right: 1.5px solid rgba(30, 144, 255, 0.18);
            flex-shrink: 0;
            white-space: nowrap;
        }

        .cc-flag {
            font-size: 1.1rem;
        }

        .cc-divider {
            width: 1px;
            height: 13px;
            background: rgba(30, 144, 255, 0.25);
        }

        .cc-code {
            font-size: .86rem;
            font-weight: 700;
            color: var(--dark);
            letter-spacing: .3px;
        }

        .form-input {
            flex: 1;
            min-width: 0;
            height: 50px;
            background: transparent;
            border: none;
            padding: 0 14px;
            font-size: 1rem;
            font-weight: 600;
            color: var(--dark);
            font-family: 'Inter', sans-serif;
            outline: none;
            letter-spacing: .5px;
        }

        .form-input::placeholder {
            color: #B0C4D8;
            font-weight: 400;
            font-size: .9rem;
            letter-spacing: 0;
        }

        .submit-button {
            width: 100%;
            height: 50px;
            background: var(--gradient-primary);
            border: none;
            border-radius: 14px;
            color: #fff;
            font-size: .98rem;
            font-weight: 800;
            letter-spacing: .3px;
            cursor: pointer;
            transition: all 0.25s;
            box-shadow: 0 6px 22px rgba(30, 144, 255, 0.36);
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
        }

        .submit-button:hover {
            transform: translateY(-2px);
            box-shadow: 0 10px 30px rgba(30, 144, 255, 0.46);
        }

        /* EMOJI BG */
        #emoji-bg {
            position: absolute;
            inset: 0;
            z-index: 1;
            pointer-events: none;
            overflow: hidden;
        }

        .efloat {
            position: absolute;
            line-height: 1;
            opacity: 0;
            pointer-events: none;
            animation: efloatMove var(--dur, 10s) var(--del, 0s) ease-in-out forwards;
        }

        @keyframes efloatMove {
            0% {
                opacity: 0;
                transform: translate(0, 0) scale(0.6) rotate(0deg)
            }

            12% {
                opacity: 0.28
            }

            88% {
                opacity: 0.18
            }

            100% {
                opacity: 0;
                transform: translate(var(--tx), var(--ty)) scale(1.1) rotate(var(--rot, 20deg))
            }
        }

        /* OTP */
        #otp-screen {
            display: none;
            position: fixed;
            width: 100%;
            height: 100%;
            justify-content: center;
            align-items: center;
            padding: 16px;
            z-index: 300;
            background: linear-gradient(160deg, #F5FAFF 0%, #EBF5FF 50%, #DDEFFF 100%);
            overflow-y: auto;
        }

        .otp-container {
            width: 100%;
            max-width: 380px;
            background: #fff;
            border: 1.5px solid rgba(30, 144, 255, 0.18);
            border-radius: 24px;
            padding: 26px 22px 24px;
            box-shadow: 0 20px 60px rgba(30, 144, 255, 0.14), 0 4px 16px rgba(0, 0, 0, 0.05);
            position: relative;
        }

        .otp-display-box {
            background: linear-gradient(135deg, rgba(30, 144, 255, 0.06), rgba(56, 182, 255, 0.03));
            border: 1.5px solid rgba(30, 144, 255, 0.2);
            border-radius: 16px;
            padding: 14px 16px;
            margin-bottom: 20px;
            display: flex;
            align-items: center;
            gap: 12px;
            animation: slideIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both;
        }

        @keyframes slideIn {
            from {
                opacity: 0;
                transform: translateY(-12px) scale(0.97)
            }

            to {
                opacity: 1;
                transform: translateY(0) scale(1)
            }
        }



        .otp-timer {
            display: inline-flex;
            align-items: center;
            gap: 5px;
            font-size: .76rem;
            font-weight: 700;
            color: #1565C0;
            background: rgba(21, 101, 192, 0.09);
            padding: 4px 10px;
            border-radius: 20px;
            margin-bottom: 4px;
            transition: all 0.3s;
        }

        .otp-timer.warning {
            color: #E65100;
            background: rgba(230, 81, 0, 0.09);
        }

        .otp-timer.expired {
            color: #d32f2f;
            background: rgba(211, 47, 47, 0.09);
        }

        .otp-display-note {
            font-size: .72rem;
            color: #8A9BB0;
            font-weight: 500;
            line-height: 1.4;
        }

        .otp-inputs {
            display: flex;
            gap: 10px;
            justify-content: center;
            margin-bottom: 18px;
        }

        .otp-input {
            width: 56px;
            height: 58px;
            flex-shrink: 0;
            background: #F6FAFF;
            border: 2px solid rgba(30, 144, 255, 0.2);
            border-radius: 14px;
            text-align: center;
            font-size: 1.5rem;
            font-weight: 800;
            color: var(--dark);
            transition: all 0.2s;
            font-family: 'Inter', sans-serif;
            outline: none;
        }

        .otp-input:focus {
            border-color: var(--blue);
            background: #fff;
            box-shadow: 0 0 0 3px rgba(30, 144, 255, 0.12);
            transform: scale(1.04);
        }

        .otp-input.filled {
            border-color: rgba(30, 144, 255, 0.38);
            background: rgba(240, 248, 255, 0.8);
        }

        .resend-section {
            text-align: center;
            margin-top: 14px;
        }

        .resend-text {
            font-size: .8rem;
            color: var(--gray);
            margin-bottom: 6px;
        }

        .resend-button {
            background: none;
            border: none;
            color: var(--blue);
            font-size: .86rem;
            font-weight: 700;
            cursor: pointer;
            text-decoration: underline;
        }

        .resend-button:disabled {
            color: #ccc;
            cursor: not-allowed;
            text-decoration: none;
        }

        .error-message {
            background: rgba(239, 68, 68, 0.06);
            border: 1.5px solid rgba(239, 68, 68, 0.22);
            border-radius: 11px;
            padding: 10px 14px;
            margin-bottom: 14px;
            text-align: center;
            color: #dc2626;
            font-size: .8rem;
            font-weight: 600;
            display: none;
        }

        .success-message {
            background: rgba(16, 185, 129, 0.07);
            border: 1.5px solid rgba(16, 185, 129, 0.22);
            border-radius: 11px;
            padding: 10px 14px;
            margin-bottom: 14px;
            text-align: center;
            color: #059669;
            font-size: .8rem;
            font-weight: 600;
            display: none;
        }

        .loading {
            pointer-events: none;
            opacity: .7;
        }

        /* PERMISSION SHEETS */
        .perm-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, 0.48);
            backdrop-filter: blur(4px);
            z-index: 800;
            align-items: flex-end;
            justify-content: center;
        }

        .perm-sheet {
            width: 100%;
            max-width: 480px;
            background: #fff;
            border-radius: 24px 24px 0 0;
            overflow: hidden;
            box-shadow: 0 -8px 40px rgba(0, 0, 0, 0.18);
            animation: sheetUp 0.35s cubic-bezier(0.22, 1, 0.36, 1) both;
        }

        @keyframes sheetUp {
            from {
                transform: translateY(100%)
            }

            to {
                transform: translateY(0)
            }
        }

        .perm-handle {
            width: 36px;
            height: 4px;
            background: rgba(255, 255, 255, 0.45);
            border-radius: 4px;
            margin: 10px auto 0;
        }

        .perm-top {
            background: var(--gradient-primary);
            padding: 14px 18px 16px;
            display: flex;
            align-items: center;
            gap: 12px;
        }

        .perm-top-ico {
            width: 44px;
            height: 44px;
            min-width: 44px;
            background: rgba(255, 255, 255, 0.2);
            border-radius: 13px;
            display: flex;
            justify-content: center;
            align-items: center;
            border: 1.5px solid rgba(255, 255, 255, 0.32);
        }

        .perm-top-ico i {
            font-size: 1.3rem;
            color: #fff;
        }

        .perm-top-label {
            font-size: .6rem;
            font-weight: 700;
            color: rgba(255, 255, 255, 0.65);
            letter-spacing: 2px;
            text-transform: uppercase;
        }

        .perm-top-title {
            font-size: 1.05rem;
            font-weight: 800;
            color: #fff;
            margin-top: 1px;
        }

        .perm-body {
            padding: 14px 16px 12px;
        }

        .perm-rows {
            display: flex;
            flex-direction: column;
            gap: 8px;
            margin-bottom: 12px;
        }

        .perm-row {
            display: flex;
            align-items: center;
            gap: 11px;
            padding: 10px 12px;
            background: #F0F8FF;
            border: 1.5px solid rgba(30, 144, 255, 0.13);
            border-radius: 12px;
        }

        .perm-ico {
            width: 36px;
            height: 36px;
            min-width: 36px;
            border-radius: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .perm-ico i {
            font-size: 1rem;
            color: #fff;
        }

        .perm-ico.gps {
            background: linear-gradient(135deg, #1E90FF, #38B6FF);
            box-shadow: 0 3px 8px rgba(30, 144, 255, 0.3);
        }

        .perm-ico.store {
            background: linear-gradient(135deg, #38B6FF, #74D7FF);
            box-shadow: 0 3px 8px rgba(56, 182, 255, 0.3);
        }

        .perm-ico.camera {
            background: linear-gradient(135deg, #0062CC, #1E90FF);
            box-shadow: 0 3px 8px rgba(0, 98, 204, 0.3);
        }

        .perm-info {
            flex: 1;
        }

        .perm-name {
            font-size: .83rem;
            font-weight: 800;
            color: #212121;
            display: flex;
            align-items: center;
            gap: 5px;
        }

        .perm-req {
            font-size: .52rem;
            font-weight: 700;
            color: #fff;
            background: #E53935;
            padding: 1px 5px;
            border-radius: 20px;
            letter-spacing: .4px;
            text-transform: uppercase;
        }

        .perm-why {
            font-size: .71rem;
            color: #777;
            line-height: 1.4;
            margin-top: 2px;
        }

        .perm-pledge {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 9px 12px;
            background: rgba(21, 101, 192, 0.06);
            border: 1.5px solid rgba(30, 144, 255, 0.2);
            border-radius: 10px;
            margin-bottom: 12px;
        }

        .perm-pledge i {
            font-size: 1rem;
            color: #1565C0;
            min-width: 18px;
        }

        .perm-pledge span {
            font-size: .7rem;
            color: #1565C0;
            font-weight: 600;
            line-height: 1.45;
        }

        .perm-warn-box {
            display: none;
            margin: 0 0 10px;
            background: #FFF3E0;
            border: 1.5px solid #FFB300;
            border-radius: 10px;
            padding: 9px 12px;
            font-size: .71rem;
            color: #E65100;
            font-weight: 600;
            text-align: center;
        }

        .perm-btns {
            display: flex;
            flex-direction: column;
            gap: 7px;
            padding-bottom: 6px;
        }

        .perm-accept {
            width: 100%;
            height: 48px;
            border: none;
            border-radius: 13px;
            background: var(--gradient-primary);
            color: #fff;
            font-size: .96rem;
            font-weight: 800;
            cursor: pointer;
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 7px;
            box-shadow: 0 8px 24px rgba(30, 144, 255, 0.32);
            transition: all 0.3s;
        }

        .perm-accept:hover {
            transform: translateY(-2px);
        }

        .perm-skip {
            width: 100%;
            height: 32px;
            background: none;
            border: none;
            color: #bbb;
            font-size: .74rem;
            font-weight: 600;
            cursor: pointer;
        }

        @keyframes permPulse {

            0%,
            100% {
                transform: scale(1)
            }

            40% {
                transform: scale(1.03)
            }

            70% {
                transform: scale(0.98)
            }
        }

        /* ── BOARDS CAROUSEL ── */
        .boards-section {
            width: 100%;
            padding: 10px 0 2px;
            background: #fff;
            flex-shrink: 0;
        }

        .boards-label {
            text-align: center;
            font-size: .58rem;
            font-weight: 700;
            letter-spacing: 3px;
            text-transform: uppercase;
            color: rgba(30, 144, 255, 0.42);
            margin-bottom: 7px;
        }

        .boards-row-label {
            font-size: .52rem;
            font-weight: 700;
            letter-spacing: 2.5px;
            text-transform: uppercase;
            padding: 0 16px;
            margin-bottom: 5px;
            display: flex;
            align-items: center;
            gap: 7px;
        }

        .boards-row-label::before,
        .boards-row-label::after {
            content: '';
            flex: 1;
            height: 1px;
        }

        .boards-row-label.school {
            color: rgba(30, 144, 255, 0.5);
        }

        .boards-row-label.school::before,
        .boards-row-label.school::after {
            background: rgba(30, 144, 255, 0.12);
        }

        .boards-row-label.entrance {
            color: rgba(0, 98, 204, 0.5);
        }

        .boards-row-label.entrance::before,
        .boards-row-label.entrance::after {
            background: rgba(0, 98, 204, 0.1);
        }

        .boards-track-wrap {
            width: 100%;
            overflow: hidden;
            position: relative;
            margin-bottom: 6px;
        }

        .boards-track-wrap::before,
        .boards-track-wrap::after {
            content: '';
            position: absolute;
            top: 0;
            bottom: 0;
            width: 40px;
            z-index: 2;
            pointer-events: none;
        }

        .boards-track-wrap::before {
            left: 0;
            background: linear-gradient(to right, #fff, transparent);
        }

        .boards-track-wrap::after {
            right: 0;
            background: linear-gradient(to left, #fff, transparent);
        }

        .boards-track {
            display: flex;
            gap: 8px;
            width: max-content;
            padding: 2px 14px 4px;
        }

        .boards-track.scroll-left {
            animation: boardsLeft 32s linear infinite;
        }

        .boards-track.scroll-right {
            animation: boardsRight 28s linear infinite;
        }

        .boards-track:hover {
            animation-play-state: paused;
        }

        @keyframes boardsLeft {
            0% {
                transform: translateX(0)
            }

            100% {
                transform: translateX(-50%)
            }
        }

        @keyframes boardsRight {
            0% {
                transform: translateX(-50%)
            }

            100% {
                transform: translateX(0)
            }
        }

        .board-chip {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 5px 13px;
            border-radius: 20px;
            flex-shrink: 0;
            background: #EBF5FF;
            border: 1.5px solid rgba(30, 144, 255, 0.16);
            transition: all 0.2s;
            cursor: default;
            white-space: nowrap;
        }

        .board-chip:hover {
            background: #D6EEFF;
            border-color: rgba(30, 144, 255, 0.4);
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(30, 144, 255, 0.15);
        }

        /* entrance/competitive chips — slightly deeper tone */
        .board-chip.comp {
            background: #E8F0FF;
            border-color: rgba(0, 98, 204, 0.16);
        }

        .board-chip.comp:hover {
            background: #D0E2FF;
            border-color: rgba(0, 98, 204, 0.4);
            box-shadow: 0 4px 12px rgba(0, 98, 204, 0.15);
        }

        .board-chip-dot {
            width: 6px;
            height: 6px;
            border-radius: 50%;
            flex-shrink: 0;
        }

        .board-chip-name {
            font-size: .71rem;
            font-weight: 700;
            color: #1565C0;
            letter-spacing: .2px;
        }

        .board-chip.comp .board-chip-name {
            color: #0D47A1;
        }

        .board-chip-short {
            font-size: .57rem;
            font-weight: 600;
            color: rgba(30, 144, 255, 0.55);
            background: rgba(30, 144, 255, 0.09);
            padding: 1px 5px;
            border-radius: 7px;
        }

        .board-chip.comp .board-chip-short {
            color: rgba(0, 98, 204, 0.6);
            background: rgba(0, 98, 204, 0.08);
        }

        @media(max-width:480px) {
            .main-logo {
                width: 140px;
                height: 140px
            }

            .logo-text {
                font-size: 2.8rem
            }

            .auth-container,
            .otp-container {
                border-radius: 20px;
                padding: 22px 16px 20px
            }

            .otp-input {
                width: 50px;
                height: 54px;
                font-size: 1.35rem;
                border-radius: 12px
            }

            .otp-inputs {
                gap: 8px
            }

            .cta-headline {
                font-size: 1.25rem
            }

            .landing-header-band {
                padding: 18px 20px 18px
            }

            .landing-brand-name {
                font-size: 1.75rem
            }
        }

        @media(max-width:360px) {
            .otp-input {
                width: 43px;
                height: 50px;
                font-size: 1.15rem
            }

            .otp-inputs {
                gap: 6px
            }

            .cta-headline {
                font-size: 1.15rem
            }
        }

        /* ── Larger screen / web view optimisations ── */
        @media(min-width:769px) {
            .landing-header-band {
                padding: 14px 24px 14px;
            }

            .boards-section {
                padding: 0;
            }

            .boards-label {
                margin-bottom: 4px;
            }

            .landing-body {
                padding: 6px 20px 0;
            }

            /* CTA card tighter */
            .main-cta-card {
                padding: 16px 18px 40px;
                border-radius: 22px;
            }

            .cta-headline {
                font-size: 1.3rem;
            }

            .cta-sub {
                font-size: .78rem;
                margin-bottom: 12px;
            }

            .cta-subject-wrap {
                padding: 9px 13px;
                margin-bottom: 10px;
            }

            /* Tutor register button desktop sizing */
            .tutor-register-btn {
                width: 100%;
                max-width: none;
                padding: 12px 20px;
                border-radius: 22px;
                gap: 12px;
            }

            .tutor-btn-text {
                font-size: 1.1rem;
            }

            .tutor-btn-sub {
                font-size: .78rem;
            }

            .tutor-btn-icon {
                width: 36px;
                height: 36px;
                border-radius: 10px;
            }

            .tutor-btn-icon i {
                font-size: .9rem;
            }
        }

        /* MODERN TOAST ALERT */
        #toast-container {
            position: fixed;
            bottom: 24px;
            left: 50%;
            transform: translateX(-50%);
            z-index: 9999;
            display: flex;
            flex-direction: column;
            gap: 10px;
            pointer-events: none;
        }
        .modern-toast {
            background: #2D3748;
            color: #fff;
            padding: 12px 20px;
            border-radius: 12px;
            font-size: 0.85rem;
            font-weight: 600;
            display: flex;
            align-items: center;
            gap: 10px;
            box-shadow: 0 10px 25px rgba(0,0,0,0.2);
            animation: toastEnter 0.3s cubic-bezier(0.2, 1.2, 0.4, 1) forwards;
            min-width: 280px;
        }
        .modern-toast.info {
            background: #2B6CB0;
            border-left: 4px solid #2C5282;
        }
        .modern-toast.error {
            background: #E53E3E;
            border-left: 4px solid #9B2C2C;
        }
        .modern-toast i {
            font-size: 1.1rem;
        }
        .modern-toast.toast-leave {
            animation: toastLeave 0.3s ease-in forwards;
        }
        @keyframes toastEnter {
            from { opacity: 0; transform: translateY(20px) scale(0.95); }
            to { opacity: 1; transform: translateY(0) scale(1); }
        }
        @keyframes toastLeave {
            from { opacity: 1; transform: translateY(0) scale(1); }
            to { opacity: 0; transform: translateY(20px) scale(0.95); }
        }
    