/* ============================
  Orly94310 TOKENS
============================ */
:root {
    --yellow: #F5E642;
    --orange: #FF5C1A;
    --teal: #00D4C8;
    --pink: #FF3D8A;
    --lime: #AAFF47;
    --white: #FAFAF5;
    --ink: #0E0E0E;
    --ink2: #1C1C1C;
    --gray: #F0EDE6;
    --border: #0E0E0E;

    --f-display: 'Instrument Serif', serif;
    --f-head: 'Bricolage Grotesque', sans-serif;
    --f-body: 'Space Grotesk', sans-serif;

    --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
}

body {
    font-family: var(--f-body);
    background: var(--white);
    color: var(--ink);
    overflow-x: hidden;
    cursor: none;
}

a {
    text-decoration: none;
    color: inherit;
}

ul {
    list-style: none;
}

button {
    border: none;
    background: none;
    cursor: none;
    font-family: inherit;
}

/* ============================
   CURSOR
============================ */
#cur {
    position: fixed;
    z-index: 9999;
    width: 16px;
    height: 16px;
    background: var(--orange);
    border-radius: 50%;
    pointer-events: none;
    transform: translate(-50%, -50%);
    transition: width .15s, height .15s, background .2s;
    mix-blend-mode: multiply;
}

#cur.big {
    width: 48px;
    height: 48px;
    background: var(--yellow);
}

/* ============================
   NAV — white bar with thick border bottom
============================ */
/* ============================
   NAV — refonte complète
============================ */
.nav {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 200;
    height: 64px;
    background: var(--yellow);
    border-bottom: 3px solid var(--ink);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 2.5rem;
    transition: background .3s, box-shadow .3s;
}

/* Légère ombre quand on scroll */
.nav.scrolled {
    box-shadow: 0 4px 24px rgba(14, 14, 14, .12);
}

/* ── BRAND ── */
.nav-brand {
    font-family: var(--f-head);
    font-weight: 800;
    font-size: 1.05rem;
    letter-spacing: -0.02em;
    display: flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    color: var(--ink);
    flex-shrink: 0;
}

.brand-key {
    width: 38px;
    height: 38px;
    background: var(--ink);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    box-shadow: 2px 2px 0 rgba(14, 14, 14, .25);
    transition: transform .2s var(--ease-bounce);
}

.nav-brand:hover .brand-key {
    transform: rotate(-8deg) scale(1.08);
}

.brand-text {
    display: flex;
    flex-direction: column;
    line-height: 1;
}

.brand-name {
    font-size: 1rem;
    font-weight: 700;
    color: var(--ink);
}

.brand-sub {
    font-size: 0.58rem;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(14, 14, 14, .45);
    margin-top: 3px;
}

/* ── LINKS ── */
.nav-links {
    display: flex;
    gap: 2.2rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.nav-links a {
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--ink2);
    text-decoration: none;
    position: relative;
    padding-bottom: 2px;
    transition: color .2s;
}

.nav-links a::after {
    content: '';
    position: absolute;
    bottom: -3px;
    left: 0;
    right: 0;
    height: 2px;
    background: var(--orange);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .25s var(--ease-out);
}

.nav-links a:hover::after {
    transform: scaleX(1);
}

/* ── CTA CALL ── */
.nav-call {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--orange);
    color: var(--white);
    font-family: var(--f-head);
    font-weight: 700;
    font-size: 0.82rem;
    padding: 10px 20px;
    border-radius: 100px;
    border: 2px solid var(--ink);
    box-shadow: 3px 3px 0 var(--ink);
    text-decoration: none;
    transition: background .2s, transform .2s var(--ease-bounce), box-shadow .2s;
    flex-shrink: 0;
    white-space: nowrap;
}

.nav-call:hover {
    background: var(--pink);
    transform: translate(-2px, -2px);
    box-shadow: 5px 5px 0 var(--ink);
}

/* ── BURGER BUTTON ── */
.nav-burger {
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 5px;
    width: 42px;
    height: 42px;
    background: var(--ink);
    border: 2px solid var(--ink);
    border-radius: 10px;
    cursor: pointer;
    box-shadow: 3px 3px 0 rgba(14, 14, 14, .2);
    transition: background .2s, transform .2s var(--ease-bounce);
    flex-shrink: 0;
    padding: 0;
}

.nav-burger:hover {
    background: var(--orange);
    transform: translate(-1px, -1px);
}

.burger-bar {
    display: block;
    width: 20px;
    height: 2px;
    background: var(--yellow);
    border-radius: 2px;
    transform-origin: center;
    transition: transform .35s var(--ease-bounce), opacity .25s, width .3s;
}

/* Burger → X animé */
.nav-burger[aria-expanded="true"] .b1 {
    transform: translateY(7px) rotate(45deg);
}

.nav-burger[aria-expanded="true"] .b2 {
    opacity: 0;
    transform: scaleX(0);
}

.nav-burger[aria-expanded="true"] .b3 {
    transform: translateY(-7px) rotate(-45deg);
}

/* ============================
   MOBILE MENU OVERLAY
============================ */
.mobile-menu {
    position: fixed;
    inset: 0;
    z-index: 300;
    pointer-events: none;
    visibility: hidden;
}

.mobile-menu.open {
    pointer-events: all;
    visibility: visible;
}

/* Backdrop sombre */
.mm-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(14, 14, 14, .55);
    opacity: 0;
    transition: opacity .35s var(--ease-out);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
}

.mobile-menu.open .mm-backdrop {
    opacity: 1;
}

/* Panel latéral */
.mm-panel {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(340px, 88vw);
    background: var(--yellow);
    border-left: 3px solid var(--ink);
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform .4s var(--ease-out);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.mobile-menu.open .mm-panel {
    transform: translateX(0);
}

/* Header du panel */
.mm-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 1.5rem;
    height: 64px;
    border-bottom: 3px solid var(--ink);
    flex-shrink: 0;
}

.mm-brand {
    font-family: var(--f-head);
    font-size: 1rem;
    font-weight: 800;
    color: var(--ink);
    display: flex;
    align-items: center;
    gap: 10px;
}

.mm-close {
    width: 36px;
    height: 36px;
    background: var(--ink);
    border: 2px solid var(--ink);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background .2s, transform .2s var(--ease-bounce);
    flex-shrink: 0;
    color: var(--yellow);
}

.mm-close:hover {
    background: var(--orange);
    transform: rotate(90deg) scale(1.05);
}

/* Navigation links dans le panel */
.mm-nav {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 1rem 0;
}

.mm-link {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px 1.5rem;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 14, 14, .1);
    color: var(--ink);
    transition: background .2s, padding-left .2s var(--ease-bounce);
    position: relative;
    /* Animation d'entrée staggerée */
    opacity: 0;
    transform: translateX(20px);
    transition:
        background .2s,
        padding-left .2s var(--ease-bounce),
        opacity .35s var(--ease-out),
        transform .35s var(--ease-out),
        color .2s;
}

.mobile-menu.open .mm-link {
    opacity: 1;
    transform: translateX(0);
}

/* Délais staggerés */
.mobile-menu.open .mm-link[data-mm-idx="0"] {
    transition-delay: .08s;
}

.mobile-menu.open .mm-link[data-mm-idx="1"] {
    transition-delay: .13s;
}

.mobile-menu.open .mm-link[data-mm-idx="2"] {
    transition-delay: .18s;
}

.mobile-menu.open .mm-link[data-mm-idx="3"] {
    transition-delay: .23s;
}

.mobile-menu.open .mm-link[data-mm-idx="4"] {
    transition-delay: .28s;
}

.mobile-menu.open .mm-link[data-mm-idx="5"] {
    transition-delay: .33s;
}

.mm-link:hover {
    background: var(--orange);
    padding-left: 2rem;
    color: var(--white);
}

.mm-link:last-child {
    border-bottom: none;
}

.mm-num {
    font-family: var(--f-head);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: .1em;
    opacity: .35;
    flex-shrink: 0;
    min-width: 22px;
}

.mm-label {
    font-family: var(--f-head);
    font-size: 1.15rem;
    font-weight: 800;
    flex: 1;
    letter-spacing: -.01em;
}

.mm-arrow {
    font-size: 1.1rem;
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity .2s, transform .2s var(--ease-bounce);
}

.mm-link:hover .mm-arrow {
    opacity: 1;
    transform: translateX(0);
}

/* Footer du panel */
.mm-footer {
    padding: 1.5rem;
    border-top: 3px solid var(--ink);
    flex-shrink: 0;
    /* Safe area iOS */
    padding-bottom: max(1.5rem, env(safe-area-inset-bottom, 1.5rem));
}

