/* Polices servies depuis ce serveur : aucune requête vers un tiers. */
@font-face{font-family:'Cinzel';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/cinzel-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/cinzel-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/cinzel-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/montserrat-latin-300-normal.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/montserrat-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/montserrat-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/montserrat-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/montserrat-latin-400-italic.woff2') format('woff2')}

/* tokens/colors.css */
:root{
/* Base palette — from brand sheet "04. Palette de couleurs" */
--mauve-imperial:#4B1F35; /* primary brand */
--mauve-deep:#3A1729;     /* darker shade for hovers / deep panels */
--prune-sourde:#7A4A5D;   /* secondary plum */
--prune-muted:#9A6E80;    /* lightened plum for subtle accents */
--or-doux:#BE9259;        /* gold accent (sampled from sheet swatch) */
--or-clair:#D4B586;       /* light gold for rules / on-dark accents */
--gris-pierre:#EDE5DB;    /* stone — panels, cards on cream */
--creme:#F5F1EA;          /* paper cream — page background */
--charbon:#1A1A1A;        /* charcoal — body text */
--blanc:#FFFFFF;
/* Semantic aliases */
--surface-page:var(--creme);
--surface-card:var(--blanc);
--surface-panel:var(--gris-pierre);
--surface-inverse:var(--mauve-imperial);
--surface-inverse-deep:var(--mauve-deep);
--text-heading:var(--mauve-imperial);
--text-body:var(--charbon);
--text-muted:#6E6459;
--text-on-dark:var(--creme);
--text-on-dark-muted:#CBB4BE;
--accent:var(--or-doux);
--accent-strong:#A87C42;
--link:var(--prune-sourde);
--link-hover:var(--mauve-imperial);
--border-subtle:#E2D9CC;
--border-strong:#C9BBA8;
--border-on-dark:rgba(245,241,234,.22);
--focus-ring:rgba(190,146,89,.55);
/* Semantic status (derived, used sparingly) */
--positive:#4F6B4A;
--negative:#8C3A34;
}

/* tokens/typography.css */
:root{
--font-display:'Cinzel',Georgia,serif;      /* typographie principale */
--font-body:'Montserrat',Helvetica,Arial,sans-serif; /* typographie secondaire */
/* Scale */
--text-hero:clamp(40px,5vw,64px);
--text-h1:44px;
--text-h2:32px;
--text-h3:24px;
--text-h4:18px;
--text-lg:17px;
--text-md:15px;
--text-sm:13px;
--text-xs:11px;
/* Tracking — Cinzel is always tracked wide, like the logotype */
--track-display:.12em;
--track-display-tight:.06em;
--track-label:.18em;   /* uppercase Montserrat eyebrows */
--track-body:0; /* @kind other */
/* Weights */
--weight-display:400;  /* Cinzel regular; 500 for emphasis only */
--weight-body:400;
--weight-medium:500;
--weight-semibold:600;
/* Leading */
--leading-display:1.15;
--leading-body:1.65;
--leading-tight:1.3;
}

/* tokens/spacing.css */
:root{
--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--space-10:128px;
/* Radii — the brand is rectilinear; corners stay sharp */
--radius-none:0;
--radius-xs:2px;   /* max radius anywhere (inputs, small chips) */
--radius-full:999px; /* reserved for dots/avatars only */
/* Borders */
--border-hairline:1px solid var(--border-subtle);
--rule-gold:1px solid var(--or-doux);
}

/* tokens/effects.css */
:root{
/* Shadows — soft, warm, low; never harsh */
--shadow-card:0 1px 2px rgba(58,23,41,.06),0 8px 24px rgba(58,23,41,.07);
--shadow-raised:0 2px 6px rgba(58,23,41,.10),0 16px 40px rgba(58,23,41,.12);
--shadow-modal:0 24px 80px rgba(26,26,26,.28);
/* Motion — restrained: fades and small translates, no bounces */
--ease-brand:cubic-bezier(.4,0,.2,1); /* @kind other */
--dur-fast:150ms; /* @kind other */
--dur-med:250ms; /* @kind other */
--dur-slow:400ms; /* @kind other */
}

/* tokens/base.css */
body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-body);font-size:var(--text-md);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--font-display);color:var(--text-heading);font-weight:var(--weight-display);letter-spacing:var(--track-display);line-height:var(--leading-display);text-transform:uppercase}
a{color:var(--link);text-decoration:none;transition:color var(--dur-fast) var(--ease-brand)}
a:hover{color:var(--link-hover)}
::selection{background:var(--or-doux);color:var(--blanc)}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

