/* ==========================================================
 * 01. VARIABLES & RESET GLOBAL
 * ========================================================== */
:root {
    --bg-dark: #0b0b0b;
    --accent-teal: #369ca3;
    --accent-fuchsia: #a335ab;
    --warning-yellow: #b08737;
    --text-muted: #888888;
    --bg-card: #161616;
    --border-card: #2a2a2a;
    --bg-card-translucent: rgba(22, 22, 22, 0.5); 
    --h2size: 2.5rem;
    --h2weight: 800;
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html, body {
    width: 100%;
    height: 100dvh;
    background-color: var(--bg-dark);
    color: #ffffff;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    overflow: hidden;
}

/* MULTILINGUAL SWITCH */
.lang-ru {display: none;}
html[lang="ru"] .lang-en {display: none;}
html[lang="ru"] .lang-ru {display: inline;}

/* ==========================================================
 * 02. GRILLE PRINCIPALE & LAYOUT GLOBAL
 * ========================================================== */
.grid-container {
    display: flex;
    flex-direction: row;
    width: 100vw;
    height: 100dvh;
    overflow: hidden;
    background-color: #000;
    position: relative;
    background-image: url('assets/vira404-official-background.webp');
    background-size: 75% 100%;
    background-position: right top;
    background-repeat: no-repeat;
}

.pave {
    flex: 0 0 25%;
    height: 100dvh;
    background-color: rgba(18, 18, 18, 0.25);
    position: relative;
    overflow: hidden;
    border-right: 1px solid #222;
}

.pave:last-child {
    border-right: none;
}

.pave-content {
    width: 100%;
    height: 100%;
    position: relative;
    z-index: 2;
}

/* En-têtes et animations globales */
.pave-header {
    position: absolute;
    top: 25px;
    left: 20px;
    right: 20px;
    z-index: 2;
    text-align: left;
}

.pave-header p,
.pave-header h3,
.pave-header h4 {
    text-align: left;
    margin-bottom: 5px;
    white-space: pre-line;
}

.pave-header h2 {
    font-size: var(--h2size);
    font-weight: var(--h2weight);
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--accent-teal);
    margin-bottom: 18px;
    display: inline-block;
}

@keyframes textPulse {
    0%, 100% { text-shadow: 0 0 5px currentColor, 0 0 10px currentColor; opacity: 0.85; }
    50% { text-shadow: 0 0 20px currentColor, 0 0 30px currentColor, 0 0 40px currentColor; opacity: 1; }
}
.pulsing-text { animation: textPulse 2.5s infinite ease-in-out; }

/* ==========================================================
 * 03. PAVÉ 1 — LANDING & RÉSEAUX SOCIAUX
 * ========================================================== */
#pave-landing {
    background-color: #121212;
    position: relative;  /*rajout seo*/
    overflow: hidden;    /*rajout seo*/
}
/*rajout seo*/
#landing-artwork-container {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    transform: none !important; /* Annule le translate(-50%, -50%) des autres si besoin, pour couvrir tout le pavé */
    z-index: 1;
}
/*rajout seo*/
#landing-artwork-container img.bg-artwork-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

#landing-subtitle {
    font-weight: 600; 
}

.zoodiak-event-trigger {
    position: absolute;
    top: 48%;
    right: 12px;
    z-index: 4;
    display: flex;
    max-width: calc(100% - 24px);
    flex-direction: column;
    align-items: center;
    gap: 7px;
    padding: 10px;
    border: 1px solid rgba(0, 243, 255, 0.55);
    border-radius: 12px;
    background: rgba(8, 8, 8, 0.78);
    color: #fff;
    font: inherit;
    font-size: 0.7rem;
    font-weight: 800;
    line-height: 1.3;
    text-align: center;
    cursor: pointer;
    animation: zoodiakBadgePulse 2.8s ease-in-out infinite;
}

.zoodiak-event-trigger img {
    width: 52px;
    height: 52px;
    object-fit: contain;
}

.zoodiak-event-trigger:focus-visible {
    outline: 2px solid #00f3ff;
    outline-offset: 3px;
}

