@charset "UTF-8";
/* ==========================================================================
   1. Bootstrap 5.3.0, TRIMMED (2026-10-01): only the rules the site uses are kept
      (233 KB -> 33 KB), selected with PurgeCSS against the templates, site JS,
      glossary and the live blog/archive content. A Bootstrap class not used
      before (new utility or component) has NO style here: take the full
      bootstrap.min.css from git history (static/vendor/bootstrap/) and re-trim.
   2. Bootstrap Icons, TRIMMED: only the 20 icons used. The font files in
      vendor/bootstrap-icons/fonts/ are subset to the same 20 glyphs, so a new
      bi-* icon needs its rule added here AND the fonts re-subset (full fonts in
      git history).
   3. Site styles (the original style.css), unchanged.
   Order matters: 1 then 2 then 3, as when they were three separate files.
   ========================================================================== */
/*!
 * Bootstrap  v5.3.0 (https://getbootstrap.com/)
 * Copyright 2011-2023 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.figure{display:inline-block}.container,.container-fluid{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}@media (min-width:1400px){.container{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.col-auto{flex:0 0 auto;width:auto}.col-2{flex:0 0 auto;width:16.66666667%}@media (min-width:576px){.col-sm-6{flex:0 0 auto;width:50%}}@media (min-width:768px){.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-8{flex:0 0 auto;width:66.66666667%}}@media (min-width:992px){.col-lg-2{flex:0 0 auto;width:16.66666667%}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-body-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-text:last-child{margin-bottom:0}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}@keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}@keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.visually-hidden{width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption){position:absolute!important}.d-flex{display:flex!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.position-relative{position:relative!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.w-100{width:100%!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.justify-content-start{justify-content:flex-start!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.align-items-center{align-items:center!important}.m-2{margin:.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.mt-5{margin-top:3rem!important}.me-1{margin-right:.25rem!important}.me-3{margin-right:1rem!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-4{margin-bottom:1.5rem!important}.ms-3{margin-left:1rem!important}.ms-auto{margin-left:auto!important}.p-3{padding:1rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.rounded-circle{border-radius:50%!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}

/* ---------- 2. Bootstrap Icons (trimmed) ---------- */
@font-face {
  font-display: block;
  font-family: "bootstrap-icons";
  src: url("../vendor/bootstrap-icons/fonts/bootstrap-icons.b9f2c7e63cad.woff2") format("woff2"),
url("../vendor/bootstrap-icons/fonts/bootstrap-icons.447f966f6b96.woff") format("woff");
}

