/* ============================================================
 * STREAM — Login (frontindex.php) page styles
 * Layout, branding, and login card visuals.
 * Loaded AFTER dashlite.css and theme.css so it can override.
 * ============================================================ */

/* ── STREAM Login — Full-page layout ────────────────────────── */
:root {
    --s-blue:    #4a1fa8;
    --s-blue2:   #6b38d4;
    --s-accent:  #854FFF;
    --s-accent2: #6a3fd4;
}

body.pg-auth {
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background-color: var(--s-blue);
    background-image:
        linear-gradient(120deg, rgba(24, 12, 72, .88) 0%, rgba(74, 31, 168, .72) 44%, rgba(8, 19, 45, .82) 100%),
        url('../../images/broadcast-bg.jpg');
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    min-height: 100vh;
    display: flex; align-items: center; justify-content: center;
}

/* Override nk wrappers so they don't fight the layout */
.nk-app-root, .nk-main, .nk-wrap, .nk-content {
    width: 100%; display: flex;
    align-items: center; justify-content: center;
}

/* ── Two-column centred container ── */
.stream-page {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(3rem, 6vw, 7rem);
    width: 100%;
    max-width: 1100px;
    min-height: 100vh;
    padding: 3rem 2rem;
}

/* ── Left: branding ── */
.stream-brand {
    flex: 1;
    max-width: 480px;
    color: #fff;
    animation: brandIn .6s cubic-bezier(.22,.68,0,1.2) both;
}
@keyframes brandIn {
    from { opacity: 0; transform: translateX(-24px); }
    to   { opacity: 1; transform: translateX(0); }
}

.stream-brand .s-logos {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    margin-bottom: 3.5rem;
}
.stream-brand .s-logos img.logo-uthm {
    height: 50px;
    filter: brightness(0) invert(1);
}
.stream-brand .s-logos .s-divider {
    width: 1px; height: 47px;
    background: rgba(255,255,255,.3);
}
.stream-brand .s-logos img.logo-cvl { height: 36px; }

.stream-brand h1 {
    font-size: clamp(1.75rem, 3.5vw, 2.75rem);
    font-weight: 700; line-height: 1.25;
    color: #fff; margin-bottom: 1.25rem;
}
.stream-brand p.s-tagline {
    font-size: .95rem;
    color: rgba(255,255,255,.65);
    line-height: 1.8;
    max-width: 380px;
}

/* Decorative dots */
.stream-brand .s-dots {
    display: flex; gap: .45rem;
    margin-top: 3rem;
}
.stream-brand .s-dots span {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: rgba(255,255,255,.25);
}
.stream-brand .s-dots span:first-child { background: rgba(255,255,255,.7); }

/* CVL footer logo (below dots) */
.stream-brand .s-cvl-footer {
    margin-top: 1.5rem;
    display: flex;
    align-items: center;
}
.stream-brand .s-cvl-footer img {
    height: 44px;
    opacity: .85;
}

/* ── Right: floating white card ── */
.stream-card {
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 32px 80px rgba(0,0,0,.28);
    padding: 2.75rem 2.5rem 2rem;
    width: 100%;
    max-width: 420px;
    flex-shrink: 0;
    animation: cardIn .55s .1s cubic-bezier(.22,.68,0,1.2) both;
}
@keyframes cardIn {
    from { opacity: 0; transform: translateY(28px) scale(.97); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* STREAM product logo inside login card */
.stream-card-logo {
    display: block;
    max-height: 44px;
    width: auto;
    margin: 0 0 1.5rem;
}

.stream-card h2 {
    font-size: 1.6rem; font-weight: 700;
    color: #1c2b46; margin-bottom: .3rem;
}
.stream-card .s-card-sub {
    font-size: .85rem; color: #8094ae; margin-bottom: 1.75rem;
}

/* Inputs */
.stream-card .form-control {
    border-radius: 10px !important;
    border: 1.5px solid #e3e8f0 !important;
    background: #f7f9fc !important;
    font-size: .9rem !important;
    color: #1c2b46 !important;
    transition: border-color .2s, box-shadow .2s, background .2s;
}
.stream-card .form-control:focus {
    background: #fff !important;
    border-color: var(--s-accent) !important;
    box-shadow: 0 0 0 3px rgba(133,79,255,.12) !important;
}
.stream-card .form-label {
    font-size: .75rem; font-weight: 600;
    color: #526484; letter-spacing: .5px;
    text-transform: uppercase;
}

/* Sign In button */
.btn-stream-signin {
    background: linear-gradient(135deg, var(--s-accent) 0%, var(--s-accent2) 100%) !important;
    border: none !important; border-radius: 10px !important;
    font-weight: 600 !important; font-size: .95rem !important;
    padding: .78rem 1rem !important; color: #fff !important;
    letter-spacing: .3px;
    transition: transform .15s, box-shadow .15s !important;
}
.btn-stream-signin:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 30px rgba(133,79,255,.4) !important;
}
.btn-stream-signin:active { transform: translateY(0); }

/* Card footer */
.stream-card-footer {
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid #f0f3f8;
}
/* Footer nav: align flush-left with .s-card-sub */
.stream-card-footer .nav.nav-sm {
    padding-left: 0;
    margin-left: 0;
    margin-bottom: 0;
    list-style: none;
    gap: 1rem;
}
.stream-card-footer .nav.nav-sm .nav-item { padding: 0; }
.stream-card-footer .nav.nav-sm .nav-link {
    padding: 0;
    font-size: .78rem;
    color: #8094ae;
}
.stream-card-footer .nav.nav-sm .nav-link:hover { color: var(--s-accent); }
.stream-card-footer small { color: #b8c4d4; font-size: .72rem; }

/* Status/alert */
#serverResponse, #loginstatus { font-size: .82rem; min-height: 1rem; }

/* ── Responsive ── */
@media (max-width: 820px) {
    .stream-page { flex-direction: column; gap: 2rem; padding: 2rem 1rem; min-height: unset; }
    .stream-brand { max-width: 100%; text-align: center; }
    .stream-brand .s-logos { justify-content: center; }
    .stream-brand p.s-tagline { margin: 0 auto; }
    .stream-brand .s-dots { justify-content: center; }
    .stream-brand .s-cvl-footer { justify-content: center; }
    .stream-card-logo { margin-left: auto; margin-right: auto; }
    .stream-card { max-width: 100%; }
}
