:root {
  /* Lighthouse scene role tokens: semantic roles retain the approved rendered values. */
  --lighthouse-annotation-line:#b1d5e3;
  --lighthouse-annotation-text:#accbdb;
  --lighthouse-annotation-small:#729caf;
  --lighthouse-wire:#a8cedd;
  --lighthouse-accent:#f4ad45;
  --lighthouse-hero-wash:#103c5019;
  --lighthouse-end-link:#6a93a6;
  --lighthouse-common-wire:#a1c6d8;
  --lighthouse-deep:#083348;
  --lighthouse-lab-surface:#194979;
  --lighthouse-lab-deep:#0c2e53;
  --lighthouse-lab-ink:#eef6ff;
  --lighthouse-lab-muted:#bdd5ed;
  --lighthouse-lab-thread:#dcecfb;
  --lighthouse-lab-wash-start:#2e6da5;
  --lighthouse-lab-wash-middle:#225584;
  --lighthouse-lab-wash-end:#15385e;
  --lighthouse-plaque-ground:#204e7c;
  --lighthouse-plaque-bg:#194573a8;
  --lighthouse-hero-accent:#c2ddf4;
  --lighthouse-nav-ink:#d0e3f5;
  --lighthouse-glow:#e2f1ff;
  --lighthouse-core:#f8fbff;
  --lighthouse-tip:#fff6df;
  --lighthouse-tip-shadow:#fff2c7;
  --lighthouse-logo:#edf6ff;
  --lighthouse-mask-ink:#000;
  --lighthouse-label-font:"Chakra Petch", "Bahnschrift", sans-serif;
}
/* B.Galy — a finite, self-contained engineering drawing. */
.bg-phare { position: relative; width: 100%; height: 100%; pointer-events: none; isolation: isolate; }
.bg-phare > canvas, .bg-phare > svg { display: block; position: absolute; inset: 0; width: 100%; height: 100%; }
.bg-phare > canvas { z-index: 1; }
.bg-phare .bg-phare-annotations { z-index: 3; overflow: visible; }
.bg-phare .bg-phare-annotation-ink { fill: none; stroke: var(--lighthouse-annotation-line); stroke-width: .7; vector-effect: non-scaling-stroke; }
.bg-phare .bg-phare-annotation-text { fill: var(--lighthouse-annotation-text); font: 9px var(--lighthouse-label-font); letter-spacing: 1.7px; }
.bg-phare .bg-phare-annotation-small { fill: var(--lighthouse-annotation-small); font: 8px var(--lighthouse-label-font); letter-spacing: 1.3px; }
.bg-phare .bg-phare-fil { fill: none; stroke: var(--lighthouse-wire); stroke-width: 1; vector-effect: non-scaling-stroke; }
.bg-phare .bg-phare-fil-tip { fill: var(--lighthouse-accent); }
.bg-phare .bg-phare-fallback { z-index: 0; }
.bg-phare[data-renderer="webgl"] .bg-phare-fallback { display: none; }
.bg-phare[data-renderer="fallback"] .bg-phare-fallback { display: block; }
:is(.bg-phare-lab, .bg-phare-page) { overflow-x: clip; }
:is(.bg-phare-lab, .bg-phare-page) .hero { overflow: clip; overflow-clip-margin: 140px; }
:is(.bg-phare-lab, .bg-phare-page) .hero-art { inset: 0; transform: none; width: 100%; max-width: none; height: 100%; overflow: visible; opacity: 1; }
:is(.bg-phare-lab, .bg-phare-page) .hero-inner { pointer-events: none; }
:is(.bg-phare-lab, .bg-phare-page) .hero-copy, :is(.bg-phare-lab, .bg-phare-page) .hero-bottom { pointer-events: auto; }
:is(.bg-phare-lab, .bg-phare-page) .hero-copy { opacity: 1 !important; }
:is(.bg-phare-lab, .bg-phare-page) .bg-phare > canvas { mask-image: linear-gradient(to right, transparent 24%, var(--lighthouse-mask-ink) 51%); }
:is(.bg-phare-lab, .bg-phare-page) .hero-art::after { content: ""; position: absolute; inset: 0; background: radial-gradient(ellipse at 19% 40%, var(--lighthouse-hero-wash) 0, transparent 53%); pointer-events: none; }
:is(.bg-phare-lab, .bg-phare-page) .hero-bottom { position: relative; }
:is(.bg-phare-lab, .bg-phare-page) .lab-end { border-top: 1px solid var(--rule); padding: 30px 0 38px; font: 10px/1.8 var(--technical-font); color: var(--mute); letter-spacing: 1.3px; text-transform: uppercase; }
:is(.bg-phare-lab, .bg-phare-page) .lab-end a { border-bottom: 1px solid var(--lighthouse-end-link); }
@media (max-width: 900px) {
  :is(.bg-phare-lab, .bg-phare-page) .hero { height: auto; min-height: 1160px; }
  :is(.bg-phare-lab, .bg-phare-page) .hero-inner { min-height: 1160px; padding-top: 55px; }
  :is(.bg-phare-lab, .bg-phare-page) .hero-copy { max-width: 640px; }
  :is(.bg-phare-lab, .bg-phare-page) .hero-art { top: 510px; height: 580px; }
  :is(.bg-phare-lab, .bg-phare-page) .bg-phare > canvas { mask-image: none; }
  :is(.bg-phare-lab, .bg-phare-page) .hero-bottom { margin-top: auto; }
}
@media (max-width: 600px) {
  :is(.bg-phare-lab, .bg-phare-page) .hero { min-height: 1140px; }
  :is(.bg-phare-lab, .bg-phare-page) .hero-inner { min-height: 1140px; padding-top: 42px; }
  :is(.bg-phare-lab, .bg-phare-page) .hero-art { top: 515px; height: 520px; }
  :is(.bg-phare-lab, .bg-phare-page) .bg-phare-annotation-text { font-size: 8px; letter-spacing: 1px; }
  :is(.bg-phare-lab, .bg-phare-page) .bg-phare-annotation-small { font-size: 7px; }
  :is(.bg-phare-lab, .bg-phare-page) .hero-bottom { min-height: 96px; }
}