@keyframes zoodiakBadgePulse {
    0%, 100% { box-shadow: 0 0 5px rgba(0, 243, 255, 0.25); }
    50% { box-shadow: 0 0 14px rgba(0, 243, 255, 0.65); }
}

.nocodegirl-accent {
    color: var(--accent-fuchsia);
}

.nocodegirl-code {
    color: var(--accent-teal);
}

#pave-landing .pave-footer {
    position: absolute;
    bottom: 20px;
    left: 15px;
    right: 15px;
    z-index: 2;
    text-align: center;
    box-sizing: border-box;
}

.social-grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    width: 30%;
    box-sizing: border-box;
    margin-left: 15px;
    margin-right: auto;
}

.landing-signature {
    grid-column: 1 / -1;
    justify-self: center;
    margin-bottom: 8px;
}

.social-grid .social-btn:nth-of-type(1) { --btn-color: var(--accent-fuchsia); }
.social-grid .social-btn:nth-of-type(2) { --btn-color: var(--accent-fuchsia); }
.social-grid .social-btn:nth-of-type(3) { --btn-color: var(--accent-teal); }
.social-grid .social-btn:nth-of-type(4) { --btn-color: var(--warning-yellow); }

.social-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
    background: var(--bg-card-translucent);
    border: 1px solid var(--border-card);
    color: #ffffff;
    padding: 6px 4px;        
    border-radius: 8px;
    text-decoration: none;
    aspect-ratio: 4 / 5;     
    box-sizing: border-box;
    transition: border-color 0.2s, transform 0.2s, background 0.2s, box-shadow 0.2s, filter 0.2s, opacity 0.2s;
}

.social-grid .social-btn:nth-of-type(-n+3) {
    filter: grayscale(1);
    opacity: 0.7;
}

.social-icon {
    flex: 1;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 2px;
}

.social-icon img {
    width: 100%;
    height: 100%;
    max-height: none !important;
    max-width: none !important;
    object-fit: contain;
}

.social-label {
    font-size: 0.5rem;
    font-weight: 500;
    color: #cccccc;
    letter-spacing: 0.5px;
    text-align: center;
    line-height: 1;
}

.social-btn:hover {
    background: #202020;
    border: 1px solid var(--btn-color);
    box-shadow: 0 0 15px var(--btn-color);
    transform: translateY(-2px);
}

.social-grid .social-btn:nth-of-type(-n+3):hover {
    filter: grayscale(0);
    opacity: 1;
}

/* ==========================================================
 * 04. PAVÉ 2 — RADIO, KARAOKÉ & MINI-JEU
 * ========================================================== */
#pave-radio .pave-content {
    position: relative;
    width: 100%;
    height: 100dvh;
    box-sizing: border-box;
    overflow: hidden;
    padding: 25px 20px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

#pave-radio {
    --radio-controls-gap: clamp(8px, 3vw, 15px);
    --radio-cover-size: calc((100vw - 40px - 75px - var(--radio-controls-gap) - var(--radio-controls-gap)) / 2);
}

@media (min-width: 1025px) {
    #pave-radio {
        --radio-cover-size: calc((25vw - 40px - 75px - var(--radio-controls-gap) - var(--radio-controls-gap)) / 2);
    }
}

#pave-radio .pave-header {
    position: absolute !important;
    top: 29px !important;
    left: 20px !important;
    right: 20px !important;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    text-align: left;
}

#radio-title-header {
    min-width: 0;
    margin: 0;
}

.radio-recorder-controls {
    display: flex;
    position: absolute;
    top: -9px;
    right: 0;
    flex: 0 0 auto;
    flex-direction: column;
    align-items: center;
    gap: 0;
}

.radio-recorder-button {
    display: grid;
    width: 58px;
    height: 58px;
    place-items: center;
    border: 0;
    border-radius: 0;
    background: transparent;
    cursor: pointer;
}

.radio-recorder-button img {
    display: block;
    width: 100%;
    height: 100%;
    filter: brightness(0) invert(0.62);
    transition: filter 120ms ease;
}

.radio-recorder-button:hover:not(:disabled) img,
.radio-recorder-button:focus-visible img {
    filter: brightness(0) invert(0.82);
}