.bi::before,
[class^="bi-"]::before,
[class*=" bi-"]::before {
  display: inline-block;
  font-family: bootstrap-icons !important;
  font-style: normal;
  font-weight: normal !important;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  vertical-align: -.125em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.bi-arrow-down-right::before { content: "\f123"; }
.bi-arrow-right::before { content: "\f138"; }
.bi-arrow-up-right::before { content: "\f144"; }
.bi-bar-chart::before { content: "\f17e"; }
.bi-bullseye::before { content: "\f1de"; }
.bi-check2::before { content: "\f272"; }
.bi-chevron-down::before { content: "\f282"; }
.bi-cpu::before { content: "\f2d6"; }
.bi-envelope::before { content: "\f32f"; }
.bi-envelope-fill::before { content: "\f32c"; }
.bi-file-earmark-text::before { content: "\f38b"; }
.bi-globe2::before { content: "\f3ef"; }
.bi-journal-text::before { content: "\f444"; }
.bi-layers::before { content: "\f45b"; }
.bi-phone::before { content: "\f4e7"; }
.bi-search::before { content: "\f52a"; }
.bi-shield-check::before { content: "\f52f"; }
.bi-stopwatch::before { content: "\f597"; }
.bi-translate::before { content: "\f658"; }
.bi-x::before { content: "\f62a"; }

/* ---------- 3. Site styles ---------- */
@font-face {
    font-family: 'Futura';
    src: url("/static/fonts/futura.ad9142795dc9.woff2") format('woff2'),
    url("/static/fonts/futura.91c4d1b9e6b5.woff") format('woff'),
    url("/static/fonts/futura.ee2f1bcf0e8c.ttf") format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Futura';
    src: url("/static/fonts/futura-bold.b5daf4a50227.woff2") format('woff2'),
    url("/static/fonts/futura-bold.7acb8aa5f1e3.woff") format('woff'),
    url("/static/fonts/futura-bold.43523bffeca0.ttf") format('truetype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Helvetica Neue';
    src: url("/static/fonts/helveticaneue.8740086915e8.woff2") format('woff2'),
    url("/static/fonts/helveticaneue.b6559104c03a.woff") format('woff'),
    url("/static/fonts/helveticaneue.c9f50bd42634.ttf") format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Helvetica Neue';
    src: url("/static/fonts/helveticaneue-bold.b0ea69c9c6ca.woff2") format('woff2'),
    url("/static/fonts/helveticaneue-bold.a9f1b652ea09.woff") format('woff'),
    url("/static/fonts/helveticaneue-bold.489052f094c9.ttf") format('truetype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Helvetica Neue';
    src: url("/static/fonts/helveticaneue-italic.581a10982cc2.woff2") format('woff2'),
    url("/static/fonts/helveticaneue-italic.bcd5057192ca.woff") format('woff'),
    url("/static/fonts/helveticaneue-italic.7a305a0f61b2.ttf") format('truetype');
    font-weight: normal;
    font-style: italic;
    font-display: swap;
}

/* ==========================================================================
   Design tokens (single source of truth - see DESIGN_GUIDELINES.md)
   Codified 2026-06-15. Values are byte-identical to the previous hardcoded
   palette, so substituting these vars is rendering-preserving.
   ========================================================================== */
:root {
    /* Brand surfaces */
    --color-bg: #F6F1EB;          /* warm beige, primary background */
    --color-surface: #FAFAF8;     /* off-white, cards/forms */
    --color-surface-2: #ffffff;   /* pure white */
    --color-border: #e3dacc;      /* darker beige, borders/accents */

    /* Ink & text */
    --color-ink: #000000;         /* headings / primary */
    --color-text-strong: #3A3934; /* subtitles */
    --color-text: #555555;        /* body */
    --color-text-muted: #888888;  /* dark-mode secondary text ONLY: 3.16:1 on the beige, fails AA */
    --color-text-soft: #6b6b6b;   /* secondary text on light surfaces: 4.75:1 on beige, AA */
    --color-ghost: #8f8578;       /* faint display type, AA for large text only */

    /* Dark-mode surfaces */
    --color-ink-1: #111111;
    --color-ink-2: #1a1a1a;
    --color-ink-3: #2a2a2a;

    /* Accents & status */
    --color-accent: #a50606;      /* brand red */
    --color-accent-dark: #8b0000; /* deep red (replaces stray `darkred`/#880000) */
    --color-danger: #c0392b;
    --color-success: #27ae60;

    /* Mac window chrome */
    --chrome-red: #ff5f57;
    --chrome-yellow: #febc2e;
    --chrome-green: #28c840;

    /* Radii */
    --radius: 15px;
    --radius-lg: 24px;
    --radius-sm: 12px;

    /* ----------------------------------------------------------------------
       Type. Three faces, four voices; nothing else is loaded, so nothing else
       may be named. Futura bold is display, Futura regular is the quiet
       display voice, Helvetica Neue is text (bold = emphasis, not a face), and
       Georgia is the one outside voice (a quoted client).
       League Spartan was named in 39 stacks and loaded in none: dropped.
       ---------------------------------------------------------------------- */
    --font-display: 'Futura', sans-serif;
    --font-body: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    --font-quote: Georgia, serif;

    /* The type scale: eight steps for the whole site. A component takes the
       nearest token and never declares a literal font-size. Promoted from
       pages/veille.css (the expertise system) on 2026-08-17. */
    --fs-display-1: clamp(2.3rem, 5.2vw, 4.5rem);  /* the h1, once per page */
    --fs-display-2: clamp(1.7rem, 3vw, 2.5rem);    /* h2, pull quote, big numbers */
    --fs-display-3: clamp(1.2rem, 2vw, 1.6rem);    /* h3, signature line */
    --fs-emph: 1.2rem;                             /* inline emphasis numerals */
    --fs-lede: clamp(1.125rem, 1.45vw, 1.2rem);    /* hero lede (floor sits above body) */
    --fs-body: 1.0625rem;                          /* prose, table row heads */
    --fs-small: 0.95rem;                           /* table cells, buttons, links, roles */
    --fs-caption: 0.85rem;                         /* captions, notes, column heads */

    /* One poster step, for a full-bleed statement at most once per page (the
       home hero, the open-rate figure). Anything else takes display-1.
       The floor is 3.5rem, not 3rem: at 390px a 3rem floor dropped the mobile
       home hero to 48px, under the 64px it carried before the scale landed, and
       left the hero block half empty. Checked at 390px on both users. */
    --fs-poster: clamp(3.5rem, 6.7vw, 6rem);

    /* Tracking. Three values, all of them tight or neutral: Futura at display
       sizes needs negative tracking, text needs none, and the rare uppercase
       label needs air. Positive tracking on running text is not a house move. */
    --track-display: -0.02em;
    --track-text: 0;
    --track-caps: 0.08em;
}

/* ==========================================================================
   Title reveal (engine: static/publicapp/js/title-reveal.js)
   The per-character spans exist only while the script is animating them, and
   they are only hidden while the parent carries .is-revealing. The template
   always ships the title as real text, so this component cannot hide it:
   no JS, no split, no hidden characters.
   ========================================================================== */
.title-reveal {
    hyphens: none;
}

.title-reveal__word {
    white-space: nowrap;  /* a word never breaks between two of its letters */
}

/* Plain inline, not inline-block: an inline-block letter loses the font's kerning
   with its neighbours, so the animated line is wider than the final text and a
   centred title visibly shifts when the script restores it. Safari loses it even
   on plain inline spans; title-reveal.js corrects that with per-letter margins. */
.title-reveal.is-revealing .title-reveal__char {
    opacity: 0;
    animation: title-reveal-char 150ms linear forwards;
}

@keyframes title-reveal-char {
    to {
        opacity: 1;
    }
}

@media (prefers-reduced-motion: reduce) {
    .title-reveal.is-revealing .title-reveal__char {
        animation: none;
        opacity: 1;
    }
}

/* Bootstrap sizes .btn from its own variable; the house scale wins instead. */
.btn {
    font-size: var(--fs-small);
}

/* The language switcher in the nav. The translate glyph now marks it as a
   language control, so it no longer needs bold to stand out: it reads like the
   other nav items. */
.nav-link-lang {
    font-weight: normal;
}

/* The globe/translate glyph before the language code, in the Wikipedia idiom:
   marks the switcher as a language control, not just two loose letters. */
.lang-icon {
    margin-right: 0.3em;
    font-size: 1.05em;
    vertical-align: -0.08em;
}

html {
    scroll-behavior: smooth;
}

/* Main landmark wrapper (base templates): no box of its own, so the page blocks stay
   direct flex children of <body> exactly as before. */
.site-main {
    display: contents;
}

body {
    background-color: var(--color-bg);
    font-size: var(--fs-body);
    padding-top: 100px;
    margin: 0;
    padding-bottom: 0;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    font-family: var(--font-body);
    color: var(--color-ink);
}

h1 {
    font-family: var(--font-display);
    font-weight: bold;
    font-size: var(--fs-display-1);
    letter-spacing: var(--track-display);
    color: var(--color-ink);
}

.h1-other {
    margin-top: 100px;
    text-align: center;
}

/* The page title on the legal and utility pages (mentions, cgu, bot). A page
   title takes display-2 there, not display-3: display-3 is card-title size and
   left "Conditions générales d'utilisation" looking like a subheading. */
.simple-h1 {
    margin-top: 100px;
    margin-bottom: 100px;
    font-family: var(--font-display);
    font-weight: bold;
    font-size: var(--fs-display-2);
    letter-spacing: var(--track-display);
}

.major {
    font-family: var(--font-display);
    font-weight: bold;
    font-size: var(--fs-lede);
}

h3 {
    font-family: var(--font-display);
    font-weight: bold;
    color: var(--color-ink);
}

h2 {
    font-family: var(--font-display);
    font-weight: bold;
    color: var(--color-ink);
}

.h4-bold {
    font-family: var(--font-display);
    font-weight: bold;
}

h4 {
    font-family: var(--font-display);
    color: var(--color-ink);
}

.pro-subtitle {
    font-size: var(--fs-display-3);
    font-weight: normal;
}

.apropos-subtitle {
    font-size: var(--fs-display-3);
    font-family: var(--font-display);
    font-weight: bold;
}

.apropose-s-2 {
    font-weight: normal;
    font-size: var(--fs-display-3);

}

a {
    color: var(--color-text);
}

a img {
    vertical-align: middle;
   /*display: block;*/
   /* border: none;*/
}

.main-title {
    margin-left: 10px;
    margin-right: 10px;
}

.second-text-home {
    font-size: var(--fs-lede);
    margin-top: 50px;
    margin-bottom: 60px;
}

.first-card {
    border-radius: 15px;
    max-width: 700px;
    min-height: 230px;
    border: none;
}

.second-card {
    border-radius: 15px;
    max-width: 700px;
    min-height: 230px;
    border: none;
    background-color: var(--color-border);
}

.example-card {
    border-radius: 15px;
    max-width: 350px;
    min-height: 100px;
    border: none

}

.b2b-card {
    border-radius: 15px;
    max-width: 700px;
    min-height: 100px;
    border: none;
    background-color: var(--color-surface);
}

.first-card2 {
    border-radius: 15px;
    max-width: 100%;
    min-height: 230px;
    border: none;
    margin: 0 auto;
    /*padding: 20px;*/
}

.card-main {
    margin-left: 8px;
}

.card-tag {
    font-size: var(--fs-caption);
    position: absolute;
    top: 10px;
    left: 15px;
}

.card-tag-bottom {
    font-size: var(--fs-small);
    /*position: absolute;*/
    /*top: 10px;*/
    /*left: 15px;*/
    color: var(--color-surface);
}

.card-title {
    font-family: var(--font-display);
    font-weight: bold;
}

.card-title-bottom {
    font-family: var(--font-display);
    font-weight: bold;
    font-size: var(--fs-lede);
    color: #1b1b1b;

}

.card-review {
    min-height: 180px;
    display: flex;
    flex-direction: column;
    position: relative;
    box-shadow: none;
    border: none;
    justify-content: space-between;
}

.card-body-review {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.card-date {
    font-size: var(--fs-small) !important;
    /*margin: 10px 10px 10px 10px !important;*/
    /*text-align: center !important;*/
    /*font-style: italic !important;*/
}

.card-text-review {
    font-size: var(--fs-small) !important;
    margin: 10px 10px 10px 10px !important;
    text-align: center !important;
    font-style: italic !important;
}

.card-name-and-company {
    font-size: var(--fs-caption);
    color: black;
}

.first-block {
    margin-top: 80px;
}

/* the about hero hugs its content: a fixed height here parks the section
   menu a full screen down */
.apropos-block { }

.block_p {
    margin-top: 50px;
    font-size: var(--fs-body);
    margin-bottom: 60px;
}

.block_p2 {
    margin-top: 50px;
    font-size: var(--fs-body);
    margin-bottom: 60px;
}

.container {
    margin-top: 70px;
    font-size: var(--fs-body);
    margin-bottom: 60px;
}

.second-block {
    background-color: var(--color-surface);
    margin-top: 40px;

}

.fourth-block {
    background-color: var(--color-surface-2);

    margin-top: 40px;

}

.big_text {
    font-family: var(--font-display);
    font-weight: bold;
    margin-top: 50px;
    margin-bottom: 40px;
}

.pro-second-message {
    font-size: var(--fs-lede);
    text-align: center;
    max-width: 650px;
    margin: 10px auto 40px auto;
}

.apropos-second-message {
    font-size: var(--fs-lede);
    text-align: center;
    max-width: 550px;
    margin: 50px auto 40px auto;
}

.sticky-menu {
    position: -webkit-sticky;
    position: sticky;
    top: 80px;
    background-color: var(--color-bg);
    z-index: 1000;
    padding: 0 0;
}

.apropos-menu {
    margin-left: 60px;
}

.custom-form {
    border: none;
    border-radius: 15px;
    padding: 20px;
    box-shadow: none;
    width: 40%;
}

.custom-form .form-group input {
    background-color: var(--color-surface);
    border: 1px solid black;
    border-radius: 15px 0 0 15px;
    padding: 15px 15px;
    font-size: var(--fs-small);
    width: 100%;
    box-shadow: none;
}

.custom-form .form-group input:focus {
    border-color: black;
    outline: none;
    box-shadow: none;
}

.b2b-form input,
.b2b-form select,
.b2b-form textarea {
    border-radius: 15px;
    padding: 10px;
    border: 1px solid black;
    background-color: var(--color-surface);
    width: 100%;
}

.contact-form input,
.contact-form select,
.contact-form textarea {
    border-radius: 15px;
    padding: 10px;
    border: 1px solid black;
    background-color: var(--color-surface);
    width: 100%;
}

.btn.btn-primary {
    background-color: black !important;
    border-radius: 0 15px 15px 0;
    color: var(--color-surface) !important;
    padding: 16px 20px;
    border: black;
    width: 200px;
}

.btn-b2b-primary {
    background-color: black !important;
    border-radius: 15px;
    color: var(--color-surface) !important;
    padding: 16px 20px;
    border: black;
    width: 100%;
}

.try_btn {
    background-color: black !important;
    border-radius: 15px !important;
    color: var(--color-surface) !important;
    padding: 15px 20px;
    border: none;
    margin-bottom: 20px;
}

.pro_btn {
    background-color: #CEC6BA !important;
    border-radius: 10px !important;
    border-color: #CEC6BA !important;
    color: black !important;
    padding: 15px 70px;

    /*border: 1.2px solid rgba(0, 0, 0, 1) !important;*/
}

.button-container {
    display: flex;
    justify-content: center;
    align-items: center;
}

.apropos-btn {
    margin: 10px auto 40px auto;
    text-align: center;
    background-color: black !important;
    border-radius: 15px !important;
    color: var(--color-surface) !important;
    padding: 15px 20px;
    border: none;
    min-width: 200px;
}

.btn.btn-primary:hover {
    background-color: darkgray !important;
}

.example_btn {
    margin-left: 100px;
    background-color: var(--color-surface) !important;
    border-radius: 15px !important;
    color: black !important;
    padding: 15px 30px;
    border: 5px;
    border: 1px solid black;
}

.example_btn:hover {
    color: grey !important;
}

.btn.btn-nav-a-propos {
    font-family: var(--font-display);
    background-color: var(--color-bg) !important;
    border-radius: 30px !important;
    color: black !important;
    border: 1.2px solid rgba(0, 0, 0, 1) !important;
}

.btn.btn-tag {
    font-family: var(--font-display);
    /*background-color: var(--color-bg) !important;*/
    font-size: var(--fs-caption);
    border-radius: 30px !important;
    color: var(--color-text-strong) !important;
    border: 1.2px solid rgba(0, 0, 0, 1) !important;
}

.btn.btn-nav-a-propos.btn-active {
    background-color: black !important;
    color: var(--color-surface) !important;
}

.navbar {
    background-color: var(--color-bg) !important;
    padding: 1rem 1rem;
}

.navbar .nav-link {
    color: var(--color-text-strong) !important;
    position: relative;
    font-size: var(--fs-small);
    margin-right: 1.8rem;
}

.navbar .nav-link::after {
    content: '';
    display: block;
    width: 3px;
    height: 3px;
    background: black;
    border-radius: 50%;
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translate(-50%, -100%);
    opacity: 0;
    transition: opacity 0.3s;
}

.navbar .nav-link:hover::after {
    opacity: 1;
}

.navbar .dropdown-toggle::after {
    content: none;
}

.navbar-toggler {
    border: none;
    /* The burger is the ☰ character: a glyph sized to the tap target, not type,
       so it keeps a literal size and stays off the scale. */
    font-size: 24px;
}

/* Nav dropdowns (Expertise, Ressources): a detached surface card with plain
   text items and underline hover (recipe taken from anthropic.com's nav panel,
   translated to house tokens). Always display:block so open/close can
   transition; visibility carries the toggle, for both the hover path and
   Bootstrap's .show (click / keyboard) path.

   Scoped to .navbar on purpose: these rules hide items until opened, so a
   Bootstrap dropdown used anywhere else on the site must not inherit them. */
.navbar .dropdown-menu {
    display: block;
    visibility: hidden;
    opacity: 0;
    transform: translateY(4px);
    transition: opacity 0.25s cubic-bezier(0.77, 0, 0.175, 1),
                transform 0.25s cubic-bezier(0.77, 0, 0.175, 1),
                visibility 0.25s;
    margin-top: 6px;
    padding: 1.1rem 1.4rem 1.2rem;
    background-color: var(--color-surface);
    border: none;
    border-radius: var(--radius);
    box-shadow: 0 2px 2px rgba(0, 0, 0, 0.01),
                0 4px 4px rgba(0, 0, 0, 0.02),
                0 16px 24px rgba(0, 0, 0, 0.04);
}

/* click path: Bootstrap stamps data-bs-popper and would shrink the gap to 2px */
.navbar .dropdown-menu[data-bs-popper] {
    margin-top: 6px;
}

/* invisible bridge over the 6px gap so hover survives the crossing */
.navbar .dropdown-menu::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: -8px;
    height: 8px;
}

.navbar .nav-item.dropdown:hover .dropdown-menu,
.navbar .dropdown-menu.show {
    visibility: visible;
    opacity: 1;
    transform: translateY(0);
}

/* hover intent: a sweep across the nav shouldn't flash the panel open.
   Only the hover path waits; closing and click-open keep zero delay. */
.navbar .nav-item.dropdown:hover .dropdown-menu {
    transition-delay: 0.15s;
}

.navbar .nav-item.dropdown:hover .dropdown-menu.show {
    transition-delay: 0s;
}

.navbar .dropdown-item {
    padding: 0.3rem 0;
    font-size: var(--fs-small);
    color: var(--color-text-strong);
    opacity: 0;
    transform: translateY(4px);
    transition: color 0.15s ease, opacity 0.2s ease, transform 0.2s ease;
}

.navbar .nav-item.dropdown:hover .dropdown-menu .dropdown-item,
.navbar .dropdown-menu.show .dropdown-item {
    opacity: 1;
    transform: translateY(0);
}

/* the one-by-one reveal: 70ms stagger. The hover set starts after the
   panel's 0.15s intent delay; the click set starts almost at once. */
.navbar .nav-item.dropdown:hover .dropdown-menu li:nth-child(1) .dropdown-item { transition-delay: 0.17s; }
.navbar .nav-item.dropdown:hover .dropdown-menu li:nth-child(2) .dropdown-item { transition-delay: 0.24s; }
.navbar .nav-item.dropdown:hover .dropdown-menu li:nth-child(3) .dropdown-item { transition-delay: 0.31s; }
.navbar .nav-item.dropdown:hover .dropdown-menu li:nth-child(4) .dropdown-item { transition-delay: 0.38s; }

.navbar .dropdown-menu.show li:nth-child(1) .dropdown-item { transition-delay: 0.02s; }
.navbar .dropdown-menu.show li:nth-child(2) .dropdown-item { transition-delay: 0.09s; }
.navbar .dropdown-menu.show li:nth-child(3) .dropdown-item { transition-delay: 0.16s; }
.navbar .dropdown-menu.show li:nth-child(4) .dropdown-item { transition-delay: 0.23s; }

.navbar .dropdown-item:hover,
.navbar .dropdown-item:focus {
    color: var(--color-ink);
    background-color: transparent;
    text-decoration: underline;
    text-underline-offset: 0.18em;
}

.icon-small i {
    font-size: 0.8em;
}

/* caret on a nav dropdown trigger (Expertise, Ressources) */
.nav-caret {
    display: inline-block;
    font-size: 0.7rem;
    margin-left: 3px;
    transition: transform 0.3s ease;
}

.nav-item.dropdown:hover .nav-caret {
    transform: rotate(180deg);
}

.navbar-brand {
    font-family: var(--font-display);
    font-weight: bold;
    /* The wordmark is the logo, not type: it keeps a literal size and stays off
       the scale, like the footer wordmark and the burger. Renders "abstrakt."
       here and "a." under 768px (see the ::after rules). */
    font-size: 1.8rem;
    padding-left: 2rem;
}

/* ==========================================================================
   Mobile menu drawer (#dummyText)
   Rows mirror the desktop nav, in the same order, and the two grouped rows
   (Expertise, Ressources) open in place: the flat list of ten links it used to
   be ran past the bottom of a phone with no way to scroll to the end of it.
   Recipe from anthropic.com's mobile panel: a hairline under every row, a
   chevron only where there are children, the panel pushing the rest of the list
   down rather than covering it, and the CTA pinned after the last row.

   These rules are unconditional on purpose. The drawer is display:none until
   the burger opens it, and the burger only exists under 992px, so a breakpoint
   here buys nothing and cost the 768-992px band its styling.
   ========================================================================== */
.dummy-text {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100dvh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    background-color: black;
    z-index: 1050;
    padding: 0 2rem 2.5rem;
    text-align: left;
    color: var(--color-bg);
}

/* Browsers without dvh (older iOS) fall back to the layout viewport. */
@supports not (height: 100dvh) {
    .dummy-text {
        height: 100%;
    }
}

.dummy-text-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 0.5rem;
    margin-bottom: 1.5rem;
}

.dummy-text-brand {
    /* wordmark, off the scale (see .navbar-brand) */
    font-family: var(--font-display);
    font-weight: bold;
    font-size: 3rem;
    line-height: 1;
}

.close-btn {
    color: var(--color-bg);
    /* The × that closes the mobile menu: a tap target glyph, not type. */
    font-size: 4rem;
    line-height: 1;
    cursor: pointer;
}

.dummy-text-main {
    color: var(--color-bg);
}

.dummy-text-secondary {
    color: grey;
    margin-top: 2rem;
}

.dummy-text-secondary li {
    margin-bottom: 0.75rem;
}

.dummy-text-secondary .footer-link {
    font-size: var(--fs-small);
}

.dummy-text p {
    font-size: var(--fs-lede);
}

/* A row: either a link (no children) or the toggle of a group. Both look the
   same closed, so the list reads as one column of equals. */
.drawer-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    padding: 1.05rem 0;
    border: 0;
    border-bottom: 1px solid rgba(246, 241, 235, 0.2);
    background: none;
    color: var(--color-bg);
    font-family: var(--font-display);
    font-weight: bold;
    font-size: var(--fs-display-2);
    line-height: 1.15;
    letter-spacing: var(--track-display);
    text-align: left;
    text-decoration: none;
}

.drawer-row:hover,
.drawer-row:focus-visible {
    color: var(--color-bg);
    text-decoration: none;
}

/* The chevron is a tap affordance glyph, not type: literal size, off the scale. */
.drawer-caret {
    flex: 0 0 auto;
    font-size: 20px;
    line-height: 1;
    transition: transform 0.3s cubic-bezier(0.77, 0, 0.175, 1);
}

.drawer-row[aria-expanded="true"] .drawer-caret {
    transform: rotate(180deg);
}

/* The panel animates on a max-height the script measures, so the transition
   works without hard-coding a height per group. */
.drawer-panel {
    overflow: hidden;
    max-height: 0;
    transition: max-height 0.32s cubic-bezier(0.77, 0, 0.175, 1);
}

/* The hairline under an open panel separates it from the next row. It belongs to
   the open state only: on a closed panel it still drew its 1px, so a collapsed
   group showed two rules a pixel apart. */
.drawer-row[aria-expanded="true"] + .drawer-panel {
    border-bottom: 1px solid rgba(246, 241, 235, 0.2);
}

.drawer-panel-inner {
    padding: 0.7rem 0 1.1rem;
}

.drawer-sub {
    display: block;
    padding: 0.6rem 0;
    font-family: var(--font-body);
    font-weight: normal;
    font-size: var(--fs-body);
    line-height: 1.35;
    color: rgba(246, 241, 235, 0.78);
    text-decoration: none;
    opacity: 0;
    transform: translateY(4px);
    transition: opacity 0.2s ease, transform 0.2s ease, color 0.15s ease;
}

.drawer-sub:hover,
.drawer-sub:focus-visible {
    color: var(--color-bg);
    text-decoration: underline;
    text-underline-offset: 0.18em;
}

/* The same one-by-one reveal as the desktop dropdown: 70ms apart. */
.drawer-row[aria-expanded="true"] + .drawer-panel .drawer-sub {
    opacity: 1;
    transform: translateY(0);
}

.drawer-row[aria-expanded="true"] + .drawer-panel .drawer-sub:nth-child(1) { transition-delay: 0.04s; }
.drawer-row[aria-expanded="true"] + .drawer-panel .drawer-sub:nth-child(2) { transition-delay: 0.11s; }
.drawer-row[aria-expanded="true"] + .drawer-panel .drawer-sub:nth-child(3) { transition-delay: 0.18s; }
.drawer-row[aria-expanded="true"] + .drawer-panel .drawer-sub:nth-child(4) { transition-delay: 0.25s; }

@media (prefers-reduced-motion: reduce) {
    .drawer-caret,
    .drawer-panel,
    .drawer-sub {
        transition: none;
    }
}

/* The drawer covers the navbar, so its "Prendre RDV" goes with it: without this
   the CTA is unreachable for as long as the menu is open. Light fill on black,
   the inverse of .nav-btn-secondary. */
.drawer-cta {
    display: block;
    margin-top: 1.75rem;
    padding: 14px 22px;
    border: 2px solid var(--color-surface);
    border-radius: 10px;
    background-color: var(--color-surface);
    color: var(--color-ink);
    font-family: var(--font-display);
    font-weight: bold;
    font-size: var(--fs-small);
    text-align: center;
    text-decoration: none;
    transition: all 0.25s ease;
}

.drawer-cta:hover,
.drawer-cta:focus-visible {
    background-color: transparent;
    color: var(--color-surface);
    text-decoration: none;
}

footer {
    margin-top: auto;
}

.footer-brand {
    font-family: var(--font-display);
    font-weight: bold;
    font-size: var(--fs-small);
    color: var(--color-bg);
    /*margin: 0 0 1rem 0;*/
}

.footer-link {
    color: grey;
    text-decoration: none;
    transition: color 0.3s;
}

.footer-link:hover {
    color: var(--color-bg);
    text-decoration: none;
}

.footer-columns {
    display: flex;
    justify-content: flex-end;
    width: 100%;
}

.footer-column ul li {
    margin-bottom: 1rem;
}

.footer-column {
    margin-left: 6rem;
}

.a-dot {
    font-family: var(--font-display) !important;
    font-weight: bold !important;
    font-size: 3rem !important;
    color: var(--color-bg);
    margin: 0 0 1rem 0;

}

.ftr-a {
    font-family: var(--font-display) !important;
    font-weight: bold !important;
    font-size: 2.5rem !important;
    margin: 0 0 0 0;

}

.line-contener {
    margin-left: 70px;
    margin-right: 70px;
}

.animated-line {
    width: 100%;
    height: 1px;
    background: lightgray;
    position: relative;
    overflow: hidden;
}

.animated-line::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 0%;
    background: black;
    animation: fillBlack 0.4s linear forwards;
}

