:root {
    --nac-primary: #1947d1;
    --nac-primary-dark: #102d91;
    --nac-accent: #14b87a;
    --nac-ink: #122044;
    --nac-muted: #66718d;
    --nac-glass: rgba(255, 255, 255, .72);
    --nac-line: rgba(255, 255, 255, .66);
    --nac-shadow: 0 20px 55px rgba(25, 46, 105, .14);
}

* { box-sizing: border-box; }

body.student-body {
    min-height: 100vh;
    color: var(--nac-ink);
    background:
        radial-gradient(circle at 8% 12%, rgba(81, 142, 255, .22), transparent 28rem),
        radial-gradient(circle at 92% 4%, rgba(20, 184, 122, .17), transparent 25rem),
        linear-gradient(135deg, #f5f8ff 0%, #edf3ff 48%, #f7fbff 100%);
    font-family: Inter, "Segoe UI", system-ui, -apple-system, sans-serif;
    overflow-x: hidden;
}

body.student-body::before,
body.student-body::after {
    content: "";
    position: fixed;
    z-index: -1;
    width: 18rem;
    height: 18rem;
    border-radius: 50%;
    filter: blur(4px);
    opacity: .32;
    pointer-events: none;
    animation: nac-float 12s ease-in-out infinite alternate;
}
body.student-body::before {
    top: 42%;
    left: -8rem;
    background: linear-gradient(135deg, #8ea9ff, #c6d4ff);
}
body.student-body::after {
    right: -8rem;
    bottom: 8%;
    background: linear-gradient(135deg, #83e4c0, #c4f7e5);
    animation-delay: -4s;
}

.student-topbar {
    position: sticky;
    top: 0;
    z-index: 20;
    background: rgba(255, 255, 255, .76);
    border-bottom: 1px solid var(--nac-line);
    box-shadow: 0 8px 28px rgba(26, 50, 111, .08);
    backdrop-filter: blur(18px) saturate(140%);
    -webkit-backdrop-filter: blur(18px) saturate(140%);
}

.student-topbar .container {
    min-height: 74px;
}

.student-topbar .bi-shield-check {
    filter: drop-shadow(0 5px 8px rgba(25, 71, 209, .25));
}

.card,
.receipt-box {
    border: 1px solid var(--nac-line);
    border-radius: 20px;
    background: var(--nac-glass);
    box-shadow: var(--nac-shadow);
    backdrop-filter: blur(16px) saturate(135%);
    -webkit-backdrop-filter: blur(16px) saturate(135%);
}

.card {
    transition: transform .3s ease, box-shadow .3s ease;
}
.card:hover {
    transform: translateY(-3px);
    box-shadow: 0 25px 65px rgba(25, 46, 105, .18);
}

.btn-nac-primary {
    border: 1px solid rgba(255, 255, 255, .35);
    background: linear-gradient(135deg, #2459e0, #1438ad);
    color: #fff;
    box-shadow: 0 12px 24px rgba(25, 71, 209, .25);
    transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.btn-nac-primary:hover,
.btn-nac-primary:focus-visible {
    background: linear-gradient(135deg, #3269ee, #173bab);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 16px 30px rgba(25, 71, 209, .34);
}

.vote-submit-button {
    min-height: 68px;
    padding: .95rem 1.6rem;
    border-width: 2px;
    border-radius: 14px;
    font-size: 1.22rem;
    font-weight: 800;
    letter-spacing: .01em;
}

.candidate-card {
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .82);
    border-radius: 18px;
    background: rgba(255, 255, 255, .62);
    box-shadow: 0 12px 30px rgba(25, 46, 105, .1);
    transition: transform .35s cubic-bezier(.2,.8,.2,1), border-color .25s ease, box-shadow .35s ease;
    transform-style: preserve-3d;
}
.candidate-card::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(125deg, rgba(255,255,255,.35), transparent 38%);
    pointer-events: none;
}
.candidate-card:hover {
    border-color: rgba(25, 71, 209, .55);
    transform: perspective(900px) rotateX(2deg) rotateY(-2deg) translateY(-7px);
    box-shadow: 0 24px 42px rgba(25, 46, 105, .2);
}
.candidate-card.selected {
    border: 2px solid var(--nac-accent);
    box-shadow: 0 0 0 4px rgba(20,184,122,.14), 0 22px 42px rgba(20,184,122,.2);
}
.candidate-photo {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 14px;
    background: linear-gradient(135deg, #e6edff, #d9f6ec);
    box-shadow: 0 8px 20px rgba(25, 46, 105, .12);
}
.candidate-select-radio {
    width: 1.35rem;
    height: 1.35rem;
    accent-color: var(--nac-accent);
}

.progress-position {
    height: 9px;
    border-radius: 999px;
    background: rgba(25, 71, 209, .12);
}
.progress-position .progress-bar {
    border-radius: inherit;
    background: linear-gradient(90deg, var(--nac-primary), var(--nac-accent));
}

.receipt-box {
    border-style: solid;
}

@keyframes nac-float {
    from { transform: translate3d(0, 0, 0) scale(1); }
    to { transform: translate3d(0, -28px, 0) scale(1.06); }
}

@media (max-width: 576px) {
    .student-topbar .container { min-height: 64px; }
    .candidate-select-radio { width: 1.6rem; height: 1.6rem; }
    .btn-lg-touch { min-height: 54px; font-size: 1.05rem; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
    }
}

