/* =========================================================
   GRAFF SPOT FRANCE
   Design Street Art / Graffiti
   ========================================================= */

html,
body {
    font-family: "Segoe UI", Arial, Helvetica, sans-serif;
    background: #111111;
    color: #f5f5f5;
    margin: 0;
}

/* =========================
   LIENS
   ========================= */

a {
    color: #8b2cff;
    text-decoration: none;
}

    a:hover {
        color: #ff6a00;
    }

/* =========================
   CONTENU
   ========================= */

.content {
    padding-top: 1rem;
}

/* =========================
   TITRES
   ========================= */

h1,
h2,
h3 {
    font-weight: 900;
    letter-spacing: -1px;
}

/* =========================
   MENU LATERAL
   ========================= */

.sidebar {
    background: linear-gradient( 160deg, #111111 0%, #191919 45%, #24102f 100% ) !important;
    border-right: 3px solid #ff6a00;
}

/* Nom de l'application */

.navbar-brand {
    color: #ffffff !important;
    font-weight: 900;
    font-size: 1.25rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

    /* Petit effet peinture */

    .navbar-brand::before {
        content: "🎨 ";
    }

/* =========================
   MENU
   ========================= */

.nav-link {
    color: #dddddd !important;
    font-weight: 700;
    margin: 4px 8px;
    border-radius: 8px;
    transition: 0.2s ease;
}

    .nav-link:hover {
        color: #111111 !important;
        background: linear-gradient( 90deg, #ff6a00, #8b2cff, #8b2cff );
        transform: translateX(4px);
    }

    .nav-link.active {
        color: #111111 !important;
        background: linear-gradient( 90deg, #ff6a00, #8b2cff );
        font-weight: 900;
    }

/* =========================
   HEADER GRAFF
   ========================= */

.graff-header {
    position: relative;
    padding: 25px 30px;
    margin-bottom: 20px;
    border-radius: 14px;
    background: linear-gradient( 135deg, #151515, #24102f );
    border-left: 6px solid #ff6a00;
    box-shadow: 0 10px 30px rgba(0,0,0,.35);
}

    .graff-header h1 {
        margin: 0;
        font-size: 2.4rem;
        text-transform: uppercase;
        font-weight: 900;
        color: #ffffff;
        text-shadow: 3px 3px 0 #8b2cff, 6px 6px 0 #8b2cff;
    }

    .graff-header p {
        margin-top: 8px;
        margin-bottom: 0;
        color: #cccccc;
        font-size: 1rem;
    }

/* =========================
   CARTE
   ========================= */

#map {
    width: 100%;
    height: 70vh;
    min-height: 500px;
    border-radius: 16px;
    border: 4px solid #222;
    box-shadow: 0 15px 40px rgba(0,0,0,.55);
    overflow: hidden;
}

/* =========================
   POPUP CARTE
   ========================= */

.leaflet-popup-content-wrapper {
    background: #151515;
    color: #ffffff;
    border: 2px solid #ff6a00;
    border-radius: 12px;
}

.leaflet-popup-tip {
    background: #151515;
}

.leaflet-popup-content h3 {
    color: #ff6a00;
    margin-top: 0;
}

/* =========================
   BOUTON AJOUTER UN SPOT
   ========================= */

.add-spot-button {
    position: fixed;
    right: 30px;
    bottom: 30px;
    z-index: 1000;
    padding: 15px 24px;
    border: none;
    border-radius: 50px;
    background: linear-gradient( 90deg, #ff6a00, #8b2cff );
    color: #111111;
    font-size: 1rem;
    font-weight: 900;
    text-transform: uppercase;
    box-shadow: 0 8px 25px rgba(0,0,0,.5);
    cursor: pointer;
    transition: .2s ease;
}

    .add-spot-button:hover {
        transform: scale(1.08) rotate(-1deg);
        background: linear-gradient( 90deg, #8b2cff, #8b2cff );
    }

/* =========================
   BOUTONS
   ========================= */

.btn-primary {
    background: linear-gradient( 90deg, #8b2cff, #7b2cff );
    border: none;
    font-weight: 800;
}

    .btn-primary:hover {
        background: linear-gradient( 90deg, #8b2cff, #7b2cff );
    }

/* =========================
   FORMULAIRES
   ========================= */

.form-control,
.form-select {
    background: #1b1b1b;
    color: #ffffff;
    border: 1px solid #555;
    border-radius: 8px;
}

    .form-control:focus,
    .form-select:focus {
        background: #222;
        color: #ffffff;
        border-color: #ff6a00;
        box-shadow: 0 0 0 3px rgba(255,234,0,.15);
    }

/* =========================
   VALIDATION
   ========================= */

.valid.modified:not([type=checkbox]) {
    outline: 2px solid #ff6a00;
}

.invalid {
    outline: 2px solid #8b2cff;
}

.validation-message {
    color: #8b2cff;
}

/* =========================
   ERREUR BLAZOR
   ========================= */

.blazor-error-boundary {
    background: #b00020;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

/* =========================
   MOBILE
   ========================= */

@media (max-width: 768px) {

    .graff-header {
        padding: 20px;
    }

        .graff-header h1 {
            font-size: 1.8rem;
        }

    #map {
        height: 65vh;
        min-height: 400px;
    }

    .add-spot-button {
        right: 15px;
        bottom: 15px;
        padding: 13px 18px;
    }
}
/* =========================================================
   GRAFFSPOT FRANCE — MENU STREET ART
   ========================================================= */

.graff-nav {
    position: relative;
    height: 100vh;
    width: 270px;
    padding: 28px 16px;
    background: radial-gradient(circle at 20% 15%, rgba(255, 0, 120, .15), transparent 25%), radial-gradient(circle at 80% 70%, rgba(0, 220, 255, .12), transparent 30%), #0d0d0d;
    border-right: 3px solid #ff6a00;
    overflow: hidden;
}

    /* Faux traits de peinture en arrière-plan */

    .graff-nav::before {
        content: "";
        position: absolute;
        width: 180px;
        height: 25px;
        left: -35px;
        top: 110px;
        background: #8b2cff;
        transform: rotate(-17deg);
        opacity: .25;
        filter: blur(1px);
    }

    .graff-nav::after {
        content: "";
        position: absolute;
        width: 150px;
        height: 18px;
        right: -40px;
        bottom: 180px;
        background: #8b2cff;
        transform: rotate(24deg);
        opacity: .2;
    }

/* =========================
   LOGO
   ========================= */

.graff-logo {
    position: relative;
    z-index: 2;
    margin-bottom: 38px;
    padding: 8px 10px;
}

.graff-logo-main {
    font-size: 38px;
    line-height: .8;
    font-weight: 1000;
    letter-spacing: -3px;
    color: #ffffff;
    transform: rotate(-3deg);
    text-shadow: 4px 4px 0 #8b2cff, 7px 7px 0 #8b2cff;
}

.graff-logo-sub {
    margin-top: 10px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 5px;
    color: #ff6a00;
    transform: rotate(1deg);
}

/* =========================
   MENU
   ========================= */

.graff-menu {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.graff-menu-item {
    position: relative;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 15px;
    color: #eeeeee !important;
    text-decoration: none;
    font-size: 14px;
    font-weight: 900;
    letter-spacing: 1px;
    border-radius: 9px;
    background: rgba(255,255,255,.025);
    border-left: 4px solid transparent;
    transition: transform .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
    overflow: hidden;
}

    .graff-menu-item::before {
        content: "";
        position: absolute;
        left: -110%;
        top: 0;
        width: 100%;
        height: 100%;
        background: linear-gradient( 100deg, transparent, rgba(255,255,255,.12), transparent );
        transition: left .4s ease;
    }

    .graff-menu-item:hover::before {
        left: 110%;
    }

    .graff-menu-item:hover {
        transform: translateX(7px) rotate(-.5deg);
        color: #111111 !important;
        background: linear-gradient( 90deg, #ff6a00, #8b2cff );
        border-left-color: #8b2cff;
        box-shadow: 5px 5px 0 rgba(0,229,255,.35);
    }

.graff-icon {
    width: 27px;
    font-size: 20px;
    text-align: center;
    flex-shrink: 0;
}

/* =========================
   AJOUTER UN SPOT
   ========================= */

.graff-add {
    margin: 10px 0;
    color: #111111 !important;
    background: linear-gradient( 135deg, #ff6a00, #8b2cff );
    border-left-color: #8b2cff;
    box-shadow: 4px 5px 0 #8b2cff;
    animation: graffPulse 3s infinite;
}

    .graff-add:hover {
        transform: translateX(9px) rotate(-1deg) scale(1.02);
        box-shadow: 7px 7px 0 #8b2cff, 0 0 25px rgba(255,20,147,.35);
    }

@keyframes graffPulse {

    0%, 100% {
        box-shadow: 4px 5px 0 #8b2cff;
    }

    50% {
        box-shadow: 6px 7px 0 #8b2cff, 0 0 18px rgba(255,234,0,.18);
    }
}

/* =========================
   BAS DU MENU
   ========================= */

.graff-menu-footer {
    position: absolute;
    left: 16px;
    right: 16px;
    bottom: 25px;
    z-index: 2;
}

.graff-status {
    padding: 11px;
    border-radius: 8px;
    background: rgba(255,255,255,.04);
    color: #999999;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 1px;
    text-align: center;
}

.status-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 7px;
    border-radius: 50%;
    background: #ff6a00;
    box-shadow: 0 0 10px #ff6a00;
    animation: onlinePulse 1.8s infinite;
}

@keyframes onlinePulse {

    0%, 100% {
        opacity: 1;
    }

    50% {
        opacity: .35;
    }
}

/* =========================
   MOBILE
   ========================= */

@media (max-width: 768px) {

    .graff-nav {
        width: 100%;
        height: auto;
        border-right: none;
        border-bottom: 3px solid #ff6a00;
        padding: 15px;
    }

    .graff-logo {
        margin-bottom: 15px;
    }

    .graff-logo-main {
        font-size: 30px;
    }

    .graff-menu {
        flex-direction: row;
        overflow-x: auto;
        gap: 7px;
    }

    .graff-menu-item {
        white-space: nowrap;
        padding: 11px 13px;
    }

        .graff-menu-item:hover {
            transform: translateY(-3px);
        }

    .graff-menu-footer {
        display: none;
    }
}
/* =========================================================
   GRAFF SPOT FRANCE
   PURE STREET ART
   PAS DE RGB / PAS GAMING
   ========================================================= */

.graff-home {
    min-height: calc(100vh - 30px);
    padding: 45px;
    position: relative;
    overflow: hidden;
    background: linear-gradient(rgba(0,0,0,.78), rgba(0,0,0,.88)), repeating-linear-gradient( 0deg, #202020 0px, #202020 2px, #1b1b1b 2px, #1b1b1b 5px );
    color: #eee;
}

    /* Traces de peinture */

    .graff-home::before {
        content: "";
        position: absolute;
        width: 420px;
        height: 90px;
        top: 90px;
        right: -100px;
        background: #ff6a00;
        transform: rotate(-9deg);
        opacity: .12;
        filter: blur(2px);
    }

    /* Tache de peinture */

    .graff-home::after {
        content: "";
        position: absolute;
        width: 180px;
        height: 180px;
        left: -70px;
        bottom: 80px;
        background: #8b2cff;
        border-radius: 48% 52% 40% 60%;
        opacity: .10;
        transform: rotate(18deg);
    }


/* =========================================================
   HERO
   ========================================================= */

.hero-graff {
    position: relative;
    z-index: 2;
    max-width: 1000px;
    margin: 0 auto;
    padding: 55px 45px;
    background: linear-gradient( 135deg, rgba(20,20,20,.96), rgba(35,35,35,.90) );
    border: 1px solid #444;
    box-shadow: 12px 12px 0 rgba(0,0,0,.45);
    transform: rotate(-.4deg);
}


/* petit sticker */

.hero-tag {
    display: inline-block;
    padding: 7px 12px;
    margin-bottom: 20px;
    background: #ff6a00;
    color: #111;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 2px;
    transform: rotate(-2deg);
    box-shadow: 4px 4px 0 #111;
}


/* =========================================================
   TITRE GRAFF
   ========================================================= */

.hero-graff h1 {
    margin: 0;
    font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
    font-size: clamp(55px, 9vw, 110px);
    line-height: .78;
    letter-spacing: -5px;
    color: #f2f2f2;
    text-transform: uppercase;
    text-shadow: 5px 5px 0 #111, 9px 9px 0 #8b2cff;
    transform: rotate(-2deg);
}

    .hero-graff h1 span {
        color: #ff6a00;
        display: inline-block;
        transform: rotate(2deg);
        text-shadow: 5px 5px 0 #111, 9px 9px 0 #333;
    }


/* =========================================================
   TEXTE
   ========================================================= */

.hero-subtitle {
    margin-top: 30px;
    font-size: 25px;
    font-weight: 800;
    color: #fff;
}

.hero-description {
    max-width: 650px;
    margin-top: 12px;
    color: #bdbdbd;
    font-size: 16px;
    line-height: 1.6;
}


/* =========================================================
   BOUTONS
   ========================================================= */

.hero-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    margin-top: 35px;
}

.hero-button {
    position: relative;
    display: inline-block;
    padding: 16px 25px;
    font-weight: 900;
    letter-spacing: 1px;
    text-decoration: none;
    color: #111;
    border: 0;
    transition: transform .18s ease, box-shadow .18s ease;
}


    /* bouton jaune peint */

    .hero-button.primary {
        background: #ff6a00;
        box-shadow: 6px 6px 0 #111;
        transform: rotate(-1deg);
    }

        .hero-button.primary:hover {
            transform: rotate(-2deg) translate(-2px,-3px);
            box-shadow: 10px 10px 0 #111;
        }


    /* bouton blanc autocollant */

    .hero-button.secondary {
        background: #eee;
        box-shadow: 6px 6px 0 #111;
        transform: rotate(1.5deg);
    }

        .hero-button.secondary:hover {
            transform: rotate(2deg) translate(-2px,-3px);
            box-shadow: 10px 10px 0 #111;
        }


/* =========================================================
   CARTES
   ========================================================= */

.graff-features {
    position: relative;
    z-index: 2;
    max-width: 1000px;
    margin: 35px auto 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.graff-card {
    position: relative;
    padding: 28px;
    min-height: 180px;
    background: #242424;
    border: 1px solid #444;
    box-shadow: 7px 7px 0 #111;
    transition: transform .2s ease;
}

    .graff-card:hover {
        transform: translateY(-7px) rotate(0deg);
    }


    /* bandes de peinture */

    .graff-card::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 55px;
        height: 7px;
        background: #ff6a00;
    }

    .graff-card:nth-child(2)::before {
        background: #8b2cff;
    }

    .graff-card:nth-child(3)::before {
        background: #8b2cff;
    }


.graff-card-icon {
    font-size: 32px;
    margin-bottom: 12px;
}

.graff-card h2 {
    margin: 0 0 10px;
    font-family: Impact, "Arial Black", sans-serif;
    letter-spacing: 1px;
}

.graff-card p {
    color: #aaa;
    line-height: 1.5;
    margin: 0;
}


/* =========================================================
   COMMUNAUTÉ
   ========================================================= */

.graff-community {
    position: relative;
    z-index: 2;
    max-width: 1000px;
    margin: 40px auto;
    padding: 30px;
    background: #eee;
    color: #111;
    box-shadow: 9px 9px 0 #111;
    transform: rotate(.5deg);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 25px;
}

.community-label {
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 3px;
    color: #777;
}

.graff-community h2 {
    margin: 7px 0;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 34px;
    line-height: 1;
}

    .graff-community h2 span {
        color: #8b2cff;
    }

.graff-community p {
    margin: 0;
    color: #555;
}

.community-button {
    padding: 15px 22px;
    background: #111;
    color: #fff !important;
    font-weight: 900;
    text-decoration: none;
    white-space: nowrap;
    transition: .2s ease;
}

    .community-button:hover {
        background: #ff6a00;
        color: #111 !important;
        transform: rotate(-2deg);
    }


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 800px) {

    .graff-home {
        padding: 20px;
    }

    .hero-graff {
        padding: 35px 25px;
    }

    .graff-features {
        grid-template-columns: 1fr;
    }

    .graff-community {
        flex-direction: column;
        align-items: flex-start;
    }

    .hero-graff h1 {
        font-size: 60px;
    }
}
/* =========================================================
   NETTETÉ DU TEXTE — GRAFF SPOT FRANCE
   ========================================================= */

/* Texte général plus net */
.graff-home,
.graff-home h1,
.graff-home h2,
.graff-home p,
.graff-home a,
.graff-home span,
.graff-home button {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: geometricPrecision;
}

/* Le gros titre reste graffiti mais sans bavure */
.hero-graff h1 {
    text-shadow: 4px 4px 0 #111, 7px 7px 0 #8b2cff;
    transform: none;
}

/* On évite les transformations sur les petits textes */
.hero-graff {
    transform: none;
}

.graff-card:nth-child(1),
.graff-card:nth-child(2),
.graff-card:nth-child(3) {
    transform: none;
}

/* Texte des cartes beaucoup plus propre */
.graff-card h2 {
    font-size: 28px;
    line-height: 1.05;
    text-shadow: none;
}

.graff-card p {
    font-size: 16px;
    line-height: 1.55;
    text-shadow: none;
}

/* Texte du bouton parfaitement lisible */
.hero-button {
    font-size: 16px;
    line-height: 1;
    text-shadow: none;
}

/* Le texte de la communauté */
.graff-community {
    transform: none;
}

    .graff-community h2 {
        text-shadow: none;
    }

    .graff-community p {
        text-shadow: none;
    }
.hero-graff h1 {
    letter-spacing: -3px;
    text-shadow: 4px 4px 0 #111, 8px 8px 0 #8b2cff;
}
/* =========================================================
   MENU GRAFF SPOT FRANCE
   ========================================================= */

.graff-nav {
    min-height: 100vh;
    padding: 25px 14px;
    background: linear-gradient(rgba(10,10,10,.94), rgba(15,15,15,.98));
    border-right: 3px solid #ff6a00;
    color: white;
}

/* LOGO */

.graff-logo {
    text-align: center;
    margin-bottom: 35px;
}

.graff-logo-main {
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 38px;
    line-height: .8;
    letter-spacing: -2px;
    color: white;
    text-shadow: 3px 3px 0 #111, 6px 6px 0 #8b2cff;
}

.graff-logo-sub {
    margin-top: 8px;
    font-weight: 900;
    letter-spacing: 4px;
    color: #ff6a00;
    font-size: 12px;
}

/* BOUTONS */

.graff-nav nav {
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.graff-nav-item {
    display: flex;
    align-items: center;
    gap: 13px;
    min-height: 52px;
    padding: 0 16px;
    color: #eee !important;
    text-decoration: none;
    background: #1b1b1b;
    border: 1px solid #333;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 16px;
    letter-spacing: .5px;
    box-shadow: 5px 5px 0 #080808;
    transition: transform .15s ease, background .15s ease, border-color .15s ease;
}

    .graff-nav-item:hover {
        color: #111 !important;
        background: #ff6a00;
        border-color: #ff6a00;
        transform: translateX(5px);
        box-shadow: 7px 7px 0 #080808;
    }

    /* PAGE ACTIVE */

    .graff-nav-item.active {
        color: #111 !important;
        background: #ff6a00;
        border-color: #ff6a00;
        transform: translateX(4px);
    }

    /* AJOUTER UN SPOT */

    .graff-nav-item.add-spot {
        background: #8b2cff;
        border-color: #8b2cff;
        margin: 8px 0;
    }

        .graff-nav-item.add-spot:hover {
            background: #ff6a00;
            border-color: #ff6a00;
        }

        .graff-nav-item.add-spot.active {
            background: #ff6a00;
            border-color: #ff6a00;
        }

/* ICÔNES */

.nav-icon {
    width: 25px;
    min-width: 25px;
    text-align: center;
    font-family: Arial, sans-serif;
    font-size: 20px;
}

/* BAS DU MENU */

.graff-nav-bottom {
    margin-top: 45px;
    padding: 20px 10px;
    border-top: 2px solid #444;
    text-align: center;
    transform: rotate(-1deg);
}

    .graff-nav-bottom strong {
        display: block;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 15px;
        color: #ff6a00;
    }

    .graff-nav-bottom small {
        display: block;
        margin-top: 8px;
        color: #777;
        font-size: 11px;
    }
/* =========================================================
   GRAFF SPOT FRANCE — MENU STREET ART
   ========================================================= */

.graff-nav {
    min-height: 100vh;
    padding: 25px 14px;
    background: #111;
    color: #fff;
    border-right: 3px solid #ff6a00;
}

/* LOGO */

.graff-logo {
    text-align: center;
    margin-bottom: 35px;
}

.graff-logo-main {
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 38px;
    line-height: .8;
    letter-spacing: -2px;
    color: #fff;
    text-shadow: 3px 3px 0 #111, 6px 6px 0 #8b2cff;
}

.graff-logo-sub {
    margin-top: 8px;
    font-weight: 900;
    letter-spacing: 4px;
    color: #ff6a00;
    font-size: 12px;
}

/* MENU */

.graff-nav nav {
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.graff-nav-item {
    display: flex;
    align-items: center;
    gap: 13px;
    min-height: 52px;
    padding: 0 16px;
    color: #eee !important;
    text-decoration: none;
    background: #1b1b1b;
    border: 1px solid #333;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 16px;
    letter-spacing: .5px;
    box-shadow: 5px 5px 0 #080808;
    transition: transform .15s ease, background .15s ease, border-color .15s ease;
}

    .graff-nav-item:hover {
        color: #111 !important;
        background: #ff6a00;
        border-color: #ff6a00;
        transform: translateX(5px);
        box-shadow: 7px 7px 0 #080808;
    }

    .graff-nav-item.active {
        color: #111 !important;
        background: #ff6a00;
        border-color: #ff6a00;
        transform: translateX(4px);
    }

    /* AJOUTER UN SPOT */

    .graff-nav-item.add-spot {
        background: #8b2cff;
        border-color: #8b2cff;
        margin: 8px 0;
    }

        .graff-nav-item.add-spot:hover {
            background: #ff6a00;
            border-color: #ff6a00;
        }

        .graff-nav-item.add-spot.active {
            background: #ff6a00;
            border-color: #ff6a00;
        }

/* ICÔNES */

.nav-icon {
    width: 25px;
    min-width: 25px;
    text-align: center;
    font-family: Arial, sans-serif;
    font-size: 20px;
}

/* BAS DU MENU */

.graff-nav-bottom {
    margin-top: 45px;
    padding: 20px 10px;
    border-top: 2px solid #444;
    text-align: center;
}

    .graff-nav-bottom strong {
        display: block;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 15px;
        color: #ff6a00;
    }

    .graff-nav-bottom small {
        display: block;
        margin-top: 8px;
        color: #777;
        font-size: 11px;
    }
/* =========================================================
   AJOUTER UN SPOT — STYLE GRAFFITI
   ========================================================= */

.add-spot-page {
    min-height: calc(100vh - 20px);
    padding: 45px 55px;
    background: linear-gradient(rgba(15,15,15,.96), rgba(15,15,15,.98));
    color: #eee;
}

/* EN-TÊTE */

.add-spot-header {
    max-width: 950px;
    margin: 0 auto 35px;
}

.add-spot-tag {
    display: inline-block;
    padding: 8px 15px;
    margin-bottom: 15px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", sans-serif;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 2px;
    transform: rotate(-1deg);
    box-shadow: 5px 5px 0 #000;
}

.add-spot-header h1 {
    margin: 0;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: clamp(45px, 6vw, 75px);
    line-height: .9;
    color: #fff;
    text-shadow: 4px 4px 0 #111, 8px 8px 0 #8b2cff;
}

.add-spot-header p {
    max-width: 700px;
    margin-top: 20px;
    color: #aaa;
    font-size: 17px;
    line-height: 1.5;
}

/* FORMULAIRE */

.spot-form {
    position: relative;
    max-width: 950px;
    margin: 0 auto;
    padding: 35px;
    background: #202020;
    border: 1px solid #3b3b3b;
    box-shadow: 9px 9px 0 #090909;
}

    /* petite bande peinture */

    .spot-form::before {
        content: "";
        position: absolute;
        top: -5px;
        left: 25px;
        width: 170px;
        height: 9px;
        background: #ff6a00;
        transform: rotate(-1deg);
    }

    /* ORGANISATION DES CHAMPS */

    .spot-form > label {
        display: block;
        margin: 18px 0 7px;
        color: #ff6a00;
        font-family: "Arial Black", sans-serif;
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 1px;
    }

    /* CHAMPS */

    .spot-form input,
    .spot-form select,
    .spot-form textarea {
        width: 100%;
        box-sizing: border-box;
        padding: 14px 16px;
        background: #111;
        color: #eee;
        border: 1px solid #444;
        outline: none;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 15px;
        transition: border-color .15s ease, box-shadow .15s ease;
    }

        .spot-form input::placeholder,
        .spot-form textarea::placeholder {
            color: #666;
        }

        .spot-form input:focus,
        .spot-form select:focus,
        .spot-form textarea:focus {
            border-color: #ff6a00;
            box-shadow: 4px 4px 0 #000;
        }

    /* SELECT */

    .spot-form select {
        cursor: pointer;
    }

    /* DESCRIPTION */

    .spot-form textarea {
        min-height: 140px;
        resize: vertical;
    }

/* =========================================================
   GPS
   ========================================================= */

.gps-box {
    margin-top: 30px;
    padding: 22px;
    background: #171717;
    border-left: 6px solid #ff6a00;
    box-shadow: 5px 5px 0 #080808;
}

    .gps-box strong {
        display: block;
        color: #fff;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 22px;
        letter-spacing: 1px;
    }

.gps-values {
    display: flex;
    gap: 30px;
    margin: 15px 0;
    color: #999;
    font-family: monospace;
    font-size: 14px;
}

/* BOUTON GPS */

.gps-button {
    border: 0;
    padding: 13px 20px;
    background: #eee;
    color: #111;
    font-family: "Arial Black", sans-serif;
    font-size: 13px;
    cursor: pointer;
    box-shadow: 5px 5px 0 #000;
    transition: .15s ease;
}

    .gps-button:hover {
        background: #ff6a00;
        transform: translate(-2px, -2px);
        box-shadow: 7px 7px 0 #000;
    }

/* =========================================================
   PUBLICATION
   ========================================================= */

.publish-spot {
    position: relative;
    margin-top: 30px;
    padding: 17px 32px;
    border: 0;
    background: #8b2cff;
    color: #fff;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 20px;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 7px 7px 0 #080808;
    transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}

    .publish-spot:hover:not(:disabled) {
        background: #ff6a00;
        color: #111;
        transform: translate(-3px, -3px);
        box-shadow: 10px 10px 0 #080808;
    }

    .publish-spot:disabled {
        opacity: .55;
        cursor: wait;
    }

/* MESSAGE */

.spot-message {
    margin-top: 20px;
    padding: 14px 18px;
    background: #111;
    border-left: 5px solid #ff6a00;
    color: #eee;
    font-weight: 700;
}

/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 800px) {

    .add-spot-page {
        padding: 25px 18px;
    }

    .spot-form {
        padding: 25px 20px;
    }

    .gps-values {
        flex-direction: column;
        gap: 7px;
    }
}
/* =========================================================
   CARTE AJOUTER UN SPOT
   ========================================================= */

#addSpotMap {
    width: 100%;
    height: 430px;
    margin-top: 20px;
    border: 2px solid #444;
    box-shadow: 7px 7px 0 #080808;
    z-index: 1;
}

.map-help {
    margin: 10px 0 5px;
    color: #999;
    font-size: 14px;
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

    .form-row > div {
        min-width: 0;
    }

@media (max-width: 800px) {

    .form-row {
        grid-template-columns: 1fr;
    }

    #addSpotMap {
        height: 350px;
    }
}
/* =========================================================
   PHOTOS — AJOUTER UN SPOT
   ========================================================= */

.photo-upload-box {
    margin-top: 30px;
    padding: 22px;
    background: #171717;
    border-left: 6px solid #8b2cff;
    box-shadow: 5px 5px 0 #080808;
}

    .photo-upload-box strong {
        display: block;
        color: #fff;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 22px;
        letter-spacing: 1px;
    }

    .photo-upload-box p {
        color: #999;
        margin: 8px 0 18px;
    }

    .photo-upload-box input[type="file"] {
        width: 100%;
        box-sizing: border-box;
        padding: 15px;
        background: #111;
        color: #ddd;
        border: 1px dashed #555;
        cursor: pointer;
    }

.selected-photos {
    margin-top: 18px;
}

.selected-photos-title {
    margin-bottom: 10px;
    color: #ff6a00;
    font-family: "Arial Black", sans-serif;
    font-size: 13px;
    text-transform: uppercase;
}

.selected-photo {
    padding: 10px 12px;
    margin-top: 6px;
    background: #222;
    border-left: 3px solid #ff6a00;
    color: #ddd;
}
/* =========================================================
   POPUP SPOT
   ========================================================= */

.spot-popup {
    width: 270px;
    overflow: hidden;
    background: #181818;
    color: #eee;
}

.spot-popup-image {
    display: block;
    width: 100%;
    height: 165px;
    object-fit: cover;
}

.spot-popup-no-photo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100px;
    background: #252525;
    color: #777;
    font-size: 15px;
}

.spot-popup-content {
    padding: 14px;
}

    .spot-popup-content h3 {
        margin: 0 0 8px;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 21px;
        color: #111;
    }

    .spot-popup-content p {
        margin: 7px 0 12px;
        color: #444;
    }

.spot-popup-info {
    margin-top: 5px;
    color: #555;
}

.spot-popup-rating {
    margin-top: 9px;
    font-weight: 900;
    color: #8b2cff;
}

.spot-popup-photo-count {
    margin-top: 7px;
    color: #666;
}
/* =========================================================
   FICHE SPOT
   ========================================================= */

.spot-detail-page {
    max-width: 1100px;
    margin: 0 auto;
    padding: 40px;
    color: #eee;
}


/* HEADER */

.spot-detail-header {
    position: relative;
    padding: 30px;
    margin-bottom: 25px;
    background: #181818;
    border: 1px solid #444;
    box-shadow: 8px 8px 0 #050505;
}

.spot-detail-tag {
    display: inline-block;
    padding: 7px 14px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", sans-serif;
    font-size: 11px;
    letter-spacing: 2px;
    transform: rotate(-1deg);
}

.spot-detail-header h1 {
    margin: 18px 0 8px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 48px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #fff;
    text-shadow: 3px 3px 0 #8b2cff;
}

.spot-detail-location {
    color: #aaa;
    font-size: 17px;
}


/* TITRES */

.section-title {
    margin-bottom: 18px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 25px;
    letter-spacing: 1px;
    color: #fff;
}


/* GALERIE */

.spot-gallery-section {
    margin-top: 30px;
}

.spot-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
}

.spot-gallery-item {
    height: 220px;
    overflow: hidden;
    background: #181818;
    border: 2px solid #333;
    box-shadow: 5px 5px 0 #050505;
    transition: transform .15s ease, border-color .15s ease;
}

    .spot-gallery-item:hover {
        transform: translate(-3px, -3px);
        border-color: #ff6a00;
    }

    .spot-gallery-item img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;
    }

.no-photos {
    padding: 40px;
    text-align: center;
    background: #181818;
    border: 1px dashed #555;
    color: #888;
}


/* INFOS */

.spot-info-section {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-top: 30px;
}

.spot-info-card {
    padding: 20px;
    background: #1b1b1b;
    border-top: 5px solid #ff6a00;
    box-shadow: 5px 5px 0 #050505;
}

.spot-info-label {
    color: #777;
    font-family: "Arial Black", sans-serif;
    font-size: 11px;
    letter-spacing: 2px;
}

.spot-info-value {
    margin-top: 8px;
    font-size: 18px;
    font-weight: bold;
    color: #fff;
}


/* DESCRIPTION */

.spot-description-section {
    margin-top: 30px;
    padding: 25px;
    background: #181818;
    border-left: 6px solid #8b2cff;
    box-shadow: 6px 6px 0 #050505;
}

    .spot-description-section p {
        color: #bbb;
        line-height: 1.7;
        margin: 0;
    }


/* UPLOAD */

.spot-upload-section {
    margin-top: 30px;
    padding: 25px;
    background: #181818;
    border-left: 6px solid #ff6a00;
    box-shadow: 6px 6px 0 #050505;
}

    .spot-upload-section p {
        color: #999;
    }

    .spot-upload-section input[type="file"] {
        width: 100%;
        margin-top: 12px;
        padding: 14px;
        background: #111;
        color: #ddd;
        border: 1px dashed #555;
    }

.selected-upload {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-top: 15px;
    padding: 15px;
    background: #222;
    border-left: 4px solid #8b2cff;
}

.graff-button {
    border: none;
    padding: 13px 20px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", sans-serif;
    cursor: pointer;
    box-shadow: 4px 4px 0 #050505;
    transition: transform .12s ease, box-shadow .12s ease;
}

    .graff-button:hover {
        transform: translate(2px, 2px);
        box-shadow: 2px 2px 0 #050505;
    }

    .graff-button:disabled {
        opacity: .5;
        cursor: wait;
    }

.spot-upload-message {
    margin-top: 15px;
    padding: 12px;
    background: #222;
    color: #ddd;
}


/* RETOUR */

.back-to-map {
    display: inline-block;
    margin-top: 30px;
    padding: 14px 22px;
    background: #fff;
    color: #111;
    text-decoration: none;
    font-family: "Arial Black", sans-serif;
    box-shadow: 5px 5px 0 #050505;
    transition: transform .12s ease;
}

    .back-to-map:hover {
        transform: translate(3px, 3px);
        color: #111;
    }


/* MOBILE */

@media (max-width: 700px) {

    .spot-detail-page {
        padding: 20px;
    }

    .spot-detail-header h1 {
        font-size: 34px;
    }

    .spot-info-section {
        grid-template-columns: 1fr;
    }

    .selected-upload {
        flex-direction: column;
        align-items: stretch;
    }
}
.spot-popup-button {
    display: block;
    margin-top: 14px;
    padding: 11px 14px;
    background: #ff6a00;
    color: #111 !important;
    text-align: center;
    text-decoration: none !important;
    font-family: "Arial Black", sans-serif;
    font-size: 12px;
    letter-spacing: .5px;
    box-shadow: 4px 4px 0 #050505;
    transition: transform .12s ease, box-shadow .12s ease;
}

    .spot-popup-button:hover {
        color: #111 !important;
        transform: translate(2px, 2px);
        box-shadow: 2px 2px 0 #050505;
    }
/* =========================================================
   AUTHENTIFICATION - GRAFF SPOT FRANCE
   ========================================================= */

.auth-page {
    min-height: calc(100vh - 60px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 50px 25px;
    background: linear-gradient( 135deg, #111 0%, #181818 50%, #101010 100% );
}


/* CARTE */

.auth-card {
    width: 100%;
    max-width: 560px;
    padding: 42px;
    background: #1b1b1b;
    border: 1px solid #444;
    box-shadow: 10px 10px 0 #050505;
    position: relative;
}


/* PETIT BANDEAU */

.auth-tag {
    display: inline-block;
    padding: 8px 14px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", Impact, sans-serif;
    font-size: 11px;
    letter-spacing: 2px;
    transform: rotate(-1deg);
}


/* TITRE */

.auth-card h1 {
    margin: 22px 0 10px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 52px;
    line-height: .95;
    letter-spacing: 1px;
    color: #fff;
    text-shadow: 4px 4px 0 #8b2cff;
}


/* SOUS-TITRE */

.auth-subtitle {
    margin-bottom: 30px;
    color: #999;
    line-height: 1.6;
    font-size: 15px;
}


/* FORMULAIRE */

.auth-form {
    display: flex;
    flex-direction: column;
    gap: 10px;
}


    .auth-form label {
        margin-top: 10px;
        color: #aaa;
        font-family: "Arial Black", sans-serif;
        font-size: 11px;
        letter-spacing: 2px;
    }


    .auth-form input {
        width: 100%;
        box-sizing: border-box;
        padding: 15px 16px;
        background: #101010;
        border: 1px solid #444;
        color: #fff;
        font-size: 16px;
        outline: none;
        transition: border-color .15s ease, box-shadow .15s ease;
    }


        .auth-form input::placeholder {
            color: #555;
        }


        .auth-form input:focus {
            border-color: #ff6a00;
            box-shadow: 4px 4px 0 #8b2cff;
        }


/* BOUTON */

.graff-auth-button {
    margin-top: 25px;
    padding: 16px 22px;
    border: none;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", Impact, sans-serif;
    font-size: 14px;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 6px 6px 0 #050505;
    transition: transform .12s ease, box-shadow .12s ease;
}


    .graff-auth-button:hover {
        transform: translate(3px, 3px);
        box-shadow: 3px 3px 0 #050505;
    }


    .graff-auth-button:disabled {
        opacity: .55;
        cursor: wait;
    }


/* ERREUR */

.auth-error {
    margin-bottom: 20px;
    padding: 14px;
    background: #351515;
    border-left: 5px solid #8b2cff;
    color: #fff;
    line-height: 1.5;
}


/* SUCCÈS */

.auth-success {
    padding: 25px;
    background: #202020;
    border-left: 6px solid #ff6a00;
    color: #ddd;
}


.success-title {
    margin-bottom: 12px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 25px;
    color: #fff;
}


.auth-success p {
    color: #aaa;
}


/* FOOTER */

.auth-footer {
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid #333;
    text-align: center;
    color: #777;
}


    .auth-footer a {
        margin-left: 7px;
        color: #ff6a00;
        font-family: "Arial Black", sans-serif;
        text-decoration: none;
    }


        .auth-footer a:hover {
            color: #fff;
        }


/* MOBILE */

@media (max-width: 600px) {

    .auth-page {
        padding: 25px 15px;
    }

    .auth-card {
        padding: 28px 22px;
    }

        .auth-card h1 {
            font-size: 40px;
        }
}
/* =========================================================
   ACCUEIL - REJOINDRE LE CREW
   ========================================================= */

.home-crew-box {
    margin: 35px 0;
    padding: 35px;
    background: #1b1b1b;
    border: 1px solid #444;
    box-shadow: 8px 8px 0 #050505;
    position: relative;
}

.home-crew-tag {
    display: inline-block;
    padding: 7px 12px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", Impact, sans-serif;
    font-size: 11px;
    letter-spacing: 2px;
    transform: rotate(-1deg);
}

.home-crew-box h2 {
    margin: 18px 0 10px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 42px;
    color: #fff;
    text-shadow: 4px 4px 0 #8b2cff;
}

.home-crew-box p {
    max-width: 650px;
    color: #aaa;
    line-height: 1.6;
}

.home-crew-buttons {
    display: flex;
    align-items: center;
    gap: 25px;
    margin-top: 25px;
    flex-wrap: wrap;
}

.home-crew-button {
    display: inline-block;
    padding: 15px 22px;
    background: #ff6a00;
    color: #111;
    text-decoration: none;
    font-family: "Arial Black", Impact, sans-serif;
    font-size: 13px;
    box-shadow: 6px 6px 0 #050505;
    transition: .12s ease;
}

    .home-crew-button:hover {
        transform: translate(3px, 3px);
        box-shadow: 3px 3px 0 #050505;
        color: #111;
    }

.home-crew-link {
    color: #aaa;
    text-decoration: none;
    font-family: "Arial Black", sans-serif;
    font-size: 12px;
}

    .home-crew-link:hover {
        color: #ff6a00;
    }
/* =========================================================
   MES SPOTS
   ========================================================= */

.my-spots-page {
    width: 100%;
    max-width: 1250px;
    margin: 0 auto;
    padding: 45px 35px 80px;
}


/* =========================================================
   HERO
   ========================================================= */

.my-spots-hero {
    position: relative;
    background: #191919;
    border: 1px solid #3a3a3a;
    padding: 35px 40px 30px;
    margin-bottom: 30px;
    overflow: hidden;
}

    .my-spots-hero::after {
        content: "";
        position: absolute;
        right: -80px;
        top: 30px;
        width: 300px;
        height: 25px;
        background: #ff6a00;
        transform: rotate(-8deg);
        opacity: 0.15;
    }

.my-spots-label {
    display: inline-block;
    background: #ff6a00;
    color: #080808;
    padding: 9px 18px;
    font-weight: 900;
    font-size: 12px;
    letter-spacing: 3px;
    margin-bottom: 22px;
    transform: rotate(-1deg);
}

.my-spots-title-row {
    display: flex;
    align-items: center;
    gap: 20px;
}

.my-spots-pin {
    font-size: 52px;
    line-height: 1;
}

.my-spots-title-row h1 {
    margin: 0;
    color: #fff;
    font-size: clamp(42px, 5vw, 68px);
    font-weight: 950;
    letter-spacing: -2px;
    line-height: 0.95;
    text-transform: uppercase;
    text-shadow: 4px 4px 0 #c51f25, 8px 8px 0 #080808;
}

.my-spots-title-row p {
    margin: 12px 0 0;
    color: #a9a9a9;
    font-size: 16px;
}

.my-spots-title-row strong {
    color: #ff6a00;
}


/* =========================================================
   STATS
   ========================================================= */

.my-spots-stats {
    display: flex;
    align-items: center;
    margin-top: 32px;
    padding-top: 25px;
    border-top: 1px solid #353535;
    gap: 28px;
}

.my-spots-stat {
    display: flex;
    align-items: center;
    gap: 10px;
}

.my-spots-stat-number {
    color: #ff6a00;
    font-size: 25px;
    font-weight: 950;
}

.my-spots-stat-label {
    color: #888;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 2px;
}

.my-spots-stat-separator {
    width: 1px;
    height: 28px;
    background: #444;
}


/* =========================================================
   TOOLBAR
   ========================================================= */

.my-spots-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 22px;
    padding: 0 3px;
}

.my-spots-toolbar-title {
    display: block;
    color: #fff;
    font-size: 20px;
    font-weight: 950;
    letter-spacing: 1px;
}

.my-spots-toolbar-count {
    display: inline-block;
    margin-top: 5px;
    color: #777;
    font-size: 12px;
    font-weight: 700;
}

.my-spots-add-button {
    border: 0;
    background: #ff6a00;
    color: #080808;
    padding: 13px 20px;
    font-weight: 950;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 5px 5px 0 #080808;
    transition: 0.15s ease;
}

    .my-spots-add-button:hover {
        transform: translate(3px, 3px);
        box-shadow: 2px 2px 0 #080808;
    }


/* =========================================================
   GRILLE
   ========================================================= */

.my-spots-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
}


/* =========================================================
   CARTE SPOT
   ========================================================= */

.my-spot-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 390px;
    background: #1a1a1a;
    border: 1px solid #393939;
    overflow: hidden;
    transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

    .my-spot-card:hover {
        transform: translateY(-5px);
        border-color: #ff6a00;
        box-shadow: 7px 7px 0 #080808;
    }


/* =========================================================
   HEADER CARTE
   ========================================================= */

.my-spot-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    background: #111;
    border-bottom: 1px solid #343434;
}

.my-spot-type {
    display: inline-block;
    background: #c51f25;
    color: #fff;
    padding: 7px 12px;
    font-size: 11px;
    font-weight: 950;
    letter-spacing: 1.5px;
}

.my-spot-status {
    display: flex;
    align-items: center;
    gap: 7px;
    color: #aaa;
    font-size: 12px;
    font-weight: 800;
}

.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #49c96d;
    box-shadow: 0 0 8px rgba(73, 201, 109, 0.5);
}


/* =========================================================
   CORPS
   ========================================================= */

.my-spot-card-body {
    flex: 1;
    padding: 25px;
}

.my-spot-name {
    margin: 0 0 14px;
    color: #fff;
    font-size: 31px;
    line-height: 1;
    font-weight: 950;
    text-transform: uppercase;
    letter-spacing: -1px;
    text-shadow: 3px 3px 0 #c51f25;
}

.my-spot-location {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #ff6a00;
    font-size: 15px;
    font-weight: 800;
}

.location-icon {
    font-size: 17px;
}

.location-department {
    color: #999;
    font-weight: 600;
}

.my-spot-description {
    margin: 20px 0;
    padding: 15px;
    background: #111;
    border-left: 4px solid #ff6a00;
    color: #aaa;
    line-height: 1.6;
    font-size: 14px;
}


/* =========================================================
   DÉTAILS
   ========================================================= */

.my-spot-details {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    margin-top: 22px;
}

.my-spot-detail {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 13px;
    background: #111;
    border: 1px solid #292929;
}

.detail-icon {
    width: 25px;
    text-align: center;
    font-size: 17px;
}

.my-spot-detail > div {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.detail-label {
    color: #666;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 1.5px;
}

.detail-value {
    margin-top: 2px;
    color: #ddd;
    font-size: 12px;
    font-weight: 700;
    word-break: break-word;
}


/* =========================================================
   FOOTER CARTE
   ========================================================= */

.my-spot-card-footer {
    display: flex;
    gap: 10px;
    padding: 16px 20px;
    background: #111;
    border-top: 1px solid #333;
}

.my-spot-view-button {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 0;
    background: #ff6a00;
    color: #080808;
    padding: 13px;
    font-size: 12px;
    font-weight: 950;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 4px 4px 0 #080808;
    transition: 0.15s ease;
}

    .my-spot-view-button:hover {
        transform: translate(2px, 2px);
        box-shadow: 2px 2px 0 #080808;
    }

.my-spot-delete-button {
    width: 48px;
    border: 1px solid #4a2525;
    background: #241313;
    color: #d94b4b;
    cursor: pointer;
    font-size: 17px;
    transition: 0.15s ease;
}

    .my-spot-delete-button:hover {
        background: #c51f25;
        color: #fff;
    }


/* =========================================================
   ÉTATS VIDES / CHARGEMENT
   ========================================================= */

.my-spots-empty,
.my-spots-loading {
    background: #191919;
    border: 1px solid #393939;
    padding: 70px 30px;
    text-align: center;
}

.my-spots-empty-icon,
.my-spots-loading-icon {
    font-size: 52px;
    margin-bottom: 15px;
}

.my-spots-empty-title,
.my-spots-loading h2 {
    color: #fff;
    font-size: 28px;
    font-weight: 950;
    text-shadow: 3px 3px 0 #c51f25;
}

.my-spots-empty p,
.my-spots-loading p {
    max-width: 600px;
    margin: 12px auto 25px;
    color: #999;
    line-height: 1.6;
}

.my-spots-primary-button {
    border: 0;
    background: #ff6a00;
    color: #080808;
    padding: 15px 25px;
    font-weight: 950;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 5px 5px 0 #080808;
}

    .my-spots-primary-button:hover {
        transform: translate(3px, 3px);
        box-shadow: 2px 2px 0 #080808;
    }


/* =========================================================
   ERREUR
   ========================================================= */

.my-spots-error {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 22px;
    background: #251414;
    border: 1px solid #7d2828;
    border-left: 5px solid #c51f25;
}

.my-spots-error-icon {
    font-size: 30px;
}

.my-spots-error strong {
    color: #fff;
    font-weight: 950;
}

.my-spots-error p {
    margin: 5px 0 0;
    color: #bbb;
}


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 900px) {

    .my-spots-page {
        padding: 30px 20px 60px;
    }

    .my-spots-grid {
        grid-template-columns: 1fr;
    }

    .my-spots-title-row h1 {
        font-size: 48px;
    }
}


@media (max-width: 600px) {

    .my-spots-page {
        padding: 20px 12px 50px;
    }

    .my-spots-hero {
        padding: 25px 20px;
    }

    .my-spots-title-row {
        align-items: flex-start;
    }

    .my-spots-pin {
        font-size: 35px;
    }

    .my-spots-title-row h1 {
        font-size: 38px;
    }

    .my-spots-stats {
        gap: 14px;
    }

    .my-spots-stat-separator {
        display: none;
    }

    .my-spots-toolbar {
        align-items: flex-start;
        flex-direction: column;
        gap: 15px;
    }
}
/* =========================================================
   GRAFF SPOT FRANCE — PAGE SPOT
   ========================================================= */

.spot-page {
    width: 100%;
    max-width: 1250px;
    margin: 0 auto;
    padding: 35px 40px 70px;
    box-sizing: border-box;
}


/* =========================================================
   CHARGEMENT / ERREUR
   ========================================================= */

.spot-screen-message {
    min-height: 420px;
    background: #181818;
    border: 1px solid #383838;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 50px;
}

.spot-message-icon {
    font-size: 55px;
    margin-bottom: 20px;
}

.spot-message-tag {
    display: inline-block;
    background: #f2d500;
    color: #050505;
    padding: 8px 18px;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 3px;
    margin-bottom: 20px;
}

.spot-screen-message h1 {
    margin: 0;
    font-size: 38px;
    font-weight: 900;
    color: #fff;
    text-transform: uppercase;
}

.spot-screen-message p {
    color: #aaa;
    margin: 15px 0 25px;
}

.spot-screen-error {
    border-color: #a71919;
}


/* =========================================================
   HEADER DU SPOT
   ========================================================= */

.spot-hero {
    position: relative;
    background: #191919;
    border: 1px solid #3b3b3b;
    padding: 30px 35px 38px;
    margin-bottom: 25px;
    overflow: hidden;
}

    .spot-hero::after {
        content: "";
        position: absolute;
        right: -80px;
        bottom: -110px;
        width: 300px;
        height: 300px;
        border: 35px solid rgba(242, 213, 0, 0.08);
        transform: rotate(25deg);
    }

.spot-hero-top {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    margin-bottom: 35px;
}

.spot-back-button {
    border: 1px solid #555;
    background: #eee;
    color: #111;
    padding: 12px 20px;
    font-weight: 900;
    cursor: pointer;
    transition: 0.2s ease;
}

    .spot-back-button:hover {
        background: #f2d500;
        transform: translateY(-2px);
    }

.spot-type-badge {
    background: #8b2cff;
    color: #fff;
    padding: 11px 20px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 2px;
}

.spot-hero-content {
    position: relative;
    z-index: 2;
}

.spot-hero-label {
    display: inline-block;
    background: #f2d500;
    color: #050505;
    padding: 8px 15px;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 3px;
    margin-bottom: 18px;
}

.spot-hero h1 {
    margin: 0;
    color: #fff;
    font-size: clamp(42px, 5vw, 76px);
    line-height: 0.95;
    font-weight: 900;
    text-transform: uppercase;
    text-shadow: 5px 5px 0 #8b2cff, 9px 9px 0 #222;
}

.spot-hero-location {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 25px;
    color: #aaa;
    font-size: 18px;
}

    .spot-hero-location strong {
        color: #f2d500;
    }

.spot-pin {
    font-size: 24px;
}


/* =========================================================
   CONTENU
   ========================================================= */

.spot-content {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(280px, 0.8fr);
    gap: 25px;
    margin-bottom: 25px;
}

.spot-main-column {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.spot-side-column {
    display: flex;
    flex-direction: column;
    gap: 25px;
}


/* =========================================================
   PANELS
   ========================================================= */

.spot-panel {
    background: #191919;
    border: 1px solid #383838;
    padding: 28px;
}

.spot-panel-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 20px;
    margin-bottom: 25px;
}

.spot-panel-kicker {
    color: #f2d500;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 3px;
}

.spot-panel h2 {
    color: #fff;
    font-size: 28px;
    margin: 7px 0 0;
    font-weight: 900;
    text-transform: uppercase;
}

.spot-panel-icon {
    font-size: 30px;
}

.spot-status-badge {
    background: #111;
    border: 1px solid #333;
    color: #62c77c;
    padding: 10px 15px;
    font-size: 12px;
    font-weight: 900;
    white-space: nowrap;
}


/* =========================================================
   DESCRIPTION
   ========================================================= */

.spot-description {
    background: #111;
    border-left: 4px solid #f2d500;
    padding: 20px;
    margin-bottom: 20px;
}

.spot-mini-title {
    color: #f2d500;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 2px;
    margin-bottom: 10px;
}

.spot-description p {
    color: #bbb;
    line-height: 1.7;
    margin: 0;
}


/* =========================================================
   INFORMATIONS
   ========================================================= */

.spot-info-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

.spot-info-box {
    background: #101010;
    border: 1px solid #2c2c2c;
    padding: 18px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.spot-info-icon {
    font-size: 24px;
}

.spot-info-box small,
.spot-coordinate-box small {
    display: block;
    color: #777;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 2px;
    margin-bottom: 5px;
}

.spot-info-box strong {
    display: block;
    color: #fff;
    font-size: 14px;
}


/* =========================================================
   COORDONNÉES
   ========================================================= */

.spot-coordinates-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 18px;
}

.spot-coordinate-box {
    background: #101010;
    border: 1px solid #2c2c2c;
    padding: 20px;
}

    .spot-coordinate-box strong {
        color: #fff;
        font-family: monospace;
        font-size: 16px;
    }


/* =========================================================
   BOUTON CARTE
   ========================================================= */

.spot-map-button,
.spot-main-button {
    width: 100%;
    border: none;
    background: #f2d500;
    color: #050505;
    padding: 17px 20px;
    font-size: 13px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 6px 6px 0 #080808;
    transition: 0.2s ease;
}

    .spot-map-button:hover,
    .spot-main-button:hover {
        transform: translate(-2px, -2px);
        box-shadow: 9px 9px 0 #080808;
    }


/* =========================================================
   CARTE LATÉRALE
   ========================================================= */

.spot-highlight-card {
    background: #f2d500;
    color: #080808;
    padding: 30px;
    position: relative;
    overflow: hidden;
}

    .spot-highlight-card::after {
        content: "G";
        position: absolute;
        right: -20px;
        bottom: -60px;
        font-size: 190px;
        font-weight: 900;
        opacity: 0.08;
    }

.spot-highlight-icon {
    font-size: 35px;
    margin-bottom: 15px;
}

.spot-highlight-label {
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 3px;
}

.spot-highlight-card h2 {
    position: relative;
    z-index: 2;
    margin: 12px 0;
    font-size: 30px;
    line-height: 1;
    text-transform: uppercase;
}

.spot-highlight-location {
    position: relative;
    z-index: 2;
    font-weight: 700;
}

.spot-highlight-status {
    position: relative;
    z-index: 2;
    margin-top: 25px;
    padding-top: 15px;
    border-top: 1px solid rgba(0,0,0,0.2);
    font-size: 11px;
    font-weight: 900;
}

    .spot-highlight-status span {
        display: inline-block;
        width: 9px;
        height: 9px;
        background: #238342;
        border-radius: 50%;
        margin-right: 7px;
    }


/* =========================================================
   CARTE LATÉRALE INFO
   ========================================================= */

.spot-side-card {
    background: #191919;
    border: 1px solid #383838;
    padding: 25px;
}

.spot-side-card-title {
    color: #f2d500;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 2px;
    margin-bottom: 12px;
}

.spot-side-card strong {
    color: #fff;
    font-size: 24px;
}

.spot-side-card p {
    color: #888;
    line-height: 1.6;
    margin: 15px 0 0;
    font-size: 13px;
}


/* =========================================================
   PHOTOS
   ========================================================= */

.spot-photos-section {
    background: #191919;
    border: 1px solid #383838;
    padding: 30px;
}

.spot-section-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 20px;
    margin-bottom: 25px;
}

    .spot-section-heading h2 {
        color: #fff;
        margin: 7px 0;
        font-size: 30px;
        font-weight: 900;
    }

    .spot-section-heading p {
        color: #888;
        margin: 0;
    }

.spot-photo-count {
    background: #f2d500;
    color: #050505;
    padding: 10px 15px;
    font-size: 11px;
    font-weight: 900;
}


/* =========================================================
   GALERIE
   ========================================================= */

.spot-photos-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.spot-photo-card {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: #0c0c0c;
    border: 1px solid #333;
}

    .spot-photo-card img {
        width: 100%;
        height: 100%;
        display: block;
        object-fit: cover;
        transition: transform 0.35s ease;
    }

    .spot-photo-card:hover img {
        transform: scale(1.06);
    }

.spot-photo-overlay {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 12px;
    background: linear-gradient( transparent, rgba(0,0,0,0.85) );
    color: #fff;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 1px;
}


/* =========================================================
   ABSENCE DE PHOTO
   ========================================================= */

.spot-no-photos {
    border: 1px dashed #444;
    background: #101010;
    padding: 55px 20px;
    text-align: center;
}

.spot-no-photo-icon {
    font-size: 45px;
    margin-bottom: 15px;
}

.spot-no-photos h3 {
    color: #fff;
    font-size: 18px;
    margin: 0 0 8px;
}

.spot-no-photos p {
    color: #777;
    margin: 0;
}


/* =========================================================
   CHARGEMENT PHOTOS
   ========================================================= */

.spot-photos-loading {
    min-height: 220px;
    background: #101010;
    border: 1px solid #292929;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 10px;
}

.spot-loading-spinner {
    font-size: 42px;
}

.spot-photos-loading strong {
    color: #fff;
    font-size: 16px;
}

.spot-photos-loading span {
    color: #777;
    font-size: 13px;
}


/* =========================================================
   BOUTON FINAL
   ========================================================= */

.spot-bottom-actions {
    margin-top: 25px;
    max-width: 300px;
}


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 1000px) {

    .spot-content {
        grid-template-columns: 1fr;
    }

    .spot-side-column {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .spot-photos-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}


@media (max-width: 700px) {

    .spot-page {
        padding: 20px 15px 50px;
    }

    .spot-hero {
        padding: 22px;
    }

    .spot-hero-top {
        align-items: stretch;
        flex-direction: column;
    }

    .spot-hero h1 {
        font-size: 42px;
    }

    .spot-info-grid,
    .spot-coordinates-grid {
        grid-template-columns: 1fr;
    }

    .spot-side-column {
        display: flex;
    }

    .spot-photos-grid {
        grid-template-columns: 1fr;
    }

    .spot-section-heading {
        align-items: flex-start;
        flex-direction: column;
    }
}
/* =========================================================
   GRAFF SPOT FRANCE
   Design Street Art / Graffiti
   ========================================================= */

html,
body {
    font-family: "Segoe UI", Arial, Helvetica, sans-serif;
    background: #111111;
    color: #f5f5f5;
    margin: 0;
}

/* =========================
   LIENS
   ========================= */

a {
    color: #8b2cff;
    text-decoration: none;
}

    a:hover {
        color: #ff6a00;
    }

/* =========================
   CONTENU
   ========================= */

.content {
    padding-top: 1rem;
}

/* =========================
   TITRES
   ========================= */

h1,
h2,
h3 {
    font-weight: 900;
    letter-spacing: -1px;
}

/* =========================
   MENU LATERAL
   ========================= */

.sidebar {
    background: linear-gradient( 160deg, #111111 0%, #191919 45%, #24102f 100% ) !important;
    border-right: 3px solid #ff6a00;
}

/* Nom de l'application */

.navbar-brand {
    color: #ffffff !important;
    font-weight: 900;
    font-size: 1.25rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

    /* Petit effet peinture */

    .navbar-brand::before {
        content: "🎨 ";
    }

/* =========================
   MENU
   ========================= */

.nav-link {
    color: #dddddd !important;
    font-weight: 700;
    margin: 4px 8px;
    border-radius: 8px;
    transition: 0.2s ease;
}

    .nav-link:hover {
        color: #111111 !important;
        background: linear-gradient( 90deg, #ff6a00, #8b2cff, #8b2cff );
        transform: translateX(4px);
    }

    .nav-link.active {
        color: #111111 !important;
        background: linear-gradient( 90deg, #ff6a00, #8b2cff );
        font-weight: 900;
    }

/* =========================
   HEADER GRAFF
   ========================= */

.graff-header {
    position: relative;
    padding: 25px 30px;
    margin-bottom: 20px;
    border-radius: 14px;
    background: linear-gradient( 135deg, #151515, #24102f );
    border-left: 6px solid #ff6a00;
    box-shadow: 0 10px 30px rgba(0,0,0,.35);
}

    .graff-header h1 {
        margin: 0;
        font-size: 2.4rem;
        text-transform: uppercase;
        font-weight: 900;
        color: #ffffff;
        text-shadow: 3px 3px 0 #8b2cff, 6px 6px 0 #8b2cff;
    }

    .graff-header p {
        margin-top: 8px;
        margin-bottom: 0;
        color: #cccccc;
        font-size: 1rem;
    }

/* =========================
   CARTE
   ========================= */

#map {
    width: 100%;
    height: 70vh;
    min-height: 500px;
    border-radius: 16px;
    border: 4px solid #222;
    box-shadow: 0 15px 40px rgba(0,0,0,.55);
    overflow: hidden;
}

/* =========================
   POPUP CARTE
   ========================= */

.leaflet-popup-content-wrapper {
    background: #151515;
    color: #ffffff;
    border: 2px solid #ff6a00;
    border-radius: 12px;
}

.leaflet-popup-tip {
    background: #151515;
}

.leaflet-popup-content h3 {
    color: #ff6a00;
    margin-top: 0;
}

/* =========================
   BOUTON AJOUTER UN SPOT
   ========================= */

.add-spot-button {
    position: fixed;
    right: 30px;
    bottom: 30px;
    z-index: 1000;
    padding: 15px 24px;
    border: none;
    border-radius: 50px;
    background: linear-gradient( 90deg, #ff6a00, #8b2cff );
    color: #111111;
    font-size: 1rem;
    font-weight: 900;
    text-transform: uppercase;
    box-shadow: 0 8px 25px rgba(0,0,0,.5);
    cursor: pointer;
    transition: .2s ease;
}

    .add-spot-button:hover {
        transform: scale(1.08) rotate(-1deg);
        background: linear-gradient( 90deg, #8b2cff, #8b2cff );
    }

/* =========================
   BOUTONS
   ========================= */

.btn-primary {
    background: linear-gradient( 90deg, #8b2cff, #7b2cff );
    border: none;
    font-weight: 800;
}

    .btn-primary:hover {
        background: linear-gradient( 90deg, #8b2cff, #7b2cff );
    }

/* =========================
   FORMULAIRES
   ========================= */

.form-control,
.form-select {
    background: #1b1b1b;
    color: #ffffff;
    border: 1px solid #555;
    border-radius: 8px;
}

    .form-control:focus,
    .form-select:focus {
        background: #222;
        color: #ffffff;
        border-color: #ff6a00;
        box-shadow: 0 0 0 3px rgba(255,234,0,.15);
    }

/* =========================
   VALIDATION
   ========================= */

.valid.modified:not([type=checkbox]) {
    outline: 2px solid #ff6a00;
}

.invalid {
    outline: 2px solid #8b2cff;
}

.validation-message {
    color: #8b2cff;
}

/* =========================
   ERREUR BLAZOR
   ========================= */

.blazor-error-boundary {
    background: #b00020;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

/* =========================
   MOBILE
   ========================= */

@media (max-width: 768px) {

    .graff-header {
        padding: 20px;
    }

        .graff-header h1 {
            font-size: 1.8rem;
        }

    #map {
        height: 65vh;
        min-height: 400px;
    }

    .add-spot-button {
        right: 15px;
        bottom: 15px;
        padding: 13px 18px;
    }
}
/* =========================================================
   GRAFFSPOT FRANCE — MENU STREET ART
   ========================================================= */

.graff-nav {
    position: relative;
    height: 100vh;
    width: 270px;
    padding: 28px 16px;
    background: radial-gradient(circle at 20% 15%, rgba(255, 0, 120, .15), transparent 25%), radial-gradient(circle at 80% 70%, rgba(0, 220, 255, .12), transparent 30%), #0d0d0d;
    border-right: 3px solid #ff6a00;
    overflow: hidden;
}

    /* Faux traits de peinture en arrière-plan */

    .graff-nav::before {
        content: "";
        position: absolute;
        width: 180px;
        height: 25px;
        left: -35px;
        top: 110px;
        background: #8b2cff;
        transform: rotate(-17deg);
        opacity: .25;
        filter: blur(1px);
    }

    .graff-nav::after {
        content: "";
        position: absolute;
        width: 150px;
        height: 18px;
        right: -40px;
        bottom: 180px;
        background: #8b2cff;
        transform: rotate(24deg);
        opacity: .2;
    }

/* =========================
   LOGO
   ========================= */

.graff-logo {
    position: relative;
    z-index: 2;
    margin-bottom: 38px;
    padding: 8px 10px;
}

.graff-logo-main {
    font-size: 38px;
    line-height: .8;
    font-weight: 1000;
    letter-spacing: -3px;
    color: #ffffff;
    transform: rotate(-3deg);
    text-shadow: 4px 4px 0 #8b2cff, 7px 7px 0 #8b2cff;
}

.graff-logo-sub {
    margin-top: 10px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 5px;
    color: #ff6a00;
    transform: rotate(1deg);
}

/* =========================
   MENU
   ========================= */

.graff-menu {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.graff-menu-item {
    position: relative;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 15px;
    color: #eeeeee !important;
    text-decoration: none;
    font-size: 14px;
    font-weight: 900;
    letter-spacing: 1px;
    border-radius: 9px;
    background: rgba(255,255,255,.025);
    border-left: 4px solid transparent;
    transition: transform .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
    overflow: hidden;
}

    .graff-menu-item::before {
        content: "";
        position: absolute;
        left: -110%;
        top: 0;
        width: 100%;
        height: 100%;
        background: linear-gradient( 100deg, transparent, rgba(255,255,255,.12), transparent );
        transition: left .4s ease;
    }

    .graff-menu-item:hover::before {
        left: 110%;
    }

    .graff-menu-item:hover {
        transform: translateX(7px) rotate(-.5deg);
        color: #111111 !important;
        background: linear-gradient( 90deg, #ff6a00, #8b2cff );
        border-left-color: #8b2cff;
        box-shadow: 5px 5px 0 rgba(0,229,255,.35);
    }

.graff-icon {
    width: 27px;
    font-size: 20px;
    text-align: center;
    flex-shrink: 0;
}

/* =========================
   AJOUTER UN SPOT
   ========================= */

.graff-add {
    margin: 10px 0;
    color: #111111 !important;
    background: linear-gradient( 135deg, #ff6a00, #8b2cff );
    border-left-color: #8b2cff;
    box-shadow: 4px 5px 0 #8b2cff;
    animation: graffPulse 3s infinite;
}

    .graff-add:hover {
        transform: translateX(9px) rotate(-1deg) scale(1.02);
        box-shadow: 7px 7px 0 #8b2cff, 0 0 25px rgba(255,20,147,.35);
    }

@keyframes graffPulse {

    0%, 100% {
        box-shadow: 4px 5px 0 #8b2cff;
    }

    50% {
        box-shadow: 6px 7px 0 #8b2cff, 0 0 18px rgba(255,234,0,.18);
    }
}

/* =========================
   BAS DU MENU
   ========================= */

.graff-menu-footer {
    position: absolute;
    left: 16px;
    right: 16px;
    bottom: 25px;
    z-index: 2;
}

.graff-status {
    padding: 11px;
    border-radius: 8px;
    background: rgba(255,255,255,.04);
    color: #999999;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 1px;
    text-align: center;
}

.status-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 7px;
    border-radius: 50%;
    background: #ff6a00;
    box-shadow: 0 0 10px #ff6a00;
    animation: onlinePulse 1.8s infinite;
}

@keyframes onlinePulse {

    0%, 100% {
        opacity: 1;
    }

    50% {
        opacity: .35;
    }
}

/* =========================
   MOBILE
   ========================= */

@media (max-width: 768px) {

    .graff-nav {
        width: 100%;
        height: auto;
        border-right: none;
        border-bottom: 3px solid #ff6a00;
        padding: 15px;
    }

    .graff-logo {
        margin-bottom: 15px;
    }

    .graff-logo-main {
        font-size: 30px;
    }

    .graff-menu {
        flex-direction: row;
        overflow-x: auto;
        gap: 7px;
    }

    .graff-menu-item {
        white-space: nowrap;
        padding: 11px 13px;
    }

        .graff-menu-item:hover {
            transform: translateY(-3px);
        }

    .graff-menu-footer {
        display: none;
    }
}
/* =========================================================
   GRAFF SPOT FRANCE
   PURE STREET ART
   PAS DE RGB / PAS GAMING
   ========================================================= */

.graff-home {
    min-height: calc(100vh - 30px);
    padding: 45px;
    position: relative;
    overflow: hidden;
    background: linear-gradient(rgba(0,0,0,.78), rgba(0,0,0,.88)), repeating-linear-gradient( 0deg, #202020 0px, #202020 2px, #1b1b1b 2px, #1b1b1b 5px );
    color: #eee;
}

    /* Traces de peinture */

    .graff-home::before {
        content: "";
        position: absolute;
        width: 420px;
        height: 90px;
        top: 90px;
        right: -100px;
        background: #ff6a00;
        transform: rotate(-9deg);
        opacity: .12;
        filter: blur(2px);
    }

    /* Tache de peinture */

    .graff-home::after {
        content: "";
        position: absolute;
        width: 180px;
        height: 180px;
        left: -70px;
        bottom: 80px;
        background: #8b2cff;
        border-radius: 48% 52% 40% 60%;
        opacity: .10;
        transform: rotate(18deg);
    }


/* =========================================================
   HERO
   ========================================================= */

.hero-graff {
    position: relative;
    z-index: 2;
    max-width: 1000px;
    margin: 0 auto;
    padding: 55px 45px;
    background: linear-gradient( 135deg, rgba(20,20,20,.96), rgba(35,35,35,.90) );
    border: 1px solid #444;
    box-shadow: 12px 12px 0 rgba(0,0,0,.45);
    transform: rotate(-.4deg);
}


/* petit sticker */

.hero-tag {
    display: inline-block;
    padding: 7px 12px;
    margin-bottom: 20px;
    background: #ff6a00;
    color: #111;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 2px;
    transform: rotate(-2deg);
    box-shadow: 4px 4px 0 #111;
}


/* =========================================================
   TITRE GRAFF
   ========================================================= */

.hero-graff h1 {
    margin: 0;
    font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
    font-size: clamp(55px, 9vw, 110px);
    line-height: .78;
    letter-spacing: -5px;
    color: #f2f2f2;
    text-transform: uppercase;
    text-shadow: 5px 5px 0 #111, 9px 9px 0 #8b2cff;
    transform: rotate(-2deg);
}

    .hero-graff h1 span {
        color: #ff6a00;
        display: inline-block;
        transform: rotate(2deg);
        text-shadow: 5px 5px 0 #111, 9px 9px 0 #333;
    }


/* =========================================================
   TEXTE
   ========================================================= */

.hero-subtitle {
    margin-top: 30px;
    font-size: 25px;
    font-weight: 800;
    color: #fff;
}

.hero-description {
    max-width: 650px;
    margin-top: 12px;
    color: #bdbdbd;
    font-size: 16px;
    line-height: 1.6;
}


/* =========================================================
   BOUTONS
   ========================================================= */

.hero-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    margin-top: 35px;
}

.hero-button {
    position: relative;
    display: inline-block;
    padding: 16px 25px;
    font-weight: 900;
    letter-spacing: 1px;
    text-decoration: none;
    color: #111;
    border: 0;
    transition: transform .18s ease, box-shadow .18s ease;
}


    /* bouton jaune peint */

    .hero-button.primary {
        background: #ff6a00;
        box-shadow: 6px 6px 0 #111;
        transform: rotate(-1deg);
    }

        .hero-button.primary:hover {
            transform: rotate(-2deg) translate(-2px,-3px);
            box-shadow: 10px 10px 0 #111;
        }


    /* bouton blanc autocollant */

    .hero-button.secondary {
        background: #eee;
        box-shadow: 6px 6px 0 #111;
        transform: rotate(1.5deg);
    }

        .hero-button.secondary:hover {
            transform: rotate(2deg) translate(-2px,-3px);
            box-shadow: 10px 10px 0 #111;
        }


/* =========================================================
   CARTES
   ========================================================= */

.graff-features {
    position: relative;
    z-index: 2;
    max-width: 1000px;
    margin: 35px auto 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.graff-card {
    position: relative;
    padding: 28px;
    min-height: 180px;
    background: #242424;
    border: 1px solid #444;
    box-shadow: 7px 7px 0 #111;
    transition: transform .2s ease;
}

    .graff-card:hover {
        transform: translateY(-7px) rotate(0deg);
    }


    /* bandes de peinture */

    .graff-card::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 55px;
        height: 7px;
        background: #ff6a00;
    }

    .graff-card:nth-child(2)::before {
        background: #8b2cff;
    }

    .graff-card:nth-child(3)::before {
        background: #8b2cff;
    }


.graff-card-icon {
    font-size: 32px;
    margin-bottom: 12px;
}

.graff-card h2 {
    margin: 0 0 10px;
    font-family: Impact, "Arial Black", sans-serif;
    letter-spacing: 1px;
}

.graff-card p {
    color: #aaa;
    line-height: 1.5;
    margin: 0;
}


/* =========================================================
   COMMUNAUTÉ
   ========================================================= */

.graff-community {
    position: relative;
    z-index: 2;
    max-width: 1000px;
    margin: 40px auto;
    padding: 30px;
    background: #eee;
    color: #111;
    box-shadow: 9px 9px 0 #111;
    transform: rotate(.5deg);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 25px;
}

.community-label {
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 3px;
    color: #777;
}

.graff-community h2 {
    margin: 7px 0;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 34px;
    line-height: 1;
}

    .graff-community h2 span {
        color: #8b2cff;
    }

.graff-community p {
    margin: 0;
    color: #555;
}

.community-button {
    padding: 15px 22px;
    background: #111;
    color: #fff !important;
    font-weight: 900;
    text-decoration: none;
    white-space: nowrap;
    transition: .2s ease;
}

    .community-button:hover {
        background: #ff6a00;
        color: #111 !important;
        transform: rotate(-2deg);
    }


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 800px) {

    .graff-home {
        padding: 20px;
    }

    .hero-graff {
        padding: 35px 25px;
    }

    .graff-features {
        grid-template-columns: 1fr;
    }

    .graff-community {
        flex-direction: column;
        align-items: flex-start;
    }

    .hero-graff h1 {
        font-size: 60px;
    }
}
/* =========================================================
   NETTETÉ DU TEXTE — GRAFF SPOT FRANCE
   ========================================================= */

/* Texte général plus net */
.graff-home,
.graff-home h1,
.graff-home h2,
.graff-home p,
.graff-home a,
.graff-home span,
.graff-home button {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: geometricPrecision;
}

/* Le gros titre reste graffiti mais sans bavure */
.hero-graff h1 {
    text-shadow: 4px 4px 0 #111, 7px 7px 0 #8b2cff;
    transform: none;
}

/* On évite les transformations sur les petits textes */
.hero-graff {
    transform: none;
}

.graff-card:nth-child(1),
.graff-card:nth-child(2),
.graff-card:nth-child(3) {
    transform: none;
}

/* Texte des cartes beaucoup plus propre */
.graff-card h2 {
    font-size: 28px;
    line-height: 1.05;
    text-shadow: none;
}

.graff-card p {
    font-size: 16px;
    line-height: 1.55;
    text-shadow: none;
}

/* Texte du bouton parfaitement lisible */
.hero-button {
    font-size: 16px;
    line-height: 1;
    text-shadow: none;
}

/* Le texte de la communauté */
.graff-community {
    transform: none;
}

    .graff-community h2 {
        text-shadow: none;
    }

    .graff-community p {
        text-shadow: none;
    }

.hero-graff h1 {
    letter-spacing: -3px;
    text-shadow: 4px 4px 0 #111, 8px 8px 0 #8b2cff;
}
/* =========================================================
   MENU GRAFF SPOT FRANCE
   ========================================================= */

.graff-nav {
    min-height: 100vh;
    padding: 25px 14px;
    background: linear-gradient(rgba(10,10,10,.94), rgba(15,15,15,.98));
    border-right: 3px solid #ff6a00;
    color: white;
}

/* LOGO */

.graff-logo {
    text-align: center;
    margin-bottom: 35px;
}

.graff-logo-main {
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 38px;
    line-height: .8;
    letter-spacing: -2px;
    color: white;
    text-shadow: 3px 3px 0 #111, 6px 6px 0 #8b2cff;
}

.graff-logo-sub {
    margin-top: 8px;
    font-weight: 900;
    letter-spacing: 4px;
    color: #ff6a00;
    font-size: 12px;
}

/* BOUTONS */

.graff-nav nav {
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.graff-nav-item {
    display: flex;
    align-items: center;
    gap: 13px;
    min-height: 52px;
    padding: 0 16px;
    color: #eee !important;
    text-decoration: none;
    background: #1b1b1b;
    border: 1px solid #333;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 16px;
    letter-spacing: .5px;
    box-shadow: 5px 5px 0 #080808;
    transition: transform .15s ease, background .15s ease, border-color .15s ease;
}

    .graff-nav-item:hover {
        color: #111 !important;
        background: #ff6a00;
        border-color: #ff6a00;
        transform: translateX(5px);
        box-shadow: 7px 7px 0 #080808;
    }

    /* PAGE ACTIVE */

    .graff-nav-item.active {
        color: #111 !important;
        background: #ff6a00;
        border-color: #ff6a00;
        transform: translateX(4px);
    }

    /* AJOUTER UN SPOT */

    .graff-nav-item.add-spot {
        background: #8b2cff;
        border-color: #8b2cff;
        margin: 8px 0;
    }

        .graff-nav-item.add-spot:hover {
            background: #ff6a00;
            border-color: #ff6a00;
        }

        .graff-nav-item.add-spot.active {
            background: #ff6a00;
            border-color: #ff6a00;
        }

/* ICÔNES */

.nav-icon {
    width: 25px;
    min-width: 25px;
    text-align: center;
    font-family: Arial, sans-serif;
    font-size: 20px;
}

/* BAS DU MENU */

.graff-nav-bottom {
    margin-top: 45px;
    padding: 20px 10px;
    border-top: 2px solid #444;
    text-align: center;
    transform: rotate(-1deg);
}

    .graff-nav-bottom strong {
        display: block;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 15px;
        color: #ff6a00;
    }

    .graff-nav-bottom small {
        display: block;
        margin-top: 8px;
        color: #777;
        font-size: 11px;
    }
/* =========================================================
   GRAFF SPOT FRANCE — MENU STREET ART
   ========================================================= */

.graff-nav {
    min-height: 100vh;
    padding: 25px 14px;
    background: #111;
    color: #fff;
    border-right: 3px solid #ff6a00;
}

/* LOGO */

.graff-logo {
    text-align: center;
    margin-bottom: 35px;
}

.graff-logo-main {
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 38px;
    line-height: .8;
    letter-spacing: -2px;
    color: #fff;
    text-shadow: 3px 3px 0 #111, 6px 6px 0 #8b2cff;
}

.graff-logo-sub {
    margin-top: 8px;
    font-weight: 900;
    letter-spacing: 4px;
    color: #ff6a00;
    font-size: 12px;
}

/* MENU */

.graff-nav nav {
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.graff-nav-item {
    display: flex;
    align-items: center;
    gap: 13px;
    min-height: 52px;
    padding: 0 16px;
    color: #eee !important;
    text-decoration: none;
    background: #1b1b1b;
    border: 1px solid #333;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 16px;
    letter-spacing: .5px;
    box-shadow: 5px 5px 0 #080808;
    transition: transform .15s ease, background .15s ease, border-color .15s ease;
}

    .graff-nav-item:hover {
        color: #111 !important;
        background: #ff6a00;
        border-color: #ff6a00;
        transform: translateX(5px);
        box-shadow: 7px 7px 0 #080808;
    }

    .graff-nav-item.active {
        color: #111 !important;
        background: #ff6a00;
        border-color: #ff6a00;
        transform: translateX(4px);
    }

    /* AJOUTER UN SPOT */

    .graff-nav-item.add-spot {
        background: #8b2cff;
        border-color: #8b2cff;
        margin: 8px 0;
    }

        .graff-nav-item.add-spot:hover {
            background: #ff6a00;
            border-color: #ff6a00;
        }

        .graff-nav-item.add-spot.active {
            background: #ff6a00;
            border-color: #ff6a00;
        }

/* ICÔNES */

.nav-icon {
    width: 25px;
    min-width: 25px;
    text-align: center;
    font-family: Arial, sans-serif;
    font-size: 20px;
}

/* BAS DU MENU */

.graff-nav-bottom {
    margin-top: 45px;
    padding: 20px 10px;
    border-top: 2px solid #444;
    text-align: center;
}

    .graff-nav-bottom strong {
        display: block;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 15px;
        color: #ff6a00;
    }

    .graff-nav-bottom small {
        display: block;
        margin-top: 8px;
        color: #777;
        font-size: 11px;
    }
/* =========================================================
   AJOUTER UN SPOT — STYLE GRAFFITI
   ========================================================= */

.add-spot-page {
    min-height: calc(100vh - 20px);
    padding: 45px 55px;
    background: linear-gradient(rgba(15,15,15,.96), rgba(15,15,15,.98));
    color: #eee;
}

/* EN-TÊTE */

.add-spot-header {
    max-width: 950px;
    margin: 0 auto 35px;
}

.add-spot-tag {
    display: inline-block;
    padding: 8px 15px;
    margin-bottom: 15px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", sans-serif;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 2px;
    transform: rotate(-1deg);
    box-shadow: 5px 5px 0 #000;
}

.add-spot-header h1 {
    margin: 0;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: clamp(45px, 6vw, 75px);
    line-height: .9;
    color: #fff;
    text-shadow: 4px 4px 0 #111, 8px 8px 0 #8b2cff;
}

.add-spot-header p {
    max-width: 700px;
    margin-top: 20px;
    color: #aaa;
    font-size: 17px;
    line-height: 1.5;
}

/* FORMULAIRE */

.spot-form {
    position: relative;
    max-width: 950px;
    margin: 0 auto;
    padding: 35px;
    background: #202020;
    border: 1px solid #3b3b3b;
    box-shadow: 9px 9px 0 #090909;
}

    /* petite bande peinture */

    .spot-form::before {
        content: "";
        position: absolute;
        top: -5px;
        left: 25px;
        width: 170px;
        height: 9px;
        background: #ff6a00;
        transform: rotate(-1deg);
    }

    /* ORGANISATION DES CHAMPS */

    .spot-form > label {
        display: block;
        margin: 18px 0 7px;
        color: #ff6a00;
        font-family: "Arial Black", sans-serif;
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 1px;
    }

    /* CHAMPS */

    .spot-form input,
    .spot-form select,
    .spot-form textarea {
        width: 100%;
        box-sizing: border-box;
        padding: 14px 16px;
        background: #111;
        color: #eee;
        border: 1px solid #444;
        outline: none;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 15px;
        transition: border-color .15s ease, box-shadow .15s ease;
    }

        .spot-form input::placeholder,
        .spot-form textarea::placeholder {
            color: #666;
        }

        .spot-form input:focus,
        .spot-form select:focus,
        .spot-form textarea:focus {
            border-color: #ff6a00;
            box-shadow: 4px 4px 0 #000;
        }

    /* SELECT */

    .spot-form select {
        cursor: pointer;
    }

    /* DESCRIPTION */

    .spot-form textarea {
        min-height: 140px;
        resize: vertical;
    }

/* =========================================================
   GPS
   ========================================================= */

.gps-box {
    margin-top: 30px;
    padding: 22px;
    background: #171717;
    border-left: 6px solid #ff6a00;
    box-shadow: 5px 5px 0 #080808;
}

    .gps-box strong {
        display: block;
        color: #fff;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 22px;
        letter-spacing: 1px;
    }

.gps-values {
    display: flex;
    gap: 30px;
    margin: 15px 0;
    color: #999;
    font-family: monospace;
    font-size: 14px;
}

/* BOUTON GPS */

.gps-button {
    border: 0;
    padding: 13px 20px;
    background: #eee;
    color: #111;
    font-family: "Arial Black", sans-serif;
    font-size: 13px;
    cursor: pointer;
    box-shadow: 5px 5px 0 #000;
    transition: .15s ease;
}

    .gps-button:hover {
        background: #ff6a00;
        transform: translate(-2px, -2px);
        box-shadow: 7px 7px 0 #000;
    }

/* =========================================================
   PUBLICATION
   ========================================================= */

.publish-spot {
    position: relative;
    margin-top: 30px;
    padding: 17px 32px;
    border: 0;
    background: #8b2cff;
    color: #fff;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 20px;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 7px 7px 0 #080808;
    transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}

    .publish-spot:hover:not(:disabled) {
        background: #ff6a00;
        color: #111;
        transform: translate(-3px, -3px);
        box-shadow: 10px 10px 0 #080808;
    }

    .publish-spot:disabled {
        opacity: .55;
        cursor: wait;
    }

/* MESSAGE */

.spot-message {
    margin-top: 20px;
    padding: 14px 18px;
    background: #111;
    border-left: 5px solid #ff6a00;
    color: #eee;
    font-weight: 700;
}

/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 800px) {

    .add-spot-page {
        padding: 25px 18px;
    }

    .spot-form {
        padding: 25px 20px;
    }

    .gps-values {
        flex-direction: column;
        gap: 7px;
    }
}
/* =========================================================
   CARTE AJOUTER UN SPOT
   ========================================================= */

#addSpotMap {
    width: 100%;
    height: 430px;
    margin-top: 20px;
    border: 2px solid #444;
    box-shadow: 7px 7px 0 #080808;
    z-index: 1;
}

.map-help {
    margin: 10px 0 5px;
    color: #999;
    font-size: 14px;
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

    .form-row > div {
        min-width: 0;
    }

@media (max-width: 800px) {

    .form-row {
        grid-template-columns: 1fr;
    }

    #addSpotMap {
        height: 350px;
    }
}
/* =========================================================
   PHOTOS — AJOUTER UN SPOT
   ========================================================= */

.photo-upload-box {
    margin-top: 30px;
    padding: 22px;
    background: #171717;
    border-left: 6px solid #8b2cff;
    box-shadow: 5px 5px 0 #080808;
}

    .photo-upload-box strong {
        display: block;
        color: #fff;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 22px;
        letter-spacing: 1px;
    }

    .photo-upload-box p {
        color: #999;
        margin: 8px 0 18px;
    }

    .photo-upload-box input[type="file"] {
        width: 100%;
        box-sizing: border-box;
        padding: 15px;
        background: #111;
        color: #ddd;
        border: 1px dashed #555;
        cursor: pointer;
    }

.selected-photos {
    margin-top: 18px;
}

.selected-photos-title {
    margin-bottom: 10px;
    color: #ff6a00;
    font-family: "Arial Black", sans-serif;
    font-size: 13px;
    text-transform: uppercase;
}

.selected-photo {
    padding: 10px 12px;
    margin-top: 6px;
    background: #222;
    border-left: 3px solid #ff6a00;
    color: #ddd;
}
/* =========================================================
   POPUP SPOT
   ========================================================= */

.spot-popup {
    width: 270px;
    overflow: hidden;
    background: #181818;
    color: #eee;
}

.spot-popup-image {
    display: block;
    width: 100%;
    height: 165px;
    object-fit: cover;
}

.spot-popup-no-photo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100px;
    background: #252525;
    color: #777;
    font-size: 15px;
}

.spot-popup-content {
    padding: 14px;
}

    .spot-popup-content h3 {
        margin: 0 0 8px;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 21px;
        color: #111;
    }

    .spot-popup-content p {
        margin: 7px 0 12px;
        color: #444;
    }

.spot-popup-info {
    margin-top: 5px;
    color: #555;
}

.spot-popup-rating {
    margin-top: 9px;
    font-weight: 900;
    color: #8b2cff;
}

.spot-popup-photo-count {
    margin-top: 7px;
    color: #666;
}
/* =========================================================
   FICHE SPOT
   ========================================================= */

.spot-detail-page {
    max-width: 1100px;
    margin: 0 auto;
    padding: 40px;
    color: #eee;
}


/* HEADER */

.spot-detail-header {
    position: relative;
    padding: 30px;
    margin-bottom: 25px;
    background: #181818;
    border: 1px solid #444;
    box-shadow: 8px 8px 0 #050505;
}

.spot-detail-tag {
    display: inline-block;
    padding: 7px 14px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", sans-serif;
    font-size: 11px;
    letter-spacing: 2px;
    transform: rotate(-1deg);
}

.spot-detail-header h1 {
    margin: 18px 0 8px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 48px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #fff;
    text-shadow: 3px 3px 0 #8b2cff;
}

.spot-detail-location {
    color: #aaa;
    font-size: 17px;
}


/* TITRES */

.section-title {
    margin-bottom: 18px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 25px;
    letter-spacing: 1px;
    color: #fff;
}


/* GALERIE */

.spot-gallery-section {
    margin-top: 30px;
}

.spot-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
}

.spot-gallery-item {
    height: 220px;
    overflow: hidden;
    background: #181818;
    border: 2px solid #333;
    box-shadow: 5px 5px 0 #050505;
    transition: transform .15s ease, border-color .15s ease;
}

    .spot-gallery-item:hover {
        transform: translate(-3px, -3px);
        border-color: #ff6a00;
    }

    .spot-gallery-item img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;
    }

.no-photos {
    padding: 40px;
    text-align: center;
    background: #181818;
    border: 1px dashed #555;
    color: #888;
}


/* INFOS */

.spot-info-section {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-top: 30px;
}

.spot-info-card {
    padding: 20px;
    background: #1b1b1b;
    border-top: 5px solid #ff6a00;
    box-shadow: 5px 5px 0 #050505;
}

.spot-info-label {
    color: #777;
    font-family: "Arial Black", sans-serif;
    font-size: 11px;
    letter-spacing: 2px;
}

.spot-info-value {
    margin-top: 8px;
    font-size: 18px;
    font-weight: bold;
    color: #fff;
}


/* DESCRIPTION */

.spot-description-section {
    margin-top: 30px;
    padding: 25px;
    background: #181818;
    border-left: 6px solid #8b2cff;
    box-shadow: 6px 6px 0 #050505;
}

    .spot-description-section p {
        color: #bbb;
        line-height: 1.7;
        margin: 0;
    }


/* UPLOAD */

.spot-upload-section {
    margin-top: 30px;
    padding: 25px;
    background: #181818;
    border-left: 6px solid #ff6a00;
    box-shadow: 6px 6px 0 #050505;
}

    .spot-upload-section p {
        color: #999;
    }

    .spot-upload-section input[type="file"] {
        width: 100%;
        margin-top: 12px;
        padding: 14px;
        background: #111;
        color: #ddd;
        border: 1px dashed #555;
    }

.selected-upload {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-top: 15px;
    padding: 15px;
    background: #222;
    border-left: 4px solid #8b2cff;
}

.graff-button {
    border: none;
    padding: 13px 20px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", sans-serif;
    cursor: pointer;
    box-shadow: 4px 4px 0 #050505;
    transition: transform .12s ease, box-shadow .12s ease;
}

    .graff-button:hover {
        transform: translate(2px, 2px);
        box-shadow: 2px 2px 0 #050505;
    }

    .graff-button:disabled {
        opacity: .5;
        cursor: wait;
    }

.spot-upload-message {
    margin-top: 15px;
    padding: 12px;
    background: #222;
    color: #ddd;
}


/* RETOUR */

.back-to-map {
    display: inline-block;
    margin-top: 30px;
    padding: 14px 22px;
    background: #fff;
    color: #111;
    text-decoration: none;
    font-family: "Arial Black", sans-serif;
    box-shadow: 5px 5px 0 #050505;
    transition: transform .12s ease;
}

    .back-to-map:hover {
        transform: translate(3px, 3px);
        color: #111;
    }


/* MOBILE */

@media (max-width: 700px) {

    .spot-detail-page {
        padding: 20px;
    }

    .spot-detail-header h1 {
        font-size: 34px;
    }

    .spot-info-section {
        grid-template-columns: 1fr;
    }

    .selected-upload {
        flex-direction: column;
        align-items: stretch;
    }
}

.spot-popup-button {
    display: block;
    margin-top: 14px;
    padding: 11px 14px;
    background: #ff6a00;
    color: #111 !important;
    text-align: center;
    text-decoration: none !important;
    font-family: "Arial Black", sans-serif;
    font-size: 12px;
    letter-spacing: .5px;
    box-shadow: 4px 4px 0 #050505;
    transition: transform .12s ease, box-shadow .12s ease;
}

    .spot-popup-button:hover {
        color: #111 !important;
        transform: translate(2px, 2px);
        box-shadow: 2px 2px 0 #050505;
    }
/* =========================================================
   AUTHENTIFICATION - GRAFF SPOT FRANCE
   ========================================================= */

.auth-page {
    min-height: calc(100vh - 60px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 50px 25px;
    background: linear-gradient( 135deg, #111 0%, #181818 50%, #101010 100% );
}


/* CARTE */

.auth-card {
    width: 100%;
    max-width: 560px;
    padding: 42px;
    background: #1b1b1b;
    border: 1px solid #444;
    box-shadow: 10px 10px 0 #050505;
    position: relative;
}


/* PETIT BANDEAU */

.auth-tag {
    display: inline-block;
    padding: 8px 14px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", Impact, sans-serif;
    font-size: 11px;
    letter-spacing: 2px;
    transform: rotate(-1deg);
}


/* TITRE */

.auth-card h1 {
    margin: 22px 0 10px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 52px;
    line-height: .95;
    letter-spacing: 1px;
    color: #fff;
    text-shadow: 4px 4px 0 #8b2cff;
}


/* SOUS-TITRE */

.auth-subtitle {
    margin-bottom: 30px;
    color: #999;
    line-height: 1.6;
    font-size: 15px;
}


/* FORMULAIRE */

.auth-form {
    display: flex;
    flex-direction: column;
    gap: 10px;
}


    .auth-form label {
        margin-top: 10px;
        color: #aaa;
        font-family: "Arial Black", sans-serif;
        font-size: 11px;
        letter-spacing: 2px;
    }


    .auth-form input {
        width: 100%;
        box-sizing: border-box;
        padding: 15px 16px;
        background: #101010;
        border: 1px solid #444;
        color: #fff;
        font-size: 16px;
        outline: none;
        transition: border-color .15s ease, box-shadow .15s ease;
    }


        .auth-form input::placeholder {
            color: #555;
        }


        .auth-form input:focus {
            border-color: #ff6a00;
            box-shadow: 4px 4px 0 #8b2cff;
        }


/* BOUTON */

.graff-auth-button {
    margin-top: 25px;
    padding: 16px 22px;
    border: none;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", Impact, sans-serif;
    font-size: 14px;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 6px 6px 0 #050505;
    transition: transform .12s ease, box-shadow .12s ease;
}


    .graff-auth-button:hover {
        transform: translate(3px, 3px);
        box-shadow: 3px 3px 0 #050505;
    }


    .graff-auth-button:disabled {
        opacity: .55;
        cursor: wait;
    }


/* ERREUR */

.auth-error {
    margin-bottom: 20px;
    padding: 14px;
    background: #351515;
    border-left: 5px solid #8b2cff;
    color: #fff;
    line-height: 1.5;
}


/* SUCCÈS */

.auth-success {
    padding: 25px;
    background: #202020;
    border-left: 6px solid #ff6a00;
    color: #ddd;
}


.success-title {
    margin-bottom: 12px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 25px;
    color: #fff;
}


.auth-success p {
    color: #aaa;
}


/* FOOTER */

.auth-footer {
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid #333;
    text-align: center;
    color: #777;
}


    .auth-footer a {
        margin-left: 7px;
        color: #ff6a00;
        font-family: "Arial Black", sans-serif;
        text-decoration: none;
    }


        .auth-footer a:hover {
            color: #fff;
        }


/* MOBILE */

@media (max-width: 600px) {

    .auth-page {
        padding: 25px 15px;
    }

    .auth-card {
        padding: 28px 22px;
    }

        .auth-card h1 {
            font-size: 40px;
        }
}
/* =========================================================
   ACCUEIL - REJOINDRE LE CREW
   ========================================================= */

.home-crew-box {
    margin: 35px 0;
    padding: 35px;
    background: #1b1b1b;
    border: 1px solid #444;
    box-shadow: 8px 8px 0 #050505;
    position: relative;
}

.home-crew-tag {
    display: inline-block;
    padding: 7px 12px;
    background: #ff6a00;
    color: #111;
    font-family: "Arial Black", Impact, sans-serif;
    font-size: 11px;
    letter-spacing: 2px;
    transform: rotate(-1deg);
}

.home-crew-box h2 {
    margin: 18px 0 10px;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 42px;
    color: #fff;
    text-shadow: 4px 4px 0 #8b2cff;
}

.home-crew-box p {
    max-width: 650px;
    color: #aaa;
    line-height: 1.6;
}

.home-crew-buttons {
    display: flex;
    align-items: center;
    gap: 25px;
    margin-top: 25px;
    flex-wrap: wrap;
}

.home-crew-button {
    display: inline-block;
    padding: 15px 22px;
    background: #ff6a00;
    color: #111;
    text-decoration: none;
    font-family: "Arial Black", Impact, sans-serif;
    font-size: 13px;
    box-shadow: 6px 6px 0 #050505;
    transition: .12s ease;
}

    .home-crew-button:hover {
        transform: translate(3px, 3px);
        box-shadow: 3px 3px 0 #050505;
        color: #111;
    }

.home-crew-link {
    color: #aaa;
    text-decoration: none;
    font-family: "Arial Black", sans-serif;
    font-size: 12px;
}

    .home-crew-link:hover {
        color: #ff6a00;
    }
/* =========================================================
   MES SPOTS
   ========================================================= */

.my-spots-page {
    width: 100%;
    max-width: 1250px;
    margin: 0 auto;
    padding: 45px 35px 80px;
}


/* =========================================================
   HERO
   ========================================================= */

.my-spots-hero {
    position: relative;
    background: #191919;
    border: 1px solid #3a3a3a;
    padding: 35px 40px 30px;
    margin-bottom: 30px;
    overflow: hidden;
}

    .my-spots-hero::after {
        content: "";
        position: absolute;
        right: -80px;
        top: 30px;
        width: 300px;
        height: 25px;
        background: #ff6a00;
        transform: rotate(-8deg);
        opacity: 0.15;
    }

.my-spots-label {
    display: inline-block;
    background: #ff6a00;
    color: #080808;
    padding: 9px 18px;
    font-weight: 900;
    font-size: 12px;
    letter-spacing: 3px;
    margin-bottom: 22px;
    transform: rotate(-1deg);
}

.my-spots-title-row {
    display: flex;
    align-items: center;
    gap: 20px;
}

.my-spots-pin {
    font-size: 52px;
    line-height: 1;
}

.my-spots-title-row h1 {
    margin: 0;
    color: #fff;
    font-size: clamp(42px, 5vw, 68px);
    font-weight: 950;
    letter-spacing: -2px;
    line-height: 0.95;
    text-transform: uppercase;
    text-shadow: 4px 4px 0 #c51f25, 8px 8px 0 #080808;
}

.my-spots-title-row p {
    margin: 12px 0 0;
    color: #a9a9a9;
    font-size: 16px;
}

.my-spots-title-row strong {
    color: #ff6a00;
}


/* =========================================================
   STATS
   ========================================================= */

.my-spots-stats {
    display: flex;
    align-items: center;
    margin-top: 32px;
    padding-top: 25px;
    border-top: 1px solid #353535;
    gap: 28px;
}

.my-spots-stat {
    display: flex;
    align-items: center;
    gap: 10px;
}

.my-spots-stat-number {
    color: #ff6a00;
    font-size: 25px;
    font-weight: 950;
}

.my-spots-stat-label {
    color: #888;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 2px;
}

.my-spots-stat-separator {
    width: 1px;
    height: 28px;
    background: #444;
}


/* =========================================================
   TOOLBAR
   ========================================================= */

.my-spots-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 22px;
    padding: 0 3px;
}

.my-spots-toolbar-title {
    display: block;
    color: #fff;
    font-size: 20px;
    font-weight: 950;
    letter-spacing: 1px;
}

.my-spots-toolbar-count {
    display: inline-block;
    margin-top: 5px;
    color: #777;
    font-size: 12px;
    font-weight: 700;
}

.my-spots-add-button {
    border: 0;
    background: #ff6a00;
    color: #080808;
    padding: 13px 20px;
    font-weight: 950;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 5px 5px 0 #080808;
    transition: 0.15s ease;
}

    .my-spots-add-button:hover {
        transform: translate(3px, 3px);
        box-shadow: 2px 2px 0 #080808;
    }


/* =========================================================
   GRILLE
   ========================================================= */

.my-spots-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
}


/* =========================================================
   CARTE SPOT
   ========================================================= */

.my-spot-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 390px;
    background: #1a1a1a;
    border: 1px solid #393939;
    overflow: hidden;
    transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

    .my-spot-card:hover {
        transform: translateY(-5px);
        border-color: #ff6a00;
        box-shadow: 7px 7px 0 #080808;
    }


/* =========================================================
   HEADER CARTE
   ========================================================= */

.my-spot-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    background: #111;
    border-bottom: 1px solid #343434;
}

.my-spot-type {
    display: inline-block;
    background: #c51f25;
    color: #fff;
    padding: 7px 12px;
    font-size: 11px;
    font-weight: 950;
    letter-spacing: 1.5px;
}

.my-spot-status {
    display: flex;
    align-items: center;
    gap: 7px;
    color: #aaa;
    font-size: 12px;
    font-weight: 800;
}

.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #49c96d;
    box-shadow: 0 0 8px rgba(73, 201, 109, 0.5);
}


/* =========================================================
   CORPS
   ========================================================= */

.my-spot-card-body {
    flex: 1;
    padding: 25px;
}

.my-spot-name {
    margin: 0 0 14px;
    color: #fff;
    font-size: 31px;
    line-height: 1;
    font-weight: 950;
    text-transform: uppercase;
    letter-spacing: -1px;
    text-shadow: 3px 3px 0 #c51f25;
}

.my-spot-location {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #ff6a00;
    font-size: 15px;
    font-weight: 800;
}

.location-icon {
    font-size: 17px;
}

.location-department {
    color: #999;
    font-weight: 600;
}

.my-spot-description {
    margin: 20px 0;
    padding: 15px;
    background: #111;
    border-left: 4px solid #ff6a00;
    color: #aaa;
    line-height: 1.6;
    font-size: 14px;
}


/* =========================================================
   DÉTAILS
   ========================================================= */

.my-spot-details {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    margin-top: 22px;
}

.my-spot-detail {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 13px;
    background: #111;
    border: 1px solid #292929;
}

.detail-icon {
    width: 25px;
    text-align: center;
    font-size: 17px;
}

.my-spot-detail > div {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.detail-label {
    color: #666;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 1.5px;
}

.detail-value {
    margin-top: 2px;
    color: #ddd;
    font-size: 12px;
    font-weight: 700;
    word-break: break-word;
}


/* =========================================================
   FOOTER CARTE
   ========================================================= */

.my-spot-card-footer {
    display: flex;
    gap: 10px;
    padding: 16px 20px;
    background: #111;
    border-top: 1px solid #333;
}

.my-spot-view-button {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 0;
    background: #ff6a00;
    color: #080808;
    padding: 13px;
    font-size: 12px;
    font-weight: 950;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 4px 4px 0 #080808;
    transition: 0.15s ease;
}

    .my-spot-view-button:hover {
        transform: translate(2px, 2px);
        box-shadow: 2px 2px 0 #080808;
    }

.my-spot-delete-button {
    width: 48px;
    border: 1px solid #4a2525;
    background: #241313;
    color: #d94b4b;
    cursor: pointer;
    font-size: 17px;
    transition: 0.15s ease;
}

    .my-spot-delete-button:hover {
        background: #c51f25;
        color: #fff;
    }


/* =========================================================
   ÉTATS VIDES / CHARGEMENT
   ========================================================= */

.my-spots-empty,
.my-spots-loading {
    background: #191919;
    border: 1px solid #393939;
    padding: 70px 30px;
    text-align: center;
}

.my-spots-empty-icon,
.my-spots-loading-icon {
    font-size: 52px;
    margin-bottom: 15px;
}

.my-spots-empty-title,
.my-spots-loading h2 {
    color: #fff;
    font-size: 28px;
    font-weight: 950;
    text-shadow: 3px 3px 0 #c51f25;
}

.my-spots-empty p,
.my-spots-loading p {
    max-width: 600px;
    margin: 12px auto 25px;
    color: #999;
    line-height: 1.6;
}

.my-spots-primary-button {
    border: 0;
    background: #ff6a00;
    color: #080808;
    padding: 15px 25px;
    font-weight: 950;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 5px 5px 0 #080808;
}

    .my-spots-primary-button:hover {
        transform: translate(3px, 3px);
        box-shadow: 2px 2px 0 #080808;
    }


/* =========================================================
   ERREUR
   ========================================================= */

.my-spots-error {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 22px;
    background: #251414;
    border: 1px solid #7d2828;
    border-left: 5px solid #c51f25;
}

.my-spots-error-icon {
    font-size: 30px;
}

.my-spots-error strong {
    color: #fff;
    font-weight: 950;
}

.my-spots-error p {
    margin: 5px 0 0;
    color: #bbb;
}


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 900px) {

    .my-spots-page {
        padding: 30px 20px 60px;
    }

    .my-spots-grid {
        grid-template-columns: 1fr;
    }

    .my-spots-title-row h1 {
        font-size: 48px;
    }
}


@media (max-width: 600px) {

    .my-spots-page {
        padding: 20px 12px 50px;
    }

    .my-spots-hero {
        padding: 25px 20px;
    }

    .my-spots-title-row {
        align-items: flex-start;
    }

    .my-spots-pin {
        font-size: 35px;
    }

    .my-spots-title-row h1 {
        font-size: 38px;
    }

    .my-spots-stats {
        gap: 14px;
    }

    .my-spots-stat-separator {
        display: none;
    }

    .my-spots-toolbar {
        align-items: flex-start;
        flex-direction: column;
        gap: 15px;
    }
}
/* =========================================================
   GRAFF SPOT FRANCE — PAGE SPOT
   ========================================================= */

.spot-page {
    width: 100%;
    max-width: 1250px;
    margin: 0 auto;
    padding: 35px 40px 70px;
    box-sizing: border-box;
}


/* =========================================================
   CHARGEMENT / ERREUR
   ========================================================= */

.spot-screen-message {
    min-height: 420px;
    background: #181818;
    border: 1px solid #383838;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 50px;
}

.spot-message-icon {
    font-size: 55px;
    margin-bottom: 20px;
}

.spot-message-tag {
    display: inline-block;
    background: #f2d500;
    color: #050505;
    padding: 8px 18px;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 3px;
    margin-bottom: 20px;
}

.spot-screen-message h1 {
    margin: 0;
    font-size: 38px;
    font-weight: 900;
    color: #fff;
    text-transform: uppercase;
}

.spot-screen-message p {
    color: #aaa;
    margin: 15px 0 25px;
}

.spot-screen-error {
    border-color: #a71919;
}


/* =========================================================
   HEADER DU SPOT
   ========================================================= */

.spot-hero {
    position: relative;
    background: #191919;
    border: 1px solid #3b3b3b;
    padding: 30px 35px 38px;
    margin-bottom: 25px;
    overflow: hidden;
}

    .spot-hero::after {
        content: "";
        position: absolute;
        right: -80px;
        bottom: -110px;
        width: 300px;
        height: 300px;
        border: 35px solid rgba(242, 213, 0, 0.08);
        transform: rotate(25deg);
    }

.spot-hero-top {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    margin-bottom: 35px;
}

.spot-back-button {
    border: 1px solid #555;
    background: #eee;
    color: #111;
    padding: 12px 20px;
    font-weight: 900;
    cursor: pointer;
    transition: 0.2s ease;
}

    .spot-back-button:hover {
        background: #f2d500;
        transform: translateY(-2px);
    }

.spot-type-badge {
    background: #8b2cff;
    color: #fff;
    padding: 11px 20px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 2px;
}

.spot-hero-content {
    position: relative;
    z-index: 2;
}

.spot-hero-label {
    display: inline-block;
    background: #f2d500;
    color: #050505;
    padding: 8px 15px;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 3px;
    margin-bottom: 18px;
}

.spot-hero h1 {
    margin: 0;
    color: #fff;
    font-size: clamp(42px, 5vw, 76px);
    line-height: 0.95;
    font-weight: 900;
    text-transform: uppercase;
    text-shadow: 5px 5px 0 #8b2cff, 9px 9px 0 #222;
}

.spot-hero-location {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 25px;
    color: #aaa;
    font-size: 18px;
}

    .spot-hero-location strong {
        color: #f2d500;
    }

.spot-pin {
    font-size: 24px;
}


/* =========================================================
   CONTENU
   ========================================================= */

.spot-content {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(280px, 0.8fr);
    gap: 25px;
    margin-bottom: 25px;
}

.spot-main-column {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.spot-side-column {
    display: flex;
    flex-direction: column;
    gap: 25px;
}


/* =========================================================
   PANELS
   ========================================================= */

.spot-panel {
    background: #191919;
    border: 1px solid #383838;
    padding: 28px;
}

.spot-panel-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 20px;
    margin-bottom: 25px;
}

.spot-panel-kicker {
    color: #f2d500;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 3px;
}

.spot-panel h2 {
    color: #fff;
    font-size: 28px;
    margin: 7px 0 0;
    font-weight: 900;
    text-transform: uppercase;
}

.spot-panel-icon {
    font-size: 30px;
}

.spot-status-badge {
    background: #111;
    border: 1px solid #333;
    color: #62c77c;
    padding: 10px 15px;
    font-size: 12px;
    font-weight: 900;
    white-space: nowrap;
}


/* =========================================================
   DESCRIPTION
   ========================================================= */

.spot-description {
    background: #111;
    border-left: 4px solid #f2d500;
    padding: 20px;
    margin-bottom: 20px;
}

.spot-mini-title {
    color: #f2d500;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 2px;
    margin-bottom: 10px;
}

.spot-description p {
    color: #bbb;
    line-height: 1.7;
    margin: 0;
}


/* =========================================================
   INFORMATIONS
   ========================================================= */

.spot-info-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

.spot-info-box {
    background: #101010;
    border: 1px solid #2c2c2c;
    padding: 18px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.spot-info-icon {
    font-size: 24px;
}

.spot-info-box small,
.spot-coordinate-box small {
    display: block;
    color: #777;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 2px;
    margin-bottom: 5px;
}

.spot-info-box strong {
    display: block;
    color: #fff;
    font-size: 14px;
}


/* =========================================================
   COORDONNÉES
   ========================================================= */

.spot-coordinates-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 18px;
}

.spot-coordinate-box {
    background: #101010;
    border: 1px solid #2c2c2c;
    padding: 20px;
}

    .spot-coordinate-box strong {
        color: #fff;
        font-family: monospace;
        font-size: 16px;
    }


/* =========================================================
   BOUTON CARTE
   ========================================================= */

.spot-map-button,
.spot-main-button {
    width: 100%;
    border: none;
    background: #f2d500;
    color: #050505;
    padding: 17px 20px;
    font-size: 13px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 6px 6px 0 #080808;
    transition: 0.2s ease;
}

    .spot-map-button:hover,
    .spot-main-button:hover {
        transform: translate(-2px, -2px);
        box-shadow: 9px 9px 0 #080808;
    }


/* =========================================================
   CARTE LATÉRALE
   ========================================================= */

.spot-highlight-card {
    background: #f2d500;
    color: #080808;
    padding: 30px;
    position: relative;
    overflow: hidden;
}

    .spot-highlight-card::after {
        content: "G";
        position: absolute;
        right: -20px;
        bottom: -60px;
        font-size: 190px;
        font-weight: 900;
        opacity: 0.08;
    }

.spot-highlight-icon {
    font-size: 35px;
    margin-bottom: 15px;
}

.spot-highlight-label {
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 3px;
}

.spot-highlight-card h2 {
    position: relative;
    z-index: 2;
    margin: 12px 0;
    font-size: 30px;
    line-height: 1;
    text-transform: uppercase;
}

.spot-highlight-location {
    position: relative;
    z-index: 2;
    font-weight: 700;
}

.spot-highlight-status {
    position: relative;
    z-index: 2;
    margin-top: 25px;
    padding-top: 15px;
    border-top: 1px solid rgba(0,0,0,0.2);
    font-size: 11px;
    font-weight: 900;
}

    .spot-highlight-status span {
        display: inline-block;
        width: 9px;
        height: 9px;
        background: #238342;
        border-radius: 50%;
        margin-right: 7px;
    }


/* =========================================================
   CARTE LATÉRALE INFO
   ========================================================= */

.spot-side-card {
    background: #191919;
    border: 1px solid #383838;
    padding: 25px;
}

.spot-side-card-title {
    color: #f2d500;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 2px;
    margin-bottom: 12px;
}

.spot-side-card strong {
    color: #fff;
    font-size: 24px;
}

.spot-side-card p {
    color: #888;
    line-height: 1.6;
    margin: 15px 0 0;
    font-size: 13px;
}


/* =========================================================
   PHOTOS
   ========================================================= */

.spot-photos-section {
    background: #191919;
    border: 1px solid #383838;
    padding: 30px;
}

.spot-section-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 20px;
    margin-bottom: 25px;
}

    .spot-section-heading h2 {
        color: #fff;
        margin: 7px 0;
        font-size: 30px;
        font-weight: 900;
    }

    .spot-section-heading p {
        color: #888;
        margin: 0;
    }

.spot-photo-count {
    background: #f2d500;
    color: #050505;
    padding: 10px 15px;
    font-size: 11px;
    font-weight: 900;
}


/* =========================================================
   GALERIE
   ========================================================= */

.spot-photos-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.spot-photo-card {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: #0c0c0c;
    border: 1px solid #333;
}

    .spot-photo-card img {
        width: 100%;
        height: 100%;
        display: block;
        object-fit: cover;
        transition: transform 0.35s ease;
    }

    .spot-photo-card:hover img {
        transform: scale(1.06);
    }

.spot-photo-overlay {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 12px;
    background: linear-gradient( transparent, rgba(0,0,0,0.85) );
    color: #fff;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 1px;
}


/* =========================================================
   ABSENCE DE PHOTO
   ========================================================= */

.spot-no-photos {
    border: 1px dashed #444;
    background: #101010;
    padding: 55px 20px;
    text-align: center;
}

.spot-no-photo-icon {
    font-size: 45px;
    margin-bottom: 15px;
}

.spot-no-photos h3 {
    color: #fff;
    font-size: 18px;
    margin: 0 0 8px;
}

.spot-no-photos p {
    color: #777;
    margin: 0;
}


/* =========================================================
   CHARGEMENT PHOTOS
   ========================================================= */

.spot-photos-loading {
    min-height: 220px;
    background: #101010;
    border: 1px solid #292929;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 10px;
}

.spot-loading-spinner {
    font-size: 42px;
}

.spot-photos-loading strong {
    color: #fff;
    font-size: 16px;
}

.spot-photos-loading span {
    color: #777;
    font-size: 13px;
}


/* =========================================================
   BOUTON FINAL
   ========================================================= */

.spot-bottom-actions {
    margin-top: 25px;
    max-width: 300px;
}


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 1000px) {

    .spot-content {
        grid-template-columns: 1fr;
    }

    .spot-side-column {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .spot-photos-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}


@media (max-width: 700px) {

    .spot-page {
        padding: 20px 15px 50px;
    }

    .spot-hero {
        padding: 22px;
    }

    .spot-hero-top {
        align-items: stretch;
        flex-direction: column;
    }

    .spot-hero h1 {
        font-size: 42px;
    }

    .spot-info-grid,
    .spot-coordinates-grid {
        grid-template-columns: 1fr;
    }

    .spot-side-column {
        display: flex;
    }

    .spot-photos-grid {
        grid-template-columns: 1fr;
    }

    .spot-section-heading {
        align-items: flex-start;
        flex-direction: column;
    }
}
/* =========================================================
   SPOT — RESPONSIVE FINAL
   ========================================================= */

@media (max-width: 900px) {

    .spot-page {
        width: 100%;
        padding: 25px 20px 50px;
    }

    .spot-hero {
        padding: 25px;
    }

        .spot-hero h1 {
            font-size: clamp(40px, 8vw, 65px);
        }

    .spot-info-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .spot-location-main {
        flex-direction: column;
    }

    .spot-coordinates {
        width: 100%;
        min-width: 0;
    }

    .spot-photos-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}


/* =========================================================
   PETITE TABLETTE / GRAND TÉLÉPHONE
   ========================================================= */

@media (max-width: 700px) {

    .spot-page {
        padding: 15px 12px 40px;
    }


    /* HERO */

    .spot-hero {
        padding: 22px 20px 28px;
        box-shadow: 5px 5px 0 #080808;
    }

    .spot-hero-top {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
        margin-bottom: 28px;
    }

    .spot-back-button {
        width: 100%;
        text-align: center;
    }

    .spot-type-badge {
        width: fit-content;
    }

    .spot-hero h1 {
        font-size: 45px;
        line-height: .9;
        letter-spacing: -1px;
    }

    .spot-hero-location {
        font-size: 15px;
        margin-top: 18px;
    }

    .spot-hero-status {
        margin-top: 22px;
    }


    /* DESCRIPTION */

    .spot-description-card {
        padding: 22px;
        margin-bottom: 20px;
    }

        .spot-description-card h2 {
            font-size: 26px;
        }


    /* INFORMATIONS */

    .spot-section-heading h2 {
        font-size: 27px;
    }

    .spot-info-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .spot-info-card {
        min-height: 90px;
    }


    /* LOCALISATION */

    .spot-location-section {
        padding: 22px;
        margin-bottom: 20px;
    }

    .spot-location-header {
        flex-direction: column;
        gap: 12px;
    }

        .spot-location-header h2 {
            font-size: 27px;
        }

    .spot-location-pin {
        display: none;
    }

    .spot-place strong {
        font-size: 28px;
    }

    .spot-coordinates {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .spot-map-button {
        font-size: 11px;
        padding: 16px 12px;
    }


    /* GALERIE */

    .spot-gallery-section {
        padding: 20px;
        margin-bottom: 20px;
    }

    .spot-gallery-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 15px;
    }

        .spot-gallery-header h2 {
            font-size: 28px;
        }

        .spot-gallery-header p {
            font-size: 12px;
            line-height: 1.5;
        }

    .spot-photos-grid {
        grid-template-columns: 1fr;
        gap: 12px;
    }

    .spot-photo-card {
        aspect-ratio: 16 / 10;
    }


    /* RETOUR */

    .spot-bottom-actions {
        width: 100%;
    }

    .spot-yellow-button {
        width: 100%;
    }
}


/* =========================================================
   TÉLÉPHONE
   ========================================================= */

@media (max-width: 480px) {

    .spot-page {
        padding: 10px 8px 35px;
    }

    .spot-hero {
        padding: 18px 16px 22px;
    }

    .spot-hero-kicker {
        font-size: 9px;
        letter-spacing: 2px;
    }

    .spot-hero h1 {
        font-size: 37px;
    }

    .spot-hero-location {
        font-size: 14px;
    }

    .spot-detail-tag {
        font-size: 10px;
        padding: 9px 13px;
    }

    .spot-section-tag {
        font-size: 9px;
        letter-spacing: 2px;
    }

    .spot-section-heading h2,
    .spot-location-header h2 {
        font-size: 24px;
    }

    .spot-info-card {
        padding: 16px;
    }

    .spot-info-icon {
        font-size: 23px;
    }

    .spot-location-section {
        padding: 18px;
    }

    .spot-place strong {
        font-size: 24px;
    }

    .spot-gallery-section {
        padding: 17px;
    }

    .spot-gallery-header h2 {
        font-size: 25px;
    }

    .spot-photo-card {
        aspect-ratio: 4 / 3;
    }

    .spot-state-card {
        min-height: 350px;
        padding: 30px 20px;
    }

        .spot-state-card h1 {
            font-size: 30px;
        }
}
/* =========================================================
   GRAFF SPOT FRANCE
   FAVORIS + NOTATION
   ========================================================= */

.spot-community-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    margin-bottom: 20px;
    padding: 25px 30px;
    background: #191919;
    border: 1px solid #383838;
}

.spot-community-kicker {
    color: #f2d500;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 3px;
}

.spot-community-left h2 {
    margin: 7px 0 5px;
    color: #fff;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 28px;
    text-transform: uppercase;
}

.spot-community-left p {
    margin: 0;
    color: #888;
    font-size: 13px;
}


/* =========================================================
   FAVORI
   ========================================================= */

.spot-community-actions {
    flex-shrink: 0;
}

.spot-favorite-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    min-width: 230px;
    padding: 15px 20px;
    border: 1px solid #555;
    background: #111;
    color: #fff;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    transition: transform .18s ease, background .18s ease, border-color .18s ease;
}

    .spot-favorite-button:hover {
        background: #f2d500;
        border-color: #f2d500;
        color: #080808;
        transform: translateY(-2px);
    }

    .spot-favorite-button.is-favorite {
        background: #8b2cff;
        border-color: #8b2cff;
        color: #fff;
    }

        .spot-favorite-button.is-favorite:hover {
            background: #a91419;
            border-color: #a91419;
        }

    .spot-favorite-button:disabled {
        opacity: .55;
        cursor: wait;
    }


/* =========================================================
   NOTATION
   ========================================================= */

.spot-rating-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    margin-bottom: 30px;
    padding: 28px 30px;
    background: #191919;
    border: 1px solid #383838;
}

.spot-rating-left h2 {
    margin: 7px 0 5px;
    color: #fff;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 28px;
    text-transform: uppercase;
}

.spot-rating-left p {
    margin: 0;
    color: #888;
    font-size: 13px;
}

.spot-rating-right {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    justify-content: flex-end;
}


/* MOYENNE */

.spot-average-rating {
    display: flex;
    align-items: baseline;
    gap: 3px;
    padding-right: 15px;
    border-right: 1px solid #333;
}

    .spot-average-rating strong {
        color: #f2d500;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 38px;
    }

    .spot-average-rating span {
        color: #777;
        font-size: 13px;
        font-weight: 900;
    }


/* ÉTOILES */

.spot-stars {
    display: flex;
    align-items: center;
    gap: 2px;
}

.spot-star-button {
    border: 0;
    background: transparent;
    padding: 2px;
    color: #444;
    font-size: 30px;
    line-height: 1;
    cursor: pointer;
    transition: color .15s ease, transform .15s ease;
}

    .spot-star-button:hover {
        color: #f2d500;
        transform: scale(1.15);
    }

    .spot-star-button.selected {
        color: #f2d500;
    }

    .spot-star-button:disabled {
        cursor: wait;
        opacity: .6;
    }


/* =========================================================
   TA NOTE
   ========================================================= */

.spot-your-rating {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 11px;
    background: #101010;
    border: 1px solid #2d2d2d;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 1px;
}

    .spot-your-rating span {
        color: #777;
    }

    .spot-your-rating strong {
        color: #f2d500;
    }


/* =========================================================
   CONNEXION POUR NOTER
   ========================================================= */

.spot-login-rating-button {
    border: 1px solid #444;
    background: #101010;
    color: #aaa;
    padding: 10px 14px;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    transition: .18s ease;
}

    .spot-login-rating-button:hover {
        background: #f2d500;
        color: #080808;
        border-color: #f2d500;
    }


/* =========================================================
   MESSAGE
   ========================================================= */

.spot-social-message {
    margin-bottom: 25px;
    padding: 13px 18px;
    background: #101010;
    border-left: 4px solid #f2d500;
    color: #ccc;
    font-size: 12px;
    font-weight: 700;
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 800px) {

    .spot-community-card,
    .spot-rating-card {
        flex-direction: column;
        align-items: stretch;
    }

    .spot-community-actions {
        width: 100%;
    }

    .spot-favorite-button {
        width: 100%;
    }

    .spot-rating-right {
        justify-content: flex-start;
    }

    .spot-average-rating {
        border-right: 0;
        padding-right: 0;
    }
}


@media (max-width: 480px) {

    .spot-community-card,
    .spot-rating-card {
        padding: 20px;
    }

    .spot-community-left h2,
    .spot-rating-left h2 {
        font-size: 24px;
    }

    .spot-rating-right {
        gap: 10px;
    }

    .spot-star-button {
        font-size: 27px;
    }

    .spot-your-rating {
        width: 100%;
        box-sizing: border-box;
    }
}
/* =========================================================
   GRAFF SPOT FRANCE - SPOT DETAIL
   NOUVEAU DESIGN
   ========================================================= */

.spot-page {
    max-width: 1200px;
    margin: 0 auto;
    padding: 40px 30px 80px;
    color: #f5f5f5;
}

/* =========================================================
   HERO
   ========================================================= */

.spot-hero {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, #191919 0%, #111 70%);
    border: 1px solid #353535;
    padding: 28px;
    margin-bottom: 22px;
    box-shadow: 8px 8px 0 rgba(255, 217, 0, 0.08);
}

    .spot-hero::before {
        content: "";
        position: absolute;
        width: 220px;
        height: 500px;
        right: 70px;
        top: -170px;
        background: rgba(255, 220, 0, 0.08);
        transform: rotate(25deg);
        pointer-events: none;
    }

.spot-hero-top {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
    margin-bottom: 30px;
}

.spot-back-link {
    border: 1px solid #555;
    background: #f1f1f1;
    color: #111;
    padding: 10px 16px;
    font-weight: 700;
    cursor: pointer;
    transition: .2s;
}

    .spot-back-link:hover {
        background: #ff6a00;
        transform: translateY(-2px);
    }

.spot-detail-tag {
    background: #ff6a00;
    color: #111;
    padding: 9px 18px;
    font-weight: 900;
    font-size: 12px;
    letter-spacing: 2px;
    text-transform: uppercase;
    box-shadow: 4px 4px 0 #222;
}

.spot-hero-content {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 30px;
}

.spot-kicker,
.spot-community-kicker,
.spot-card-kicker {
    color: #ff6a00;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 4px;
    text-transform: uppercase;
}

.spot-hero h1 {
    margin: 10px 0 8px;
    font-size: clamp(42px, 6vw, 82px);
    line-height: .9;
    font-weight: 1000;
    text-transform: uppercase;
    color: #fff;
    text-shadow: 5px 5px 0 #8b2cff, 9px 9px 0 rgba(0,0,0,.65);
}

.spot-detail-location {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #aaa;
    font-size: 16px;
}

    .spot-detail-location strong {
        color: #ff6a00;
    }

.location-pin {
    font-size: 20px;
}

.spot-status-badge {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #0d0d0d;
    border: 1px solid #333;
    padding: 13px 20px;
    color: #42d875;
    font-weight: 800;
    white-space: nowrap;
}

.status-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #27c95b;
    box-shadow: 0 0 12px rgba(39,201,91,.7);
}


/* =========================================================
   COMMUNAUTÉ
   ========================================================= */

.spot-community-card,
.spot-rating-card {
    background: #191919;
    border: 1px solid #343434;
    padding: 28px;
    margin-bottom: 22px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
}

.spot-community-card {
    border-left: 5px solid #ff6a00;
}

.spot-community-left h2,
.spot-rating-left h2,
.spot-detail-card h2,
.spot-photos-section h2 {
    margin: 8px 0;
    color: #fff;
    font-weight: 1000;
    text-transform: uppercase;
}

.spot-community-left h2,
.spot-rating-left h2 {
    font-size: 28px;
}

.spot-community-left p,
.spot-rating-left p {
    margin: 0;
    color: #999;
}

.spot-community-actions {
    flex-shrink: 0;
}

.spot-favorite-button {
    border: none;
    background: #8b2cff;
    color: white;
    padding: 17px 25px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    transition: .2s;
    box-shadow: 5px 5px 0 #111;
}

    .spot-favorite-button:hover {
        transform: translate(-2px,-2px);
        box-shadow: 7px 7px 0 #111;
    }

    .spot-favorite-button.is-favorite {
        background: #8b2cff;
    }


/* =========================================================
   NOTATION
   ========================================================= */

.spot-rating-card {
    border-left: 5px solid #ff6a00;
}

.spot-rating-right {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 25px;
    flex-wrap: wrap;
}

.spot-average-rating {
    display: flex;
    align-items: baseline;
    gap: 6px;
    padding-right: 25px;
    border-right: 1px solid #3a3a3a;
}

    .spot-average-rating strong {
        color: #ff6a00;
        font-size: 48px;
        line-height: 1;
    }

    .spot-average-rating span {
        color: #777;
        font-weight: 800;
    }

.spot-stars {
    display: flex;
    gap: 4px;
}

.spot-star-button {
    border: none;
    background: transparent;
    color: #444;
    font-size: 34px;
    padding: 0 2px;
    cursor: pointer;
    transition: .15s;
}

    .spot-star-button:hover,
    .spot-star-button.selected {
        color: #ff6a00;
        transform: scale(1.15);
    }

.spot-your-rating {
    background: #101010;
    border: 1px solid #333;
    padding: 11px 15px;
    font-size: 12px;
    font-weight: 800;
}

    .spot-your-rating span {
        color: #888;
        margin-right: 7px;
    }

    .spot-your-rating strong {
        color: #ff6a00;
    }

.spot-login-rating-button {
    border: 1px solid #555;
    background: #111;
    color: #fff;
    padding: 14px 20px;
    font-weight: 800;
    cursor: pointer;
}


/* =========================================================
   MESSAGE
   ========================================================= */

.spot-social-message {
    border-left: 5px solid #ff6a00;
    background: #181818;
    border-top: 1px solid #333;
    border-right: 1px solid #333;
    border-bottom: 1px solid #333;
    padding: 17px 20px;
    margin-bottom: 22px;
    font-weight: 800;
}


/* =========================================================
   INFORMATIONS + POSITION
   ========================================================= */

.spot-detail-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 22px;
    margin-bottom: 22px;
}

.spot-detail-card {
    background: #191919;
    border: 1px solid #343434;
    padding: 28px;
}

.spot-detail-card-header {
    display: flex;
    gap: 15px;
    align-items: flex-start;
    margin-bottom: 25px;
}

.spot-card-number {
    color: #ff6a00;
    font-size: 14px;
    font-weight: 900;
    border-left: 3px solid #ff6a00;
    padding-left: 10px;
}

.spot-detail-card h2 {
    font-size: 30px;
    margin-top: 4px;
}

.spot-detail-description {
    background: #111;
    border: 1px solid #2c2c2c;
    padding: 17px;
    margin-bottom: 16px;
}

    .spot-detail-description span,
    .spot-data-box span,
    .spot-coordinates span {
        display: block;
        color: #777;
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 2px;
        margin-bottom: 6px;
    }

    .spot-detail-description p {
        margin: 0;
        color: #bbb;
        line-height: 1.6;
    }

.spot-detail-data {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.spot-data-box {
    background: #111;
    border: 1px solid #2c2c2c;
    padding: 15px;
}

    .spot-data-box strong {
        color: #fff;
    }

    .spot-data-box .spot-active {
        color: #36d86a;
    }

.spot-location-big {
    display: flex;
    align-items: center;
    gap: 15px;
    background: #111;
    border: 1px solid #2c2c2c;
    padding: 20px;
    margin-bottom: 15px;
}

.spot-location-icon {
    font-size: 30px;
}

.spot-location-big strong {
    display: block;
    color: #ff6a00;
    font-size: 20px;
    text-transform: uppercase;
}

.spot-location-big span {
    color: #888;
}

.spot-coordinates {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 15px;
}

    .spot-coordinates > div {
        background: #111;
        border: 1px solid #2c2c2c;
        padding: 15px;
    }

    .spot-coordinates strong {
        font-family: monospace;
        color: #fff;
    }

.spot-map-button {
    width: 100%;
    border: none;
    background: #ff6a00;
    color: #111;
    padding: 17px;
    font-weight: 1000;
    letter-spacing: 1px;
    cursor: pointer;
    transition: .2s;
    box-shadow: 5px 5px 0 #0b0b0b;
}

    .spot-map-button:hover {
        transform: translate(-2px,-2px);
        box-shadow: 7px 7px 0 #0b0b0b;
    }


/* =========================================================
   GALERIE
   ========================================================= */

.spot-photos-section {
    background: #191919;
    border: 1px solid #343434;
    padding: 28px;
    margin-bottom: 25px;
}

.spot-section-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 20px;
    margin-bottom: 25px;
}

.spot-photos-section h2 {
    font-size: 34px;
}

.spot-photos-section p {
    margin: 0;
    color: #888;
}

.spot-photo-count {
    background: #ff6a00;
    color: #111;
    padding: 9px 14px;
    font-size: 11px;
    font-weight: 1000;
    letter-spacing: 1px;
}

.spot-photos-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}