/* composants du design system */
.cv-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-body);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;padding:5px 12px;border-radius:0;border:1px solid transparent}.cv-badge-gold{border-color:var(--or-doux);color:var(--accent-strong)}.cv-badge-solid{background:var(--mauve-imperial);color:var(--creme)}.cv-badge-stone{background:var(--gris-pierre);color:var(--mauve-imperial)}.cv-badge-outline{border-color:var(--border-strong);color:var(--text-muted)}
.cv-btn{font-family:var(--font-body);font-weight:600;letter-spacing:.14em;text-transform:uppercase;border:1px solid transparent;border-radius:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:background var(--dur-fast) var(--ease-brand),color var(--dur-fast) var(--ease-brand),border-color var(--dur-fast) var(--ease-brand)}.cv-btn:disabled{opacity:.45;cursor:not-allowed}.cv-btn-sm{font-size:10px;padding:8px 18px}.cv-btn-md{font-size:11px;padding:13px 30px}.cv-btn-lg{font-size:12px;padding:17px 40px}.cv-btn-primary{background:var(--mauve-imperial);color:var(--creme)}.cv-btn-primary:hover:not(:disabled){background:var(--mauve-deep)}.cv-btn-secondary{background:transparent;border-color:var(--mauve-imperial);color:var(--mauve-imperial)}.cv-btn-secondary:hover:not(:disabled){background:var(--mauve-imperial);color:var(--creme)}.cv-btn-gold{background:transparent;border-color:var(--or-doux);color:var(--accent-strong)}.cv-btn-gold:hover:not(:disabled){background:var(--or-doux);color:var(--blanc)}.cv-btn-inverse{background:transparent;border-color:var(--creme);color:var(--creme)}.cv-btn-inverse:hover:not(:disabled){background:var(--creme);color:var(--mauve-imperial)}.cv-btn-ghost{background:transparent;color:var(--prune-sourde);padding-left:4px;padding-right:4px}.cv-btn-ghost:hover:not(:disabled){color:var(--mauve-imperial);text-decoration:underline;text-underline-offset:4px}
.cv-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:0;box-shadow:var(--shadow-card);padding:32px}.cv-card-gold{border-top:2px solid var(--or-doux)}.cv-card-inverse{background:var(--surface-inverse);border-color:transparent;color:var(--text-on-dark)}.cv-card-flat{box-shadow:none}.cv-card-pad-sm{padding:20px}
.cv-div-hairline{border:none;border-top:1px solid var(--border-subtle);margin:24px 0}.cv-div-gold{border:none;border-top:1px solid var(--or-doux);width:40px;margin:16px auto}.cv-div-gold-left{margin-left:0}.cv-div-ondark{border-top-color:var(--border-on-dark)}.cv-div-orn{display:flex;align-items:center;gap:12px;margin:16px 0}.cv-div-orn span{width:28px;border-top:1px solid var(--or-doux)}
.cv-iconbtn{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--border-strong);border-radius:0;color:var(--mauve-imperial);cursor:pointer;transition:all var(--dur-fast) var(--ease-brand)}.cv-iconbtn:hover:not(:disabled){border-color:var(--mauve-imperial);background:var(--mauve-imperial);color:var(--creme)}.cv-iconbtn:disabled{opacity:.45;cursor:not-allowed}.cv-iconbtn-sm{width:32px;height:32px}.cv-iconbtn-inverse{border-color:var(--border-on-dark);color:var(--creme)}.cv-iconbtn-inverse:hover:not(:disabled){background:var(--creme);border-color:var(--creme);color:var(--mauve-imperial)}
.cv-tag{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:12px;font-weight:500;color:var(--mauve-imperial);background:var(--gris-pierre);padding:6px 12px;border-radius:0}.cv-tag button{all:unset;cursor:pointer;font-size:14px;line-height:1;color:var(--prune-sourde)}.cv-tag button:hover{color:var(--mauve-imperial)}
.cv-check{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-family:var(--font-body);font-size:14px;color:var(--text-body)}.cv-check input{position:absolute;opacity:0;width:0;height:0}.cv-check-box{width:18px;height:18px;border:1px solid var(--border-strong);background:var(--blanc);display:inline-flex;align-items:center;justify-content:center;transition:all var(--dur-fast) var(--ease-brand);flex:none}.cv-check-box svg{opacity:0;transition:opacity var(--dur-fast) var(--ease-brand)}.cv-check input:checked+.cv-check-box{background:var(--mauve-imperial);border-color:var(--mauve-imperial)}.cv-check input:checked+.cv-check-box svg{opacity:1}.cv-check input:focus-visible+.cv-check-box{box-shadow:0 0 0 3px var(--focus-ring)}.cv-check-dis{opacity:.45;cursor:not-allowed}
.cv-field{display:flex;flex-direction:column;gap:8px;font-family:var(--font-body)}.cv-field-label{font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--mauve-imperial)}.cv-input{font-family:var(--font-body);font-size:14px;color:var(--text-body);background:var(--blanc);border:1px solid var(--border-strong);border-radius:var(--radius-xs);padding:12px 14px;transition:border-color var(--dur-fast) var(--ease-brand),box-shadow var(--dur-fast) var(--ease-brand);outline:none}.cv-input::placeholder{color:#A79C8E}.cv-input:focus{border-color:var(--or-doux);box-shadow:0 0 0 3px var(--focus-ring)}.cv-input[aria-invalid='true']{border-color:var(--negative)}.cv-field-hint{font-size:12px;color:var(--text-muted)}.cv-field-error{font-size:12px;color:var(--negative)}
.cv-radio{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-family:var(--font-body);font-size:14px;color:var(--text-body)}.cv-radio input{position:absolute;opacity:0;width:0;height:0}.cv-radio-dot{width:18px;height:18px;border:1px solid var(--border-strong);border-radius:var(--radius-full);background:var(--blanc);display:inline-flex;align-items:center;justify-content:center;transition:all var(--dur-fast) var(--ease-brand);flex:none}.cv-radio-dot::after{content:'';width:8px;height:8px;border-radius:var(--radius-full);background:var(--mauve-imperial);transform:scale(0);transition:transform var(--dur-fast) var(--ease-brand)}.cv-radio input:checked+.cv-radio-dot{border-color:var(--mauve-imperial)}.cv-radio input:checked+.cv-radio-dot::after{transform:scale(1)}.cv-radio input:focus-visible+.cv-radio-dot{box-shadow:0 0 0 3px var(--focus-ring)}.cv-radio-dis{opacity:.45;cursor:not-allowed}
.cv-select-wrap{position:relative;display:flex}.cv-select{appearance:none;-webkit-appearance:none;width:100%;font-family:var(--font-body);font-size:14px;color:var(--text-body);background:var(--blanc);border:1px solid var(--border-strong);border-radius:var(--radius-xs);padding:12px 40px 12px 14px;outline:none;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-brand),box-shadow var(--dur-fast) var(--ease-brand)}.cv-select:focus{border-color:var(--or-doux);box-shadow:0 0 0 3px var(--focus-ring)}.cv-select-chev{position:absolute;right:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--prune-sourde)}
.cv-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-family:var(--font-body);font-size:14px;color:var(--text-body)}.cv-switch input{position:absolute;opacity:0;width:0;height:0}.cv-switch-track{width:38px;height:20px;background:var(--border-strong);border-radius:2px;position:relative;transition:background var(--dur-med) var(--ease-brand);flex:none}.cv-switch-track::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--blanc);border-radius:1px;transition:transform var(--dur-med) var(--ease-brand);box-shadow:0 1px 2px rgba(26,26,26,.2)}.cv-switch input:checked+.cv-switch-track{background:var(--mauve-imperial)}.cv-switch input:checked+.cv-switch-track::after{transform:translateX(18px)}.cv-switch input:focus-visible+.cv-switch-track{box-shadow:0 0 0 3px var(--focus-ring)}.cv-switch-dis{opacity:.45;cursor:not-allowed}
.cv-dialog-overlay{position:fixed;inset:0;background:rgba(26,10,18,.6);display:flex;align-items:center;justify-content:center;padding:24px;z-index:100}.cv-dialog-overlay-inline{position:absolute}.cv-dialog{background:var(--blanc);border-radius:0;box-shadow:var(--shadow-modal);max-width:480px;width:100%;padding:40px;text-align:center;border-top:2px solid var(--or-doux)}.cv-dialog-title{font-family:var(--font-display);font-size:22px;letter-spacing:.08em;text-transform:uppercase;color:var(--mauve-imperial);margin:0}.cv-dialog-rule{border:none;border-top:1px solid var(--or-doux);width:40px;margin:16px auto}.cv-dialog-body{font-family:var(--font-body);font-size:14px;line-height:1.65;color:var(--text-body)}.cv-dialog-actions{display:flex;gap:12px;justify-content:center;margin-top:28px}
.cv-tabs-list{display:flex;gap:32px;border-bottom:1px solid var(--border-subtle)}.cv-tab{all:unset;cursor:pointer;font-family:var(--font-body);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);padding:0 2px 12px;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--dur-fast) var(--ease-brand),border-color var(--dur-fast) var(--ease-brand)}.cv-tab:hover{color:var(--mauve-imperial)}.cv-tab-active{color:var(--mauve-imperial);border-bottom-color:var(--or-doux)}.cv-tabs-panel{padding-top:20px;font-family:var(--font-body);font-size:14px;color:var(--text-body)}
.cv-toast{display:flex;align-items:flex-start;gap:14px;background:var(--mauve-deep);color:var(--creme);padding:16px 20px;border-top:2px solid var(--or-doux);box-shadow:var(--shadow-raised);max-width:420px;font-family:var(--font-body)}.cv-toast-title{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;margin:0 0 4px}.cv-toast-msg{font-size:13px;line-height:1.5;color:var(--text-on-dark-muted);margin:0}.cv-toast-error{border-top-color:#C96B62}.cv-toast-success{border-top-color:#8CA986}.cv-toast button{all:unset;cursor:pointer;color:var(--text-on-dark-muted);font-size:16px;line-height:1;margin-left:auto}.cv-toast button:hover{color:var(--creme)}
.cv-tip-wrap{position:relative;display:inline-flex}.cv-tip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--charbon);color:var(--creme);font-family:var(--font-body);font-size:12px;padding:7px 12px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-brand);z-index:50}.cv-tip-show{opacity:1}

