/* Dashboard-configurable preloader. It only overrides the theme's existing .loader. */
html[data-goga-preloader="enabled"] .loader.goga-preloader {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    z-index: 100000;
    display: grid;
    place-items: center;
    overflow: hidden;
    color: var(--goga-preloader-fg, #fff);
    background: var(--goga-preloader-bg, #050505);
    font-size: 16px;
    line-height: 1;
    isolation: isolate;
}
html[data-goga-preloader="disabled"] .loader { display: none !important; }
html[data-goga-preloader="enabled"]:not(.goga-preloader-complete) .loader.goga-preloader { display: grid !important; opacity: 1 !important; }
html[data-goga-preloader="enabled"]:not(.goga-preloader-complete) #main { opacity: 0 !important; }
.goga-preloader-visual {
    position: relative;
    width: min(76vw, 440px);
    min-height: 220px;
    display: grid;
    place-items: center;
    align-content: center;
    gap: 26px;
    text-align: center;
}
.goga-preloader-logo {
    display: block;
    width: min(230px, 58vw);
    height: 84px;
    background: var(--goga-preloader-logo) center/contain no-repeat;
}
.goga-preloader-text {
    display: block;
    max-width: 92vw;
    font: 600 clamp(12px, 1.3vw, 16px)/1.4 Arial, sans-serif;
    letter-spacing: .42em;
    text-transform: uppercase;
    white-space: nowrap;
}
.goga-preloader-line { display: block; width: 120px; height: 1px; background: currentColor; opacity: .72; }
.goga-preloader.is-leaving { animation: gogaLoaderExit .52s cubic-bezier(.77,0,.18,1) forwards; pointer-events: none; }

/* 1. Photographer flash + logo */
html[data-goga-preloader-style="flash"] .goga-preloader-logo { animation: gogaLogoFocus var(--goga-preloader-duration) ease-out both; }
html[data-goga-preloader-style="flash"] .goga-preloader-text { animation: gogaTextRise var(--goga-preloader-duration) ease-out both; }
html[data-goga-preloader-style="flash"] .goga-preloader::after {
    content: ""; position: absolute; inset: 0; z-index: 4; background: #fff; opacity: 0;
    animation: gogaFlash var(--goga-preloader-duration) ease-out both;
}

/* 2. Cinematic text reveal */
html[data-goga-preloader-style="text_reveal"] .goga-preloader-logo { display: none; }
html[data-goga-preloader-style="text_reveal"] .goga-preloader-text {
    font-size: clamp(18px, 4vw, 48px); font-weight: 400; letter-spacing: .64em;
    animation: gogaCinematicText var(--goga-preloader-duration) cubic-bezier(.22,.8,.2,1) both;
}
html[data-goga-preloader-style="text_reveal"] .goga-preloader-line { animation: gogaLineReveal var(--goga-preloader-duration) ease both; }

/* 3. Full-screen vector shutter: eight monochrome blades open from the centre. */
html[data-goga-preloader="enabled"][data-goga-preloader-style="shutter"] .loader.goga-preloader { background: transparent; }
html[data-goga-preloader="enabled"][data-goga-preloader-style="shutter"]:not(.goga-preloader-complete) #main { opacity: 1 !important; }
html[data-goga-preloader-style="shutter"] .goga-preloader-visual {
    position: absolute;
    inset: 0;
    width: 100vw;
    height: 100vh;
    min-height: 100vh;
    overflow: hidden;
}
html[data-goga-preloader-style="shutter"] .goga-shutter-svg {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100vw;
    height: 100vh;
    overflow: visible;
    transform: translate(-50%,-50%);
}
html[data-goga-preloader-style="shutter"] .goga-shutter-blade {
    fill: none;
    stroke: #4a4a4a;
    stroke-width: 1.35;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}
html[data-goga-preloader-style="shutter"] .goga-shutter-cover { fill: #050505; }
html[data-goga-preloader-style="shutter"] .goga-shutter-aperture {
    transform-box: fill-box;
    transform-origin: center;
    transform: scale(.01);
    will-change: transform;
}
html[data-goga-preloader-style="shutter"] .goga-preloader.is-animating .goga-shutter-aperture {
    animation: gogaShutterApertureOpen var(--goga-preloader-duration) cubic-bezier(.7,0,.18,1) both;
}
html[data-goga-preloader-style="shutter"] .goga-preloader.is-leaving {
    animation: gogaShutterExit .18s linear forwards;
}
html[data-goga-preloader-style="shutter"] .goga-preloader-logo,
html[data-goga-preloader-style="shutter"] .goga-preloader-text,
html[data-goga-preloader-style="shutter"] .goga-preloader-line { display: none; }

/* 4. Analogue film frame */
html[data-goga-preloader-style="film_frame"] .goga-preloader-visual { border-block: 15px dashed currentColor; padding-block: 28px; animation: gogaFilmTravel var(--goga-preloader-duration) ease both; }
html[data-goga-preloader-style="film_frame"] .goga-preloader-logo { filter: sepia(.28) contrast(1.18); }
html[data-goga-preloader-style="film_frame"] .goga-preloader-line { display: none; }

/* 5. Minimal focus line */
html[data-goga-preloader-style="minimal_focus"] .goga-preloader-logo { display: none; }
html[data-goga-preloader-style="minimal_focus"] .goga-preloader-text { animation: gogaMinimalText var(--goga-preloader-duration) ease both; }
html[data-goga-preloader-style="minimal_focus"] .goga-preloader-line { width: min(320px,70vw); animation: gogaFocusLine var(--goga-preloader-duration) cubic-bezier(.77,0,.18,1) both; }

@keyframes gogaLogoFocus { 0%,20%{opacity:.12;filter:blur(12px);transform:scale(.86)} 62%{opacity:1;filter:blur(0);transform:scale(1.03)} 100%{opacity:1;transform:scale(1)} }
@keyframes gogaTextRise { 0%,38%{opacity:0;transform:translateY(12px)} 100%{opacity:1;transform:none} }
@keyframes gogaFlash { 0%,49%,55%,100%{opacity:0} 50%{opacity:.96} 52%{opacity:.2} }
@keyframes gogaCinematicText { 0%{opacity:0;filter:blur(12px);letter-spacing:1em;transform:scale(.94)} 70%,100%{opacity:1;filter:blur(0);letter-spacing:.42em;transform:scale(1)} }
@keyframes gogaLineReveal { 0%,35%{opacity:0;transform:scaleX(0)} 100%{opacity:.7;transform:scaleX(1)} }
@keyframes gogaShutterApertureOpen {
    0%,8% { transform: scale(.01) rotate(0deg); }
    48% { transform: scale(4.6) rotate(-2deg); }
    100% { transform: scale(30) rotate(-5deg); }
}
@keyframes gogaShutterExit { to{opacity:0;visibility:hidden} }
@keyframes gogaFilmTravel { 0%{opacity:.08;transform:translateX(-34px);filter:blur(4px)} 62%,100%{opacity:1;transform:none;filter:blur(0)} }
@keyframes gogaMinimalText { 0%,28%{opacity:0;letter-spacing:.7em} 100%{opacity:1;letter-spacing:.42em} }
@keyframes gogaFocusLine { 0%{opacity:0;transform:scaleX(.02)} 65%{opacity:1;transform:scaleX(1)} 100%{opacity:.72;transform:scaleX(.72)} }
@keyframes gogaLoaderExit { to{opacity:0;visibility:hidden;transform:scale(1.025)} }

@media (prefers-reduced-motion: reduce) {
    .goga-preloader *, .goga-preloader::before, .goga-preloader::after { animation-duration: .18s !important; animation-iteration-count: 1 !important; }
}