.spot-photo-card {
    position: relative;
    overflow: hidden;
    background: #0d0d0d;
    border: 1px solid #333;
    aspect-ratio: 4 / 3;
}

    .spot-photo-card img {
        width: 100%;
        height: 100%;
        display: block;
        object-fit: cover;
        transition: transform .35s ease;
    }

    .spot-photo-card:hover img {
        transform: scale(1.06);
    }

.spot-photo-overlay {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px;
    background: linear-gradient( transparent, rgba(0,0,0,.9) );
    color: #fff;
    font-size: 11px;
}

.spot-photos-loading,
.spot-no-photos {
    min-height: 220px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    background: #111;
    border: 1px dashed #3a3a3a;
    padding: 30px;
}

.spot-loading-icon,
.spot-no-photo-icon {
    font-size: 45px;
    margin-bottom: 12px;
}

.spot-photos-loading strong,
.spot-no-photos strong {
    color: #fff;
    font-size: 18px;
}

.spot-photos-loading span,
.spot-no-photos p {
    color: #777;
}


/* =========================================================
   LOADING
   ========================================================= */

.spot-loading {
    min-height: 500px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    background: #191919;
    border: 1px solid #333;
}

    .spot-loading h2 {
        color: #fff;
        font-size: 28px;
        text-shadow: 3px 3px 0 #8b2cff;
    }

    .spot-loading p {
        color: #888;
    }