.mm-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: var(--ink);
    color: var(--yellow);
    font-family: var(--f-head);
    font-weight: 800;
    font-size: .95rem;
    padding: 15px 20px;
    border-radius: 12px;
    border: 2px solid var(--ink);
    box-shadow: 4px 4px 0 rgba(14, 14, 14, .2);
    text-decoration: none;
    transition: background .2s, transform .2s var(--ease-bounce), box-shadow .2s;
    margin-bottom: 10px;
    letter-spacing: -.01em;
    opacity: 0;
    transform: translateY(12px);
    transition:
        background .2s,
        transform .35s var(--ease-out),
        box-shadow .2s,
        opacity .35s var(--ease-out);
}

.mobile-menu.open .mm-cta {
    opacity: 1;
    transform: translateY(0);
    transition-delay: .4s;
}

.mm-cta:hover {
    background: var(--orange);
    transform: translate(-2px, -2px);
    box-shadow: 6px 6px 0 rgba(14, 14, 14, .25);
}

.mm-avail {
    font-size: .72rem;
    color: rgba(14, 14, 14, .45);
    text-align: center;
    font-weight: 500;
    opacity: 0;
    transition: opacity .3s var(--ease-out);
}

.mobile-menu.open .mm-avail {
    opacity: 1;
    transition-delay: .48s;
}

/* ============================
   RESPONSIVE NAV
============================ */
@media (max-width: 900px) {
    .nav-links {
        display: none;
    }
}

@media (max-width: 768px) {
    .nav {
        padding: 0 1.25rem;
        height: 60px;
    }

    .nav-call {
        display: none;
    }

    .nav-burger {
        display: flex;
    }
}

@media (max-width: 480px) {
    .nav {
        padding: 0 1rem;
        height: 56px;
    }

    .brand-sub {
        display: none;
    }
}

/* Désactiver cursor custom sur tactile */
@media (hover: none) and (pointer: coarse) {

    .nav-burger,
    .mm-close {
        cursor: pointer;
    }
}

/* ============================
   HERO — split diagonal layout
============================ */
.hero {
    min-height: 100vh;
    display: grid;
    grid-template-columns: 55% 45%;
    padding-top: 64px;
    position: relative;
    border-bottom: 3px solid var(--ink);
    overflow: hidden;
}

/* Left half */
.hero-l {
    background: var(--white);
    padding: 5rem 3rem 5rem 3.5rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    border-right: 3px solid var(--ink);
    z-index: 2;
}

/* diagonal clip on right edge */
.hero-l::after {
    content: '';
    position: absolute;
    right: -60px;
    top: 0;
    bottom: 0;
    width: 80px;
    background: var(--white);
    transform: skewX(-4deg);
    z-index: 3;
    border-right: 3px solid var(--ink);
}

/* Right half */
.hero-r {
    background: var(--teal);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: 3rem 3rem 3rem 4rem;
    position: relative;
    overflow: hidden;
}

.hero-r::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, rgba(14, 14, 14, 0.06) 1px, transparent 1px);
    background-size: 24px 24px;
    pointer-events: none;
}

/* Hero badge */
.h-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--lime);
    border: 2px solid var(--ink);
    border-radius: 100px;
    padding: 6px 16px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: 2rem;
    width: fit-content;
    box-shadow: 3px 3px 0 var(--ink);
    animation: popIn .6s .1s var(--ease-bounce) both;
}

.h-badge-dot {
    width: 8px;
    height: 8px;
    background: var(--orange);
    border-radius: 50%;
    animation: blink 1.8s ease infinite;
}

@keyframes blink {
    0%, 100% {
        opacity: 1;
    }

    50% {
        opacity: .3;
    }
}

/* Giant headline */
.hero-title {
    font-family: var(--f-display);
    font-size: clamp(2rem, 6vw, 6rem);
    line-height: .9;
    letter-spacing: -0.03em;
    margin-bottom: 2rem;
    animation: slideUp .8s .2s var(--ease-out) both;
}

.ht-normal {
    display: block;
    color: var(--ink);
}

.ht-italic {
    display: block;
    font-style: italic;
    color: var(--orange);
}

.ht-stroke {
    display: block;
    -webkit-text-stroke: 3px var(--ink);
    color: transparent;
}

.hero-desc {
    font-size: 1rem;
    line-height: 1.75;
    color: #444;
    max-width: 440px;
    margin-bottom: 2.5rem;
    animation: slideUp .8s .35s var(--ease-out) both;
}

.hero-desc strong {
    color: var(--ink);
    font-weight: 600;
}

.hero-btns {
    display: flex;
    gap: 1rem;
    align-items: center;
    animation: slideUp .8s .46s var(--ease-out) both;
    flex-wrap: wrap;
}

.btn-fat {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--orange);
    color: var(--white);
    font-family: var(--f-head);
    font-weight: 700;
    font-size: 0.92rem;
    padding: 16px 30px;
    border-radius: 100px;
    border: 2px solid var(--ink);
    box-shadow: 4px 4px 0 var(--ink);
    transition: transform .2s var(--ease-bounce), box-shadow .2s;
}

.btn-fat:hover {
    transform: translate(-3px, -3px);
    box-shadow: 7px 7px 0 var(--ink);
}

.btn-fat.alt {
    background: var(--white);
    color: var(--ink);
}

.btn-fat.alt:hover {
    background: var(--yellow);
}

/* Hero right content */
.hero-card {
    background: var(--white);
    border: 3px solid var(--ink);
    border-radius: 20px;
    padding: 28px;
    box-shadow: 8px 8px 0 var(--ink);
    width: 100%;
    max-width: 360px;
    animation: popIn .8s .4s var(--ease-bounce) both;
    position: relative;
    z-index: 2;
}

.hc-label {
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: rgba(14, 14, 14, .4);
    margin-bottom: 12px;
}

.hc-tel {
    font-family: var(--f-head);
    font-size: 2rem;
    font-weight: 800;
    color: var(--orange);
    display: block;
    letter-spacing: -.02em;
    margin-bottom: 6px;
    transition: color .2s;
}

.hc-tel:hover {
    color: var(--pink);
}

.hc-sub {
    font-size: 0.78rem;
    color: #777;
    margin-bottom: 24px;
}

.hc-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 24px;
}

.hc-tag {
    font-size: 0.72rem;
    font-weight: 600;
    padding: 5px 12px;
    border-radius: 100px;
    border: 2px solid var(--ink);
}

.hc-tag.y {
    background: var(--yellow);
}

.hc-tag.t {
    background: var(--teal);
}

.hc-tag.l {
    background: var(--lime);
}

.hc-divider {
    height: 2px;
    background: var(--ink);
    opacity: .08;
    margin: 0 0 16px;
}

.hc-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.hc-stat-val {
    font-family: var(--f-head);
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--ink);
    display: block;
}

.hc-stat-lbl {
    font-size: 0.7rem;
    color: #888;
}

/* Floating sticker */
.hero-sticker {
    position: absolute;
    top: 14%;
    right: 4%;
    width: 100px;
    height: 100px;
    background: var(--pink);
    border: 3px solid var(--ink);
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-family: var(--f-head);
    font-size: 0.68rem;
    font-weight: 800;
    text-transform: uppercase;
    line-height: 1.2;
    box-shadow: 4px 4px 0 var(--ink);
    animation: spin 16s linear infinite;
    z-index: 2;
    color: var(--white);
}

@keyframes spin {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

/* Bottom strip */
.hero-strip {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 52px;
    background: var(--yellow);
    border-top: 3px solid var(--ink);
    display: flex;
    align-items: center;
    overflow: hidden;
    z-index: 5;
    grid-column: 1/-1;
}

.strip-track {
    display: flex;
    animation: marquee 22s linear infinite;
    width: max-content;
}

.strip-item {
    font-family: var(--f-head);
    font-weight: 700;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--ink);
    padding: 0 20px;
    white-space: nowrap;
    display: flex;
    align-items: center;
    gap: 20px;
}

.strip-item::after {
    content: '';
    display: inline-block;
    width: 8px;
    height: 8px;
    background: var(--orange);
    border-radius: 50%;
    border: 2px solid var(--ink);
    flex-shrink: 0;
}

@keyframes marquee {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(-50%);
    }
}