.radio-recorder-button:focus-visible {
    outline: 1px solid rgba(190, 190, 190, 0.7);
    outline-offset: 1px;
}

.radio-recorder-button.is-recording img {
    filter: brightness(0) saturate(100%) invert(20%) sepia(100%) saturate(6500%) hue-rotate(350deg) brightness(110%) drop-shadow(0 0 5px rgba(255, 30, 30, 0.8));
}

.radio-recorder-button:disabled {
    cursor: wait;
}

.radio-recorder-timer {
    min-height: 14px;
    color: #ff4242;
    font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
    font-size: 0.68rem;
    font-variant-numeric: tabular-nums;
    font-weight: 800;
    text-shadow: 0 0 6px rgba(255, 30, 30, 0.55);
}

.radio-recorder-timer[hidden] {
    display: none;
}

.radio-recorder-watermark {
    position: absolute;
    top: 2px;
    left: 20px;
    right: 20px;
    z-index: 12;
    display: flex;
    min-height: 20px;
    align-items: center;
    justify-content: center;
    gap: 5px;
    overflow: hidden;
    padding: 1px 6px;
    background: rgba(0, 0, 0, 0.88);
    color: #fff;
    font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
    font-size: clamp(0.55rem, 1.2vw, 0.7rem);
    font-weight: 900;
    letter-spacing: 0.08em;
    line-height: 1.2;
    text-align: center;
    text-shadow: 0 0 5px #000, 0 0 8px #00f3ff;
    white-space: nowrap;
    pointer-events: none;
}

.radio-recorder-watermark::before {
    width: 6px;
    height: 6px;
    flex: 0 0 6px;
    border-radius: 50%;
    background: #ff2525;
    box-shadow: 0 0 7px #ff2525;
    content: "";
}

.radio-recorder-watermark img {
    width: 16px;
    height: 16px;
    flex: 0 0 16px;
    object-fit: contain;
}

.radio-recorder-watermark[hidden] {
    display: none;
}

.radio-recorder-status {
    position: absolute;
    top: 2px;
    left: 20px;
    right: 20px;
    z-index: 13;
    min-height: 20px;
    margin: 0;
    padding: 2px 6px;
    background: rgba(0, 0, 0, 0.9);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    line-height: 1.3;
    text-align: center;
    text-shadow: 0 0 6px #00f3ff;
    pointer-events: none;
}

.radio-recorder-status:empty {
    display: none;
}

#radio-lyrics-container {
    position: absolute !important;
    top: 100px !important;
    bottom: calc(var(--radio-cover-size) + 155px) !important;
    left: 20px !important;
    right: 20px !important;
    width: auto !important;
    max-height: none !important;
    overflow-y: auto !important;
    margin: 0 !important;
    padding: 15px 20px;
    text-align: center;
    box-sizing: border-box;
    background-color: rgba(10, 10, 10, 0.75);
    border: 2px solid var(--accent-fuchsia);
    border-radius: 20px;
    box-shadow: 0 0 15px rgba(163, 53, 171, 0.15);
    scrollbar-width: thin;
    scrollbar-color: var(--accent-teal) transparent;
    z-index: 1;
    display: flex; /* RAJOUT KARAOKE */
    flex-direction: column; /* RAJOUT KARAOKE */
    justify-content: center; /* RAJOUT KARAOKE */
    align-items: center; /* RAJOUT KARAOKE */
}

#radio-playlist-drawer {
    position: absolute;
    top: 100px;
    left: 20px;
    right: 20px;
    height: 30px;
    overflow: hidden;
    z-index: 3;
    border: 1px solid rgba(163, 53, 171, 0.8);
    border-radius: 14px;
    background: rgba(10, 10, 10, 0.8);
    transition: height 180ms ease;
    cursor: grab;
    touch-action: none;
}

#radio-playlist-drawer:active {
    cursor: grabbing;
}

#radio-playlist-drawer.is-open[data-visible-count="3"] {
    height: 162px;
}

#radio-playlist-drawer.is-open[data-visible-count="5"] {
    height: 250px;
}

#radio-playlist-handle {
    width: 100%;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 0;
    background: transparent;
    color: #fff;
    font: inherit;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    cursor: grab;
    touch-action: none;
}