.spot-loading-icon {
    animation: spotPulse 1.2s infinite;
}

@keyframes spotPulse {
    0%,100% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.12);
    }
}


/* =========================================================
   ERREUR
   ========================================================= */

.spot-error {
    margin-top: 40px;
    padding: 45px;
    background: #241314;
    border: 1px solid #762328;
    border-left: 5px solid #8b2cff;
    text-align: center;
}

.spot-error-icon {
    font-size: 45px;
}

.spot-error h2 {
    color: #fff;
}

.spot-error p {
    color: #aaa;
    margin-bottom: 25px;
}


/* =========================================================
   BOUTON RETOUR
   ========================================================= */

.spot-detail-actions {
    display: flex;
    justify-content: center;
    margin-top: 25px;
}

.spot-back-button {
    border: none;
    background: #ff6a00;
    color: #111;
    padding: 15px 30px;
    font-weight: 1000;
    cursor: pointer;
    box-shadow: 5px 5px 0 #111;
    transition: .2s;
}

    .spot-back-button:hover {
        transform: translate(-2px,-2px);
        box-shadow: 7px 7px 0 #111;
    }


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 900px) {

    .spot-page {
        padding: 25px 18px 60px;
    }

    .spot-hero-content,
    .spot-community-card,
    .spot-rating-card {
        flex-direction: column;
        align-items: flex-start;
    }

    .spot-community-actions,
    .spot-rating-right {
        width: 100%;
        justify-content: flex-start;
    }

    .spot-favorite-button {
        width: 100%;
    }

    .spot-detail-grid {
        grid-template-columns: 1fr;
    }

    .spot-photos-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}