/* ============================
   SECTION HELPERS
============================ */
@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(40px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes popIn {
    from {
        opacity: 0;
        transform: scale(0.85);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

[data-anim] {
    opacity: 0;
    transform: translateY(36px);
    transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
}

[data-anim].on {
    opacity: 1;
    transform: none;
}

[data-anim-l] {
    opacity: 0;
    transform: translateX(-40px);
    transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
}

[data-anim-l].on {
    opacity: 1;
    transform: none;
}

[data-anim-r] {
    opacity: 0;
    transform: translateX(40px);
    transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
}

[data-anim-r].on {
    opacity: 1;
    transform: none;
}

.eyebrow {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 1.2rem;
}

.eyebrow-line {
    flex: 1;
    max-width: 32px;
    height: 2px;
    background: currentColor;
}

/* ============================
   SERVICES — bento grid style
============================ */
.services {
    background: var(--white);
    border-bottom: 3px solid var(--ink);
}

.services-head {
    padding: 5rem 3.5rem 3rem;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3rem;
    align-items: end;
    border-bottom: 3px solid var(--ink);
}

.services-head .eyebrow {
    color: var(--orange);
}

.svc-h2 {
    font-family: var(--f-display);
    font-size: clamp(2.8rem, 5vw, 5rem);
    line-height: .95;
    letter-spacing: -0.03em;
    color: var(--ink);
}

.svc-h2 em {
    font-style: italic;
    color: var(--orange);
}

.svc-intro {
    font-size: .95rem;
    line-height: 1.8;
    color: #555;
    align-self: end;
}

/* Bento boxes */
.bento {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-template-rows: auto;
    gap: 0;
}

.bento-cell {
    border-right: 3px solid var(--ink);
    border-bottom: 3px solid var(--ink);
    padding: 2.5rem;
    position: relative;
    overflow: hidden;
    transition: background .3s;
}

.bento-cell:last-child,
.bento-cell:nth-child(3),
.bento-cell:nth-child(4) {
    border-right: none;
}

/* cell spans */
.bc-1 {
    grid-column: span 4;
    background: var(--yellow);
}

.bc-2 {
    grid-column: span 5;
    background: var(--white);
}

.bc-3 {
    grid-column: span 3;
    background: var(--teal);
    border-right: none;
}

.bc-4 {
    grid-column: span 6;
    background: var(--orange);
    border-bottom: none;
}

.bc-5 {
    grid-column: span 3;
    background: var(--lime);
    border-bottom: none;
}

.bc-6 {
    grid-column: span 3;
    background: var(--pink);
    border-right: none;
    border-bottom: none;
}

.bc-1:hover {
    background: #ffe600;
}

.bc-2:hover {
    background: var(--gray);
}

.bc-num {
    font-family: var(--f-head);
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    opacity: .4;
    margin-bottom: 1.5rem;
}

.bc-icon {
    width: 52px;
    height: 52px;
    background: rgba(14, 14, 14, .08);
    border: 2px solid rgba(14, 14, 14, .15);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 1.2rem;
}

.bc-title {
    font-family: var(--f-head);
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--ink);
    margin-bottom: .7rem;
    line-height: 1.2;
}

.bc-3 .bc-title,
.bc-4 .bc-title,
.bc-6 .bc-title {
    color: var(--white);
}

.bc-4 .bc-icon,
.bc-6 .bc-icon {
    background: rgba(255, 255, 255, .15);
    border-color: rgba(255, 255, 255, .2);
}

.bc-4 .bc-icon svg,
.bc-6 .bc-icon svg {
    stroke: var(--white);
}

.bc-3 .bc-icon {
    background: rgba(14, 14, 14, .1);
    border-color: rgba(14, 14, 14, .15);
}

.bc-desc {
    font-size: .82rem;
    line-height: 1.7;
    color: rgba(14, 14, 14, .6);
}

.bc-4 .bc-desc,
.bc-6 .bc-desc {
    color: rgba(255, 255, 255, .75);
}

.bc-3 .bc-desc {
    color: rgba(14, 14, 14, .65);
}

/* Bento large num decoration */
.bc-bignm {
    position: absolute;
    bottom: -20px;
    right: 16px;
    font-family: var(--f-display);
    font-size: 8rem;
    line-height: 1;
    opacity: .06;
    pointer-events: none;
    user-select: none;
}

/* ============================
   PROCESS — horizontal scroll cards
============================ */
.process {
    background: var(--ink);
    border-bottom: 3px solid var(--yellow);
    padding: 6rem 0 4rem;
    overflow: hidden;
}

.process-head {
    padding: 0 3.5rem 4rem;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
}

.process-head .eyebrow {
    color: var(--yellow);
}

.proc-h2 {
    font-family: var(--f-display);
    font-size: clamp(2.8rem, 4.5vw, 4.5rem);
    line-height: .95;
    letter-spacing: -0.03em;
    color: var(--white);
}

.proc-h2 em {
    font-style: italic;
    color: var(--teal);
}

.proc-sub {
    max-width: 320px;
    font-size: .88rem;
    line-height: 1.7;
    color: rgba(255, 255, 255, .45);
    text-align: right;
}

/* Cards row */
.proc-track {
    display: flex;
    gap: 24px;
    padding: 0 3.5rem 3rem;
    overflow-x: auto;
    scrollbar-width: none;
}

.proc-track::-webkit-scrollbar {
    display: none;
}

.proc-card {
    flex-shrink: 0;
    width: 300px;
    border: 2px solid rgba(255, 255, 255, .12);
    border-radius: 20px;
    padding: 32px 28px;
    position: relative;
    overflow: hidden;
    transition: border-color .3s, transform .3s var(--ease-bounce);
}

.proc-card:hover {
    border-color: var(--yellow);
    transform: translateY(-6px);
}

.pc-bg-num {
    position: absolute;
    top: -20px;
    right: 12px;
    font-family: var(--f-display);
    font-size: 9rem;
    font-weight: 900;
    line-height: 1;
    opacity: .06;
    color: var(--white);
    pointer-events: none;
    user-select: none;
}

.pc-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.5rem;
}

.pc-num {
    font-family: var(--f-head);
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    padding: 5px 12px;
    border-radius: 100px;
    border: 1.5px solid currentColor;
}

.pn-y {
    color: var(--yellow);
}

.pn-t {
    color: var(--teal);
}

.pn-o {
    color: var(--orange);
}

.pn-p {
    color: var(--pink);
}

.pc-icon {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.pi-y {
    background: rgba(245, 230, 66, .12);
}

.pi-t {
    background: rgba(0, 212, 200, .12);
}

.pi-o {
    background: rgba(255, 92, 26, .12);
}

.pi-p {
    background: rgba(255, 61, 138, .12);
}

.pc-title {
    font-family: var(--f-head);
    font-size: 1.1rem;
    font-weight: 800;
    color: var(--white);
    margin-bottom: .7rem;
    line-height: 1.25;
}

.pc-desc {
    font-size: .8rem;
    line-height: 1.7;
    color: rgba(255, 255, 255, .45);
}

/* ============================
   TARIFS — bold colorful cards
============================ */
.tarifs {
    background: var(--gray);
    border-bottom: 3px solid var(--ink);
    padding: 6rem 3.5rem;
}

.tarifs-top {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 4rem;
}

.tarifs-top .eyebrow {
    color: var(--pink);
}

.tar-h2 {
    font-family: var(--f-display);
    font-size: clamp(2.8rem, 4.5vw, 4.5rem);
    line-height: .95;
    letter-spacing: -0.03em;
}

.tar-h2 em {
    font-style: italic;
    color: var(--pink);
}

.tar-note {
    max-width: 300px;
    font-size: .82rem;
    line-height: 1.7;
    color: #666;
    text-align: right;
    align-self: flex-end;
}

.tarifs-list {
    display: flex;
    flex-direction: column;
    gap: 0;
    border: 3px solid var(--ink);
    border-radius: 16px;
    overflow: hidden;
}

.tarif-row {
    display: grid;
    grid-template-columns: 60px 1fr auto auto;
    align-items: center;
    gap: 2rem;
    padding: 22px 28px;
    background: var(--white);
    border-bottom: 2px solid var(--ink);
    transition: background .25s;
    position: relative;
    overflow: hidden;
}

.tarif-row:last-child {
    border-bottom: none;
}

.tarif-row:hover {
    background: var(--yellow);
}

.tarif-row::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 5px;
}

.tr-o::before {
    background: var(--orange);
}

.tr-t::before {
    background: var(--teal);
}

.tr-y::before {
    background: var(--yellow);
}

.tr-p::before {
    background: var(--pink);
}

.tr-l::before {
    background: var(--lime);
}

.tr-icon {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    border: 2px solid var(--ink);
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--white);
    flex-shrink: 0;
}

.tr-name {
    font-family: var(--f-head);
    font-size: 1rem;
    font-weight: 700;
    color: var(--ink);
}

.tr-cond {
    font-size: .75rem;
    color: #777;
    margin-top: 3px;
}

.tr-price {
    font-family: var(--f-head);
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--ink);
    text-align: right;
    white-space: nowrap;
}

.tr-from {
    font-size: .65rem;
    font-weight: 400;
    font-family: var(--f-body);
    color: #888;
    display: block;
    text-align: right;
}

.tr-badge {
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    padding: 4px 10px;
    border-radius: 100px;
    border: 2px solid var(--ink);
    white-space: nowrap;
}

/* ============================
   AVIS — magazine style
============================ */
.avis {
    background: var(--teal);
    border-bottom: 3px solid var(--ink);
    padding: 6rem 3.5rem;
    position: relative;
    overflow: hidden;
}

.avis::before {
    content: '"';
    position: absolute;
    top: -60px;
    right: 40px;
    font-family: var(--f-display);
    font-size: 30rem;
    line-height: 1;
    color: rgba(14, 14, 14, .07);
    pointer-events: none;
    user-select: none;
}

.avis-top {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 4rem;
}

.avis-top .eyebrow {
    color: var(--ink);
}