/* habillage du site */
.sc-placeholder{background:color-mix(in srgb,currentColor 8%,transparent);
      border:1px solid color-mix(in srgb,currentColor 50%,transparent);
      border-radius:2px;box-sizing:border-box;overflow:hidden}
    @keyframes sc-shine{0%{background-position:100% 50%}100%{background-position:0% 50%}}
    html.sc-dc-streaming .sc-placeholder,
    html.sc-dc-streaming .sc-interp.sc-missing{position:relative;
      background:color-mix(in srgb,currentColor 5%,transparent);
      border-color:transparent}
    html.sc-dc-streaming .sc-placeholder::before,
    html.sc-dc-streaming .sc-interp.sc-missing::before{content:'';
      position:absolute;inset:0;pointer-events:none;
      background:linear-gradient(90deg,rgba(217,119,87,0) 25%,rgba(247,225,211,.95) 37%,rgba(217,119,87,0) 63%);
      background-size:400% 100%;animation:sc-shine 1.4s ease infinite}
    html.sc-dc-streaming .sc-placeholder:nth-child(n+9 of .sc-placeholder)::before,
    html.sc-dc-streaming .sc-interp.sc-missing:nth-child(n+9 of .sc-interp.sc-missing)::before{animation:none;
      background:color-mix(in srgb,currentColor 8%,transparent)}
    .sc-placeholder-error{padding:4px 8px;font:11px/1.4 ui-monospace,monospace;
      color:color-mix(in srgb,currentColor 70%,transparent);word-break:break-word}
    .sc-interp.sc-missing{display:inline-block;width:2em;height:1em;overflow:hidden;
      vertical-align:text-bottom;background:rgba(255,255,255,.3);border:1px solid rgba(0,0,0,.5);
      border-radius:2px;box-sizing:border-box;color:transparent;
      user-select:none}
    .sc-interp.sc-unresolved{font-family:ui-monospace,monospace;font-size:.85em;
      color:color-mix(in srgb,currentColor 50%,transparent);
      background:color-mix(in srgb,currentColor 10%,transparent);border-radius:3px;
      padding:0 3px}
    .sc-host.sc-has-error{position:relative}
    .sc-logic-error{position:absolute;top:8px;left:8px;z-index:2147483647;max-width:60ch;
      padding:6px 10px;background:#b00020;color:#fff;font:12px/1.4 ui-monospace,monospace;
      border-radius:4px;white-space:pre-wrap;pointer-events:none}
    /* Mirrors PRINT_BASELINE_CSS in apps/web deck-stage-export.ts — keep both
       in sync until dc-runtime regains a build step. */
    @media print {
      @page { margin: 0.5cm; }
      figure, table { break-inside: avoid; }
      #dc-root, #dc-root > .sc-host { height: auto; }
      *, *::before, *::after {
        print-color-adjust: exact; -webkit-print-color-adjust: exact;
        backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
        animation-delay: -99s !important; animation-duration: .001s !important;
        animation-iteration-count: 1 !important; animation-fill-mode: both !important;
        animation-play-state: running !important; transition-duration: 0s !important;
      }
    }