@media (max-width: 600px) {

    .spot-page {
        padding: 18px 12px 45px;
    }

    .spot-hero,
    .spot-community-card,
    .spot-rating-card,
    .spot-detail-card,
    .spot-photos-section {
        padding: 20px;
    }

        .spot-hero h1 {
            font-size: 42px;
        }

    .spot-hero-top {
        align-items: flex-start;
        flex-direction: column;
    }

    .spot-detail-data,
    .spot-coordinates {
        grid-template-columns: 1fr;
    }

    .spot-photos-grid {
        grid-template-columns: 1fr;
    }

    .spot-rating-right {
        flex-direction: column;
        align-items: flex-start;
    }
    /* =========================================================
   GRAFF SPOT FRANCE
   PAGE FAVORIS
   ========================================================= */

    .favorites-page {
        min-height: calc(100vh - 30px);
        padding: 45px;
        color: #eee;
    }


    /* =========================================================
   HEADER
   ========================================================= */

    .favorites-header {
        max-width: 1200px;
        margin: 0 auto 35px;
        display: flex;
        justify-content: space-between;
        align-items: flex-end;
        gap: 30px;
        padding: 35px;
        background: linear-gradient( 135deg, #191919, #111 );
        border: 1px solid #383838;
        border-left: 5px solid #ff6a00;
        box-shadow: 9px 9px 0 rgba(0,0,0,.5);
    }


    .favorites-kicker {
        color: #ff6a00;
        font-size: 11px;
        font-weight: 900;
        letter-spacing: 4px;
        text-transform: uppercase;
    }


    .favorites-header h1 {
        margin: 10px 0;
        font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
        font-size: clamp(45px, 7vw, 80px);
        line-height: .9;
        letter-spacing: -2px;
        color: #fff;
        text-shadow: 5px 5px 0 #111, 9px 9px 0 #8b2cff;
    }


    .favorites-header p {
        margin: 0;
        color: #999;
        font-size: 15px;
    }


    .favorites-counter {
        min-width: 130px;
        padding: 18px;
        text-align: center;
        background: #ff6a00;
        color: #111;
        box-shadow: 6px 6px 0 #111;
    }


        .favorites-counter strong {
            display: block;
            font-size: 45px;
            line-height: 1;
            font-weight: 1000;
        }


        .favorites-counter span {
            font-size: 11px;
            font-weight: 1000;
            letter-spacing: 2px;
        }


    /* =========================================================
   LISTE
   ========================================================= */

    .favorites-list-section {
        max-width: 1200px;
        margin: 0 auto;
    }


    .favorites-list-heading {
        display: flex;
        justify-content: space-between;
        align-items: flex-end;
        gap: 20px;
        margin-bottom: 22px;
    }


        .favorites-list-heading > div > span {
            color: #ff6a00;
            font-size: 11px;
            font-weight: 900;
            letter-spacing: 3px;
        }


        .favorites-list-heading h2 {
            margin: 5px 0 0;
            font-size: 28px;
            font-weight: 1000;
            color: #fff;
        }


    .favorites-map-link {
        border: 1px solid #555;
        background: #191919;
        color: #fff;
        padding: 12px 18px;
        font-weight: 900;
        cursor: pointer;
        transition: .2s;
    }


        .favorites-map-link:hover {
            background: #ff6a00;
            color: #111;
            transform: translateY(-2px);
        }


    /* =========================================================
   GRILLE
   ========================================================= */

    .favorites-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 22px;
    }


    /* =========================================================
   CARTE FAVORI
   ========================================================= */

    .favorite-card {
        overflow: hidden;
        background: #191919;
        border: 1px solid #363636;
        box-shadow: 7px 7px 0 rgba(0,0,0,.45);
        transition: transform .2s ease, border-color .2s ease;
    }


        .favorite-card:hover {
            transform: translateY(-5px);
            border-color: #ff6a00;
        }


    /* =========================================================
   IMAGE
   ========================================================= */

    .favorite-card-image {
        position: relative;
        height: 250px;
        overflow: hidden;
        background: #101010;
    }


        .favorite-card-image img {
            width: 100%;
            height: 100%;
            display: block;
            object-fit: cover;
            transition: transform .35s ease;
        }


    .favorite-card:hover
    .favorite-card-image img {
        transform: scale(1.06);
    }


    .favorite-no-image {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: 70px;
        background: repeating-linear-gradient( -45deg, #151515 0, #151515 10px, #1b1b1b 10px, #1b1b1b 20px );
    }


    .favorite-card-number {
        position: absolute;
        left: 15px;
        top: 15px;
        background: #ff6a00;
        color: #111;
        padding: 8px 12px;
        font-size: 10px;
        font-weight: 1000;
        letter-spacing: 1px;
        box-shadow: 4px 4px 0 #111;
    }


    .favorite-heart {
        position: absolute;
        right: 15px;
        top: 15px;
        width: 42px;
        height: 42px;
        display: flex;
        align-items: center;
        justify-content: center;
        background: rgba(0,0,0,.82);
        border: 1px solid #444;
        font-size: 20px;
    }


    /* =========================================================
   CONTENU
   ========================================================= */

    .favorite-card-content {
        padding: 23px;
    }


    .favorite-location {
        color: #ff6a00;
        font-size: 12px;
        font-weight: 900;
        letter-spacing: 1px;
        text-transform: uppercase;
    }


        .favorite-location span {
            color: #777;
        }


    .favorite-card-content h3 {
        margin: 8px 0 10px;
        color: #fff;
        font-size: 29px;
        font-weight: 1000;
        line-height: 1.05;
        text-transform: uppercase;
    }


    .favorite-description {
        min-height: 40px;
        margin: 0 0 18px;
        color: #888;
        font-size: 13px;
        line-height: 1.5;
    }


    /* =========================================================
   META
   ========================================================= */

    .favorite-meta {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
        margin-bottom: 18px;
    }


        .favorite-meta > div {
            background: #101010;
            border: 1px solid #2e2e2e;
            padding: 13px;
        }


        .favorite-meta span {
            display: block;
            margin-bottom: 5px;
            color: #666;
            font-size: 9px;
            font-weight: 900;
            letter-spacing: 2px;
        }


        .favorite-meta strong {
            color: #fff;
            font-size: 13px;
        }


    .favorite-status {
        color: #39d66a !important;
    }


    /* =========================================================
   BOUTONS
   ========================================================= */

    .favorite-card-actions {
        display: grid;
        grid-template-columns: 1fr 52px;
        gap: 8px;
    }


    .favorite-view-button {
        border: none;
        background: #ff6a00;
        color: #111;
        padding: 15px;
        font-size: 12px;
        font-weight: 1000;
        letter-spacing: 1px;
        cursor: pointer;
        box-shadow: 4px 4px 0 #090909;
        transition: .15s;
    }


        .favorite-view-button span {
            margin-left: 8px;
            font-size: 17px;
        }


        .favorite-view-button:hover {
            transform: translate(-2px,-2px);
            box-shadow: 6px 6px 0 #090909;
        }


    .favorite-remove-button {
        border: 1px solid #4a4a4a;
        background: #111;
        color: #e12632;
        font-size: 20px;
        cursor: pointer;
        transition: .15s;
    }


        .favorite-remove-button:hover {
            background: #8b2cff;
            color: #fff;
            border-color: #8b2cff;
        }


    /* =========================================================
   ÉTAT VIDE / LOGIN / CHARGEMENT
   ========================================================= */

    .favorites-login,
    .favorites-empty,
    .favorites-state {
        max-width: 800px;
        min-height: 430px;
        margin: 70px auto;
        padding: 50px 35px;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        text-align: center;
        background: #191919;
        border: 1px solid #383838;
        border-top: 5px solid #ff6a00;
        box-shadow: 9px 9px 0 rgba(0,0,0,.5);
    }


    .favorites-login-icon,
    .favorites-empty-icon,
    .favorites-state-icon {
        font-size: 55px;
        margin-bottom: 15px;
    }


    .favorites-login h1,
    .favorites-empty h2,
    .favorites-state h2 {
        margin: 8px 0 12px;
        color: #fff;
        font-weight: 1000;
        text-transform: uppercase;
    }


    .favorites-login h1 {
        font-size: 50px;
    }


    .favorites-empty h2,
    .favorites-state h2 {
        font-size: 28px;
    }


    .favorites-login p,
    .favorites-empty p,
    .favorites-state p {
        max-width: 550px;
        color: #888;
        line-height: 1.6;
        margin-bottom: 25px;
    }


    .favorites-main-button {
        border: none;
        background: #ff6a00;
        color: #111;
        padding: 16px 25px;
        font-weight: 1000;
        letter-spacing: 1px;
        cursor: pointer;
        box-shadow: 5px 5px 0 #080808;
        transition: .15s;
    }


        .favorites-main-button:hover {
            transform: translate(-2px,-2px);
            box-shadow: 7px 7px 0 #080808;
        }


    .favorites-state-error {
        border-top-color: #8b2cff;
    }


        .favorites-state-error .favorites-state-icon {
            color: #8b2cff;
        }


    /* =========================================================
   RESPONSIVE
   ========================================================= */

    @media (max-width: 900px) {

        .favorites-page {
            padding: 30px 20px 60px;
        }

        .favorites-header {
            align-items: flex-start;
            flex-direction: column;
        }

        .favorites-counter {
            width: 100%;
        }

        .favorites-grid {
            grid-template-columns: 1fr;
        }
    }


    @media (max-width: 600px) {

        .favorites-page {
            padding: 20px 12px 45px;
        }

        .favorites-header {
            padding: 25px 20px;
        }

            .favorites-header h1 {
                font-size: 45px;
            }

        .favorites-list-heading {
            align-items: flex-start;
            flex-direction: column;
        }

        .favorites-map-link {
            width: 100%;
        }

        .favorite-card-image {
            height: 220px;
        }

        .favorite-meta {
            grid-template-columns: 1fr;
        }

        .favorites-login,
        .favorites-empty,
        .favorites-state {
            margin: 40px auto;
            padding: 35px 20px;
        }
    }
    .spot-average-rating {
        border-right: none;
        border-bottom: 1px solid #333;
        padding-right: 0;
        padding-bottom: 12px;
    }
}
/* =========================================================
   FAVORIS — DESIGN GRAFF SPOT FRANCE
   ========================================================= */

.favorites-page {
    padding: 30px 38px 80px;
    max-width: 1250px;
    margin: 0 auto;
}


/* =========================================================
   HEADER
   ========================================================= */

.favorites-header {
    margin-bottom: 35px;
    position: relative;
}

.favorites-kicker {
    color: #f5d900;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 4px;
    margin-bottom: 8px;
}

.favorites-header h1 {
    margin: 0;
    color: #f5f5f5;
    font-size: 48px;
    font-weight: 900;
    line-height: 1;
    text-transform: uppercase;
    letter-spacing: -1px;
    text-shadow: 5px 5px 0 #8b2cff;
}

.favorites-header p {
    margin-top: 16px;
    color: #a9a9a9;
    font-size: 15px;
}


/* =========================================================
   COMPTEUR
   ========================================================= */

.favorites-count {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 22px;
    padding-bottom: 12px;
    border-bottom: 1px solid #303030;
    color: #a7a7a7;
    font-size: 13px;
    letter-spacing: 2px;
}

    .favorites-count strong {
        color: #f5d900;
        font-size: 22px;
    }


/* =========================================================
   GRILLE
   ========================================================= */

.favorites-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
}