#radio-playlist-handle:active {
    cursor: grabbing;
}

.radio-playlist-grip {
    width: 28px;
    height: 3px;
    border-radius: 2px;
    background: var(--accent-teal);
    box-shadow: 0 0 6px var(--accent-teal);
}

#radio-playlist-tracks {
    display: flex;
    flex-direction: column;
    padding: 0 10px 6px;
}

.radio-playlist-track {
    min-width: 0;
    min-height: 42px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-content: center;
    column-gap: 8px;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.78);
    font-size: 0.7rem;
    line-height: 1.25;
}

.radio-playlist-track.is-current {
    color: #fff;
}

.radio-playlist-title {
    display: flex;
    align-items: center;
    gap: 5px;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    font-weight: 600;
}

.radio-playlist-title-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.radio-playlist-lyrics-badge {
    flex: 0 0 auto;
    color: var(--accent-teal);
    font-size: 0.62rem;
    font-weight: 800;
    letter-spacing: -0.04em;
}

.radio-playlist-broadcast {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 4px;
    color: rgba(255, 255, 255, 0.62);
    font-size: 0.58rem;
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    white-space: nowrap;
}

.radio-playlist-broadcast.is-live {
    color: var(--accent-teal);
}

.radio-playlist-live-dot {
    width: 6px;
    height: 6px;
    flex: 0 0 6px;
    border-radius: 50%;
    background: var(--accent-teal);
    box-shadow: 0 0 6px var(--accent-teal);
}

.radio-playlist-details {
    grid-column: 1 / -1;
    overflow: hidden;
    color: var(--text-muted);
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.65rem;
}

#radio-game-scores {
    position: absolute;
    left: 20px;
    right: 20px;
    bottom: calc(var(--radio-cover-size) + 119px);
    z-index: 4;
    display: flex;
    justify-content: space-between;
    align-items: center;
    min-height: 24px;
    padding: 2px 10px;
    border: 1px solid var(--border-card);
    border-radius: 8px;
    background: rgba(10, 10, 10, 0.85);
    color: #ffffff;
    font-size: 0.8rem;
    font-weight: 700;
}

.radio-game-score {
    display: flex;
    align-items: center;
    gap: 6px;
}

.radio-game-score strong {
    color: var(--accent-teal);
    font-variant-numeric: tabular-nums;
}

/* [04. PAVÉ 2] Gestion des lignes du Karaoké & Modes SRT/TXT */
.srt-line {
    transition: all 0.3s ease;
    margin: 6px 0;
    width: 100%;
    word-break: break-word;
}

/* Lignes précédentes / suivantes (haut et bas) */
.srt-prev, .srt-next {
    opacity: 0.7;
    font-size: 1.5rem;
    font-weight: 550;
    color: var(--accent-fuchsia);
}

/* Ligne active au centre (surbrillance cyan + compatibilité .active) */
.srt-active, .srt-line.active {
    opacity: 1;
    font-size: 2rem;
    font-weight: 700;
    color: var(--accent-teal) !important;
    text-shadow: 0 0 20px var(--accent-teal);
}

/* Ligne en attente / silences / notes */
.srt-waiting {
    opacity: 0.6;
    font-size: 2rem;
    color: var(--accent-teal);
}

/* Mode TXT brut (affichage en pavé avec ascenseur) */
.srt-plain {
    opacity: 0.85;
    font-size: 1rem;
    text-align: center;
    line-height: 1.6;
    padding: 10px;
    margin: 0 auto; /* 'auto 0' Modifié par '0 auto' pour libérer les marges verticales */
/*    white-space: pre;              *//* Empêche d'écraser les espaces et respecte les sauts de ligne */
/*    font-family: monospace;        *//* Force une police à largeur fixe pour aligner l'ASCII art */
}

#pave-radio .pave-footer {
    position: absolute !important;
    bottom: 15px !important;
    left: 20px !important;
    right: 20px !important;
    z-index: 2;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.radio-meta-grid {
    display: flex !important;
    justify-content: space-between !important;
    align-items: flex-end !important;
    width: 100% !important;
    margin-bottom: 8px !important;
}

.radio-meta-left {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    flex: 0 1 50%;
    min-width: 0;
    max-width: 50%;
}