x-dc{display:none!important}

html,body{height:100%;margin:0}#dc-root,#dc-root>.sc-host{height:100%}

/* — Cercle Vauban : habillage, imagerie, adaptations — */
*,*::before,*::after{box-sizing:border-box}
img{max-width:100%;height:auto}
/* Les mots composés luxembourgeois et allemands ne doivent pas dépasser */
body{overflow-wrap:break-word}
h1,h2,h3,p,li,dd,dt,span,a{overflow-wrap:break-word}
h1,h2,h3{hyphens:auto}
a{color:var(--prune-sourde);text-decoration:none;transition:color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1)}
a:hover{color:var(--mauve-imperial)}
.cv-navlink:hover{color:var(--mauve-imperial) !important;border-bottom-color:var(--or-clair) !important}
.cv-footlink:hover{color:var(--creme) !important}
.cv-lang{transition:color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1)}
.cv-lang:hover{color:var(--prune-sourde) !important}
.cv-quiet{transition:color .2s cubic-bezier(.4,0,.2,1)}
.cv-quiet:hover{color:var(--or-clair) !important}

a.cv-btn{text-decoration:none}
a.cv-btn:hover{color:inherit}

/* Sections imagées : aplat + image + voile uni (aucun dégradé) */
.cv-figure{position:relative;overflow:hidden}
.cv-figure__img{position:absolute;inset:0;background-repeat:no-repeat;background-size:cover;pointer-events:none}
.cv-figure__veil{position:absolute;inset:0;pointer-events:none}
.cv-figure__mark{position:absolute;pointer-events:none}
.cv-figure__in{position:relative}