/* =========================================================
   CARTE FAVORI
   ========================================================= */

.favorite-card {
    position: relative;
    background: linear-gradient( 135deg, rgba(255,255,255,0.035), rgba(255,255,255,0.01) );
    border: 1px solid #343434;
    min-height: 300px;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

    .favorite-card:hover {
        transform: translateY(-4px);
        border-color: #f5d900;
        box-shadow: 6px 6px 0 rgba(215,25,32,0.8);
    }


/* =========================================================
   BANDEAU SUPÉRIEUR
   ========================================================= */

.favorite-card-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 16px;
    border-bottom: 1px solid #303030;
}

.favorite-card-type {
    display: inline-block;
    padding: 7px 12px;
    background: #8b2cff;
    color: white;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 2px;
    text-transform: uppercase;
}


/* =========================================================
   BOUTON RETIRER
   ========================================================= */

.favorite-remove-button {
    width: 38px;
    height: 38px;
    border: 1px solid #4a4a4a;
    background: #151515;
    color: #8b2cff;
    font-size: 18px;
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

    .favorite-remove-button:hover {
        background: #8b2cff;
        border-color: #8b2cff;
        transform: scale(1.08);
    }


/* =========================================================
   CONTENU
   ========================================================= */

.favorite-card-content {
    padding: 20px;
}


/* =========================================================
   TITRE
   ========================================================= */

.favorite-card-title {
    margin: 0 0 12px;
    color: #f5f5f5;
    font-size: 29px;
    font-weight: 900;
    line-height: 1;
    text-transform: uppercase;
    text-shadow: 3px 3px 0 #8b2cff;
}


/* =========================================================
   LOCALISATION
   ========================================================= */

.favorite-card-location {
    display: flex;
    align-items: center;
    gap: 7px;
    margin-bottom: 17px;
    color: #f5d900;
    font-size: 14px;
    font-weight: 700;
}

    .favorite-card-location span:first-child {
        color: #ff4d8d;
    }


/* =========================================================
   DESCRIPTION
   ========================================================= */

.favorite-card-description {
    margin: 0 0 18px;
    color: #999;
    font-size: 13px;
    line-height: 1.6;
}


/* =========================================================
   INFOS
   ========================================================= */

.favorite-card-infos {
    display: grid;
    grid-template-columns: 1fr 1fr;
    margin-top: 15px;
    border-top: 1px solid #303030;
    border-bottom: 1px solid #303030;
}

.favorite-info {
    padding: 13px 10px;
}

    .favorite-info + .favorite-info {
        border-left: 1px solid #303030;
    }

.favorite-info-label {
    display: block;
    margin-bottom: 5px;
    color: #777;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 2px;
}

.favorite-info strong {
    color: #f5f5f5;
    font-size: 14px;
}


/* =========================================================
   ACTIONS
   ========================================================= */

.favorite-card-actions {
    display: grid;
    grid-template-columns: 1fr 110px;
    gap: 8px;
    margin-top: 18px;
}

.favorite-open-button,
.favorite-map-button-small {
    min-height: 44px;
    border: 1px solid #f5d900;
    background: #f5d900;
    color: #111;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

    .favorite-open-button:hover,
    .favorite-map-button-small:hover {
        background: #fff;
        border-color: #fff;
        transform: translateY(-2px);
    }

.favorite-map-button-small {
    background: #171717;
    color: #f5d900;
}


/* =========================================================
   CHARGEMENT
   ========================================================= */

.favorites-loading {
    padding: 50px 30px;
    border: 1px solid #303030;
    background: #171717;
    text-align: center;
}

.favorites-loading-icon {
    font-size: 35px;
    margin-bottom: 15px;
}

.favorites-loading h2 {
    margin: 0;
    color: #f5f5f5;
    font-size: 26px;
    font-weight: 900;
}

.favorites-loading p {
    color: #888;
}


/* =========================================================
   ERREUR
   ========================================================= */

.favorites-error {
    padding: 35px;
    border-left: 5px solid #8b2cff;
    background: #171717;
}

.favorites-error-icon {
    font-size: 25px;
    margin-bottom: 10px;
}

.favorites-error h2 {
    margin: 0 0 10px;
    color: #f5f5f5;
    font-size: 25px;
    font-weight: 900;
}

.favorites-error p {
    color: #999;
}


/* =========================================================
   AUCUN FAVORI
   ========================================================= */

.favorites-empty {
    padding: 60px 30px;
    border: 1px solid #303030;
    background: #171717;
    text-align: center;
}

.favorites-empty-icon {
    font-size: 45px;
    margin-bottom: 15px;
}

.favorites-empty h2 {
    margin: 0 0 12px;
    color: #f5f5f5;
    font-size: 30px;
    font-weight: 900;
}

.favorites-empty p {
    margin-bottom: 25px;
    color: #888;
}


/* =========================================================
   BOUTONS ÉTATS VIDES / ERREURS
   ========================================================= */

.favorites-login-button,
.favorites-map-button,
.favorites-retry-button {
    min-height: 45px;
    padding: 0 22px;
    border: 0;
    background: #f5d900;
    color: #111;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
}

    .favorites-login-button:hover,
    .favorites-map-button:hover,
    .favorites-retry-button:hover {
        background: #fff;
    }


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 900px) {

    .favorites-page {
        padding: 25px 20px 60px;
    }

    .favorites-grid {
        grid-template-columns: 1fr;
    }

    .favorites-header h1 {
        font-size: 38px;
    }
}


@media (max-width: 550px) {

    .favorites-header h1 {
        font-size: 31px;
    }

    .favorite-card-actions {
        grid-template-columns: 1fr;
    }

    .favorite-card-infos {
        grid-template-columns: 1fr;
    }

    .favorite-info + .favorite-info {
        border-left: 0;
        border-top: 1px solid #303030;
    }
}
/* =========================================================
   PROFIL — GRAFF SPOT FRANCE
   ========================================================= */

.profile-page {
    max-width: 1200px;
    margin: 0 auto;
    padding: 35px 38px 80px;
    color: #eee;
}


/* =========================================================
   HERO PROFIL
   ========================================================= */

.profile-hero {
    position: relative;
    display: grid;
    grid-template-columns: 145px 1fr auto;
    align-items: center;
    gap: 28px;
    padding: 35px;
    margin-bottom: 25px;
    background: linear-gradient( 135deg, #1b1b1b, #111 );
    border: 1px solid #353535;
    border-left: 6px solid #ff6a00;
    box-shadow: 8px 8px 0 #050505;
    overflow: hidden;
}

    .profile-hero::after {
        content: "";
        position: absolute;
        width: 420px;
        height: 35px;
        right: -90px;
        bottom: 35px;
        background: #8b2cff;
        opacity: .12;
        transform: rotate(-8deg);
    }


/* =========================================================
   AVATAR
   ========================================================= */

.profile-avatar {
    position: relative;
    width: 135px;
    height: 135px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    background: #242424;
    border: 5px solid #ff6a00;
    box-shadow: 6px 6px 0 #8b2cff;
    z-index: 1;
}

    .profile-avatar img {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    .profile-avatar span {
        color: #ff6a00;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 65px;
        line-height: 1;
    }


/* =========================================================
   IDENTITÉ
   ========================================================= */

.profile-identity {
    position: relative;
    z-index: 1;
}

.profile-kicker {
    color: #ff6a00;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 4px;
    text-transform: uppercase;
}

.profile-identity h1 {
    margin: 7px 0 8px;
    color: #fff;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: clamp(45px, 6vw, 75px);
    line-height: .9;
    text-transform: uppercase;
    text-shadow: 5px 5px 0 #8b2cff;
}

.profile-identity p {
    margin: 0;
    color: #aaa;
    font-size: 15px;
}

.profile-member {
    margin-top: 15px;
    color: #777;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: 2px;
    text-transform: uppercase;
}


/* =========================================================
   NIVEAU
   ========================================================= */

.profile-level {
    position: relative;
    z-index: 2;
    min-width: 125px;
    padding: 18px;
    text-align: center;
    background: #ff6a00;
    color: #111;
    box-shadow: 6px 6px 0 #050505;
}

    .profile-level span {
        display: block;
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 2px;
    }

    .profile-level strong {
        display: block;
        margin-top: 5px;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 50px;
        line-height: 1;
    }


/* =========================================================
   STATISTIQUES
   ========================================================= */

.profile-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 15px;
    margin-bottom: 35px;
}

.profile-stat {
    display: flex;
    align-items: center;
    gap: 15px;
    min-height: 90px;
    padding: 18px;
    background: #181818;
    border: 1px solid #343434;
    transition: transform .2s ease, border-color .2s ease;
}

    .profile-stat:hover {
        transform: translateY(-3px);
        border-color: #ff6a00;
    }

.profile-stat-icon {
    font-size: 30px;
}

.profile-stat div {
    display: flex;
    flex-direction: column;
}

.profile-stat strong {
    color: #f5f5f5;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 28px;
    line-height: 1;
}

.profile-stat div span {
    margin-top: 5px;
    color: #777;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: 2px;
}


/* =========================================================
   SECTIONS
   ========================================================= */

.profile-section {
    margin-top: 35px;
}

.profile-section-title {
    margin-bottom: 18px;
    padding-bottom: 12px;
    border-bottom: 1px solid #303030;
}

    .profile-section-title h2 {
        margin: 5px 0 0;
        color: #fff;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 30px;
        text-transform: uppercase;
    }


/* =========================================================
   ACTIONS COMPTE
   ========================================================= */

.profile-actions {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.profile-action-card {
    position: relative;
    display: flex;
    align-items: center;
    gap: 15px;
    min-height: 105px;
    padding: 18px;
    border: 1px solid #363636;
    background: #181818;
    color: #fff;
    text-align: left;
    cursor: pointer;
    transition: transform .2s ease, border-color .2s ease, background .2s ease;
}

    .profile-action-card:hover {
        transform: translateY(-3px);
        background: #202020;
        border-color: #ff6a00;
    }

.profile-action-icon {
    font-size: 28px;
    flex-shrink: 0;
}

.profile-action-text {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

    .profile-action-text strong {
        color: #fff;
        font-size: 12px;
        font-weight: 900;
        letter-spacing: 1px;
    }

    .profile-action-text small {
        color: #777;
        font-size: 11px;
        line-height: 1.4;
    }

.profile-action-arrow {
    margin-left: auto;
    color: #ff6a00;
    font-size: 22px;
}


/* =========================================================
   NAVIGATION COLLECTION
   ========================================================= */

.profile-navigation {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

    .profile-navigation button {
        display: flex;
        align-items: center;
        gap: 14px;
        min-height: 65px;
        padding: 0 22px;
        border: 1px solid #383838;
        background: #181818;
        color: #fff;
        font-size: 14px;
        font-weight: 900;
        text-align: left;
        cursor: pointer;
        transition: .2s ease;
    }

        .profile-navigation button:first-child {
            border-left: 4px solid #ff6a00;
        }

        .profile-navigation button:last-child {
            border-left: 4px solid #8b2cff;
        }

        .profile-navigation button:hover {
            background: #242424;
            transform: translateX(4px);
        }

        .profile-navigation button span {
            letter-spacing: 1px;
        }


/* =========================================================
   DÉCONNEXION
   ========================================================= */

.profile-logout-section {
    margin-top: 45px;
    padding-top: 25px;
    border-top: 1px solid #303030;
    text-align: right;
}

.profile-logout {
    padding: 13px 22px;
    border: 1px solid #7c2025;
    background: #351719;
    color: #ff5960;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    transition: .2s ease;
}

    .profile-logout:hover {
        background: #8b2cff;
        border-color: #8b2cff;
        color: #fff;
    }


/* =========================================================
   CONNEXION
   ========================================================= */

.profile-login {
    max-width: 700px;
    margin: 70px auto;
    padding: 60px 35px;
    text-align: center;
    background: #181818;
    border: 1px solid #363636;
    border-top: 5px solid #ff6a00;
    box-shadow: 8px 8px 0 #050505;
}

.profile-big-icon {
    font-size: 55px;
    margin-bottom: 15px;
}

.profile-login h1 {
    margin: 10px 0;
    color: #fff;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 45px;
    text-shadow: 4px 4px 0 #8b2cff;
}

.profile-login p {
    margin-bottom: 25px;
    color: #888;
}

.profile-main-button {
    padding: 14px 24px;
    border: 0;
    background: #ff6a00;
    color: #111;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow: 5px 5px 0 #050505;
    transition: .15s ease;
}

    .profile-main-button:hover {
        transform: translate(-2px, -2px);
        box-shadow: 7px 7px 0 #050505;
    }


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 950px) {

    .profile-hero {
        grid-template-columns: 110px 1fr;
    }

    .profile-level {
        grid-column: 1 / -1;
        width: 100%;
    }

    .profile-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .profile-actions {
        grid-template-columns: 1fr;
    }
}


@media (max-width: 650px) {

    .profile-page {
        padding: 25px 15px 60px;
    }

    .profile-hero {
        grid-template-columns: 1fr;
        text-align: center;
        padding: 30px 20px;
    }

    .profile-avatar {
        margin: 0 auto;
    }

    .profile-identity h1 {
        font-size: 48px;
    }

    .profile-stats {
        grid-template-columns: 1fr 1fr;
    }

    .profile-stat {
        flex-direction: column;
        justify-content: center;
        text-align: center;
    }

    .profile-navigation {
        grid-template-columns: 1fr;
    }

    .profile-logout-section {
        text-align: center;
    }

    .profile-logout {
        width: 100%;
    }
}


@media (max-width: 430px) {

    .profile-stats {
        grid-template-columns: 1fr;
    }

    .profile-identity h1 {
        font-size: 40px;
    }
}
/* =========================================================
   MODIFIER MON PROFIL
   ========================================================= */

.profile-edit-page {
    max-width: 1050px;
    margin: 0 auto;
    padding: 35px 38px 80px;
}


/* =========================================================
   HEADER
   ========================================================= */

.profile-edit-header {
    margin-bottom: 28px;
    padding-bottom: 20px;
    border-bottom: 1px solid #303030;
}

    .profile-edit-header h1 {
        margin: 7px 0 10px;
        color: #f5f5f5;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 48px;
        line-height: 1;
        text-transform: uppercase;
        text-shadow: 4px 4px 0 #8b2cff;
    }

    .profile-edit-header p {
        margin: 0;
        color: #888;
        font-size: 14px;
    }


/* =========================================================
   CARTE PRINCIPALE
   ========================================================= */

.profile-edit-card {
    display: grid;
    grid-template-columns: 210px 1fr;
    gap: 40px;
    padding: 35px;
    background: linear-gradient( 135deg, #1b1b1b, #131313 );
    border: 1px solid #353535;
    border-left: 5px solid #ff6a00;
    box-shadow: 8px 8px 0 #050505;
}


/* =========================================================
   AVATAR
   ========================================================= */

.profile-edit-avatar {
    width: 190px;
    height: 190px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    background: #242424;
    border: 5px solid #ff6a00;
    box-shadow: 7px 7px 0 #8b2cff;
}

    .profile-edit-avatar img {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    .profile-edit-avatar span {
        color: #ff6a00;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 85px;
        line-height: 1;
    }


/* =========================================================
   FORMULAIRE
   ========================================================= */

.profile-edit-form {
    display: flex;
    flex-direction: column;
    gap: 22px;
}


/* =========================================================
   CHAMPS
   ========================================================= */

.profile-edit-field {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

    .profile-edit-field label {
        color: #ff6a00;
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 2px;
        text-transform: uppercase;
    }

    .profile-edit-field input {
        width: 100%;
        box-sizing: border-box;
        min-height: 48px;
        padding: 0 15px;
        border: 1px solid #3d3d3d;
        outline: none;
        background: #101010;
        color: #f5f5f5;
        font-family: inherit;
        font-size: 14px;
        transition: border-color .2s ease, box-shadow .2s ease;
    }

        .profile-edit-field input:focus {
            border-color: #ff6a00;
            box-shadow: 4px 4px 0 rgba(215,25,32,.65);
        }

        .profile-edit-field input::placeholder {
            color: #555;
        }

    .profile-edit-field small {
        color: #666;
        font-size: 11px;
        line-height: 1.4;
    }


/* =========================================================
   BOUTONS
   ========================================================= */

.profile-edit-actions {
    display: flex;
    gap: 12px;
    margin-top: 8px;
    padding-top: 22px;
    border-top: 1px solid #303030;
}

.profile-edit-save,
.profile-edit-cancel {
    min-height: 48px;
    padding: 0 22px;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 1px;
    cursor: pointer;
    transition: transform .15s ease, background .15s ease, border-color .15s ease;
}


/* ENREGISTRER */

.profile-edit-save {
    border: 1px solid #ff6a00;
    background: #ff6a00;
    color: #111;
    box-shadow: 4px 4px 0 #050505;
}

    .profile-edit-save:hover:not(:disabled) {
        background: #fff;
        border-color: #fff;
        transform: translate(-2px, -2px);
    }


/* RETOUR */

.profile-edit-cancel {
    border: 1px solid #3d3d3d;
    background: #191919;
    color: #ddd;
}

    .profile-edit-cancel:hover:not(:disabled) {
        border-color: #ff6a00;
        color: #ff6a00;
    }


/* =========================================================
   MESSAGES
   ========================================================= */

.profile-edit-success {
    margin-bottom: 20px;
    padding: 16px 20px;
    border-left: 5px solid #ff6a00;
    background: #181818;
    color: #ff6a00;
    font-size: 13px;
    font-weight: 700;
}

.profile-edit-error {
    margin-bottom: 20px;
    padding: 16px 20px;
    border-left: 5px solid #8b2cff;
    background: #181818;
    color: #ff6268;
    font-size: 13px;
    font-weight: 700;
}


/* =========================================================
   CONNEXION
   ========================================================= */

.profile-edit-login {
    max-width: 650px;
    margin: 70px auto;
    padding: 55px 35px;
    text-align: center;
    background: #181818;
    border: 1px solid #353535;
    border-top: 5px solid #ff6a00;
    box-shadow: 8px 8px 0 #050505;
}

.profile-edit-icon {
    font-size: 50px;
    margin-bottom: 15px;
}

.profile-edit-login h1 {
    margin: 10px 0;
    color: #f5f5f5;
    font-family: Impact, "Arial Black", sans-serif;
    font-size: 40px;
    text-shadow: 4px 4px 0 #8b2cff;
}

.profile-edit-login p {
    margin-bottom: 25px;
    color: #888;
}


/* =========================================================
   BOUTON DÉSACTIVÉ
   ========================================================= */

.profile-edit-save:disabled,
.profile-edit-cancel:disabled {
    opacity: .5;
    cursor: not-allowed;
    transform: none;
}


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 800px) {

    .profile-edit-page {
        padding: 25px 20px 60px;
    }

    .profile-edit-card {
        grid-template-columns: 1fr;
        justify-items: center;
        padding: 25px;
    }

    .profile-edit-form {
        width: 100%;
    }

    .profile-edit-header h1 {
        font-size: 40px;
    }
}


@media (max-width: 550px) {

    .profile-edit-header h1 {
        font-size: 32px;
    }

    .profile-edit-card {
        padding: 20px 15px;
    }

    .profile-edit-avatar {
        width: 150px;
        height: 150px;
    }

    .profile-edit-actions {
        flex-direction: column;
    }

    .profile-edit-save,
    .profile-edit-cancel {
        width: 100%;
    }
}
/* =========================================================
   AJOUT PHOTO - BOUTON GRAFF SPOT
   ========================================================= */

.spot-photo-upload-button {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0 28px;
    background: #ff6a00;
    color: #080808;
    border: none;
    cursor: pointer;
    font-family: inherit;
    font-weight: 800;
    font-size: 14px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    box-shadow: 6px 6px 0 #050505;
    transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

    .spot-photo-upload-button:hover {
        background: #ff6a00;
        transform: translate(-2px, -2px);
        box-shadow: 8px 8px 0 #050505;
    }

    .spot-photo-upload-button:active {
        transform: translate(2px, 2px);
        box-shadow: 3px 3px 0 #050505;
    }

    .spot-photo-upload-button.disabled {
        opacity: 0.55;
        cursor: not-allowed;
        pointer-events: none;
    }

/* On cache complètement le bouton natif du navigateur */
.spot-photo-input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
}
/* =========================================================
   MES RECOMPENSES — GRAFF SPOT FRANCE
   ========================================================= */

.profile-rewards {
    margin-top: 35px;
}

    .profile-rewards .profile-section-title {
        margin-bottom: 20px;
    }


/* =========================================================
   GRILLE
   ========================================================= */

.profile-rewards-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
}


/* =========================================================
   CARTE
   ========================================================= */

.profile-reward-card {
    position: relative;
    min-height: 220px;
    padding: 24px;
    display: flex;
    flex-direction: column;
    background: #181818;
    border: 1px solid #383838;
    border-left: 5px solid #555;
    box-shadow: 7px 7px 0 #050505;
    overflow: hidden;
    transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}


    /* bande graffiti */

    .profile-reward-card::after {
        content: "";
        position: absolute;
        top: 18px;
        right: -35px;
        width: 150px;
        height: 18px;
        background: #252525;
        transform: rotate(-7deg);
        pointer-events: none;
    }


    /* =========================================================
   DEBLOQUE
   ========================================================= */

    .profile-reward-card.unlocked {
        border-left-color: #ff6a00;
    }

        .profile-reward-card.unlocked::before {
            content: "";
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 4px;
            background: #ff6a00;
        }

        .profile-reward-card.unlocked:hover {
            transform: translate(-3px, -3px);
            border-color: #ff6a00;
            box-shadow: 10px 10px 0 #050505;
        }


    /* =========================================================
   VERROUILLE
   ========================================================= */

    .profile-reward-card.locked {
        border-left-color: #444;
        opacity: .55;
    }

        .profile-reward-card.locked:hover {
            opacity: .72;
        }


/* =========================================================
   ICONE
   ========================================================= */

.profile-reward-icon {
    width: 62px;
    height: 62px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 20px;
    background: #101010;
    border: 2px solid #333;
    box-shadow: 4px 4px 0 #050505;
    font-size: 28px;
}

.profile-reward-card.unlocked .profile-reward-icon {
    border-color: #ff6a00;
}


/* =========================================================
   NOM
   ========================================================= */

.profile-reward-content {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
}

    .profile-reward-content strong {
        color: #fff;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 30px;
        line-height: 1;
        letter-spacing: 1px;
        text-transform: uppercase;
        text-shadow: 3px 3px 0 #8b2cff;
    }


    /* =========================================================
   NIVEAU
   ========================================================= */

    .profile-reward-content > span {
        display: inline-block;
        margin-top: 9px;
        color: #ff6a00;
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 2px;
        text-transform: uppercase;
    }


    /* =========================================================
   DESCRIPTION
   ========================================================= */

    .profile-reward-content small {
        display: block;
        margin-top: 12px;
        max-width: 90%;
        color: #999;
        font-size: 12px;
        line-height: 1.5;
    }


/* =========================================================
   STATUT
   ========================================================= */

.profile-reward-status {
    position: relative;
    z-index: 2;
    margin-top: auto;
    padding-top: 22px;
}

    .profile-reward-status span {
        display: inline-block;
        padding: 8px 13px;
        background: #252525;
        color: #777;
        border-left: 3px solid #555;
        font-size: 9px;
        font-weight: 900;
        letter-spacing: 1.5px;
        text-transform: uppercase;
    }


/* DEBLOQUE */

.profile-reward-card.unlocked .profile-reward-status span {
    background: #ff6a00;
    color: #111;
    border-left-color: #8b2cff;
    box-shadow: 3px 3px 0 #050505;
}


/* =========================================================
   AUCUNE RECOMPENSE
   ========================================================= */

.profile-rewards-empty {
    padding: 40px 25px;
    text-align: center;
    background: #181818;
    border: 1px dashed #444;
}

    .profile-rewards-empty span {
        display: block;
        margin-bottom: 15px;
        font-size: 40px;
    }

    .profile-rewards-empty strong {
        display: block;
        color: #fff;
        font-family: Impact, "Arial Black", sans-serif;
        font-size: 24px;
        letter-spacing: 1px;
    }

    .profile-rewards-empty small {
        display: block;
        margin-top: 10px;
        color: #777;
    }


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 950px) {

    .profile-rewards-grid {
        grid-template-columns: 1fr;
    }
}


@media (max-width: 650px) {

    .profile-reward-card {
        min-height: 200px;
        padding: 20px;
    }

    .profile-reward-content strong {
        font-size: 26px;
    }
}
/* CADRES AVATAR — GRAFF SPOT FRANCE */

.profile-avatar {
    position: relative;
    overflow: visible;
    isolation: isolate;
    border: 0 !important;
    background: #242424;
    box-shadow: none !important;
}

.profile-avatar img,
.profile-avatar > span {
    position: relative;
    z-index: 3;
    display: flex;
    width: 100%;
    height: 100%;
    object-fit: cover;
    clip-path: inset(0);
}

.profile-avatar::before,
.profile-avatar::after {
    content: "";
    position: absolute;
    pointer-events: none;
    z-index: 4;
}

.profile-avatar[data-level="0"] {
    border: 0 !important;
    box-shadow: none !important;
}

.profile-avatar[data-level="0"]::before,
.profile-avatar[data-level="0"]::after {
    display: none;
}

.profile-avatar[data-level="1"] {
    border: 5px solid #ff6a00 !important;
    box-shadow: 6px 6px 0 #111 !important;
}

.profile-avatar[data-level="1"]::before {
    inset: -9px;
    border: 3px solid #8b2cff;
    transform: rotate(-2deg);
}

.profile-avatar[data-level="1"]::after {
    width: 34px;
    height: 8px;
    right: -17px;
    bottom: 13px;
    background: #ff6a00;
    transform: rotate(-18deg);
    box-shadow: -14px 9px 0 #8b2cff, -25px -5px 0 #111;
}

.profile-avatar[data-level="2"] {
    border: 4px solid #8b2cff !important;
    box-shadow: 7px 7px 0 #ff6a00 !important;
}

.profile-avatar[data-level="2"]::before {
    inset: -11px;
    border: 3px solid #ff6a00;
    border-left-color: #8b2cff;
    transform: rotate(3deg);
    clip-path: polygon(0 8%, 18% 0, 36% 5%, 56% 0, 77% 6%, 100% 0, 94% 22%, 100% 43%, 94% 63%, 100% 86%, 78% 94%, 57% 100%, 37% 94%, 17% 100%, 0 92%, 6% 68%, 0 47%, 6% 25%);
}

.profile-avatar[data-level="2"]::after {
    width: 52px;
    height: 9px;
    left: -21px;
    top: 17px;
    background: #8b2cff;
    transform: rotate(-28deg);
    box-shadow: 15px 112px 0 #ff6a00, 82px 119px 0 #111;
}

.profile-avatar[data-level="3"] {
    border: 5px solid #fff !important;
    box-shadow: 7px 7px 0 #8b2cff, -6px -6px 0 #ff6a00 !important;
}

.profile-avatar[data-level="3"]::before {
    inset: -13px;
    border: 4px solid #111;
    box-shadow: 0 0 0 3px #8b2cff, 0 0 0 6px #ff6a00;
    transform: rotate(-3deg);
    border-radius: 7px 2px 9px 4px;
}

.profile-avatar[data-level="3"]::after {
    inset: -17px;
    border: 2px dashed #fff;
    transform: rotate(4deg);
    opacity: .9;
}

.profile-avatar[data-level="4"] {
    border: 5px solid #8b2cff !important;
    box-shadow: 9px 9px 0 #ff6a00, -7px -7px 0 #111 !important;
}

.profile-avatar[data-level="4"]::before {
    inset: -16px;
    border: 5px solid #ff6a00;
    transform: rotate(-2deg);
    clip-path: polygon(0 7%, 9% 0, 22% 5%, 35% 0, 50% 7%, 65% 1%, 81% 6%, 100% 0, 95% 19%, 100% 36%, 94% 53%, 100% 71%, 92% 100%, 76% 94%, 60% 100%, 44% 94%, 27% 100%, 9% 93%, 0 100%, 6% 79%, 0 61%, 7% 42%, 0 24%);
}

.profile-avatar[data-level="4"]::after {
    width: 68px;
    height: 11px;
    right: -31px;
    top: 9px;
    background: #8b2cff;
    transform: rotate(31deg);
    box-shadow: -67px 122px 0 #ff6a00, -77px 104px 0 #111;
}

.profile-avatar[data-level="5"] {
    border: 5px solid #ff6a00 !important;
    box-shadow: 8px 8px 0 #8b2cff, -6px -6px 0 #111 !important;
}

.profile-avatar[data-level="5"]::before {
    inset: -15px;
    border: 3px solid #8b2cff;
    border-radius: 4px;
    transform: rotate(-3deg);
    box-shadow: 0 0 0 4px rgba(229,201,0,.7), 0 0 0 9px rgba(169,33,33,.35);
}

.profile-avatar[data-level="5"]::after {
    width: 11px;
    height: 45px;
    right: 12px;
    bottom: -34px;
    background: #8b2cff;
    border-radius: 0 0 9px 9px;
    box-shadow:
        -23px -5px 0 #ff6a00,
        23px 9px 0 #8b2cff,
        -45px 15px 0 #111,
        45px -26px 0 #ff6a00,
        -58px -38px 0 #8b2cff;
}

.profile-avatar[data-level="6"] {
    border: 6px solid #ff6a00 !important;
    box-shadow: 10px 10px 0 #8b2cff, -8px -8px 0 #111 !important;
}

.profile-avatar[data-level="6"]::before {
    inset: -18px;
    border: 5px solid #111;
    box-shadow: 0 0 0 3px #8b2cff, 0 0 0 7px #ff6a00;
    transform: rotate(2deg);
}

.profile-avatar[data-level="6"]::after {
    width: 80px;
    height: 14px;
    left: -34px;
    bottom: 8px;
    background: #8b2cff;
    transform: rotate(-22deg);
    box-shadow:
        76px -106px 0 #ff6a00,
        96px -95px 0 #111,
        108px -84px 0 #8b2cff,
        47px 111px 0 #ff6a00;
}

.profile-avatar[data-level="7"] {
    border: 6px solid #fff !important;
    box-shadow:
        11px 11px 0 #8b2cff,
        -11px -11px 0 #ff6a00,
        0 0 0 3px #111 !important;
}

.profile-avatar[data-level="7"]::before {
    inset: -22px;
    border: 5px solid #8b2cff;
    box-shadow:
        0 0 0 4px #111,
        0 0 0 8px #ff6a00;
    transform: rotate(-3deg);
    clip-path: polygon(
        0 4%, 13% 0, 25% 4%, 39% 0, 53% 5%, 67% 0, 82% 5%, 100% 0,
        96% 18%, 100% 34%, 95% 51%, 100% 69%, 95% 84%, 100% 100%,
        84% 95%, 69% 100%, 52% 95%, 37% 100%, 21% 95%, 5% 100%,
        8% 82%, 0 67%, 5% 50%, 0 32%, 6% 17%
    );
}

.profile-avatar[data-level="7"]::after {
    width: 105px;
    height: 16px;
    right: -45px;
    bottom: 20px;
    background: #ff6a00;
    transform: rotate(-27deg);
    box-shadow:
        -96px -105px 0 #8b2cff,
        -75px -120px 0 #111,
        -18px 121px 0 #8b2cff,
        47px -125px 0 #ff6a00;
}

@media (max-width: 650px) {
    .profile-avatar[data-level="4"]::before,
    .profile-avatar[data-level="5"]::before,
    .profile-avatar[data-level="6"]::before,
    .profile-avatar[data-level="7"]::before {
        inset: -12px;
    }

    .profile-avatar[data-level="6"]::before,
    .profile-avatar[data-level="7"]::before {
        box-shadow: 0 0 0 3px #8b2cff, 0 0 0 6px #ff6a00;
    }
}



/* =====================================================================
   GRAFF SPOT FRANCE — ULTIMATE GRAFFITI OVERRIDE
   Palette officielle :
   BLACK / WHITE / ORANGE / PURPLE
   Aucun jaune, aucun rouge, aucun vert.
   ===================================================================== */

:root {
    --gs-black: #080808;
    --gs-black-2: #111111;
    --gs-panel: #171717;
    --gs-panel-2: #1d1d1d;
    --gs-border: #383838;
    --gs-white: #f4f4f4;
    --gs-grey: #999999;
    --gs-orange: #ff6a00;
    --gs-orange-hot: #ff7a18;
    --gs-purple: #8b2cff;
    --gs-purple-hot: #a95cff;
    --gs-shadow: #030303;
}

/* ---------------------------------------------------------------------
   BASE
   --------------------------------------------------------------------- */

html,
body {
    background:
        radial-gradient(circle at 82% 8%, rgba(139,44,255,.09), transparent 22%),
        radial-gradient(circle at 12% 88%, rgba(255,106,0,.07), transparent 25%),
        #080808 !important;
    color: var(--gs-white);
}

body::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -5;
    pointer-events: none;
    opacity: .18;
    background-image:
        linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px),
        linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px);
    background-size: 5px 5px, 7px 7px;
}

/* ---------------------------------------------------------------------
   TYPOGRAPHIE STREET / GRAFF
   --------------------------------------------------------------------- */

h1,
h2,
h3,
.profile-section-title h2,
.spot-hero h1,
.graff-home h1,
.graff-header h1 {
    font-family: Impact, Haettenschweiler, "Arial Black", sans-serif !important;
    text-transform: uppercase;
    letter-spacing: -1px;
}

h1,
h2,
h3 {
    text-shadow:
        3px 3px 0 var(--gs-purple),
        5px 5px 0 var(--gs-shadow);
}

/* ---------------------------------------------------------------------
   CAPSULES / ETIQUETTES
   --------------------------------------------------------------------- */

.hero-tag,
.spot-detail-tag,
.spot-card-kicker,
.profile-kicker,
.profile-section-title .profile-kicker,
.community-label {
    background: var(--gs-orange) !important;
    color: #080808 !important;
    border: 0 !important;
    box-shadow:
        4px 4px 0 var(--gs-purple),
        7px 7px 0 var(--gs-shadow);
    transform: rotate(-1.5deg);
}

/* ---------------------------------------------------------------------
   BOUTONS — NOIR / GRIS / ORANGE / VIOLET
   --------------------------------------------------------------------- */

button,
.hero-button,
.community-button,
.profile-main-button,
.profile-action-card,
.profile-logout,
.spot-main-button,
.spot-map-button,
.spot-back-button,
.spot-login-rating-button,
.spot-favorite-button,
.spot-photo-upload-button,
.favorite-open-button,
.favorite-map-button,
.favorite-map-button-small,
.favorites-login-button,
.favorites-map-button,
.favorites-retry-button {
    position: relative;
    overflow: hidden;
    border-radius: 0 !important;
    border: 1px solid var(--gs-border);
    background: #1b1b1b;
    color: var(--gs-white);
    box-shadow: 6px 6px 0 var(--gs-shadow);
    transition:
        transform .14s ease,
        box-shadow .14s ease,
        border-color .14s ease,
        background .14s ease,
        color .14s ease;
}

button:hover,
.hero-button:hover,
.community-button:hover,
.profile-main-button:hover,
.profile-action-card:hover,
.profile-logout:hover,
.spot-main-button:hover,
.spot-map-button:hover,
.spot-back-button:hover,
.spot-login-rating-button:hover,
.spot-favorite-button:hover,
.spot-photo-upload-button:hover,
.favorite-open-button:hover,
.favorite-map-button:hover,
.favorite-map-button-small:hover,
.favorites-login-button:hover,
.favorites-map-button:hover,
.favorites-retry-button:hover {
    transform: translate(-2px, -3px) rotate(-.4deg);
    border-color: var(--gs-orange);
    background: var(--gs-orange);
    color: #080808;
    box-shadow:
        8px 9px 0 var(--gs-purple),
        0 0 22px rgba(255,106,0,.16);
}

button:active,
.hero-button:active,
.community-button:active,
.profile-main-button:active,
.profile-action-card:active,
.profile-logout:active,
.spot-main-button:active,
.spot-map-button:active,
.spot-back-button:active,
.spot-login-rating-button:active,
.spot-favorite-button:active,
.spot-photo-upload-button:active,
.favorite-open-button:active,
.favorite-map-button:active,
.favorite-map-button-small:active,
.favorites-login-button:active,
.favorites-map-button:active,
.favorites-retry-button:active {
    transform: translate(3px, 3px) rotate(0) scale(.98) !important;
    box-shadow: 2px 2px 0 var(--gs-purple) !important;
}

/* ---------------------------------------------------------------------
   SPLASH DE PEINTURE AU CLIC
   --------------------------------------------------------------------- */

.hero-button,
.community-button,
.graff-nav-item,
.spot-main-button,
.spot-map-button,
.spot-login-rating-button,
.spot-back-button,
.favorite-open-button,
.favorite-map-button-small,
.favorites-login-button,
.favorites-map-button,
.favorites-retry-button,
.profile-main-button,
.profile-action-card,
.profile-logout,
.spot-favorite-button,
.spot-photo-upload-button {
    --splash-color: var(--gs-orange);
}

.graff-nav-item:nth-child(even),
.hero-button.secondary,
.spot-map-button,
.favorite-map-button-small,
.favorites-map-button {
    --splash-color: var(--gs-purple);
}

.hero-button:active::after,
.community-button:active::after,
.graff-nav-item:active::after,
.spot-main-button:active::after,
.spot-map-button:active::after,
.spot-login-rating-button:active::after,
.spot-back-button:active::after,
.favorite-open-button:active::after,
.favorite-map-button-small:active::after,
.favorites-login-button:active::after,
.favorites-map-button:active::after,
.favorites-retry-button:active::after,
.profile-main-button:active::after,
.profile-action-card:active::after,
.profile-logout:active::after,
.spot-favorite-button:active::after,
.spot-photo-upload-button:active::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 50;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--splash-color);
    pointer-events: none;
    animation: gsGraffSplash .44s ease-out forwards;
    box-shadow:
        27px -17px 0 -2px var(--splash-color),
        -31px -11px 0 -3px var(--gs-purple),
        38px 15px 0 -4px var(--splash-color),
        -28px 24px 0 -2px var(--gs-purple),
        8px 34px 0 -4px var(--splash-color),
        -12px -31px 0 -4px var(--gs-purple);
}

