@import url('https://fonts.googleapis.com/css2?family=Pretendard:wght@400;500;600;700;800&display=swap');

body {
    font-family: 'Pretendard', sans-serif;
    background-color: #f1f5f9;
    -webkit-tap-highlight-color: transparent;
}

.custom-scrollbar::-webkit-scrollbar { width: 6px; }
.custom-scrollbar::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 8px; }
.custom-scrollbar::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 8px; }
.custom-scrollbar::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

#photoTriggerBtn:disabled { opacity: .6; cursor: progress; }

@keyframes scanSweep {
    0% { transform: translateY(-110%); }
    100% { transform: translateY(410%); }
}
.scan-line {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 26%;
    background: linear-gradient(to bottom, transparent, rgba(129, 140, 248, .75), rgba(167, 139, 250, .55), transparent);
    animation: scanSweep 1.8s ease-in-out infinite;
    filter: blur(1px);
}

@keyframes loadingBarFill {
    0% { width: 4%; }
    100% { width: 100%; }
}
.loading-bar-track {
    position: relative;
    overflow: hidden;
}
.loading-bar-fill {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    border-radius: 9999px;
    background: linear-gradient(90deg, #EA4335, #4285F4, #34A853, #FBBC05);
    animation: loadingBarFill 1.4s ease-out forwards;
}

/* Belt-and-suspenders centering for the fixed modals: some mobile browsers
   mis-place position:fixed elements relative to the layout viewport instead
   of the visual one once the page has scrolled. */
#judgeModal, #customModal, #authGate {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
}