.cv-img-hero{background-image:url("../assets/hero-luxembourg.webp");background-position:center 42%;opacity:.5}
.cv-veil-mauve{background:rgba(58,23,41,.60)}
.cv-img-forteresse{background-image:url("../assets/gravure-forteresse.webp");background-position:center 52%;opacity:.26}
.cv-img-pont{background-image:url("../assets/pont-adolphe.webp");background-position:center 58%;opacity:.26}
.cv-img-rue{background-image:url("../assets/vieille-ville.webp");background-position:center 50%;opacity:.24}
.cv-veil-pierre{background:rgba(237,229,219,.38)}
.cv-img-forteresse-pale{background-image:url("../assets/gravure-forteresse.webp");background-position:center 60%;opacity:.15}

/* Planche gravée encadrée */
.cv-plate{background:var(--creme);border:1px solid var(--or-doux);box-shadow:var(--shadow-raised);padding:12px}
.cv-plate img{display:block;width:100%}

/* Corps de texte des pages légales */
.cv-prose h2{font-family:var(--font-display);font-weight:400;font-size:22px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-heading);margin:44px 0 6px}
.cv-prose h2:first-of-type{margin-top:0}
.cv-prose p,.cv-prose li{font-size:15px;line-height:1.85;color:var(--text-body)}
.cv-prose ul{padding-left:20px;margin:8px 0}
.cv-prose li{margin:6px 0}
.cv-prose .cv-rule{width:40px;height:1px;background:var(--or-doux);margin:14px 0 18px}
.cv-prose dl{display:grid;grid-template-columns:210px 1fr;gap:10px 24px;margin:12px 0 0}
.cv-prose dt{font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--accent-strong);padding-top:4px}
.cv-prose dd{margin:0;font-size:15px;line-height:1.7;color:var(--text-body);min-height:1.7em}
.cv-prose dd:empty{border-bottom:1px solid var(--border-subtle);max-width:260px;height:1px;min-height:0;margin-top:12px}