.radio-meta-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
    flex: 0 1 50%;
    min-width: 0;
    max-width: 50%;
}

#radio-track-title {
    width: 100%;
    font-size: 1rem;
    font-weight: 800;
    color: #ffffff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin: 0 0 2px 0 !important;
    text-align: left !important;
}

#radio-track-info {
    width: 100%;
    font-size: 0.75rem;
    color: var(--text-muted);
    text-align: left !important;
    margin: 0 !important;
}

#radio-album-name {
    width: 100%;
    font-size: 0.85rem;
    color: var(--text-muted);
    text-align: right !important;
    font-weight: bold;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin: 0 !important;
}

.radio-controls-row {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 75px minmax(0, 1fr) !important;
    gap: var(--radio-controls-gap) !important;
    align-items: center !important;
    justify-items: center !important;
    width: 100% !important;
    margin: 0 auto !important;
}

.radio-cover-thumb {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 1 / 1 !important;
    border-radius: 14px !important;
    object-fit: cover !important;
    border: 2px solid var(--border-card) !important;
    box-shadow: 0 6px 15px rgba(0,0,0,0.6);
}

#radio-cover-img:hover { cursor: no-drop; }
#radio-cover-img.downloadable:hover { cursor: pointer; }
#radio-album-img:hover { cursor: no-drop; }

.radio-download-actions {
    position: fixed;
    top: 0;
    left: 50%;
    z-index: 10000;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
    width: min(420px, calc(100vw - 16px));
    padding: 8px;
    border: 1px solid var(--accent-teal);
    border-radius: 12px;
    background: rgba(8, 8, 8, 0.96);
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.75), 0 0 14px rgba(54, 156, 163, 0.35);
    transform: translate(-50%, -100%);
}

.radio-download-actions[hidden] {
    display: none;
}

.radio-download-actions.is-open {
    display: grid;
}

.radio-download-actions.is-below {
    transform: translate(-50%, 0);
}

.radio-action-button {
    display: flex;
    min-width: 0;
    min-height: 92px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 7px 4px;
    border: 1px solid #444;
    border-radius: 8px;
    background: #171717;
    color: #fff;
    font: inherit;
    font-size: clamp(10px, 2.7vw, 13px);
    font-weight: 700;
    line-height: 1.15;
    text-align: center;
    cursor: pointer;
}

.radio-action-button:hover:not(:disabled),
.radio-action-button:focus-visible {
    border-color: var(--accent-teal);
    box-shadow: 0 0 10px rgba(54, 156, 163, 0.45);
    outline: none;
}

.radio-action-button img {
    width: 42px;
    height: 42px;
    object-fit: contain;
}

#radio-direct-download img,
#radio-download-share img {
    filter: brightness(0) invert(1);
}

.radio-action-button:disabled {
    border-color: var(--warning-yellow);
    color: var(--warning-yellow);
    cursor: not-allowed;
    opacity: 0.68;
}

.radio-action-countdown:not(:empty) {
    font-variant-numeric: tabular-nums;
}

.radio-action-status {
    grid-column: 1 / -1;
    color: var(--accent-teal);
    font-size: 11px;
    text-align: center;
}

.radio-action-status:empty {
    display: none;
}

#radio-toggle-btn {
    width: 75px !important;
    height: 75px !important;
    border-radius: 50% !important;
    background: transparent !important; 
    border: 3px solid var(--accent-fuchsia) !important; 
    color: var(--accent-fuchsia) !important; 
    font-size: 2.5rem !important;
    cursor: pointer !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 !important;
    padding-left: 2px !important;
    line-height: 1 !important;
    transition: transform 0.2s, box-shadow 0.2s !important;
    box-shadow: 0 0 20px rgba(163, 53, 171, 0.4);
    text-shadow: 0 0 12px rgba(163, 53, 171, 0.6);
}

#radio-toggle-btn:hover {
    transform: scale(1.08);
    box-shadow: 0 0 25px var(--accent-teal) !important;
    text-shadow: 0 0 15px var(--accent-teal) !important;
}

/* Mini-jeu rétro (Pavé 2) */
#retro-game-layer {
    position: absolute !important;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 5;
    overflow: hidden;
}

