/* Interactive sphere on the physical Clarté lamp. The surrounding site stays intact. */
.hero-lamp-stage .scene-poster { object-fit: contain; mix-blend-mode: normal; }
html[data-theme=dark] .hero-lamp-stage .scene-poster { filter:brightness(.74); }
.hero-lamp-stage.scene-ready { cursor:grab; }
.hero-lamp-stage[data-lamp-rotating=true] { cursor:grabbing; }
.motion-paused .hero-lamp-stage.scene-ready { cursor:default; }
@media(prefers-reduced-motion:reduce) { .hero-lamp-stage.scene-ready { cursor:default; } }
.hero-lamp-toggle {
  position:absolute; left:64%; top:57%; z-index:3;
  width:48px; height:48px; min-width:48px; min-height:48px;
  padding:0; border:0; border-radius:50%; background:transparent;
  color:var(--ink); transform:translate(-50%,-50%);
  cursor:ns-resize; touch-action:none; -webkit-tap-highlight-color:transparent;
}
.hero-lamp-toggle::after {
  content:''; position:absolute; inset:4px; border:1px solid currentColor;
  border-radius:50%; opacity:0; transition:opacity .2s; pointer-events:none;
}
.hero-lamp-toggle:hover::after { opacity:.18; }
.hero-lamp-toggle:focus-visible { outline:2px solid currentColor; outline-offset:3px; }
.hero-lamp-toggle[aria-busy=true] { cursor:wait; }
html[data-theme=dark] .hero-lamp-toggle { color:#c4f77e; }
@media(prefers-reduced-motion:reduce) { .hero-lamp-toggle::after { transition:none; } }
.lamp-circuit-field {
  position: fixed;
  z-index: 100;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  contain: strict;
  view-transition-name: lamp-circuits;
}
.lamp-circuit-field * { pointer-events: none; }
.lamp-circuit-field path {
  fill: none;
  stroke: #c4f77e;
  stroke-width: 1.15;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  opacity: 0;
  animation: lamp-circuit-trace 2400ms cubic-bezier(.3,0,.5,1) var(--circuit-delay) both;
}
.lamp-circuit-field circle {
  fill: #c4f77e;
  stroke: none;
  opacity: 0;
  animation: lamp-circuit-node 550ms ease calc(var(--circuit-delay) + 1850ms) both;
}
@keyframes lamp-circuit-trace {
  0% { stroke-dashoffset: 1; opacity: 0; }
  12% { opacity: .65; }
  80% { stroke-dashoffset: 0; opacity: .5; }
  88% { stroke-dashoffset: 0; opacity: .35; }
  100% { stroke-dashoffset: 0; opacity: 0; }
}
@keyframes lamp-circuit-node {
  0%,100% { opacity: 0; }
  35% { opacity: .72; }
}
html[data-theme-transition=active]::view-transition { pointer-events: none; }
html[data-theme-transition=active]::view-transition-group(root) { animation-duration: 1800ms; }
html[data-theme-transition=active]::view-transition-old(root),
html[data-theme-transition=active]::view-transition-new(root) { animation: none; mix-blend-mode: normal; }
html[data-theme-transition=active]::view-transition-group(lamp-circuits) { z-index: 2; animation: none; }
html[data-theme-transition=active]::view-transition-old(lamp-circuits) { display: none; }
html[data-theme-transition=active]::view-transition-new(lamp-circuits) { animation: none; mix-blend-mode: normal; }
@media(prefers-reduced-motion:reduce) {
  .lamp-circuit-field { display: none; }
}

/* Keep the lamp available when the hero is out of view. */
.corner-lamp-toggle{position:fixed;right:24px;bottom:100px;z-index:45;width:58px;height:58px;display:grid;place-items:center;border:1px solid #cbd7c0;border-radius:18px;background:#edf3e7;color:#17231c;box-shadow:0 6px 24px #17231c1a;cursor:ns-resize;touch-action:none}
.corner-lamp-toggle>svg{width:34px;height:34px;transform:translateY(var(--corner-pull,0px));transition:transform .15s}
.corner-lamp-toggle:hover{background:#e1efcf}
.corner-lamp-toggle:focus-visible{outline:2px solid currentColor;outline-offset:4px}
.corner-lamp-toggle[aria-busy=true]{cursor:wait}
html[data-theme=dark] .corner-lamp-toggle{background:#243625;color:#c4f77e;border-color:#465b3c}
@media(max-width:600px){.corner-lamp-toggle{right:18px;bottom:96px;width:52px;height:52px;border-radius:16px}}