/* Bandeau d'information */
.cv-notice{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--mauve-deep);border-top:1px solid var(--or-doux);color:var(--text-on-dark-muted);
  transform:translateY(8px);opacity:0;transition:opacity .3s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1)}
.cv-notice.is-in{transform:translateY(0);opacity:1}
.cv-notice__in{max-width:1140px;margin:0 auto;padding:18px 32px;display:flex;align-items:center;gap:28px}
.cv-notice__txt{font-size:13px;line-height:1.6;margin:0}
.cv-notice__txt a{color:var(--or-clair);border-bottom:1px solid rgba(212,181,134,.4)}
.cv-notice__txt a:hover{color:var(--creme)}
.cv-notice__btn{margin-left:auto;flex:none;font-family:var(--font-body);font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:600;
  color:var(--creme);background:transparent;border:1px solid var(--or-doux);padding:11px 22px;cursor:pointer;border-radius:0;
  transition:background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1)}
.cv-notice__btn:hover{background:var(--or-doux);color:var(--mauve-deep)}

/* — Animations : fondus et translations de 8 px au plus, jamais de rebond — */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none !important;transition:none !important}}

html.cv-anim .cv-reveal{opacity:0;transform:translateY(8px)}
html.cv-anim .cv-reveal.is-in{opacity:1;transform:none;transition:opacity .5s cubic-bezier(.4,0,.2,1),transform .5s cubic-bezier(.4,0,.2,1)}
html.cv-anim .cv-rise{opacity:0;animation:cv-rise .55s cubic-bezier(.4,0,.2,1) forwards}
@keyframes cv-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* Le fort du hero se trace, puis se remplit */
.cv-seal{position:absolute;right:-170px;bottom:-200px;width:600px;height:600px;overflow:visible;pointer-events:none}
.cv-seal path{fill:var(--creme);fill-opacity:.10}
html.cv-anim .cv-seal path{fill-opacity:0;stroke:var(--creme);stroke-opacity:0;stroke-width:1.6;stroke-dasharray:1;stroke-dashoffset:1;vector-effect:non-scaling-stroke}
html.cv-anim .cv-seal.is-drawing path{animation:cv-trace 1.7s cubic-bezier(.4,0,.2,1) .3s forwards,cv-fill .9s cubic-bezier(.4,0,.2,1) 1.7s forwards}
@keyframes cv-trace{0%{stroke-dashoffset:1;stroke-opacity:0}12%{stroke-opacity:.30}100%{stroke-dashoffset:0;stroke-opacity:.30}}
@keyframes cv-fill{to{fill-opacity:.10;stroke-opacity:.12}}

/* Filet d'avancement de lecture */
.cv-progress{position:fixed;top:0;left:0;right:0;height:2px;background:var(--or-doux);z-index:60;transform:scaleX(0);transform-origin:0 50%;transition:transform .12s linear;pointer-events:none}