@keyframes fillBlack {
    0% {
        width: 0%;
    }
    100% {
        width: 100%;
    }
}

.textarea-wrapper {
    position: relative;
    display: inline-block;
    width: fit-content;
}

.placeholder-text {
    position: absolute;
    top: 8px;
    left: 12px;
    color: #6c757d;
    pointer-events: none;
    transition: opacity 0.3s ease, transform 0.3s ease;
}

.fade-out {
    opacity: 0;
    transform: translateY(-20px);
}

.fade-in {
    opacity: 1;
    transform: translateY(0);
}

.blog_title {
    font-size: var(--fs-display-2) !important;
    margin-bottom: 2rem;
    text-align: Left;

}

.blog_content {
    max-width: 800px;
    margin: 10px auto 40px auto;
}

.blog_line_contener {
    max-width: 800px;
    margin: 50px auto 20px auto;
}

.blog_container {
    margin-top: 10px;
    margin-left: 55px;
    margin-right: 55px;
    font-size: var(--fs-body);
    margin-bottom: 60px;
}

.no-underline {
    text-decoration: none;
}

.sepia-image {
    filter: sepia(40%);
}

.business-only {
    font-size: smaller;
    font-style: italic;
}

.footer-div {
    margin-top: 30px !important;
    font-size: var(--fs-body);
    margin-bottom: 30px !important;
    padding-right: 20px;
    padding-left: 20px;
}