@keyframes gsGraffSplash {
    0% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(.25);
    }
    55% {
        opacity: .9;
        transform: translate(-50%, -50%) scale(2.25);
    }
    100% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(4.4);
    }
}

/* ---------------------------------------------------------------------
   EFFET SPRAY AU SURVOL
   --------------------------------------------------------------------- */

.graff-nav-item:hover::before,
.hero-button:hover::before,
.community-button:hover::before,
.profile-action-card:hover::before,
.spot-favorite-button:hover::before {
    content: "";
    position: absolute;
    left: 12%;
    top: 18%;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--gs-orange);
    box-shadow:
        18px -8px 0 -1px var(--gs-purple),
        31px 7px 0 -2px var(--gs-orange),
        -9px 15px 0 -2px var(--gs-purple),
        45px 18px 0 -3px var(--gs-orange),
        -24px -5px 0 -2px var(--gs-purple);
    pointer-events: none;
}

/* ---------------------------------------------------------------------
   MENU
   --------------------------------------------------------------------- */

.graff-nav,
.sidebar {
    background:
        radial-gradient(circle at 10% 18%, rgba(139,44,255,.12), transparent 20%),
        radial-gradient(circle at 85% 75%, rgba(255,106,0,.09), transparent 22%),
        #090909 !important;
    border-right: 3px solid var(--gs-orange) !important;
}