.bg-phare[data-thread="external"] .bg-phare-fil,
.bg-phare[data-thread="external"] .bg-phare-fil-tip { display: none; }
.bg-phare-common-fil { position: absolute; top: 0; left: 0; width: 100%; pointer-events: none; z-index: 4; overflow: hidden; }
.bg-phare-common-path, .bg-phare-common-glow { fill: none; stroke: var(--lighthouse-common-wire); stroke-linecap: round; }
.bg-phare-common-path { stroke-width: 1; opacity: .7; }
.bg-phare-common-glow { stroke-width: 5; opacity: .22; }
.bg-phare-common-tip { fill: var(--lighthouse-accent); stroke: var(--lighthouse-deep); stroke-width: 2; }
.lab-common-link { margin-left: 25px; }

/* The lab adopts the clearer Prussian blues of the reference. */
.bg-phare-lab { --ground: var(--lighthouse-lab-surface); --deep: var(--lighthouse-lab-deep); --ink: var(--lighthouse-lab-ink); --mute: var(--lighthouse-lab-muted); --thread: var(--lighthouse-lab-thread); background: var(--lighthouse-lab-surface); }
.bg-phare-lab::before { height: 100%; background: radial-gradient(ellipse at 17% 22%, var(--lighthouse-lab-wash-start) 0%, var(--lighthouse-lab-wash-middle) 42%, var(--lighthouse-lab-wash-end) 100%); }
.bg-phare-lab .site-header .plq { --ground: var(--lighthouse-plaque-ground); background: var(--lighthouse-plaque-bg); border-color: transparent; }
.bg-phare-lab .hero h1 > span { color: var(--lighthouse-hero-accent); }
.bg-phare-lab .hero .eyebrow, .bg-phare-lab .site-header nav a { color: var(--lighthouse-nav-ink); }
.bg-phare-lab .hero-art::after { display: none; }
.bg-phare-lab .hero::before { opacity: .46; }
.bg-phare-lab .paper-grain { opacity: .021; }
.bg-phare-lab .bg-phare-labels { display: none; }
.bg-phare-lab .bg-phare > canvas { mask-image: linear-gradient(to right, transparent 22%, var(--lighthouse-mask-ink) 49%); }
.bg-phare-lab .bg-phare-common-path { stroke: var(--lighthouse-lab-thread); stroke-width: 1.25; opacity: .53; }
.bg-phare-lab .bg-phare-common-glow { stroke: var(--lighthouse-glow); stroke-width: 9; opacity: .48; filter: blur(4px); }
.bg-phare-lab .bg-phare-common-core { fill: none; stroke: var(--lighthouse-core); stroke-width: 2.1; stroke-linecap: round; }
.bg-phare-lab .bg-phare-common-tip { fill: var(--lighthouse-tip); stroke: none; filter: drop-shadow(0 0 5px var(--lighthouse-tip-shadow)); }
.bg-phare-lab .logo-draw { position: absolute; inset: -.07em; width: calc(100% + .14em); height: calc(100% + .14em); overflow: visible; pointer-events: none; }
.bg-phare-lab .logo-draw rect { fill: none; stroke: var(--lighthouse-logo); stroke-width: 1.8; }
.bg-phare-lab .plq-sc { transform-origin: center; }
.bg-phare-lab .plq-pt { transform-origin: center; }
@media (max-width: 900px) {
  .bg-phare-lab .bg-phare > canvas { mask-image: linear-gradient(var(--lighthouse-mask-ink) 83%, transparent 100%); }
}
@media (max-width: 600px) {
  .bg-phare-lab .hero, .bg-phare-lab .hero-inner { min-height: 1050px; }
  .bg-phare-lab .hero-art { top: 420px; height: 580px; }
}
@media (prefers-reduced-motion: reduce) {
  .bg-phare-lab *, .bg-phare-lab *::before, .bg-phare-lab *::after { scroll-behavior: auto; animation: none !important; }
}