.ftr-container {
    margin-top: 30px !important;
    font-size: var(--fs-body);
    margin-bottom: 30px !important;
}

@media (min-width: 992px) {
    .main-title {
        margin-left: 60px;
        margin-right: 10px;

    }
}

@media (min-width: 768px) {
    .first-card2 {
        max-width: 700px;
    }
}

@media (min-width: 992px) {
    .first-card2 {
        max-width: 900px;
    }
}

@media (min-width: 1200px) {
    .first-card2 {
        max-width: 1000px;
    }
}

@media (max-width: 767.98px) {
    .navbar-brand::after {
        content: 'a.';
    }

    .navbar-brand::before {
        content: '';
    }
}

@media (min-width: 768px) {
    .navbar-brand::after {
        content: 'abstrakt.';
    }

    .navbar-brand::before {
        content: '';
    }
}

@media (max-width: 768px) {
    .navbar {
        background-color: var(--color-bg) !important;
        padding: 0 1.2rem;
        position: fixed;
        top: 0;
        width: 100%;
        z-index: 1050;
    }

    body {
        padding-top: 100px;
    }

    .first-block {
        margin-top: 10px;
    }

    .navbar-brand {
        /* "a." alone, so it takes the room the full wordmark had. Off the scale
           for the same reason as the desktop rule above. */
        font-size: 3rem;
        font-family: var(--font-display);
        margin-left: 0;
        padding-left: 0;
    }

    .footer-brand {
        margin-bottom: 1rem;
        margin-top: 0 !important;
        text-align: left;
        font-family: var(--font-display);
    }

    .footer-columns {
        flex-direction: column;
        align-items: flex-start;
        width: 100%;
    }

    .footer-column ul li {
        margin-bottom: 0.5rem;
    }

    .footer-column {
        margin-left: 0;
        margin-bottom: 1rem;
        width: 100%;
        text-align: left;
    }

    .footer-column:not(:last-child) {
        border-bottom: 0.3px solid grey;
        padding-bottom: 1rem;
    }

    .footer-link {
        font-size: var(--fs-small);
        margin-bottom: 0.5rem;
    }
}