.graff-nav::before {
    background: var(--gs-purple) !important;
    opacity: .18 !important;
}

.graff-nav::after {
    background: var(--gs-orange) !important;
    opacity: .16 !important;
}

.graff-logo-main {
    color: #fff !important;
    text-shadow:
        4px 4px 0 var(--gs-purple),
        7px 7px 0 var(--gs-orange) !important;
}

.graff-logo-sub {
    color: var(--gs-orange) !important;
}

.graff-nav-item {
    background: #171717 !important;
    border-color: #303030 !important;
    color: #eee !important;
}

.graff-nav-item:hover,
.graff-nav-item.active {
    background: var(--gs-orange) !important;
    border-color: var(--gs-orange) !important;
    color: #080808 !important;
    box-shadow:
        7px 7px 0 var(--gs-purple),
        0 0 18px rgba(255,106,0,.14);
}

.graff-nav-item.add-spot {
    background: var(--gs-purple) !important;
    border-color: var(--gs-purple) !important;
    color: #fff !important;
    box-shadow: 5px 5px 0 var(--gs-orange) !important;
}

.graff-nav-item.add-spot:hover {
    background: var(--gs-orange) !important;
    color: #080808 !important;
}

.graff-status .status-dot,
.status-dot {
    background: var(--gs-orange) !important;
    box-shadow: 0 0 10px rgba(255,106,0,.8) !important;
}