#retro-paddle {
    position: absolute !important;
    bottom: calc(var(--radio-cover-size) + 90px) !important;
    left: 50%;
    transform: translateX(-50%);
    width: 90px;
    height: 20px;
    background: var(--accent-teal) !important;
    border: 1px solid var(--accent-fuchsia);
    border-radius: 2px;
    box-shadow: 0 0 10px var(--accent-teal);
    pointer-events: auto;
    cursor: pointer;
}

.retro-bullet {
    position: absolute;
    bottom: calc(var(--radio-cover-size) + 105px);
    font-size: 2rem;
    animation: shootUpInside 1.2s linear forwards;
    pointer-events: none;
    user-select: none;
    z-index: 6;
}

@keyframes shootUpInside {
    0% { transform: translateY(0) scale(0.8); opacity: 1; }
    100% { transform: translateY(-650px) scale(1.2); opacity: 0; }
}

/* ==========================================================
 * 05. PAVÉ 3 & 4 — FEATURED AUDIO, WORKING & CHRONO
 * ========================================================== */
#pave-featured .pave-header h2 {
    color: var(--accent-fuchsia);
}

.featured-date {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--accent-teal);
    margin-bottom: 10px;
    letter-spacing: 1px;
}

#featured-artwork-container,
#working-artwork-container,
.artwork-box {
    position: absolute !important;
    top: 65% !important;
    left: 50% !important;
    transform: translate(-50%, -50%) !important;
    width: 60% !important;
    aspect-ratio: 1 / 1 !important;
    height: auto !important;
    margin: 0 !important;
    overflow: hidden; /* Nécessaire pour contenir l'image sans déborder */
    z-index: 1;
}

.bg-artwork-img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}

.pave-footer {
    position: absolute;
    bottom: 25px;
    left: 20px;
    right: 20px;
    z-index: 2;
    text-align: center;
}

#featured-track-title {
    display: block;
    margin-bottom: 8px;
    font-size: 0.9rem;
    font-weight: bold;
    text-align: center;
}

#working-cover-img {
    cursor: pointer;
}

.zoodiak-game-overlay[hidden] {
    display: none;
}

.zoodiak-game-overlay {
    position: fixed;
    inset: 0;
    z-index: 20000;
    display: grid;
    place-items: center;
    padding: max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));
    background: rgba(0, 0, 0, 0.82);
    backdrop-filter: blur(5px);
}