.avis-h2 {
    font-family: var(--f-display);
    font-size: clamp(2.8rem, 4.5vw, 4.5rem);
    line-height: .95;
    letter-spacing: -0.03em;
    color: var(--ink);
}

.avis-h2 em {
    font-style: italic;
}

.avis-score {
    text-align: right;
}

.avis-num {
    font-family: var(--f-head);
    font-size: 4.5rem;
    font-weight: 800;
    color: var(--ink);
    line-height: 1;
    display: block;
}

.avis-stars {
    display: flex;
    gap: 4px;
    justify-content: flex-end;
    margin-bottom: 4px;
}

.avis-stars svg {
    fill: var(--orange);
}

.avis-cnt {
    font-size: .75rem;
    color: rgba(14, 14, 14, .55);
}

.avis-masonry {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr;
    gap: 20px;
}

.avis-card {
    background: var(--white);
    border: 3px solid var(--ink);
    border-radius: 16px;
    padding: 28px;
    box-shadow: 5px 5px 0 var(--ink);
    transition: transform .25s var(--ease-bounce), box-shadow .25s;
}

.avis-card:hover {
    transform: translate(-3px, -3px);
    box-shadow: 8px 8px 0 var(--ink);
}

.avis-card.big {
    grid-row: span 1;
}

.ac-stars {
    display: flex;
    gap: 4px;
    margin-bottom: 14px;
}

.ac-stars svg {
    fill: var(--orange);
}

.ac-service {
    display: inline-block;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    background: var(--yellow);
    border: 2px solid var(--ink);
    border-radius: 100px;
    padding: 3px 10px;
    margin-bottom: 14px;
}

.ac-text {
    font-size: .88rem;
    line-height: 1.75;
    color: #444;
    margin-bottom: 20px;
}

.avis-card.big .ac-text {
    font-size: 1rem;
}

.ac-author {
    display: flex;
    align-items: center;
    gap: 12px;
}

.ac-ava {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 2px solid var(--ink);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--f-head);
    font-weight: 800;
    font-size: .95rem;
    flex-shrink: 0;
}

.aa-y {
    background: var(--yellow);
}

.aa-o {
    background: var(--orange);
    color: var(--white);
}

.aa-t {
    background: var(--teal);
}

.ac-name {
    font-weight: 700;
    font-size: .88rem;
    display: block;
}

.ac-loc {
    font-size: .72rem;
    color: #888;
}

/* ============================
   CONTACT — two tone diagonal
============================ */
.contact {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-bottom: 3px solid var(--ink);
    min-height: 700px;
}

.contact-l {
    background: var(--orange);
    padding: 6rem 3.5rem;
    border-right: 3px solid var(--ink);
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.contact-l::after {
    content: '01\A48\A52\A74\A53';
    white-space: pre;
    position: absolute;
    bottom: -40px;
    right: -20px;
    font-family: var(--f-head);
    font-weight: 800;
    font-size: 7rem;
    line-height: 1;
    color: rgba(255, 255, 255, .08);
    pointer-events: none;
    user-select: none;
    letter-spacing: -0.05em;
}

.contact-l .eyebrow {
    color: var(--yellow);
}

.cl-h2 {
    font-family: var(--f-display);
    font-size: clamp(2.4rem, 4vw, 4rem);
    line-height: .95;
    letter-spacing: -0.03em;
    color: var(--white);
    margin-bottom: 1.2rem;
}

.cl-h2 em {
    font-style: italic;
}

.cl-desc {
    font-size: .92rem;
    line-height: 1.8;
    color: rgba(255, 255, 255, .75);
    margin-bottom: 2.5rem;
    max-width: 400px;
}

.cl-tel-box {
    background: rgba(255, 255, 255, .1);
    border: 2px solid rgba(255, 255, 255, .25);
    border-radius: 14px;
    padding: 22px 24px;
    margin-bottom: 2rem;
    backdrop-filter: blur(8px);
}

.cl-tel-lbl {
    font-size: .65rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .6);
    margin-bottom: 6px;
    font-weight: 600;
}

.cl-tel-num {
    font-family: var(--f-head);
    font-size: 2.2rem;
    font-weight: 800;
    color: var(--white);
    letter-spacing: -.02em;
    display: block;
    transition: color .2s;
}

.cl-tel-num:hover {
    color: var(--yellow);
}

.cl-tel-sub {
    font-size: .75rem;
    color: rgba(255, 255, 255, .55);
}

.cl-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.cl-item {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: .85rem;
    color: rgba(255, 255, 255, .8);
}

.cl-dot {
    width: 8px;
    height: 8px;
    background: var(--lime);
    border-radius: 50%;
    flex-shrink: 0;
    border: 2px solid rgba(255, 255, 255, .3);
}

/* Form side */
.contact-r {
    background: var(--white);
    padding: 6rem 3.5rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.contact-r .eyebrow {
    color: var(--ink);
    opacity: .4;
}

.cr-h3 {
    font-family: var(--f-head);
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--ink);
    margin-bottom: 1.5rem;
    letter-spacing: -.02em;
}

.f-label {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(14, 14, 14, .45);
    display: block;
    margin-bottom: 5px;
}

.f-input, .f-select, .f-textarea {
    width: 100%;
    background: var(--gray);
    border: 2px solid var(--ink);
    border-radius: 8px;
    color: var(--ink);
    font-family: var(--f-body);
    font-size: .88rem;
    padding: 12px 14px;
    outline: none;
    transition: border-color .2s, background .2s;
    margin-bottom: 14px;
}

.f-input::placeholder, .f-textarea::placeholder {
    color: rgba(14, 14, 14, .3);
}

.f-input:focus, .f-select:focus, .f-textarea:focus {
    border-color: var(--orange);
    background: var(--white);
}

.f-select {
    appearance: none;
    cursor: none;
}

.f-textarea {
    resize: vertical;
    min-height: 90px;
}

.f-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.f-submit {
    width: 100%;
    background: var(--ink);
    color: var(--white);
    font-family: var(--f-head);
    font-weight: 700;
    font-size: .88rem;
    padding: 15px 24px;
    border-radius: 100px;
    border: 2px solid var(--ink);
    box-shadow: 4px 4px 0 var(--orange);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    transition: background .2s, transform .2s var(--ease-bounce), box-shadow .2s;
    cursor: none;
    margin-top: 6px;
}

.f-submit:hover {
    background: var(--orange);
    transform: translate(-2px, -2px);
    box-shadow: 6px 6px 0 var(--ink);
}

#fMsg {
    margin-top: 10px;
    font-size: .8rem;
    color: var(--orange);
    font-weight: 600;
}

/* ============================
   CONTACT — ajouts nouveaux champs + carte
============================ */

/* Adresse wrapper pour suggestions */
.f-address-wrapper {
    position: relative;
    margin-bottom: 14px;
}

.f-address-wrapper .f-input {
    margin-bottom: 0;
    padding-right: 36px;
    /* espace pour le spinner */
}

/* Spinner chargement */
.f-addr-spinner {
    display: none;
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    width: 15px;
    height: 15px;
    border: 2px solid rgba(14, 14, 14, .1);
    border-top-color: var(--orange);
    border-radius: 50%;
    animation: addr-spin .65s linear infinite;
    pointer-events: none;
}

.f-address-wrapper.is-loading .f-addr-spinner {
    display: block;
}

@keyframes addr-spin {
    to {
        transform: translateY(-50%) rotate(360deg);
    }
}

/* Dropdown suggestions */
.f-suggestions {
    display: none;
    position: absolute;
    top: calc(100% + 5px);
    left: 0;
    right: 0;
    background: var(--white);
    border: 2px solid var(--ink);
    border-radius: 10px;
    box-shadow: 4px 4px 0 var(--ink);
    z-index: 50;
    max-height: 220px;
    overflow-y: auto;
    list-style: none;
    padding: 5px;
    margin: 0;
    scrollbar-width: thin;
}

.f-suggestions.is-visible {
    display: block;
}

.f-sug-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 9px 11px;
    border-radius: 7px;
    cursor: pointer;
    transition: background .15s;
}

.f-sug-item:hover,
.f-sug-item.is-highlighted {
    background: var(--yellow);
}

.f-sug-texts {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    min-width: 0;
}