/* ---------------------------------------------------------------------
   PANNEAUX / CARTES
   --------------------------------------------------------------------- */

.graff-card,
.hero-graff,
.graff-community,
.spot-hero,
.spot-community-card,
.spot-rating-card,
.spot-detail-card,
.spot-photo-card,
.profile-hero,
.profile-stat,
.profile-action-card,
.profile-reward-card,
.favorite-card,
.spot-card {
    background: linear-gradient(145deg, #191919, #111) !important;
    border-color: #353535 !important;
    box-shadow: 8px 8px 0 var(--gs-shadow) !important;
}

.graff-card::before,
.hero-graff::before,
.spot-hero::before,
.profile-hero::before {
    background: var(--gs-orange) !important;
}

.graff-card:nth-child(2)::before,
.graff-card:nth-child(3)::before {
    background: var(--gs-purple) !important;
}

/* ---------------------------------------------------------------------
   TITRES GRAFFITI
   --------------------------------------------------------------------- */

.hero-graff h1,
.graff-header h1,
.spot-hero h1,
.profile-identity h1,
.profile-section-title h2,
.profile-reward-content strong,
.favorite-card h2,
.spot-card h2,
.spot-card h3 {
    color: #f5f5f5 !important;
    text-shadow:
        4px 4px 0 var(--gs-purple),
        7px 7px 0 var(--gs-orange),
        9px 9px 0 #050505 !important;
}

.hero-graff h1 span {
    color: var(--gs-orange) !important;
    text-shadow:
        4px 4px 0 #050505,
        8px 8px 0 var(--gs-purple) !important;
}

/* ---------------------------------------------------------------------
   FORMULAIRES
   --------------------------------------------------------------------- */

.form-control,
.form-select,
textarea,
input {
    background: #101010 !important;
    color: #eee !important;
    border-color: #3c3c3c !important;
    border-radius: 0 !important;
}

.form-control:focus,
.form-select:focus,
textarea:focus,
input:focus {
    border-color: var(--gs-orange) !important;
    box-shadow:
        0 0 0 2px rgba(255,106,0,.14),
        5px 5px 0 var(--gs-purple) !important;
    outline: none !important;
}

/* ---------------------------------------------------------------------
   RECOMPENSES / CADRES
   --------------------------------------------------------------------- */

.profile-reward-card {
    background:
        linear-gradient(145deg, #191919, #101010) !important;
    border-left: 5px solid #444 !important;
}

.profile-reward-card::after {
    background: var(--gs-purple) !important;
    opacity: .18;
}

.profile-reward-card.unlocked {
    border-left-color: var(--gs-orange) !important;
}

.profile-reward-card.unlocked::before {
    background: linear-gradient(
        90deg,
        var(--gs-orange),
        var(--gs-purple),
        var(--gs-orange)
    ) !important;
}

.profile-reward-card.unlocked:hover {
    border-color: var(--gs-orange) !important;
    box-shadow:
        10px 10px 0 var(--gs-purple),
        0 0 25px rgba(255,106,0,.12) !important;
}

.profile-reward-icon {
    background: #0b0b0b !important;
    border-color: #444 !important;
    box-shadow: 4px 4px 0 #020202 !important;
}

.profile-reward-card.unlocked .profile-reward-icon {
    border-color: var(--gs-orange) !important;
    box-shadow:
        4px 4px 0 var(--gs-purple),
        0 0 15px rgba(255,106,0,.15) !important;
}

.profile-reward-content > span {
    color: var(--gs-orange) !important;
}

.profile-reward-status span {
    background: #242424 !important;
    color: #999 !important;
    border-left-color: #555 !important;
}

.profile-reward-card.unlocked .profile-reward-status span {
    background: var(--gs-orange) !important;
    color: #080808 !important;
    border-left-color: var(--gs-purple) !important;
}

/* ---------------------------------------------------------------------
   CADRES AVATAR — progression visuelle
   --------------------------------------------------------------------- */

.profile-avatar {
    position: relative !important;
    overflow: visible !important;
    isolation: isolate;
    background: #151515 !important;
    border-color: transparent !important;
}

.profile-avatar img,
.profile-avatar > span {
    position: relative;
    z-index: 5;
}

.profile-avatar::before,
.profile-avatar::after {
    pointer-events: none !important;
}

/* niveau 1 : simple trait orange + tag violet */
.profile-avatar[data-level="1"] {
    border: 5px solid var(--gs-orange) !important;
    box-shadow: 6px 6px 0 var(--gs-purple) !important;
}
.profile-avatar[data-level="1"]::before {
    inset: -8px !important;
    border: 3px solid var(--gs-purple) !important;
    transform: rotate(-2deg);
}
.profile-avatar[data-level="1"]::after {
    width: 36px !important;
    height: 8px !important;
    right: -18px !important;
    bottom: 10px !important;
    background: var(--gs-orange) !important;
    transform: rotate(-18deg);
    box-shadow:
        -14px 9px 0 var(--gs-purple),
        -25px -5px 0 #050505 !important;
}

/* niveau 2 : éclaboussure */
.profile-avatar[data-level="2"] {
    border: 4px solid var(--gs-purple) !important;
    box-shadow: 7px 7px 0 var(--gs-orange) !important;
}
.profile-avatar[data-level="2"]::before {
    inset: -11px !important;
    border: 3px solid var(--gs-orange) !important;
    border-left-color: var(--gs-purple) !important;
    transform: rotate(3deg);
}
.profile-avatar[data-level="2"]::after {
    width: 52px !important;
    height: 9px !important;
    left: -21px !important;
    top: 17px !important;
    background: var(--gs-purple) !important;
    transform: rotate(-28deg);
    box-shadow:
        15px 112px 0 var(--gs-orange),
        82px 119px 0 #050505 !important;
}

/* niveaux 3 à 7 : on reprend le principe avec davantage de peinture */
.profile-avatar[data-level="3"] {
    border: 5px solid var(--gs-orange) !important;
    box-shadow:
        8px 8px 0 var(--gs-purple),
        -5px -5px 0 #050505 !important;
}
.profile-avatar[data-level="3"]::before {
    inset: -13px !important;
    border: 3px solid var(--gs-purple) !important;
    transform: rotate(-4deg);
}
.profile-avatar[data-level="3"]::after {
    width: 62px;
    height: 10px;
    right: -26px;
    bottom: 16px;
    background: var(--gs-orange);
    transform: rotate(-21deg);
    box-shadow:
        -54px -80px 0 var(--gs-purple),
        -35px 104px 0 var(--gs-orange),
        -70px 96px 0 var(--gs-purple);
}

.profile-avatar[data-level="4"],
.profile-avatar[data-level="5"] {
    border: 5px solid var(--gs-purple) !important;
    box-shadow:
        9px 9px 0 var(--gs-orange),
        -5px -5px 0 #050505 !important;
}
.profile-avatar[data-level="4"]::before,
.profile-avatar[data-level="5"]::before {
    inset: -15px !important;
    border: 4px solid var(--gs-orange) !important;
    box-shadow: 0 0 0 3px var(--gs-purple) !important;
    transform: rotate(2deg);
}
.profile-avatar[data-level="4"]::after,
.profile-avatar[data-level="5"]::after {
    width: 72px;
    height: 12px;
    left: -29px;
    bottom: 11px;
    background: var(--gs-orange);
    transform: rotate(-24deg);
    box-shadow:
        82px -94px 0 var(--gs-purple),
        92px -82px 0 var(--gs-orange),
        38px 112px 0 var(--gs-purple);
}

.profile-avatar[data-level="6"],
.profile-avatar[data-level="7"] {
    border: 6px solid var(--gs-orange) !important;
    box-shadow:
        10px 10px 0 var(--gs-purple),
        -8px -8px 0 #050505 !important;
}
.profile-avatar[data-level="6"]::before,
.profile-avatar[data-level="7"]::before {
    inset: -20px !important;
    border: 5px solid var(--gs-purple) !important;
    box-shadow:
        0 0 0 4px #050505,
        0 0 0 8px var(--gs-orange) !important;
    transform: rotate(-3deg);
}
.profile-avatar[data-level="6"]::after,
.profile-avatar[data-level="7"]::after {
    width: 100px;
    height: 15px;
    right: -42px;
    bottom: 18px;
    background: var(--gs-orange);
    transform: rotate(-27deg);
    box-shadow:
        -96px -105px 0 var(--gs-purple),
        -75px -120px 0 #050505,
        -18px 121px 0 var(--gs-purple),
        47px -125px 0 var(--gs-orange);
}

/* ---------------------------------------------------------------------
   DEGOUlinures / COULURES
   --------------------------------------------------------------------- */

.profile-avatar::after,
.graff-card::after,
.spot-hero::after,
.profile-hero::after {
    filter: none;
}

.profile-avatar[data-level="4"]::after,
.profile-avatar[data-level="5"]::after,
.profile-avatar[data-level="6"]::after,
.profile-avatar[data-level="7"]::after {
    border-radius: 2px;
}

.profile-avatar[data-level="6"]::before,
.profile-avatar[data-level="7"]::before {
    clip-path: polygon(
        0 4%, 12% 0, 24% 4%, 38% 0, 52% 5%, 67% 0, 82% 5%, 100% 0,
        96% 18%, 100% 34%, 95% 51%, 100% 69%, 95% 84%, 100% 100%,
        84% 95%, 69% 100%, 52% 95%, 37% 100%, 21% 95%, 5% 100%,
        8% 82%, 0 67%, 5% 50%, 0 32%, 6% 17%
    );
}

/* ---------------------------------------------------------------------
   PETITES GOUTTES DE PEINTURE DANS LES SECTIONS
   --------------------------------------------------------------------- */

.profile-section-title,
.spot-section-heading,
.profile-hero,
.spot-hero,
.hero-graff {
    position: relative;
}

.profile-section-title::after,
.spot-section-heading::after {
    content: "";
    position: absolute;
    right: 8%;
    bottom: -8px;
    width: 90px;
    height: 4px;
    background: var(--gs-orange);
    box-shadow:
        28px 4px 0 -1px var(--gs-purple),
        51px 8px 0 -2px var(--gs-orange),
        71px 5px 0 -2px var(--gs-purple);
    transform: rotate(-2deg);
    opacity: .9;
}

/* ---------------------------------------------------------------------
   PHOTO GALERIE
   --------------------------------------------------------------------- */

.spot-photo-card {
    position: relative;
    overflow: hidden;
    border: 1px solid #383838 !important;
    box-shadow: 7px 7px 0 #050505 !important;
}

.spot-photo-card::before {
    content: "";
    position: absolute;
    left: 12px;
    top: 12px;
    width: 35px;
    height: 5px;
    z-index: 4;
    background: var(--gs-orange);
    transform: rotate(-7deg);
    box-shadow:
        13px 7px 0 var(--gs-purple),
        28px -4px 0 var(--gs-orange);
    pointer-events: none;
}

.spot-photo-overlay {
    background:
        linear-gradient(
            transparent 0%,
            rgba(0,0,0,.28) 32%,
            rgba(0,0,0,.94) 100%
        ) !important;
}

.spot-photo-overlay strong {
    color: #fff !important;
    text-shadow:
        2px 2px 0 var(--gs-purple),
        3px 3px 0 var(--gs-orange) !important;
}

/* ---------------------------------------------------------------------
   LIENS / TEXTE D'ACCENT
   --------------------------------------------------------------------- */

a {
    color: var(--gs-orange);
}

a:hover {
    color: var(--gs-purple);
}

/* ---------------------------------------------------------------------
   MOBILE
   --------------------------------------------------------------------- */

@media (max-width: 800px) {
    .profile-rewards-grid {
        grid-template-columns: 1fr !important;
    }

    .hero-graff h1 {
        font-size: clamp(48px, 16vw, 76px) !important;
        letter-spacing: -3px !important;
    }

    .profile-avatar[data-level="4"]::before,
    .profile-avatar[data-level="5"]::before,
    .profile-avatar[data-level="6"]::before,
    .profile-avatar[data-level="7"]::before {
        inset: -12px !important;
    }
}
/* =========================================================
   CORRECTION GALERIE PHOTO
   La photo du spot et l'avatar sont séparés
   ========================================================= */

/* UNIQUEMENT la vraie photo du spot */
.spot-photo-card > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    z-index: 1;
    transition: transform .35s ease;
}

/* Zoom uniquement sur la vraie photo */
.spot-photo-card:hover > img {
    transform: scale(1.06);
}

/* Overlay auteur au-dessus de la photo */
.spot-photo-overlay {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    padding: 12px;
    background: linear-gradient( transparent 0%, rgba(0,0,0,.28) 30%, rgba(0,0,0,.94) 100% );
    color: #fff;
}

/* Bloc auteur */
.spot-photo-credit {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
}

/* Avatar */
.spot-photo-avatar {
    width: 42px;
    height: 42px;
    min-width: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-radius: 50%;
    background: #8b2cff;
    border: 2px solid #ff6a00;
    box-shadow: 0 3px 12px rgba(0,0,0,.6);
    position: relative;
    z-index: 4;
}

    /* Image de l'avatar */
    .spot-photo-avatar img {
        width: 100% !important;
        height: 100% !important;
        display: block;
        object-fit: cover;
        transform: none !important;
        transition: none !important;
    }

/* Empêche l'avatar de zoomer au survol */
.spot-photo-card:hover .spot-photo-avatar img {
    transform: none !important;
}

/* Initiale si pas d'avatar */
.spot-photo-avatar span {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 18px;
    font-weight: 900;
}

/* Informations du membre */
.spot-photo-author {
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    line-height: 1.15;
}

    /* Nom */
    .spot-photo-author strong {
        color: #fff !important;
        font-size: 13px;
        font-weight: 900;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        text-shadow: 2px 2px 0 #8b2cff, 3px 3px 0 #ff6a00;
    }

    /* Niveau */
    .spot-photo-author span {
        margin-top: 4px;
        color: #ddd;
        font-size: 10px;
        font-weight: 800;
        letter-spacing: 1px;
    }

/* Sécurité : aucun autre descendant ne doit prendre 100% */
.spot-photo-overlay img {
    width: auto;
    height: auto;
}

/* La grille reste au-dessus du fond */
.spot-photos-grid {
    position: relative;
}

/* Mobile */
@media (max-width: 768px) {

    .spot-photo-avatar {
        width: 38px;
        height: 38px;
        min-width: 38px;
    }

    .spot-photo-author strong {
        font-size: 12px;
    }

    .spot-photo-author span {
        font-size: 9px;
    }
}