@media (max-width: 600px) {
    .blog_content {
        margin: 10px;

    }
}

@media (max-width: 767.98px) {
    .third-block i {
        font-size: 50px;
    }
}

@media (min-width: 768px) {
    .third-block i {
        font-size: 100px;
    }
}

@media (max-width: 768px) {
    .custom-form {
        flex-direction: column;
        width: 90%;
    }

    .custom-form .form-group {
        width: 100%;
        margin-bottom: 10px;
    }

    .custom-form .form-group input {
        border-radius: 15px;
    }

    .btn.btn-primary {
        width: 100%;
        border-radius: 15px;
        margin-top: 10px;
        width: 200px;
    }

    .container {
        padding-left: 32px;
        padding-right: 32px;
    }

    .apropos-second-message {
        padding-left: 32px;
        padding-right: 32px;
        text-align: left;
    }

    .pro-second-message {
        text-align: left;
    }

}

@media (min-width: 800px) {
    .pro-card {
        display: none;
    }
}

/* ==========================================================================
   Cookie-consent banner (tarteaucitron) - moved from base templates 2026-06-15.
   FR default min-height 24px; EN banner is taller (86px) via the lang override.
   ========================================================================== */
        /* Tarteaucitron - Ultra minimal banner */
        #tarteaucitronRoot #tarteaucitronAlertBig {
            background: var(--color-ink) !important;
            border-radius: 0 !important;
            box-shadow: none !important;
            padding: 10px 0 !important;
            min-height: 24px !important;
            left: 0 !important;
            right: 0 !important;
            width: 100% !important;
            max-width: 100% !important;
            margin: 0 !important;
        }
        #tarteaucitronRoot .tarteaucitronAlertBigTop,
        #tarteaucitronRoot .tarteaucitronAlertBigBottom {
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            gap: 16px !important;
            padding: 28px 24px !important;
            flex-wrap: wrap !important;
        }
        #tarteaucitronRoot #tarteaucitronDisclaimerAlert {
            color: var(--color-surface-2) !important;
            font-size: 14px !important;
            margin: 0 !important;
            padding: 0 !important;
            text-align: center !important;
        }
        #tarteaucitronRoot #tarteaucitronAlertBig button {
            padding: 6px 12px !important;
            font-size: 12px !important;
            border-radius: 4px !important;
            margin: 0 !important;
            white-space: nowrap !important;
        }
        #tarteaucitronRoot #tarteaucitronPersonalize2 {
            background: var(--color-surface-2) !important;
            border: 1px solid var(--color-surface-2) !important;
            color: var(--color-ink) !important;
        }
        #tarteaucitronRoot #tarteaucitronAllDenied2 {
            background: transparent !important;
            border: 1px solid var(--color-surface-2) !important;
            color: var(--color-surface-2) !important;
        }
        #tarteaucitronRoot #tarteaucitronCloseAlert,
        #tarteaucitronRoot #tarteaucitronPersonalize {
            display: none !important;
        }
        #tarteaucitronRoot .tarteaucitronAlertBigBottom #tarteaucitronPrivacyUrl {
            color: rgba(255,255,255,0.6) !important;
            font-size: 12px !important;
            text-decoration: underline !important;
        }
        @media (max-width: 640px) {
            #tarteaucitronRoot .tarteaucitronAlertBigTop,
            #tarteaucitronRoot .tarteaucitronAlertBigBottom {
                flex-wrap: wrap !important;
                gap: 0 !important;
                padding: 20px 16px !important;
            }
            #tarteaucitronRoot #tarteaucitronDisclaimerAlert {
                order: 1 !important;
                flex-basis: 100% !important;
                text-align: center !important;
                padding: 0 10px !important;
                margin-bottom: 14px !important;
            }
            #tarteaucitronRoot #tarteaucitronAlertBig button {
                padding: 14px 24px !important;
                font-size: 15px !important;
                width: 100% !important;
                box-sizing: border-box !important;
                margin: 0 !important;
                border-radius: 0 !important;
            }
            #tarteaucitronRoot #tarteaucitronPersonalize2 {
                order: 2 !important;
                flex-basis: 100% !important;
                border-radius: 6px 6px 0 0 !important;
                border-bottom: none !important;
            }
            #tarteaucitronRoot #tarteaucitronAllDenied2 {
                order: 3 !important;
                flex-basis: 100% !important;
                border-radius: 0 0 6px 6px !important;
            }
            #tarteaucitronRoot #tarteaucitronPrivacyUrl {
                order: 4 !important;
                flex-basis: 100% !important;
                margin-top: 14px !important;
            }
        }