.f-sug-main {
    font-size: .84rem;
    font-weight: 600;
    color: var(--ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.f-sug-extra {
    font-size: .7rem;
    color: rgba(14, 14, 14, .45);
}

.f-sug-dept {
    font-family: var(--f-head);
    font-size: .62rem;
    font-weight: 700;
    background: var(--teal);
    border: 1.5px solid var(--ink);
    border-radius: 5px;
    padding: 2px 6px;
    flex-shrink: 0;
    color: var(--ink);
}

/* Hint adresse */
.f-addr-hint {
    font-size: .72rem;
    color: rgba(14, 14, 14, .4);
    margin-top: -8px;
    margin-bottom: 14px;
    line-height: 1.45;
}

.f-addr-hint.is-error {
    color: var(--pink);
    font-weight: 600;
}

/* Input readonly (CP + ville) */
.f-input-readonly {
    opacity: .6;
    cursor: default;
    background: rgba(14, 14, 14, .04) !important;
}

/* Label optionnel */
.f-label-opt {
    font-weight: 400;
    font-size: .62rem;
    text-transform: none;
    letter-spacing: 0;
    opacity: .65;
}

/* RGPD checkbox */
.f-checkbox-label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: .78rem;
    color: rgba(14, 14, 14, .6);
    line-height: 1.55;
    cursor: pointer;
    margin-bottom: 1.2rem;
    margin-top: .4rem;
}

.f-checkbox-label input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.f-checkbox-custom {
    width: 18px;
    height: 18px;
    border: 2px solid rgba(14, 14, 14, .25);
    border-radius: 4px;
    background: var(--gray);
    flex-shrink: 0;
    margin-top: 2px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s, border-color .2s;
}

.f-checkbox-custom svg {
    opacity: 0;
    transform: scale(0);
    transition: opacity .2s, transform .2s var(--ease-bounce);
    stroke: var(--white);
}

.f-checkbox-label input:checked~.f-checkbox-custom {
    background: var(--orange);
    border-color: var(--orange);
}

.f-checkbox-label input:checked~.f-checkbox-custom svg {
    opacity: 1;
    transform: scale(1);
}

/* Feedback message */
.f-feedback-msg {
    margin-top: 10px;
    font-size: .8rem;
    font-weight: 600;
    min-height: 18px;
}

.f-feedback-msg.is-success {
    color: #22c55e;
}

.f-feedback-msg.is-error {
    color: var(--pink);
}

/* ── CARTE dans contact-r ── */
.cr-map-card {
    margin-top: 2rem;
    border: 2px solid var(--ink);
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 4px 4px 0 var(--ink);
}

.cr-map-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: var(--gray);
    border-bottom: 2px solid var(--ink);
}

.cr-map-dot {
    width: 8px;
    height: 8px;
    background: var(--lime);
    border-radius: 50%;
    flex-shrink: 0;
    border: 2px solid var(--ink);
    animation: blink 1.8s ease infinite;
}

.cr-map-title {
    font-family: var(--f-head);
    font-size: .75rem;
    font-weight: 700;
    color: var(--ink);
    flex: 1;
}

.cr-map-badge {
    font-size: .6rem;
    font-weight: 700;
    letter-spacing: .06em;
    background: var(--yellow);
    border: 1.5px solid var(--ink);
    border-radius: 100px;
    padding: 3px 8px;
    color: var(--ink);
}

.cr-map {
    height: 240px;
    background: var(--gray);
}

.cr-map iframe {
    width: 100%;
    height: 100%;
    display: block;
}

.cr-map-caption {
    font-size: .7rem;
    color: rgba(14, 14, 14, .45);
    padding: 9px 16px;
    background: var(--white);
    border-top: 1px solid rgba(14, 14, 14, .08);
}

/* Zones desservies dans contact-l */
.cl-zones {
    margin-top: 2rem;
}

.cl-zones-title {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .55);
    margin-bottom: 10px;
}

.cl-zones-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.cl-zones-tags span {
    font-size: .7rem;
    font-weight: 600;
    background: rgba(255, 255, 255, .1);
    border: 1.5px solid rgba(255, 255, 255, .2);
    border-radius: 100px;
    padding: 4px 10px;
    color: rgba(255, 255, 255, .75);
    transition: background .2s, border-color .2s, color .2s;
}

.cl-zones-tags span:hover {
    background: var(--yellow);
    border-color: var(--ink);
    color: var(--ink);
}

/* Responsive contact ajouts */
@media (max-width: 768px) {
    .cr-map {
        height: 200px;
    }

    .f-row {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 480px) {
    .cr-map {
        height: 170px;
    }
}

/* ============================
   FAQ — accordion on lime bg
============================ */
.faq {
    background: var(--lime);
    border-bottom: 3px solid var(--ink);
    padding: 6rem 3.5rem;
}

.faq-top {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 5rem;
    align-items: start;
}

.faq-l .eyebrow {
    color: var(--ink);
    opacity: .55;
}

.faq-h2 {
    font-family: var(--f-display);
    font-size: clamp(2.8rem, 4vw, 4rem);
    line-height: .95;
    letter-spacing: -0.03em;
    color: var(--ink);
    margin-bottom: 1.5rem;
}

.faq-h2 em {
    font-style: italic;
    color: var(--orange);
}

.faq-l p {
    font-size: .88rem;
    line-height: 1.75;
    color: rgba(14, 14, 14, .6);
    margin-bottom: 2rem;
}

.faq-cta {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--ink);
    color: var(--white);
    font-family: var(--f-head);
    font-weight: 700;
    font-size: .8rem;
    padding: 13px 24px;
    border-radius: 100px;
    border: 2px solid var(--ink);
    box-shadow: 4px 4px 0 rgba(14, 14, 14, .2);
    transition: background .2s, transform .2s var(--ease-bounce), box-shadow .2s;
}

.faq-cta:hover {
    background: var(--orange);
    transform: translate(-2px, -2px);
    box-shadow: 6px 6px 0 rgba(14, 14, 14, .2);
}

/* Accordion */
.acc-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.acc-item {
    border: 2px solid var(--ink);
    border-radius: 12px;
    margin-bottom: 10px;
    overflow: hidden;
    background: var(--white);
    transition: box-shadow .2s;
}

.acc-item.open {
    box-shadow: 5px 5px 0 var(--ink);
}

.acc-btn {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 22px;
    text-align: left;
    cursor: none;
}

.acc-n {
    font-family: var(--f-head);
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .08em;
    color: rgba(14, 14, 14, .3);
    flex-shrink: 0;
}

.acc-q {
    font-family: var(--f-head);
    font-size: .95rem;
    font-weight: 700;
    color: var(--ink);
    flex: 1;
    line-height: 1.3;
}

.acc-ico {
    width: 30px;
    height: 30px;
    background: var(--gray);
    border: 2px solid var(--ink);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background .25s, transform .3s var(--ease-bounce);
}

.acc-item.open .acc-ico {
    background: var(--orange);
    transform: rotate(45deg);
}

.acc-item.open .acc-ico svg {
    stroke: var(--white);
}

.acc-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height .4s var(--ease-out);
}

.acc-item.open .acc-body {
    max-height: 300px;
}

.acc-body p {
    font-size: .85rem;
    line-height: 1.8;
    color: #555;
    padding: 0 22px 20px 52px;
}

/* ============================
   CTA BAND — big full width
============================ */
.cta-band {
    background: var(--pink);
    border-bottom: 3px solid var(--ink);
    padding: 5rem 3.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 3rem;
    position: relative;
    overflow: hidden;
}

.cta-band::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: radial-gradient(circle, rgba(255, 255, 255, .06) 1px, transparent 1px);
    background-size: 28px 28px;
    pointer-events: none;
}

.ctab-left {}

.ctab-eyebrow {
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .65);
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 1rem;
}

.ctab-eyebrow span {
    display: inline-block;
    width: 28px;
    height: 1.5px;
    background: rgba(255, 255, 255, .4);
}

.ctab-h2 {
    font-family: var(--f-display);
    font-size: clamp(2.5rem, 5vw, 5.5rem);
    line-height: .9;
    letter-spacing: -.03em;
    color: var(--white);
}

.ctab-h2 em {
    font-style: italic;
}

.ctab-right {
    display: flex;
    flex-direction: column;
    gap: 14px;
    align-items: flex-end;
    flex-shrink: 0;
}

.btn-giant {
    display: flex;
    align-items: center;
    gap: 14px;
    background: var(--yellow);
    color: var(--ink);
    font-family: var(--f-head);
    font-size: 1.3rem;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 100px;
    border: 3px solid var(--ink);
    box-shadow: 6px 6px 0 var(--ink);
    transition: transform .2s var(--ease-bounce), box-shadow .2s;
    letter-spacing: -.01em;
    position: relative;
    overflow: hidden;
}

.btn-giant::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 100px;
    animation: ripplePulse 2.5s ease-in-out infinite;
}

@keyframes ripplePulse {
    0% {
        box-shadow: 0 0 0 0 rgba(245, 230, 66, .5);
    }

    70% {
        box-shadow: 0 0 0 20px rgba(245, 230, 66, 0);
    }

    100% {
        box-shadow: 0 0 0 0 rgba(245, 230, 66, 0);
    }
}

.btn-giant:hover {
    transform: translate(-4px, -4px);
    box-shadow: 10px 10px 0 var(--ink);
}

.ctab-link {
    color: rgba(255, 255, 255, .7);
    font-size: .85rem;
    font-weight: 500;
    border-bottom: 1px solid rgba(255, 255, 255, .3);
    padding-bottom: 2px;
    transition: color .2s, border-color .2s;
}

.ctab-link:hover {
    color: var(--white);
    border-color: var(--white);
}