/* Retour en haut — la marque du fort */
.cv-top{position:fixed;right:26px;bottom:26px;z-index:70;width:52px;height:52px;padding:11px;background:var(--mauve-imperial);border:1px solid var(--or-doux);border-radius:0;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .3s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1),visibility .3s,background-color .2s cubic-bezier(.4,0,.2,1)}
.cv-top.is-in{opacity:1;visibility:visible;transform:none}
html.cv-has-notice .cv-top{bottom:104px}
.cv-top svg{display:block;width:100%;height:100%}
.cv-top path{fill:var(--or-clair);transition:fill .2s cubic-bezier(.4,0,.2,1)}
.cv-top:hover{background:var(--mauve-deep);transform:translateY(-2px)}
.cv-top:hover path{fill:var(--creme)}
.cv-top:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}

/* Soulignement doré de la navigation */
.cv-navlink{position:relative}
.cv-navlink::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--or-doux);transform:scaleX(0);transform-origin:50% 50%;transition:transform .25s cubic-bezier(.4,0,.2,1)}
.cv-navlink:hover::after{transform:scaleX(1)}
.cv-navlink[aria-current="page"]::after{display:none}

/* Les marques du fort se lèvent au survol de leur bloc */
.cv-inpad img[src*="fort-"]{transition:transform .3s cubic-bezier(.4,0,.2,1)}
.cv-inpad:hover img[src*="fort-"]{transform:translateY(-3px)}
.cv-plate{transition:transform .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1)}
.cv-plate:hover{transform:translateY(-4px);box-shadow:var(--shadow-modal)}

/* Fondu discret au changement de langue */
[data-screen-label]{transition:opacity .32s cubic-bezier(.4,0,.2,1)}
html.cv-fade [data-screen-label]{opacity:.3;transition:opacity .16s cubic-bezier(.4,0,.2,1)}

/* — Impression : tout doit apparaître, rien d'inutile — */
@media print{
  html.cv-anim .cv-reveal,html.cv-anim .cv-rise{opacity:1 !important;transform:none !important;animation:none !important}
  .cv-notice,.cv-top,.cv-progress,.cv-figure__img,.cv-figure__veil,.cv-seal{display:none !important}
  header{position:static !important}
  body{background:#fff}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:10px;color:#666}
  .cv-figure,section{break-inside:avoid}
}

/* Adaptations */
/* Les éléments de grille ne doivent jamais imposer leur largeur minimale */
.cv-split > *,.cv-trio > *,.cv-seance > *,.cv-foot > *{min-width:0}

@media (max-width:1000px){
  .cv-bar{flex-wrap:wrap;gap:14px !important}
  .cv-nav{margin-left:0 !important;gap:18px !important;flex-wrap:wrap;width:100%;row-gap:10px}
  .cv-nav > div{padding-left:0 !important;border-left:0 !important;margin-left:auto}
}
@media (max-width:960px){
  .cv-split{grid-template-columns:1fr !important;gap:40px !important}
  .cv-trio{grid-template-columns:1fr !important}
  .cv-foot{grid-template-columns:1fr !important;gap:32px !important}
  .cv-seance{grid-template-columns:1fr !important}
  .cv-plate-wrap{justify-self:stretch !important;max-width:340px;margin:0 auto}
  .cv-prose dl{grid-template-columns:1fr;gap:2px 0}
  .cv-prose dt{margin-top:12px}
}
@media (max-width:720px){
  .cv-bar{padding-left:20px !important;padding-right:20px !important}
  .cv-nav{gap:14px !important;font-size:10px}
  .cv-hero-title{font-size:31px !important;letter-spacing:.06em !important}
  .cv-h1{font-size:27px !important}
  .cv-h2{font-size:23px !important}
  .cv-hero-pad{padding:66px 22px 74px !important}
  .cv-sec{padding-top:56px !important;padding-bottom:56px !important;padding-left:22px !important;padding-right:22px !important}
  .cv-inpad{padding:32px 24px !important}
  .cv-seance > div:first-child{padding-left:20px !important;padding-right:20px !important}
  .cv-actions{flex-direction:column;align-items:center;gap:16px !important}
  .cv-legal{flex-direction:column;gap:8px;text-align:center}
  .cv-seal{width:340px;height:340px;right:-110px;bottom:-120px}
  .cv-top{right:16px;bottom:16px;width:46px;height:46px;padding:9px}
  .cv-notice__in{flex-direction:column;align-items:flex-start;gap:14px;padding:18px 22px}
  .cv-notice__btn{margin-left:0}
}

.cv-div-hairline{border:none;border-top:1px solid var(--border-subtle);margin:24px 0}.cv-div-gold{border:none;border-top:1px solid var(--or-doux);width:40px;margin:16px auto}.cv-div-gold-left{margin-left:0}.cv-div-ondark{border-top-color:var(--border-on-dark)}.cv-div-orn{display:flex;align-items:center;gap:12px;margin:16px 0}.cv-div-orn span{width:28px;border-top:1px solid var(--or-doux)}

.cv-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:0;box-shadow:var(--shadow-card);padding:32px}.cv-card-gold{border-top:2px solid var(--or-doux)}.cv-card-inverse{background:var(--surface-inverse);border-color:transparent;color:var(--text-on-dark)}.cv-card-flat{box-shadow:none}.cv-card-pad-sm{padding:20px}