html[lang="en"] #tarteaucitronRoot #tarteaucitronAlertBig { min-height: 86px !important; }

/* ==========================================================================
   Navbar CTA buttons - moved from base templates 2026-06-15.
   ========================================================================== */
        /* Navbar CTA Buttons */
        .navbar-cta {
            display: flex;
            gap: 12px;
            margin-left: 30px;
            align-items: center;
        }
        
        .nav-btn-primary {
            display: inline-block;
            background-color: var(--color-ink);
            color: var(--color-surface);
            padding: 10px 22px;
            border-radius: 10px;
            text-decoration: none;
            font-size: var(--fs-small);
            font-weight: bold;
            border: 2px solid var(--color-ink);
            transition: all 0.25s ease;
            white-space: nowrap;
        }
        
        .nav-btn-primary:hover {
            background-color: var(--color-surface);
            color: var(--color-ink);
        }
        
        .nav-btn-secondary {
            display: inline-block;
            background-color: var(--color-surface);
            color: var(--color-ink);
            padding: 10px 22px;
            border-radius: 10px;
            text-decoration: none;
            font-size: var(--fs-small);
            font-weight: bold;
            border: 2px solid var(--color-ink);
            transition: all 0.25s ease;
            white-space: nowrap;
        }
        
        .nav-btn-secondary:hover {
            background-color: var(--color-ink);
            color: var(--color-surface);
        }
        
        /* Mobile-only button (visible between brand and burger) */
        .nav-btn-mobile {
            display: none;
            background-color: var(--color-ink);
            color: var(--color-surface);
            padding: 8px 16px;
            border-radius: 8px;
            text-decoration: none;
            font-size: var(--fs-caption);
            font-weight: bold;
            border: 2px solid var(--color-ink);
            transition: all 0.25s ease;
            white-space: nowrap;
            margin-left: auto;
            margin-right: 12px;
        }
        
        .nav-btn-mobile:hover {
            background-color: var(--color-surface);
            color: var(--color-ink);
        }
        
        @media (max-width: 991px) {
            .nav-btn-mobile {
                display: inline-block;
            }
            
            .navbar-cta {
                flex-direction: column;
                margin-left: 0;
                margin-top: 20px;
                width: 100%;
                gap: 10px;
            }
            
            .nav-btn-primary,
            .nav-btn-secondary {
                width: 100%;
                text-align: center;
            }
        }