/* ============================
   FOOTER
============================ */
.footer {
    background: var(--ink);
    padding: 4rem 3.5rem 2rem;
}

.footer-top {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 5rem;
    padding-bottom: 3rem;
    border-bottom: 1px solid rgba(255, 255, 255, .08);
    margin-bottom: 2rem;
}

.ft-brand-name {
    font-family: var(--f-head);
    font-size: 1.3rem;
    font-weight: 800;
    color: var(--white);
    margin-bottom: 10px;
    letter-spacing: -.02em;
}

.ft-brand-name span {
    color: var(--teal);
}

.ft-desc {
    font-size: .8rem;
    line-height: 1.7;
    color: rgba(255, 255, 255, .38);
    margin-bottom: 18px;
}

.ft-tel {
    font-family: var(--f-head);
    font-size: .9rem;
    font-weight: 700;
    color: var(--yellow);
    letter-spacing: .02em;
    transition: color .2s;
}

.ft-tel:hover {
    color: var(--teal);
}

.footer-cols {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 3rem;
}

.fc-title {
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .28);
    margin-bottom: 14px;
}

.footer-cols ul {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.footer-cols a {
    font-size: .83rem;
    color: rgba(255, 255, 255, .48);
    transition: color .2s;
}

.footer-cols a:hover {
    color: var(--white);
}

.footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 2rem;
}

.fb-copy {
    font-size: .75rem;
    color: rgba(255, 255, 255, .22);
}

.fb-credit {
    font-size: .75rem;
    color: rgba(255, 255, 255, .22);
}

.fb-credit a {
    color: var(--teal);
    transition: color .2s;
}

.fb-credit a:hover {
    color: var(--white);
}

.fb-legal {
    display: flex;
    gap: 2rem;
}

.fb-legal a {
    font-size: .75rem;
    color: rgba(255, 255, 255, .22);
    transition: color .2s;
}

.fb-legal a:hover {
    color: var(--white);
}

/* ============================
   FLOAT ACTIONS
============================ */
.floats {
    position: fixed;
    bottom: 1.75rem;
    right: 1.75rem;
    display: flex;
    flex-direction: column;
    gap: 10px;
    z-index: 90;
}

.f-call {
    width: 56px;
    height: 56px;
    background: var(--orange);
    border: 3px solid var(--ink);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 4px 4px 0 var(--ink);
    transition: background .2s, transform .2s var(--ease-bounce), box-shadow .2s;
}

.f-call:hover {
    background: var(--pink);
    transform: translate(-2px, -2px);
    box-shadow: 6px 6px 0 var(--ink);
}

.f-top {
    width: 42px;
    height: 42px;
    background: var(--ink);
    border: 2px solid rgba(255, 255, 255, .15);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s, transform .2s var(--ease-bounce);
}

.f-top:hover {
    background: var(--yellow);
    transform: translateY(-3px);
}

.f-top:hover svg {
    stroke: var(--ink);
}

/* ============================
   RESPONSIVE — Tablet (max 1024px)
============================ */
@media (max-width: 1024px) {

    /* NAV */
    .nav {
        padding: 0 1.5rem;
    }

    .nav-links {
        gap: 1.4rem;
    }

    .nav-links a {
        font-size: 0.72rem;
    }

    /* HERO */
    .hero {
        grid-template-columns: 1fr 1fr;
    }

    .hero-l {
        padding: 4rem 2rem 5rem 2.5rem;
    }

    .hero-r {
        padding: 3rem 2rem 3rem 2.5rem;
    }

    .hero-title {
        font-size: clamp(2rem, 5vw, 4rem);
    }

    .hero-card {
        max-width: 100%;
    }

    .hc-tel {
        font-size: 1.6rem;
    }

    .hero-sticker {
        width: 84px;
        height: 84px;
        font-size: 0.6rem;
        top: 10%;
        right: 2%;
    }

    /* SERVICES */
    .services-head {
        padding: 4rem 2rem 2.5rem;
        gap: 2rem;
    }

    .bento-cell {
        padding: 2rem;
    }

    .bc-1 {
        grid-column: span 6;
    }

    .bc-2 {
        grid-column: span 6;
        border-right: none;
    }

    .bc-3 {
        grid-column: span 4;
        border-right: 3px solid var(--ink);
    }

    .bc-4 {
        grid-column: span 8;
        border-bottom: 3px solid var(--ink);
    }

    .bc-5 {
        grid-column: span 6;
        border-bottom: none;
    }

    .bc-6 {
        grid-column: span 6;
        border-bottom: none;
        border-right: none;
    }

    /* PROCESS */
    .process {
        padding: 5rem 0 3rem;
    }

    .process-head {
        padding: 0 2rem 3rem;
        flex-direction: column;
        align-items: flex-start;
        gap: 1rem;
    }

    .proc-sub {
        text-align: left;
        max-width: 100%;
    }

    .proc-track {
        padding: 0 2rem 2rem;
        gap: 16px;
    }

    .proc-card {
        width: 270px;
    }

    /* TARIFS */
    .tarifs {
        padding: 5rem 2rem;
    }

    .tarifs-top {
        flex-direction: column;
        align-items: flex-start;
        gap: 1.5rem;
        margin-bottom: 3rem;
    }

    .tar-note {
        text-align: left;
        max-width: 100%;
    }

    .tarif-row {
        grid-template-columns: 50px 1fr auto;
        gap: 1rem;
    }

    .tr-price {
        grid-column: 3;
        grid-row: 1;
    }

    .tr-badge {
        grid-column: 2;
        grid-row: 2;
        justify-self: start;
    }

    /* AVIS */
    .avis {
        padding: 5rem 2rem;
    }

    .avis-masonry {
        grid-template-columns: 1fr 1fr;
        gap: 16px;
    }

    .avis-card.big {
        grid-column: span 2;
    }

    /* CONTACT */
    .contact {
        grid-template-columns: 1fr 1fr;
    }

    .contact-l,
    .contact-r {
        padding: 4rem 2rem;
    }

    .cl-tel-num {
        font-size: 1.8rem;
    }

    /* FAQ */
    .faq {
        padding: 5rem 2rem;
    }

    .faq-top {
        gap: 3rem;
    }

    /* CTA */
    .cta-band {
        padding: 4rem 2rem;
        gap: 2rem;
    }

    .ctab-h2 {
        font-size: clamp(2.2rem, 4vw, 4rem);
    }

    .btn-giant {
        font-size: 1.1rem;
        padding: 16px 28px;
    }

    /* FOOTER */
    .footer {
        padding: 3rem 2rem 1.5rem;
    }

    .footer-top {
        grid-template-columns: 220px 1fr;
        gap: 3rem;
    }

    .footer-cols {
        gap: 2rem;
    }
}

