:root {
  --redlb: #990000;
  --redlb-dark: #760000;
  --greylb: #666666;
  --ink: #242424;
  --muted: #6b6b6b;
  --surface: #f7f5f3;
  --line: #e5e0dc;
  --bs-body-font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --bs-body-color: var(--ink);
  --bs-link-color: var(--redlb);
  --bs-link-hover-color: var(--redlb-dark);
}

html { scroll-behavior: smooth; }
body { background: #fff; padding-bottom: 0; }
a { text-underline-offset: .2em; }
h1, h2, h3, .display-1, .display-2, .display-3, .display-4, .display-5, .display-6 { font-family: Georgia, "Times New Roman", serif; letter-spacing: -.015em; }

.skip-link { position: fixed; z-index: 1100; left: 1rem; top: -5rem; padding: .75rem 1rem; background: #fff; color: var(--redlb); box-shadow: 0 .25rem 1rem rgba(0,0,0,.15); border-radius: .25rem; }
.skip-link:focus { top: 1rem; }

.icon { width: 1.1em; height: 1.1em; vertical-align: -.15em; fill: currentColor; }

.topbar { background: #2e2e2e; min-height: 38px; }
.topbar-link { color: #fff; text-decoration: none; font-size: .875rem; display: inline-flex; align-items: center; gap: .4rem; }
.topbar-link:hover { color: #fff; text-decoration: underline; }

.site-header { transition: box-shadow .2s ease, transform .2s ease; }
.site-header.is-scrolled .navbar { box-shadow: 0 .5rem 1.5rem rgba(0,0,0,.08)!important; }
.brand-logo { width: 64px; height: 64px; object-fit: contain; }
.brand-copy { line-height: 1.1; }
.brand-copy strong { font-family: Georgia, "Times New Roman", serif; font-size: 1.08rem; color: var(--ink); display: block; }
.brand-copy small { color: var(--greylb); font-size: .72rem; letter-spacing: .02em; }
.navbar .nav-link { color: #303030; font-weight: 600; padding: .8rem .75rem!important; border-radius: .3rem; }
.navbar .nav-link:hover, .navbar .nav-link:focus, .navbar .nav-link.active { color: var(--redlb); background: rgba(153,0,0,.055); }
.dropdown-menu-lg { min-width: 19rem; }
.dropdown-item { border-radius: .25rem; padding: .6rem .75rem; }
.dropdown-item:hover, .dropdown-item:focus { background: rgba(153,0,0,.07); color: var(--redlb-dark); }

.btn-lb { --bs-btn-color:#fff; --bs-btn-bg:var(--redlb); --bs-btn-border-color:var(--redlb); --bs-btn-hover-color:#fff; --bs-btn-hover-bg:var(--redlb-dark); --bs-btn-hover-border-color:var(--redlb-dark); --bs-btn-focus-shadow-rgb:153,0,0; --bs-btn-active-color:#fff; --bs-btn-active-bg:var(--redlb-dark); --bs-btn-active-border-color:var(--redlb-dark); font-weight: 700; }
.btn-outline-lb { --bs-btn-color:var(--redlb); --bs-btn-border-color:var(--redlb); --bs-btn-hover-color:#fff; --bs-btn-hover-bg:var(--redlb); --bs-btn-hover-border-color:var(--redlb); --bs-btn-focus-shadow-rgb:153,0,0; font-weight: 700; }
.btn-icon { width: 42px; height: 42px; display: inline-grid; place-items: center; padding: 0; }

.offcanvas { --bs-offcanvas-width: min(92vw, 390px); }
.mobile-menu > a, .mobile-menu summary { display: block; padding: 1rem 1.25rem; font-weight: 700; color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--line); cursor: pointer; list-style: none; }
.mobile-menu summary::-webkit-details-marker { display:none; }
.mobile-menu summary::after { content:"+"; float:right; color:var(--redlb); font-size:1.25rem; font-weight:400; }
.mobile-menu details[open] summary::after { content:"−"; }
.mobile-submenu { background: var(--surface); padding: .35rem 0; }
.mobile-submenu a { display:block; padding:.7rem 1.75rem; color:#444; text-decoration:none; }
.mobile-submenu a:hover { color:var(--redlb); }

.hero-preview { background: linear-gradient(135deg, #fff 0%, #f6f2ef 100%); min-height: 58vh; display:grid; align-items:center; }
.hero-kicker, .eyebrow { font-size:.78rem; text-transform:uppercase; letter-spacing:.13em; font-weight:800; }
.hero-kicker { color: var(--redlb); }
.hero-preview h1 { font-size: clamp(2.35rem, 5vw, 4.8rem); max-width: 13ch; }
.hero-preview .lead { max-width: 60ch; color: var(--greylb); }
.hero-card { background:#fff; border:1px solid var(--line); box-shadow: 0 1.25rem 3rem rgba(50,30,20,.09); border-radius:.75rem; overflow:hidden; }
.hero-card img { width:100%; aspect-ratio: 4/5; object-fit:cover; object-position:center 20%; }

.contact-band { background: var(--redlb); }
.site-footer { background:#f8f7f5; }
.footer-brand { color:var(--ink); text-decoration:none; }
.footer-brand img { object-fit:contain; }
.footer-brand strong, .footer-brand small { display:block; }
.footer-brand strong { font-family:Georgia,"Times New Roman",serif; font-size:1.15rem; }
.footer-brand small { color:var(--greylb); font-size:.8rem; }
.footer-title { font-family: var(--bs-body-font-family); text-transform: uppercase; letter-spacing:.1em; font-size:.74rem; font-weight:800; color:#333; margin-bottom:1rem; }
.footer-links li + li { margin-top:.5rem; }
.footer-links a, .site-footer address a, .footer-bottom a { color:var(--muted); text-decoration:none; }
.footer-links a:hover, .site-footer address a:hover, .footer-bottom a:hover { color:var(--redlb); text-decoration:underline; }

.mobile-actionbar { position:fixed; z-index:1030; left:0; right:0; bottom:0; display:grid; grid-template-columns:1fr 1.35fr; background:#fff; border-top:1px solid var(--line); box-shadow:0 -.4rem 1.2rem rgba(0,0,0,.08); }
.mobile-actionbar a { min-height:58px; display:flex; align-items:center; justify-content:center; gap:.5rem; color:var(--ink); text-decoration:none; font-weight:800; }
.mobile-actionbar a.primary { background:var(--redlb); color:#fff; }

@media (max-width: 991.98px) {
  body { padding-bottom: 58px; }
  .site-header .navbar { min-height:74px; }
  .brand-logo { width:54px; height:54px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { scroll-behavior:auto!important; transition-duration:.01ms!important; animation-duration:.01ms!important; animation-iteration-count:1!important; }
}


/* Homepage */
.py-lg-6 { padding-top: 5.5rem !important; padding-bottom: 5.5rem !important; }
.home-hero { background: radial-gradient(circle at 88% 10%, rgba(153,0,0,.07), transparent 28%), linear-gradient(135deg,#fff 0%,#f7f3f0 100%); overflow:hidden; }
.home-hero h1 { font-size:clamp(2.6rem,5.6vw,5.15rem); line-height:.98; max-width:12ch; }
.home-hero .lead { max-width:61ch; color:#5e5e5e; font-size:clamp(1.1rem,1.8vw,1.32rem); }
.hero-trust li { position:relative; padding-left:1.05rem; color:#555; font-size:.92rem; }
.hero-trust li::before { content:""; position:absolute; left:0; top:.62em; width:.38rem; height:.38rem; border-radius:50%; background:var(--redlb); }
.hero-portrait { position:relative; border-radius:1rem; overflow:hidden; box-shadow:0 2rem 4rem rgba(30,20,15,.13); background:#ddd; }
.hero-portrait img { display:block; width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; object-position:center 25%; }
.hero-portrait figcaption { position:absolute; left:1rem; right:1rem; bottom:1rem; padding:1rem 1.1rem; border-radius:.65rem; background:rgba(255,255,255,.94); backdrop-filter:blur(8px); box-shadow:0 .5rem 1.5rem rgba(0,0,0,.1); }
.hero-portrait figcaption strong,.hero-portrait figcaption span { display:block; }
.hero-portrait figcaption strong { font-family:Georgia,"Times New Roman",serif; font-size:1.12rem; }
.hero-portrait figcaption span { color:var(--greylb); font-size:.86rem; margin-top:.15rem; }
.section-heading { max-width:760px; }
.section-heading h2,.lawyer-section h2,.local-section h2,.first-contact h2,.faq-section h2 { font-size:clamp(2rem,3.5vw,3.35rem); line-height:1.06; }
.section-heading > p:last-child,.lead-sm { color:var(--greylb); font-size:1.08rem; }
.audience-card { position:relative; display:flex; flex-direction:column; justify-content:space-between; gap:2rem; padding:clamp(1.5rem,4vw,2.5rem); border:1px solid var(--line); border-radius:1rem; background:#fff; box-shadow:0 .8rem 2.5rem rgba(0,0,0,.045); }
.audience-card-dark { background:#2d2d2d; color:#fff; border-color:#2d2d2d; }
.audience-number { display:inline-grid; place-items:center; width:2.35rem; height:2.35rem; border-radius:50%; background:rgba(153,0,0,.09); color:var(--redlb); font-weight:800; font-size:.8rem; margin-bottom:1.25rem; }
.audience-card-dark .audience-number { background:rgba(255,255,255,.1); color:#fff; }
.audience-card h3 { font-size:clamp(1.65rem,2.8vw,2.35rem); }
.audience-card p { color:#656565; }
.audience-card-dark p,.audience-card-dark .clean-list li { color:#dedede; }
.clean-list { padding-left:0; list-style:none; margin:1.5rem 0 0; }
.clean-list li { position:relative; padding:.45rem 0 .45rem 1.45rem; color:#555; }
.clean-list li::before { content:"✓"; position:absolute; left:0; color:var(--redlb); font-weight:800; }
.audience-card-dark .clean-list li::before { color:#fff; }
.stretched-link-card { color:var(--redlb); text-decoration:none; font-weight:800; }
.audience-card-dark .stretched-link-card { color:#fff; }
.practice-card { padding:1.5rem; border:1px solid var(--line); background:#fff; border-radius:.75rem; transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease; }
.practice-card:hover { transform:translateY(-3px); box-shadow:0 1rem 2rem rgba(0,0,0,.06); border-color:#d7c9c1; }
.practice-card h3 { font-size:1.35rem; margin-bottom:.65rem; }
.practice-card p { color:var(--greylb); font-size:.95rem; min-height:4.25em; }
.practice-card a,.text-link { color:var(--redlb); text-decoration:none; font-weight:800; }
.lawyer-image-wrap { position:relative; min-height:430px; }
.lawyer-image { width:min(78%,390px); aspect-ratio:1/1.1; object-fit:cover; border-radius:1rem; box-shadow:0 1.5rem 3rem rgba(0,0,0,.1); }
.bar-card { position:absolute; right:0; bottom:0; width:min(70%,280px); padding:1.25rem; background:#fff; border:1px solid var(--line); border-radius:.85rem; box-shadow:0 1rem 2.5rem rgba(0,0,0,.08); }
.bar-card img { display:block; max-width:125px; height:auto; margin-bottom:.75rem; }
.bar-card p { font-size:.9rem; color:var(--greylb); }
.method-section { background:#fff; }
.method-grid article { height:100%; padding:1.5rem 1.25rem; border-top:3px solid var(--redlb); background:#faf9f7; }
.method-grid article > span { display:inline-block; font-weight:900; color:var(--redlb); margin-bottom:.75rem; }
.method-grid h3 { font-size:1.4rem; }
.method-grid p { color:var(--greylb); margin-bottom:0; }
.local-photo { border-radius:1rem; overflow:hidden; box-shadow:0 1.5rem 3rem rgba(0,0,0,.08); background:#eee; }
.local-photo img { display:block; width:100%; height:auto; aspect-ratio:16/10; object-fit:cover; }
.local-photo figcaption { padding:.75rem 1rem; color:var(--greylb); background:#fff; font-size:.82rem; }
.local-meta { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.local-meta > div { padding:1rem 0; border-top:1px solid var(--line); }
.local-meta strong,.local-meta span { display:block; }
.local-meta strong { font-size:.78rem; text-transform:uppercase; letter-spacing:.09em; margin-bottom:.35rem; }
.local-meta span { color:var(--greylb); }
.contact-steps li { display:grid; grid-template-columns:auto 1fr; gap:1.1rem; padding:1.25rem 0; border-bottom:1px solid var(--line); }
.contact-steps li:first-child { padding-top:0; }
.contact-steps li > span { display:grid; place-items:center; width:2.4rem; height:2.4rem; border-radius:50%; background:var(--redlb); color:#fff; font-weight:900; }
.contact-steps strong { display:block; margin-bottom:.25rem; font-family:Georgia,"Times New Roman",serif; font-size:1.15rem; }
.contact-steps p { color:var(--greylb); margin:0; }
.faq-accordion .accordion-item { border-color:var(--line); background:transparent; }
.faq-accordion .accordion-button { padding:1.2rem 0; background:transparent; box-shadow:none; color:var(--ink); font-weight:800; }
.faq-accordion .accordion-button:not(.collapsed) { color:var(--redlb); }
.faq-accordion .accordion-body { padding:0 2.5rem 1.25rem 0; color:var(--greylb); }

@media (max-width: 991.98px) {
  .py-lg-6 { padding-top:4rem!important; padding-bottom:4rem!important; }
  .lawyer-image-wrap { min-height:390px; max-width:560px; margin-inline:auto; }
}
@media (max-width: 575.98px) {
  .home-hero h1 { font-size:2.65rem; }
  .hero-portrait { max-width:440px; margin-inline:auto; }
  .audience-card { padding:1.35rem; }
  .practice-card p { min-height:0; }
  .lawyer-image-wrap { min-height:330px; }
  .bar-card { width:72%; padding:1rem; }
  .local-meta { grid-template-columns:1fr; gap:0; }
}

/* Practice pages */
.text-lb{color:var(--redlb)!important}.bg-soft{background:#f7f5f3}.practice-hero{background:linear-gradient(135deg,#fff 0%,#f7f3f0 100%)}
.practice-hero h1{font-size:clamp(2.45rem,5vw,4.6rem);line-height:1.02;max-width:15ch}.practice-hero .lead{font-size:1.18rem;color:#5d5d5d;max-width:64ch}.practice-hero nav a{color:#666;text-decoration:none}.practice-hero nav span{margin:0 .35rem;color:#888}
.practice-summary{padding:1.65rem;border-radius:1rem;background:#fff;border:1px solid var(--line);box-shadow:0 1.2rem 3rem rgba(0,0,0,.06)}.practice-summary-label{display:block;font-weight:800;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:#444}
.issue-card{padding:1.5rem;border:1px solid var(--line);background:#fff;border-radius:.75rem}.issue-card h3{font-size:1.3rem}.issue-card p{color:var(--greylb);margin:0}.service-list article{padding:0 0 1.5rem 1.3rem;border-left:2px solid #e1d8d1}.service-list article:last-child{padding-bottom:0}.service-list h3{font-size:1.35rem}.service-list p{color:var(--greylb);margin:0}.process-dark article{border-top:1px solid rgba(255,255,255,.25);padding-top:1.25rem}.process-dark article>span{display:block;color:#d6a3a3;font-weight:900;margin-bottom:.7rem}.process-dark h3{font-size:1.25rem}.process-dark p{color:#c9c9c9;margin:0}.doc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.doc-grid div{padding:.9rem 1rem;background:#faf9f7;border-left:3px solid var(--redlb);font-weight:650}.attention-box{padding:1.75rem;border-radius:.9rem;background:#2f2f2f;color:#fff}.attention-box h3{font-size:1.5rem}.attention-box p{color:#ddd}.related-link{display:flex;flex-direction:column;height:100%;padding:1.25rem;border:1px solid var(--line);border-radius:.65rem;color:var(--ink);text-decoration:none;background:#fff}.related-link:hover{border-color:#c9aaa0;color:var(--redlb)}.related-link span{color:var(--greylb);font-size:.9rem;margin-top:.35rem;font-weight:400}
.particulier-hero{background:radial-gradient(circle at 80% 0,rgba(153,0,0,.08),transparent 28%),linear-gradient(135deg,#fff,#f7f3f0)}.particulier-hero h1{font-size:clamp(2.6rem,5vw,4.8rem);line-height:1}.need-card{display:flex;flex-direction:column;height:100%;padding:1.5rem;border:1px solid var(--line);border-radius:.8rem;background:#fff;text-decoration:none;color:var(--ink);transition:.18s}.need-card:hover{transform:translateY(-3px);box-shadow:0 1rem 2rem rgba(0,0,0,.05);border-color:#d1b7af}.need-card h2{font-size:1.45rem}.need-card p{color:var(--greylb);flex:1}.need-card span{font-weight:800;color:var(--redlb)}
@media(max-width:575.98px){.doc-grid{grid-template-columns:1fr}.practice-hero h1{font-size:2.45rem}}

/* Institutional, fees, contact & legal */
.institution-hero{background:radial-gradient(circle at 88% 5%,rgba(153,0,0,.075),transparent 28%),linear-gradient(135deg,#fff,#f7f3f0)}
.institution-hero h1{font-size:clamp(2.55rem,5vw,4.8rem);line-height:1.02;max-width:16ch}.institution-hero .lead{font-size:1.2rem;color:#5d5d5d;max-width:66ch}
.cabinet-portrait{overflow:hidden;border-radius:1rem;background:#eee;box-shadow:0 1.5rem 3rem rgba(0,0,0,.09)}.cabinet-portrait img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:center 20%}.cabinet-portrait figcaption{padding:.8rem 1rem;background:#fff;color:var(--greylb);font-size:.9rem}
.barreau-panel{padding:1.8rem;background:#fff;border:1px solid var(--line);border-radius:1rem;box-shadow:0 1rem 2.4rem rgba(0,0,0,.05)}.barreau-panel img{max-width:150px;height:auto}
.fee-card{height:100%;padding:1.8rem;border-radius:1rem;background:#fff;border:1px solid var(--line)}.fee-card>span{display:inline-block;color:var(--redlb);font-weight:900;margin-bottom:1rem}.fee-card h2{font-size:1.65rem}.fee-card p{color:#555}
.direct-contact{display:grid;gap:.75rem}.direct-contact a{display:flex;flex-direction:column;padding:1.1rem 1.25rem;background:#fff;border:1px solid var(--line);border-radius:.75rem;text-decoration:none;color:var(--ink)}.direct-contact a:hover{border-color:#c8a7a0}.direct-contact strong{font-size:1.12rem}.direct-contact span{font-size:.88rem;color:var(--redlb);font-weight:700;margin-top:.15rem}
.contact-form{padding:clamp(1.25rem,3vw,2rem);background:#fff;border:1px solid var(--line);border-radius:1rem;box-shadow:0 1.2rem 3rem rgba(0,0,0,.045)}.contact-form .form-control,.contact-form .form-select{border-color:#d6d0cb}.contact-form .form-control:focus,.contact-form .form-select:focus{border-color:var(--redlb);box-shadow:0 0 0 .2rem rgba(153,0,0,.09)}.privacy-note{font-size:.86rem;color:#666}.hp-field{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.contact-side{position:sticky;top:150px;padding:1.75rem;background:#2f2f2f;color:#fff;border-radius:1rem}.contact-side address,.contact-side p{color:#ddd}.contact-side hr{border-color:rgba(255,255,255,.2)}
.local-map{overflow:hidden;border:1px solid var(--line);border-radius:1rem;background:#f6f3ef;box-shadow:0 1.2rem 2.5rem rgba(0,0,0,.05)}.local-map svg{display:block;width:100%;height:auto}
.legal-page h1{font-size:clamp(2.5rem,5vw,4.4rem);margin-bottom:2rem}.legal-page h2{font-size:1.55rem;margin-top:2.4rem;margin-bottom:.8rem}.legal-page p,.legal-page li{color:#555;line-height:1.75}.legal-update{margin-top:3rem;padding-top:1rem;border-top:1px solid var(--line);font-size:.9rem}
@media(max-width:991.98px){.contact-side{position:static}.institution-hero h1{max-width:none}}

/* --- Etape 07 : accessibilite, erreurs et preferences utilisateur --- */
:focus-visible {
  outline: 3px solid #990000;
  outline-offset: 3px;
}

.quick-link-card {
  padding: 1.5rem;
  border: 1px solid var(--line, #e5e0dc);
  border-radius: 1rem;
  background: #fff;
  color: var(--ink, #242424);
  text-decoration: none;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.quick-link-card strong,
.quick-link-card span { display: block; }
.quick-link-card span { margin-top: .45rem; color: var(--muted, #6b6b6b); }
.quick-link-card:hover { transform: translateY(-2px); border-color: rgba(153,0,0,.35); box-shadow: 0 .8rem 2rem rgba(0,0,0,.08); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

@media print {
  .site-header, .site-footer, .mobile-actionbar, .cta-band, .btn, .skip-link { display: none !important; }
  body { color: #000; background: #fff; }
  a { color: #000; text-decoration: underline; }
  main { padding: 0 !important; }
}