/* ==========================================================================
   Site footer (.site-footer)
   Black chrome, the one exemption from "one paper". Only what the main nav
   does not carry: the wordmark and promise, four footer-only links, then the
   legal line. Secondary text uses --color-text-muted, which is dark-mode only
   by contract: 5.9:1 on black, AA.
   ========================================================================== */
.site-footer {
    background: var(--color-ink);
    color: var(--color-bg);
    padding: clamp(48px, 8vh, 80px) 0 32px;
}

.sf-wrap {
    max-width: 1240px;
    margin: 0 auto;
    padding: 0 clamp(24px, 5vw, 72px);
}

.sf-top {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-end;
    gap: 32px 48px;
    padding-bottom: clamp(36px, 6vh, 56px);
}

.sf-wordmark {
    font-family: var(--font-display);
    font-weight: bold;
    /* The wordmark is the logo, not type: literal size, off the scale. */
    font-size: 2.6rem;
    line-height: 1;
    color: var(--color-bg);
    text-decoration: none;
}

.sf-wordmark:hover {
    color: var(--color-bg);
}

.sf-tagline {
    font-family: var(--font-display);
    font-size: var(--fs-display-3);
    color: var(--color-text-muted);
    margin: 16px 0 0;
}

.sf-links,
.sf-bottom ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
}