.zoodiak-game-dialog {
    position: relative;
    width: min(560px, 100%);
    max-height: 100%;
    overflow: auto;
    padding: clamp(16px, 4vw, 28px);
    border: 1px solid var(--accent-teal);
    border-radius: 16px;
    background: linear-gradient(150deg, #171717, #080808 72%);
    color: #fff;
    box-shadow: 0 0 32px rgba(54, 156, 163, 0.3);
    text-align: center;
}

.zoodiak-game-close {
    position: absolute;
    top: 8px;
    right: 10px;
    width: 38px;
    height: 38px;
    border: 1px solid #444;
    border-radius: 50%;
    background: #111;
    color: #fff;
    font-size: 1.4rem;
    cursor: pointer;
}

.zoodiak-game-title {
    margin: 0 40px 20px;
    color: #00f3ff;
    font-size: clamp(1.1rem, 4vw, 1.55rem);
    letter-spacing: 0.08em;
}

.zoodiak-reel {
    position: relative;
    width: min(100%, 360px);
    height: 84px;
    overflow: hidden;
    margin: 0 auto 20px;
    border: 1px solid #343434;
    border-radius: 12px;
    background: rgba(0, 0, 0, 0.6);
}

.zoodiak-reel-track {
    position: absolute;
    top: 0;
    left: 0;
    display: flex;
    height: 100%;
    align-items: center;
    will-change: transform;
}

.zoodiak-reel-item {
    display: grid;
    width: 60px;
    height: 60px;
    flex: 0 0 60px;
    place-items: center;
    font-size: 2rem;
    user-select: none;
}

.zoodiak-reel-marker {
    position: absolute;
    top: 8px;
    bottom: 8px;
    left: 50%;
    width: 60px;
    border: 2px solid #00f3ff;
    border-radius: 10px;
    box-shadow: 0 0 12px rgba(0, 243, 255, 0.55), inset 0 0 10px rgba(0, 243, 255, 0.16);
    transform: translateX(-50%);
    pointer-events: none;
}

.zoodiak-game-result {
    display: grid;
    grid-template-columns: minmax(100px, 180px) minmax(0, 1fr);
    gap: 16px;
    align-items: center;
    margin: 0 auto 18px;
    text-align: left;
}

.zoodiak-game-result[hidden] {
    display: none;
}

.zoodiak-game-result img {
    display: block;
    width: 100%;
    aspect-ratio: 1;
    border: 1px solid rgba(0, 243, 255, 0.45);
    border-radius: 12px;
    object-fit: cover;
}

.zoodiak-game-result .zoodiak-card {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.zoodiak-game-result .zoodiak-symbol {
    display: none;
}

.zoodiak-game-result h5 {
    margin-bottom: 8px;
    color: var(--warning-yellow);
    font-size: 1.25rem;
    font-weight: 900;
}

.zoodiak-game-result p {
    color: #ddd;
    font-size: 0.95rem;
    line-height: 1.45;
}

.zoodiak-game-status {
    min-height: 1.4em;
    margin: 0 0 10px;
    color: #00f3ff;
    font-size: 0.85rem;
}

.zoodiak-game-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
}

.zoodiak-game-actions button {
    min-height: 44px;
    padding: 10px 14px;
    border: 1px solid var(--accent-teal);
    border-radius: 8px;
    background: #101818;
    color: #fff;
    font: inherit;
    font-size: 0.8rem;
    font-weight: 800;
    cursor: pointer;
}

.zoodiak-game-actions button:hover,
.zoodiak-game-actions button:focus-visible {
    border-color: #00f3ff;
    box-shadow: 0 0 10px rgba(0, 243, 255, 0.35);
    outline: none;
}

.zoodiak-game-actions button:disabled {
    cursor: wait;
    opacity: 0.55;
}

.zoodiak-totem-badge {
    color: #00f3ff;
    font-size: 1rem;
    line-height: 1;
}

@media (max-width: 420px) {
    .zoodiak-game-result {
        grid-template-columns: 100px minmax(0, 1fr);
        gap: 12px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .zoodiak-event-trigger {
        animation: none;
    }
}

#countdown-timer {
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    color: #000;
    font-size: clamp(0.5rem, 5cqi, 1.15rem);
    font-weight: 900;
    letter-spacing: 0;
    line-height: 1.15;
    text-align: center;
    white-space: nowrap;
}

.countdown-footer {
    right: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    padding: 0;
    text-align: center;
    container-type: inline-size;
}

.countdown-heading {
    margin: 0 0 0.4em;
    color: var(--warning-yellow);
    font-size: clamp(0.8rem, 5cqi, 1.3rem);
    font-weight: 900;
    letter-spacing: 0.08em;
    line-height: 1.1;
    white-space: nowrap;
}

.countdown-tape {
    width: 100%;
    overflow: hidden;
    padding: 0;
    background: var(--warning-yellow);
    color: #000;
}

.countdown-tape-edge {
    overflow: hidden;
    font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
    font-size: clamp(0.65rem, 4.4cqi, 1.05rem);
    font-weight: 900;
    line-height: 1;
    white-space: pre;
}

.countdown-slogan-loop {
    display: flex;
    position: relative;
    left: 50%;
    width: max-content;
    gap: 1.5em;
    margin: 0 auto;
    transform: translateX(-50%);
    font-size: clamp(0.55rem, 4.3cqi, 1rem);
    font-weight: 900;
    letter-spacing: 0.04em;
    line-height: 1.1;
    white-space: nowrap;
}

.countdown-tape .nocodegirl-accent,
.countdown-tape .nocodegirl-code {
    color: #000;
}

/* ==========================================================
 * 06. COMPOSANTS PARTAGÉS, BOUTONS & SLIDERS
 * ========================================================== */
.btn-link, .btn-ctrl, .btn-mini {
    background: #222;
    color: #fff;
    border: 1px solid #444;
    padding: 8px 12px;
    text-decoration: none;
    cursor: pointer;
    display: inline-block;
}

.btn-link:hover, .btn-ctrl:hover {
    background: #444;
}

.custom-parser-controls {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    margin-top: 10px !important;
    width: 100% !important;
}

.custom-parser-controls .btn-mini {
    width: 36px !important;
    height: 36px !important;
    border-radius: 8px !important;
    background: transparent !important;
    border: 2px solid var(--accent-fuchsia) !important;
    color: var(--accent-fuchsia) !important;
    font-size: 1.2rem !important;
    cursor: pointer !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 !important;
    line-height: 1 !important;
    box-shadow: 0 0 10px var(--accent-fuchsia) !important;
    transition: transform 0.2s, box-shadow 0.2s !important;
}

.custom-parser-controls .btn-mini:hover {
    transform: scale(1.08) !important;
    box-shadow: 0 0 15px var(--accent-teal) !important;
    border-color: var(--accent-teal) !important;
    text-shadow: 0 0 15px var(--accent-teal) !important;
    color: var(--accent-teal) !important;
}

.custom-parser-controls .btn-mini.active {
    background: transparent !important;
    border: 2px solid var(--accent-teal) !important;
    color: var(--accent-teal) !important;
    box-shadow: 0 0 15px var(--accent-teal) !important;
    text-shadow: 0 0 15px var(--accent-teal) !important;
}

.custom-parser-controls input[type="range"] {
    accent-color: var(--accent-fuchsia);
    cursor: pointer;
    background: #222;
    border-radius: 4px;
}

#feat-seek {
    flex: 1;
    min-width: 60px;
    height: 4px;
}