/* ============================
   RESPONSIVE — Mobile Large (max 768px)
============================ */
@media (max-width: 768px) {

    /* NAV */
    .nav {
        padding: 0 1.25rem;
        height: 58px;
    }

    .nav-links {
        display: none;
    }

    .nav-brand .brand-sub {
        display: none;
    }

    .nav-call {
        font-size: 0.75rem;
        padding: 9px 16px;
    }

    /* HERO — stack vertically */
    .hero {
        grid-template-columns: 1fr;
        grid-template-rows: auto auto;
        padding-top: 58px;
        min-height: auto;
    }

    .hero-l {
        border-right: none;
        border-bottom: 3px solid var(--ink);
        padding: 3rem 1.5rem 4rem;
    }

    .hero-l::after {
        display: none;
    }

    .hero-r {
        padding: 3rem 1.5rem;
        align-items: stretch;
    }

    .hero-title {
        font-size: clamp(2.8rem, 10vw, 4.5rem);
        margin-bottom: 1.5rem;
    }

    .ht-stroke {
        -webkit-text-stroke: 2px var(--ink);
    }

    .hero-desc {
        font-size: 0.92rem;
        margin-bottom: 2rem;
    }

    .hero-btns {
        flex-direction: column;
        align-items: stretch;
    }

    .btn-fat {
        justify-content: center;
        padding: 15px 24px;
    }

    .hero-card {
        max-width: 100%;
    }

    .hc-tel {
        font-size: 1.5rem;
    }

    .hc-stats {
        grid-template-columns: repeat(4, 1fr);
        gap: 8px;
    }

    .hc-stat-val {
        font-size: 1.1rem;
    }

    .hero-sticker {
        width: 72px;
        height: 72px;
        font-size: 0.55rem;
        top: 8%;
        right: 3%;
    }

    .hero-strip {
        height: 44px;
    }

    /* SERVICES */
    .services-head {
        grid-template-columns: 1fr;
        padding: 3.5rem 1.5rem 2rem;
        gap: 1.5rem;
    }

    .bento {
        grid-template-columns: 1fr 1fr;
    }

    .bc-1,
    .bc-2,
    .bc-3,
    .bc-4,
    .bc-5,
    .bc-6 {
        grid-column: span 1;
        border-right: 3px solid var(--ink);
        border-bottom: 3px solid var(--ink);
    }

    .bc-2,
    .bc-4,
    .bc-6 {
        border-right: none;
    }

    .bc-5,
    .bc-6 {
        border-bottom: none;
    }

    .bento-cell {
        padding: 1.5rem;
    }

    .bc-bignm {
        font-size: 5rem;
    }

    /* PROCESS */
    .process {
        padding: 4rem 0 2.5rem;
    }

    .process-head {
        padding: 0 1.5rem 2.5rem;
    }

    .proc-track {
        padding: 0 1.5rem 2rem;
    }

    .proc-card {
        width: 260px;
        padding: 24px 20px;
    }

    /* TARIFS */
    .tarifs {
        padding: 4rem 1.5rem;
    }

    .tarif-row {
        grid-template-columns: 44px 1fr;
        gap: 0.75rem 1rem;
        padding: 16px 16px 16px 12px;
    }

    .tr-icon {
        grid-row: span 2;
        align-self: center;
    }

    .tr-price {
        grid-column: 2;
        grid-row: auto;
        text-align: left;
        font-size: 1.3rem;
    }

    .tr-from {
        display: inline;
        margin-left: 4px;
    }

    .tr-badge {
        grid-column: 2;
        grid-row: auto;
        justify-self: start;
        margin-top: 4px;
    }

    /* AVIS */
    .avis {
        padding: 4rem 1.5rem;
    }

    .avis-top {
        flex-direction: column;
        align-items: flex-start;
        gap: 1.5rem;
        margin-bottom: 2.5rem;
    }

    .avis-score {
        text-align: left;
    }

    .avis-stars {
        justify-content: flex-start;
    }

    .avis-masonry {
        grid-template-columns: 1fr;
    }

    .avis-card.big {
        grid-column: span 1;
    }

    /* CONTACT */
    .contact {
        grid-template-columns: 1fr;
    }

    .contact-l {
        border-right: none;
        border-bottom: 3px solid var(--ink);
        padding: 4rem 1.5rem;
    }

    .contact-r {
        padding: 4rem 1.5rem;
    }

    .cl-tel-num {
        font-size: 1.7rem;
    }

    .f-row {
        grid-template-columns: 1fr;
    }

    /* FAQ */
    .faq {
        padding: 4rem 1.5rem;
    }

    .faq-top {
        grid-template-columns: 1fr;
        gap: 2.5rem;
    }

    .acc-body p {
        padding: 0 16px 16px 16px;
    }

    /* CTA */
    .cta-band {
        flex-direction: column;
        align-items: flex-start;
        padding: 3.5rem 1.5rem;
        gap: 2.5rem;
    }

    .ctab-right {
        align-items: stretch;
        width: 100%;
    }

    .btn-giant {
        justify-content: center;
        font-size: 1.1rem;
        padding: 18px 24px;
    }

    .ctab-link {
        text-align: center;
    }

    /* FOOTER */
    .footer {
        padding: 3rem 1.5rem 1.5rem;
    }

    .footer-top {
        grid-template-columns: 1fr;
        gap: 2.5rem;
    }

    .footer-cols {
        grid-template-columns: repeat(3, 1fr);
        gap: 1.5rem;
    }

    .footer-bottom {
        flex-direction: column;
        align-items: flex-start;
        gap: 1rem;
    }

    .fb-legal {
        gap: 1.2rem;
    }

    /* FLOATS */
    .floats {
        bottom: 1.25rem;
        right: 1.25rem;
    }
}

/* ============================
   RESPONSIVE — Mobile Small (max 480px)
============================ */
@media (max-width: 480px) {

    /* NAV */
    .nav-call span {
        display: none;
    }

    .nav-call {
        padding: 9px 14px;
    }

    /* HERO */
    .hero-l {
        padding: 2.5rem 1.25rem 3.5rem;
    }

    .hero-r {
        padding: 2rem 1.25rem 3rem;
    }

    .hero-title {
        font-size: clamp(2.4rem, 12vw, 3.5rem);
    }

    .h-badge {
        font-size: 0.65rem;
        padding: 5px 12px;
    }

    .hc-stats {
        grid-template-columns: 1fr 1fr;
        gap: 12px;
    }

    .hc-stat-val {
        font-size: 1.3rem;
    }

    .hero-sticker {
        display: none;
    }

    /* SERVICES */
    .services-head {
        padding: 2.5rem 1.25rem 1.5rem;
    }

    .bento {
        grid-template-columns: 1fr;
    }

    .bc-1,
    .bc-2,
    .bc-3,
    .bc-4,
    .bc-5,
    .bc-6 {
        grid-column: span 1;
        border-right: none;
        border-bottom: 3px solid var(--ink);
    }

    .bc-6 {
        border-bottom: none;
    }

    .bento-cell {
        padding: 1.5rem 1.25rem;
    }

    /* PROCESS */
    .process-head {
        padding: 0 1.25rem 2rem;
    }

    .proc-track {
        padding: 0 1.25rem 1.5rem;
        gap: 12px;
    }

    .proc-card {
        width: 82vw;
        max-width: 300px;
    }

    /* TARIFS */
    .tarifs {
        padding: 3.5rem 1.25rem;
    }

    .tarif-row {
        padding: 14px 12px;
    }

    .tr-name {
        font-size: 0.88rem;
    }

    .tr-price {
        font-size: 1.15rem;
    }

    /* AVIS */
    .avis {
        padding: 3.5rem 1.25rem;
    }

    .avis-num {
        font-size: 3.5rem;
    }

    /* CONTACT */
    .contact-l,
    .contact-r {
        padding: 3rem 1.25rem;
    }

    .cl-h2 {
        font-size: 2.2rem;
    }

    .cl-tel-num {
        font-size: 1.5rem;
    }

    /* FAQ */
    .faq {
        padding: 3rem 1.25rem;
    }

    .faq-h2 {
        font-size: 2.5rem;
    }

    .acc-btn {
        padding: 15px 16px;
        gap: 10px;
    }

    .acc-q {
        font-size: 0.88rem;
    }

    /* CTA */
    .cta-band {
        padding: 3rem 1.25rem;
    }

    .ctab-h2 {
        font-size: clamp(2rem, 9vw, 3rem);
    }

    .btn-giant {
        font-size: 1rem;
        padding: 16px 20px;
    }

    /* FOOTER */
    .footer {
        padding: 2.5rem 1.25rem 1.25rem;
    }

    .footer-cols {
        grid-template-columns: 1fr 1fr;
        gap: 2rem;
    }

    .footer-cols .footer-col:last-child {
        grid-column: span 2;
    }

    /* FLOAT */
    .f-call {
        width: 50px;
        height: 50px;
    }

    .f-top {
        width: 38px;
        height: 38px;
    }
}

/* ============================
   RESPONSIVE — Very Small (max 360px)
============================ */
@media (max-width: 360px) {

    .hero-title {
        font-size: 2.2rem;
    }

    .hc-tel {
        font-size: 1.3rem;
    }

    .nav-call {
        font-size: 0.7rem;
        padding: 8px 12px;
        gap: 5px;
    }

    .btn-fat {
        font-size: 0.82rem;
        padding: 13px 18px;
    }

    .bento-cell {
        padding: 1.25rem 1rem;
    }

    .proc-card {
        width: 88vw;
    }

    .footer-cols {
        grid-template-columns: 1fr;
    }

    .footer-cols .footer-col:last-child {
        grid-column: span 1;
    }
}

/* ============================
   iOS / ANDROID FIXES
============================ */

/* Prevent font size inflation on iOS rotation */
html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

/* Smooth scroll for iOS */
html {
    -webkit-overflow-scrolling: touch;
}

/* Remove tap highlight on Android/iOS */
a, button {
    -webkit-tap-highlight-color: transparent;
    tap-highlight-color: transparent;
}

/* Fix input zoom on iOS (font-size must be >= 16px) */
@media (max-width: 768px) {

    .f-input,
    .f-select,
    .f-textarea {
        font-size: 16px;
    }
}

/* Fix sticky hover states on touch devices */
@media (hover: none) {

    .bento-cell:hover,
    .tarif-row:hover,
    .avis-card:hover,
    .proc-card:hover,
    .btn-fat:hover,
    .btn-giant:hover,
    .nav-call:hover,
    .f-call:hover,
    .f-submit:hover,
    .faq-cta:hover {
        transform: none;
        box-shadow: inherit;
        background: inherit;
    }

    .nav-links a::after {
        display: none;
    }
}

/* Safe area insets — iPhone notch / Dynamic Island */
@supports (padding: max(0px)) {
    .nav {
        padding-left: max(1.25rem, env(safe-area-inset-left));
        padding-right: max(1.25rem, env(safe-area-inset-right));
    }

    .floats {
        bottom: max(1.25rem, env(safe-area-inset-bottom));
        right: max(1.25rem, env(safe-area-inset-right));
    }

    .footer {
        padding-bottom: max(1.5rem, env(safe-area-inset-bottom));
    }
}

