/* Public color themes. The existing light appearance remains the default. */
.color-theme-toggle {
    display: inline-flex;
    width: 3.5rem;
    height: 2.75rem;
    flex: 0 0 3.5rem;
    align-items: center;
    justify-content: center;
    border: 0;
    padding: 0;
    background: transparent;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
}

.color-theme-toggle__track {
    position: relative;
    display: block;
    width: 3.25rem;
    height: 1.875rem;
    border: 1px solid rgb(75 98 128 / 0.28);
    border-radius: 999px;
    background: #dbe4f0;
    box-shadow: inset 0 1px 2px rgb(15 35 65 / 0.08);
    transition: background-color 180ms ease, border-color 180ms ease, transform 100ms ease-out;
}

.color-theme-toggle__thumb {
    position: absolute;
    top: 2px;
    left: 2px;
    display: grid;
    width: 1.5rem;
    height: 1.5rem;
    place-items: center;
    border-radius: 50%;
    background: #ffffff;
    color: #9a6300;
    box-shadow: 0 2px 5px rgb(15 35 65 / 0.22);
    transform: translateX(0);
    transition: color 180ms ease, transform 220ms cubic-bezier(0.2, 0.82, 0.24, 1);
}

.color-theme-toggle__icon { display: block; grid-area: 1 / 1; pointer-events: none; }
.color-theme-toggle__icon--dark { display: none; }

.color-theme-toggle[aria-checked="true"] .color-theme-toggle__track {
    border-color: #1459c7;
    background: #1459c7;
}

.color-theme-toggle[aria-checked="true"] .color-theme-toggle__thumb {
    color: #1459c7;
    transform: translateX(1.375rem);
}

.color-theme-toggle[aria-checked="true"] .color-theme-toggle__icon--light { display: none; }
.color-theme-toggle[aria-checked="true"] .color-theme-toggle__icon--dark { display: block; }
.color-theme-toggle:hover .color-theme-toggle__track { border-color: #6f8caf; }
.color-theme-toggle:active .color-theme-toggle__track { transform: scale(0.96); }
.color-theme-toggle:focus-visible { outline: 0; }
.color-theme-toggle:focus-visible .color-theme-toggle__track {
    box-shadow: 0 0 0 3px rgb(20 89 199 / 0.3), inset 0 1px 2px rgb(15 35 65 / 0.08);
}

.site-header__actions,
.topbar-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.55rem;
}

.site-header__actions {
    position: relative;
    z-index: 2;
    grid-column: 3;
    justify-self: end;
}

.site-header__actions .header-portal-link {
    position: static;
    inset: auto;
    transform: none;
}

.topbar-actions {
    justify-self: end;
}

@media (min-width: 60.01rem) {
    .site-header .site-header__inner {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }

    .topbar {
        grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    }
}

@media (max-width: 60rem) {
    .site-header .site-header__inner {
        grid-template-columns: auto minmax(0, 1fr) auto auto;
        gap: 0.5rem;
    }

    .site-header__actions {
        grid-column: 3;
        margin-left: auto;
    }

    .site-header .menu-button { grid-column: 4; }
    .topbar { gap: 0.5rem; }
    .topbar-actions { margin-left: auto; }
    .topbar-actions .topbar-portal { display: none; }
}

/* A single logo is rendered. Only its monochrome treatment changes in dark mode. */
html[data-color-theme="dark"] .doli-brand-logo { filter: brightness(0) invert(1); }

html[data-color-theme="dark"],
html[data-color-theme="dark"] body.theme--apple-mix {
    --canvas: #101722;
    --surface: #172234;
    --surface-strong: #1d2b40;
    --surface-mint: #162b2d;
    --surface-sky: #16283a;
    --surface-sand: #2a251c;
    --surface-coral: #2b211f;
    --ink: #edf3fc;
    --ink-strong: #f7f9fe;
    --ink-soft: #a8b7cc;
    --line: rgb(151 177 211 / 0.22);
    --line-strong: rgb(168 192 224 / 0.4);
    --accent: #79aeff;
    --accent-strong: #9bc2ff;
    --accent-soft: #1c3150;
    --on-accent: #ffffff;
    --shadow: 0 1.5rem 4rem rgb(0 0 0 / 0.3);
    --shadow-soft: 0 0.75rem 2.4rem rgb(0 0 0 / 0.22);
}