#feat-volume {
    width: 50px;
    height: 4px;
}

.lang-switch {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 12px;
    font-size: 0.8rem;
    color: #444;
}

.btn-lang {
    background: none;
    border: none;
    color: #666;
    font-weight: bold;
    cursor: pointer;
    padding: 2px 4px;
    font-size: 0.85rem;
    transition: color 0.2s ease;
}

.btn-lang:hover {
    color: #aaa;
}

.btn-lang.active {
    color: #ffffff;
    border-bottom: 2px solid var(--accent-fuchsia);
}

.carousel-pagination {
    display: none;
}

/* ==========================================================
 * 07. RESPONSIVE MOBILE
 * ========================================================== */
@media (max-width: 1024px) and (orientation: portrait) {
    .carousel-pagination:not([hidden]) {
        position: fixed;
        bottom: max(10px, env(safe-area-inset-bottom));
        left: 50%;
        z-index: 9999;
        display: flex;
        align-items: center;
        gap: 2px;
        padding: 2px 6px;
        border: 1px solid rgba(255, 255, 255, 0.16);
        border-radius: 999px;
        background: rgba(11, 11, 11, 0.78);
        transform: translateX(-50%);
    }

    .carousel-pagination button {
        display: grid;
        width: 22px;
        height: 22px;
        place-items: center;
        border: 0;
        background: transparent;
        cursor: pointer;
    }

    .carousel-pagination button::before {
        width: 8px;
        height: 8px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.2);
        content: "";
        transition: background-color 0.2s ease, box-shadow 0.2s ease;
    }

    .carousel-pagination button[aria-current="page"]::before {
        background: #00f3ff;
        box-shadow: 0 0 8px #00f3ff;
    }

    .carousel-pagination button:focus-visible {
        border-radius: 50%;
        outline: 2px solid #00f3ff;
        outline-offset: -2px;
    }

    .grid-container {
        display: flex;
        flex-direction: row;
        width: 100vw;
        height: 100dvh;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
        background-attachment: local;
        background-size: 300vw 100%;
        background-position: 100vw top;
    }

    .pave {
        flex: 0 0 100vw;
        width: 100vw;
        height: 100dvh;
        scroll-snap-align: start;
        scroll-snap-stop: always;
        flex-shrink: 0;
    }

    .social-grid {
        width: 30%;
        margin-left: 15px;
        margin-right: auto;
    }
}

@media (max-width: 1024px) and (orientation: landscape) {
    html {
        font-size: 50%;
    }
}