/* Disable custom cursor on touch devices */
@media (hover: none) and (pointer: coarse) {
    body {
        cursor: auto;
    }

    #cur {
        display: none;
    }

    button {
        cursor: pointer;
    }
}

/* Fix marquee performance on mobile */
@media (max-width: 768px) {
    .strip-track {
        will-change: transform;
        -webkit-transform: translateZ(0);
        transform: translateZ(0);
    }
}

/* Prevent horizontal overflow globally */
body {
    overflow-x: hidden;
}

main {
    overflow-x: hidden;
}

/* ============================
   LEGAL PAGES — CSS commun
   mentions-legales / cgu / confidentialite
============================ */

/* ── Layout principal ── */
.legal-main {
    padding-top: 64px;
    /* hauteur nav */
    min-height: 100vh;
    background: var(--white);
}

.legal-wrapper {
    max-width: 1120px;
    margin: 0 auto;
    padding: 0 3.5rem 6rem;
}

/* ── Breadcrumb ── */
.legal-breadcrumb {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 1.5rem 0 0;
    font-size: .72rem;
    color: rgba(14, 14, 14, .4);
    font-weight: 500;
}

.legal-breadcrumb a {
    color: var(--orange);
    text-decoration: none;
    transition: color .2s;
}

.legal-breadcrumb a:hover {
    color: var(--ink);
}

.legal-breadcrumb span[aria-hidden] {
    opacity: .4;
}

/* ── Hero ── */
.legal-hero {
    padding: 3rem 0 3.5rem;
    border-bottom: 3px solid var(--ink);
    margin-bottom: 3.5rem;
}

.legal-hero .tag {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--yellow);
    border: 2px solid var(--ink);
    border-radius: 100px;
    padding: 5px 14px;
    font-family: var(--f-head);
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    margin-bottom: 1.4rem;
    box-shadow: 3px 3px 0 var(--ink);
}

.legal-title {
    font-family: var(--f-display);
    font-size: clamp(2.5rem, 5vw, 5rem);
    line-height: .92;
    letter-spacing: -0.03em;
    color: var(--ink);
    margin-bottom: 1rem;
}

.legal-title em {
    font-style: italic;
    color: var(--orange);
}

.legal-update {
    display: inline-block;
    font-size: .7rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(14, 14, 14, .4);
    background: var(--gray);
    border: 1.5px solid rgba(14, 14, 14, .12);
    border-radius: 100px;
    padding: 4px 12px;
    margin-bottom: 1.4rem;
}

.legal-intro {
    font-size: .95rem;
    line-height: 1.85;
    color: rgba(14, 14, 14, .6);
    max-width: 680px;
}

.legal-intro strong {
    color: var(--ink);
    font-weight: 600;
}

/* ── Grid : sidebar + content ── */
.legal-grid {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 4rem;
    align-items: start;
}

/* ── Sidebar ── */
.legal-sidebar {
    position: sticky;
    top: 84px;
}

.legal-sidebar-inner {
    background: var(--gray);
    border: 2px solid var(--ink);
    border-radius: 14px;
    padding: 1.5rem;
    box-shadow: 4px 4px 0 var(--ink);
}

.legal-sidebar-title {
    font-family: var(--f-head);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: rgba(14, 14, 14, .35);
    margin-bottom: 1rem;
}

.legal-nav {
    list-style: none;
    padding: 0;
    margin: 0 0 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.legal-nav li a {
    display: block;
    font-size: .78rem;
    font-weight: 500;
    color: rgba(14, 14, 14, .6);
    text-decoration: none;
    padding: 7px 10px;
    border-radius: 7px;
    transition: background .15s, color .15s;
    line-height: 1.3;
}

.legal-nav li a:hover {
    background: var(--yellow);
    color: var(--ink);
}

.legal-nav li a.active {
    background: var(--orange);
    color: var(--white);
    font-weight: 600;
}

.legal-sidebar-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--ink);
    color: var(--yellow);
    font-family: var(--f-head);
    font-weight: 700;
    font-size: .78rem;
    padding: 11px 16px;
    border-radius: 10px;
    border: 2px solid var(--ink);
    box-shadow: 3px 3px 0 rgba(14, 14, 14, .2);
    text-decoration: none;
    transition: background .2s, transform .2s var(--ease-bounce), box-shadow .2s;
    width: 100%;
    letter-spacing: .01em;
}

.legal-sidebar-cta:hover {
    background: var(--orange);
    transform: translate(-2px, -2px);
    box-shadow: 5px 5px 0 rgba(14, 14, 14, .2);
}

/* ── Content ── */
.legal-content {
    min-width: 0;
}

.legal-section {
    padding-bottom: 2.5rem;
    margin-bottom: 2.5rem;
    border-bottom: 1.5px solid rgba(14, 14, 14, .07);
}

.legal-section:last-of-type {
    border-bottom: none;
}

.legal-section h2 {
    font-family: var(--f-head);
    font-size: 1.2rem;
    font-weight: 800;
    color: var(--ink);
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 12px;
    letter-spacing: -.02em;
}

.legal-num {
    font-family: var(--f-head);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .1em;
    background: var(--orange);
    color: var(--white);
    border-radius: 6px;
    padding: 3px 8px;
    flex-shrink: 0;
}

.legal-section p {
    font-size: .9rem;
    line-height: 1.9;
    color: rgba(14, 14, 14, .65);
    margin-bottom: .9rem;
}

.legal-section p:last-child {
    margin-bottom: 0;
}

.legal-section p strong {
    color: var(--ink);
    font-weight: 600;
}

.legal-section a {
    color: var(--orange);
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color .2s;
}

.legal-section a:hover {
    color: var(--pink);
}

.legal-list {
    list-style: none;
    padding: 0;
    margin: .5rem 0 1rem;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.legal-list li {
    font-size: .88rem;
    line-height: 1.7;
    color: rgba(14, 14, 14, .65);
    padding-left: 20px;
    position: relative;
}

.legal-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 10px;
    width: 7px;
    height: 7px;
    background: var(--orange);
    border-radius: 50%;
    border: 1.5px solid var(--ink);
}

.legal-list li strong {
    color: var(--ink);
    font-weight: 600;
}

.legal-list a {
    color: var(--orange);
}

/* Bouton retour accueil */
.legal-btn-home {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--ink);
    color: var(--white);
    font-family: var(--f-head);
    font-weight: 700;
    font-size: .85rem;
    padding: 13px 24px;
    border-radius: 100px;
    border: 2px solid var(--ink);
    box-shadow: 4px 4px 0 var(--orange);
    text-decoration: none;
    transition: background .2s, transform .2s var(--ease-bounce), box-shadow .2s;
    margin-top: 2rem;
}

.legal-btn-home:hover {
    background: var(--orange);
    transform: translate(-2px, -2px);
    box-shadow: 6px 6px 0 var(--ink);
}

/* ── RESPONSIVE ── */
@media (max-width: 1024px) {
    .legal-wrapper {
        padding: 0 2rem 5rem;
    }

    .legal-grid {
        grid-template-columns: 210px 1fr;
        gap: 2.5rem;
    }
}

@media (max-width: 768px) {
    .legal-main {
        padding-top: 60px;
    }

    .legal-wrapper {
        padding: 0 1.5rem 4rem;
    }

    .legal-grid {
        grid-template-columns: 1fr;
        gap: 2rem;
    }

    .legal-sidebar {
        position: static;
        order: -1;
    }

    .legal-sidebar-inner {
        display: grid;
        grid-template-columns: 1fr auto;
        grid-template-rows: auto auto;
        gap: 1rem;
        align-items: start;
    }

    .legal-sidebar-title {
        grid-column: 1 / -1;
        margin-bottom: 0;
    }

    .legal-nav {
        margin-bottom: 0;
        grid-row: 2;
        flex-direction: row;
        flex-wrap: wrap;
        gap: 4px;
    }

    .legal-nav li a {
        padding: 5px 10px;
        font-size: .72rem;
        white-space: nowrap;
    }

    .legal-sidebar-cta {
        grid-row: 2;
        grid-column: 2;
        align-self: start;
        white-space: nowrap;
        width: auto;
    }

    .legal-title {
        font-size: clamp(2rem, 8vw, 3rem);
    }

    .legal-hero {
        padding: 2rem 0 2.5rem;
        margin-bottom: 2.5rem;
    }
}

@media (max-width: 480px) {
    .legal-wrapper {
        padding: 0 1.25rem 3rem;
    }

    .legal-sidebar-inner {
        grid-template-columns: 1fr;
    }

    .legal-sidebar-cta {
        grid-row: auto;
        grid-column: 1;
        width: 100%;
        justify-content: center;
    }

    .legal-nav {
        grid-column: 1;
    }

    .legal-section h2 {
        font-size: 1.05rem;
    }

    .legal-title {
        font-size: clamp(1.8rem, 9vw, 2.5rem);
    }
}