html[data-color-theme="dark"] body,
html[data-color-theme="dark"] body.theme--apple-mix {
    background:
        radial-gradient(circle at 7% 8%, rgb(50 115 211 / 0.16), transparent 29rem),
        radial-gradient(circle at 91% 20%, rgb(0 137 173 / 0.11), transparent 31rem),
        linear-gradient(180deg, #111a27 0%, #101722 58%, #121a26 100%);
    color: var(--ink);
}

html[data-color-theme="dark"] body.theme--apple-mix h1,
html[data-color-theme="dark"] body.theme--apple-mix h2,
html[data-color-theme="dark"] body.theme--apple-mix h3,
html[data-color-theme="dark"] .project-title,
html[data-color-theme="dark"] .project-panel-title {
    color: var(--ink-strong);
}

html[data-color-theme="dark"] a:hover { color: var(--accent); }
html[data-color-theme="dark"] ::selection { background: #315f9f; color: #ffffff; }
html[data-color-theme="dark"] :focus-visible { outline-color: #89b8ff; }

html[data-color-theme="dark"] .color-theme-toggle:hover .color-theme-toggle__track {
    border-color: #89b8ff;
}

/* Navigation */
html[data-color-theme="dark"] .site-header,
html[data-color-theme="dark"] .theme--apple-mix .site-header,
html[data-color-theme="dark"] .topbar {
    border-bottom-color: rgb(151 177 211 / 0.2);
    background: rgb(16 23 34 / 0.78);
    box-shadow: 0 0.45rem 1.6rem rgb(0 0 0 / 0.18);
}

html[data-color-theme="dark"] .theme--apple-mix .site-header.is-scrolled {
    border-bottom-color: rgb(168 192 224 / 0.3);
    background: rgb(18 27 40 / 0.92);
    box-shadow: 0 0.65rem 2rem rgb(0 0 0 / 0.25);
}

html[data-color-theme="dark"] .theme--apple-mix .primary-nav__links a,
html[data-color-theme="dark"] .nav { color: var(--ink-soft); }

html[data-color-theme="dark"] .theme--apple-mix .primary-nav__links a:hover,
html[data-color-theme="dark"] .theme--apple-mix .primary-nav__links a:focus-visible,
html[data-color-theme="dark"] .theme--apple-mix .primary-nav__links a[aria-current="page"],
html[data-color-theme="dark"] .nav a:hover,
html[data-color-theme="dark"] .nav a:focus-visible {
    background: rgb(42 60 86 / 0.86);
    color: var(--ink-strong);
}

html[data-color-theme="dark"] .header-portal-link,
html[data-color-theme="dark"] .portal-link {
    border-color: rgb(168 192 224 / 0.28);
    background: rgb(29 43 64 / 0.78);
    color: var(--ink-strong);
    box-shadow: 0 0.4rem 1.25rem rgb(0 0 0 / 0.2);
}

html[data-color-theme="dark"] .header-portal-link:hover,
html[data-color-theme="dark"] .header-portal-link:focus-visible,
html[data-color-theme="dark"] .portal-link:hover,
html[data-color-theme="dark"] .portal-link:focus-visible {
    border-color: #79aeff;
    background: #26364e;
    color: #ffffff;
}

html[data-color-theme="dark"] .menu-button { color: var(--ink-strong); }

@media (max-width: 60rem) {
    html[data-color-theme="dark"].js-ready .site-header .primary-nav,
    html[data-color-theme="dark"].js-ready .topbar .nav {
        border-color: var(--line);
        background: #172234;
        box-shadow: 0 1rem 3rem rgb(0 0 0 / 0.34);
    }

    html[data-color-theme="dark"] .site-header .primary-nav__links a:hover,
    html[data-color-theme="dark"] .site-header .primary-nav__links a:focus-visible,
    html[data-color-theme="dark"] .site-header .primary-nav__links a[aria-current="page"] {
        background: #203654;
        color: #c7ddff;
    }

    html[data-color-theme="dark"] .site-header .primary-nav__links a.primary-nav__portal {
        border-color: #79aeff;
        background: #1459c7;
        color: #ffffff;
    }

    html[data-color-theme="dark"] .theme--apple-mix .site-header .menu-button {
        border-color: var(--line);
        background: #1d2b40;
        color: var(--ink-strong);
    }

    html[data-color-theme="dark"].js-ready .topbar .menu-button {
        border-color: var(--line);
        background: #1d2b40;
        color: var(--ink-strong);
    }
}

/* Homepage */
html[data-color-theme="dark"] .page-background {
    background:
        linear-gradient(90deg, rgb(121 174 255 / 0.045) 1px, transparent 1px),
        linear-gradient(180deg, rgb(121 174 255 / 0.045) 1px, transparent 1px),
        radial-gradient(circle at 14% 18%, rgb(43 100 186 / 0.25), transparent 30rem),
        radial-gradient(circle at 86% 74%, rgb(0 126 151 / 0.17), transparent 29rem),
        radial-gradient(circle at 78% 16%, rgb(91 67 177 / 0.14), transparent 24rem),
        linear-gradient(135deg, #121c2a 0%, #101923 50%, #211e19 100%);
    background-size: 5rem 5rem, 5rem 5rem, auto, auto, auto, auto;
}

html[data-color-theme="dark"] .shape {
    border-color: rgb(151 177 211 / 0.2);
    background: linear-gradient(145deg, rgb(37 53 78 / 0.72), rgb(24 36 53 / 0.42));
    box-shadow: 0 2rem 5rem rgb(0 0 0 / 0.22), inset 0 1px 0 rgb(255 255 255 / 0.07);
}

html[data-color-theme="dark"] .plain-list,
html[data-color-theme="dark"] .reference-slide,
html[data-color-theme="dark"] .references-carousel__controls button,
html[data-color-theme="dark"] .section-nav {
    border-color: var(--line);
    background: rgb(29 43 64 / 0.72);
    color: var(--ink);
    box-shadow: 0 1rem 3rem rgb(0 0 0 / 0.18), inset 0 1px 0 rgb(255 255 255 / 0.05);
}

html[data-color-theme="dark"] .reference-slide:hover,
html[data-color-theme="dark"] .reference-slide:focus-visible,
html[data-color-theme="dark"] .references-carousel__controls button:hover,
html[data-color-theme="dark"] .references-carousel__controls button:focus-visible {
    border-color: rgb(121 174 255 / 0.5);
    background: #26364e;
}

html[data-color-theme="dark"] .section-nav button { background: rgb(237 243 252 / 0.3); }
html[data-color-theme="dark"] .section-nav button.is-active { background: #79aeff; }
html[data-color-theme="dark"] .text-link { color: var(--ink-strong); }

/* Shared controls and public sections */
html[data-color-theme="dark"] .theme--apple-mix .button--primary,
html[data-color-theme="dark"] .button {
    border-color: #1459c7;
    background: #1459c7;
    color: #ffffff;
    box-shadow: 0 0.75rem 1.9rem rgb(0 0 0 / 0.26);
}

html[data-color-theme="dark"] .theme--apple-mix .button--primary:hover,
html[data-color-theme="dark"] .theme--apple-mix .button--primary:focus-visible,
html[data-color-theme="dark"] .button:hover,
html[data-color-theme="dark"] .button:focus-visible {
    border-color: #104dab;
    background: #104dab;
    color: #ffffff;
    box-shadow: 0 0.9rem 2.2rem rgb(0 0 0 / 0.32);
}

html[data-color-theme="dark"] .theme--apple-mix .button--text,
html[data-color-theme="dark"] .button--text {
    border-color: var(--line);
    background: #1d2b40;
    color: var(--ink-strong);
    box-shadow: none;
}

html[data-color-theme="dark"] .theme--apple-mix .button--text:hover,
html[data-color-theme="dark"] .theme--apple-mix .button--text:focus-visible,
html[data-color-theme="dark"] .button--text:hover,
html[data-color-theme="dark"] .button--text:focus-visible {
    border-color: #79aeff;
    background: #26364e;
    color: #ffffff;
}

html[data-color-theme="dark"] .refonte4-hero {
    background:
        radial-gradient(circle at 13% 26%, rgb(44 108 202 / 0.24), transparent 32rem),
        radial-gradient(circle at 85% 70%, rgb(0 126 151 / 0.16), transparent 29rem),
        radial-gradient(circle at 80% 13%, rgb(91 67 177 / 0.14), transparent 24rem),
        linear-gradient(135deg, #121c2a 0%, #111d2a 53%, #211e19 100%);
}

html[data-color-theme="dark"] .refonte4-hero::after {
    background: linear-gradient(180deg, transparent, rgb(16 23 34 / 0.36));
}

html[data-color-theme="dark"] .trust-carousel,
html[data-color-theme="dark"] .closing-scene,
html[data-color-theme="dark"] .proof-link-scene,
html[data-color-theme="dark"] .demo-stage,
html[data-color-theme="dark"] .contact-page-scene {
    border-color: var(--line);
    background: var(--surface);
}

html[data-color-theme="dark"] .trust-logo-card {
    border-color: var(--line);
    background: #f7f9fc;
    color: #102038;
    box-shadow: 0 0.8rem 2rem rgb(0 0 0 / 0.15);
}

html[data-color-theme="dark"] .trust-logo-card__name { color: #42536b; }

html[data-color-theme="dark"] .service-visual,
html[data-color-theme="dark"] .image-slot__frame,
html[data-color-theme="dark"] input,
html[data-color-theme="dark"] select,
html[data-color-theme="dark"] textarea {
    border-color: var(--line);
    background: var(--surface);
    color: var(--ink);
}

html[data-color-theme="dark"] input::placeholder,
html[data-color-theme="dark"] textarea::placeholder { color: #8293aa; }

html[data-color-theme="dark"] .form-notice--success { background: #17382d; color: #a6e5c8; }
html[data-color-theme="dark"] .form-notice--error { background: #402329; color: #ffc2ca; }

/* Projects and project details */
html[data-color-theme="dark"] .projects-view .project-lead,
html[data-color-theme="dark"] .project-description,
html[data-color-theme="dark"] .project-row p,
html[data-color-theme="dark"] .project-card p,
html[data-color-theme="dark"] .project-panel-intro,
html[data-color-theme="dark"] .project-back,
html[data-color-theme="dark"] .project-note,
html[data-color-theme="dark"] .project-action-note,
html[data-color-theme="dark"] .project-other a,
html[data-color-theme="dark"] .project-action .project-preview figcaption {
    color: var(--ink-soft);
}

html[data-color-theme="dark"] .project-points li { color: var(--ink); }

html[data-color-theme="dark"] .project-action,
html[data-color-theme="dark"] .project-card,
html[data-color-theme="dark"] .project-client-slide__content {
    border-color: var(--line);
    background: rgb(29 43 64 / 0.82);
}

html[data-color-theme="dark"] .project-card:hover,
html[data-color-theme="dark"] .project-client-slide__content:hover,
html[data-color-theme="dark"] .project-row:hover {
    border-color: rgb(121 174 255 / 0.48);
    background: #24344c;
}

html[data-color-theme="dark"] .project-card--custom {
    border-color: #35577f;
    background: #1a3150;
}

html[data-color-theme="dark"] .project-card--custom:hover { background: #203b60; }

html[data-color-theme="dark"] .project-switch {
    border-color: var(--line);
    background: #111a28;
}

html[data-color-theme="dark"] .project-switch a { color: var(--ink-soft); }

html[data-color-theme="dark"] .project-switch a[aria-current="page"] {
    background: #26364e;
    color: var(--ink-strong);
    box-shadow: 0 1px 6px rgb(0 0 0 / 0.3);
}

html[data-color-theme="dark"] .project-client-carousel__controls button {
    border-color: var(--line);
    background: #1d2b40;
    color: var(--ink-strong);
}

html[data-color-theme="dark"] .project-client-slide__content {
    /* Client marks keep their original palette on a neutral presentation surface. */
    background: #f7f9fc;
}

html[data-color-theme="dark"] .product-preview__button {
    border-color: var(--line);
    background: #0c121b;
}

/* History and legal documents */
html[data-color-theme="dark"] .page--history .story-page {
    background:
        radial-gradient(circle at 92% 4%, rgb(54 116 209 / 0.15), transparent 31rem),
        linear-gradient(180deg, #121c2a 0%, #101722 38%, #121a26 100%);
}

html[data-color-theme="dark"] .page--history .story-page h1,
html[data-color-theme="dark"] .page--history .story-chapter h2,
html[data-color-theme="dark"] .page--history .story-method h2,
html[data-color-theme="dark"] .page--history .story-closing h2,
html[data-color-theme="dark"] .page--history .story-method__steps h3 {
    color: var(--ink-strong);
}

html[data-color-theme="dark"] .story-page__lead,
html[data-color-theme="dark"] .story-chapter__copy p,
html[data-color-theme="dark"] .story-chapter__meta,
html[data-color-theme="dark"] .story-method__steps p,
html[data-color-theme="dark"] .story-closing p { color: var(--ink-soft); }

html[data-color-theme="dark"] .story-page__intro,
html[data-color-theme="dark"] .story-page__chapters,
html[data-color-theme="dark"] .story-chapter + .story-chapter,
html[data-color-theme="dark"] .story-method,
html[data-color-theme="dark"] .story-method__steps,
html[data-color-theme="dark"] .story-method__steps li + li { border-color: var(--line); }

html[data-color-theme="dark"] .legal-document__updated,
html[data-color-theme="dark"] .legal-document__summary,
html[data-color-theme="dark"] .legal-document__body p,
html[data-color-theme="dark"] .legal-document__body li,
html[data-color-theme="dark"] .cookie-register__label { color: var(--ink-soft); }

html[data-color-theme="dark"] .cookie-register__table,
html[data-color-theme="dark"] .cookie-register__row,
html[data-color-theme="dark"] .legal-identity,
html[data-color-theme="dark"] .legal-identity dl > div,
html[data-color-theme="dark"] .prose section { border-color: var(--line); }

/* Footer */
html[data-color-theme="dark"] .site-footer.public-footer {
    border-top-color: var(--line);
    background: linear-gradient(180deg, #141f2f, #101722);
    color: var(--ink-soft);
}

html[data-color-theme="dark"] .public-footer__brand,
html[data-color-theme="dark"] .public-footer h2.public-footer__heading,
html[data-color-theme="dark"] .public-footer__email { color: var(--ink-strong); }

html[data-color-theme="dark"] .public-footer__bottom { border-top-color: var(--line); }
html[data-color-theme="dark"] .public-footer a:hover { color: #79aeff; }
html[data-color-theme="dark"] .public-footer a:focus-visible { outline-color: #89b8ff; }

@media (prefers-reduced-transparency: reduce) {
    html[data-color-theme="dark"] .site-header,
    html[data-color-theme="dark"] .theme--apple-mix .site-header,
    html[data-color-theme="dark"] .topbar,
    html[data-color-theme="dark"] .plain-list,
    html[data-color-theme="dark"] .reference-slide,
    html[data-color-theme="dark"] .section-nav {
        background: #172234;
        -webkit-backdrop-filter: none;
        backdrop-filter: none;
    }
}

@media (prefers-contrast: more) {
    html[data-color-theme="dark"] {
        --ink-soft: #c1cee0;
        --line: #7187a5;
        --line-strong: #95abc7;
    }

    html[data-color-theme="dark"] .color-theme-toggle__track,
    html[data-color-theme="dark"] .header-portal-link,
    html[data-color-theme="dark"] .project-card,
    html[data-color-theme="dark"] .project-client-slide__content { border-width: 2px; }
}

@media (prefers-reduced-motion: reduce) {
    .color-theme-toggle__track,
    .color-theme-toggle__thumb { transition: none; }
}

/* Le nouveau thème se déploie depuis le toggle, sans fondu uniforme. */
::view-transition { pointer-events: none; }

::view-transition-old(root),
::view-transition-new(root) {
    animation: none;
    mix-blend-mode: normal;
}

::view-transition-old(root) { z-index: 1; }
::view-transition-new(root) { z-index: 2; }

html.theme-view-transition *,
html.theme-view-transition *::before,
html.theme-view-transition *::after {
    transition: none !important;
}

html.theme-transition-fallback,
html.theme-transition-fallback body,
html.theme-transition-fallback body *,
html.theme-transition-fallback body *::before,
html.theme-transition-fallback body *::after {
    transition-property: color, background-color, border-color, box-shadow, fill, stroke, opacity !important;
    transition-duration: 220ms !important;
    transition-timing-function: cubic-bezier(.2, .82, .24, 1) !important;
}

@media (prefers-reduced-motion: reduce) {
    ::view-transition-old(root),
    ::view-transition-new(root) { animation-duration: .01ms !important; }
}