.cv-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-body);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;padding:5px 12px;border-radius:0;border:1px solid transparent}.cv-badge-gold{border-color:var(--or-doux);color:var(--accent-strong)}.cv-badge-solid{background:var(--mauve-imperial);color:var(--creme)}.cv-badge-stone{background:var(--gris-pierre);color:var(--mauve-imperial)}.cv-badge-outline{border-color:var(--border-strong);color:var(--text-muted)}

.cv-tag{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:12px;font-weight:500;color:var(--mauve-imperial);background:var(--gris-pierre);padding:6px 12px;border-radius:0}.cv-tag button{all:unset;cursor:pointer;font-size:14px;line-height:1;color:var(--prune-sourde)}.cv-tag button:hover{color:var(--mauve-imperial)}

.cv-textarea{font-family:var(--font-body);font-size:14px;color:var(--text-body);background:var(--blanc);border:1px solid var(--border-strong);border-radius:var(--radius-xs);padding:12px 14px;outline:none;resize:vertical;min-height:130px;width:100%;transition:border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}
.cv-textarea::placeholder{color:#A79C8E}
.cv-textarea:focus{border-color:var(--or-doux);box-shadow:0 0 0 3px var(--focus-ring)}
.cv-consent{display:flex;gap:12px;align-items:flex-start;font-size:12px;line-height:1.6;color:var(--text-muted)}
.cv-consent input{margin-top:3px;accent-color:var(--mauve-imperial);width:15px;height:15px;flex:none}

.cv-field{display:flex;flex-direction:column;gap:8px;font-family:var(--font-body)}.cv-field-label{font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--mauve-imperial)}.cv-input{font-family:var(--font-body);font-size:14px;color:var(--text-body);background:var(--blanc);border:1px solid var(--border-strong);border-radius:var(--radius-xs);padding:12px 14px;transition:border-color var(--dur-fast) var(--ease-brand),box-shadow var(--dur-fast) var(--ease-brand);outline:none}.cv-input::placeholder{color:#A79C8E}.cv-input:focus{border-color:var(--or-doux);box-shadow:0 0 0 3px var(--focus-ring)}.cv-input[aria-invalid='true']{border-color:var(--negative)}.cv-field-hint{font-size:12px;color:var(--text-muted)}.cv-field-error{font-size:12px;color:var(--negative)}

/* — formulaire : états d'envoi — */
.cv-formmsg{margin-top:18px;padding:14px 18px;border:1px solid var(--border-subtle);background:var(--surface-panel);font-size:13px;line-height:1.6;color:var(--text-body)}
.cv-formmsg.is-error{border-color:var(--negative);color:var(--negative);background:#fbf4f3}
.cv-btn.is-busy{opacity:.6;pointer-events:none}