.sf-links {
    gap: 12px 32px;
}

.sf-bottom ul {
    gap: 8px 24px;
}

.site-footer a:not(.sf-wordmark) {
    font-size: var(--fs-small);
    line-height: 1.5;
    color: var(--color-text-muted);
    text-decoration: none;
    transition: color 0.2s ease;
}

.site-footer a:not(.sf-wordmark):hover {
    color: var(--color-bg);
}

.site-footer a:focus-visible {
    outline: 2px solid var(--color-bg);
    outline-offset: 3px;
}

.sf-links .bi {
    font-size: 0.75em;
}

.sf-bottom {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 12px 32px;
    padding-top: 24px;
    border-top: 1px solid var(--color-ink-3);
}

.sf-bottom p {
    font-size: var(--fs-caption);
    color: var(--color-text-muted);
    margin: 0;
}

.site-footer .sf-bottom a {
    font-size: var(--fs-caption);
}

@media (max-width: 620px) {
    .sf-top {
        flex-direction: column;
        align-items: flex-start;
    }

    .sf-bottom {
        flex-direction: column-reverse;
        align-items: flex-start;
    }
}

/* ---------- Mobile page titles (Julien, 2026-10-01) ----------
   On phones, the main title of each page is as large as the live home page title was
   (3.5rem, words free to wrap), with a slightly more open line height (1). "html body" raises the specificity
   above the per-page rules, which are loaded after this file. */
@media (max-width: 620px) {
    html body .editorial-title,
    html body .editorial-title.hero-title-wide,
    html body .editorial-title.hero-title-wide.hero-title-tight,
    html body .ent-hero-title,
    html body .rt-hero h1,
    html body .pc-cover h1,
    html body .tf-hero h1,
    html body .h1-other,
    html body .part-hero-content h1 {
        font-size: min(3.5rem, 14.5vw);
        line-height: 1;
    }

    /* Press monitoring title, three lines: "Votre veille presse / 100 % pertinente / et
       exhaustive". Sized on the title box itself (cqi), so a scrollbar cannot change the
       wrap. The longest line, "Votre veille presse", is 9.28em wide while the letter
       animation runs (unkerned, 9.21em final), so 9.65em leaves 4 % to spare: the
       animated title wraps like the final one. */
    html body .ent-hero-content {
        container-type: inline-size;
    }

    html body .ent-hero-title {
        font-size: min(3.5rem, calc(100cqi / 9.65));
        line-height: 1.2;
    }

    /* Home title: sized so it wraps into the same lines on every phone (FR five: "Votre
       veille / médias / moins de tri, / plus de / décisions"; EN four). The longest kept
       line (FR "moins de tri," 6.3em, EN "more decisions" 7.5em) fits the title box
       (viewport minus 75px) with 7 % to spare: the letter animation sets the title wider
       than the final text, and must not wrap it differently. */
    html body .editorial-title.hero-title-wide {
        font-size: min(3.5rem, calc((100vw - 75px) / 6.75));
    }

    html body .editorial-title.hero-title-wide.hero-title-tight {
        font-size: min(3.5rem, calc((100vw - 75px) / 8.05));
    }

    /* English press monitoring title: wraps into "Your press / monitoring, / 100% relevant /
       and / comprehensive" on every phone; the longest lines, "comprehensive" (7.6em) and
       "100% relevant" (7.4em), fit the title box with 4 % to spare. */
    html body .ent-hero-title.ent-hero-title--long {
        font-size: min(3.5rem, calc(100cqi / 7.9));
    }

    html body .editorial-title .hero-line,
    html body .ent-hero-title .hero-line {
        white-space: normal;
    }
}
