/* Shared header and companions. Palette: theme.css; content layouts stay separate. */
.workshop-opening {--h-surface:var(--background);--h-raised:var(--panel);--h-ink:var(--ink);--h-muted:var(--secondary);--h-accent:var(--accent);--h-apricot:var(--button-bg);--h-line:var(--hero-border);--h-focus:var(--focus);--h-shadow:var(--hero-shadow);--h-glow:var(--opening-glow);--h-spark:var(--companion-spark);--h-play:paused;--h-ease:var(--ease);position:relative;isolation:isolate;background:var(--h-surface);color:var(--h-ink);font-family:var(--font-body);color-scheme:inherit}
.workshop-opening *, .workshop-opening *::before,.workshop-opening *::after {box-sizing:border-box}
.workshop-opening a:focus-visible,.workshop-opening button:focus-visible,.workshop-opening select:focus-visible {outline:3px solid var(--h-focus);outline-offset:5px}
.workshop-opening .workshop-header {max-width:1440px;min-height:100px;padding:24px 64px;margin:auto;display:flex;align-items:center;gap:32px;position:relative;z-index:5}
/* One continuous surface: dense behind navigation, soft as content passes beneath. */
:root {--site-header-height:100px;--header-fade-height:72px}
/* Arrival at a fragment must settle immediately, before the visitor starts scrolling.
   Native smooth scrolling is opt-in for links activated within this document. */
html {scroll-behavior:auto;scroll-padding-top:calc(var(--site-header-height) + var(--header-fade-height) + 20px)}
@media(prefers-reduced-motion:no-preference) {
  html[data-anchor-motion="smooth"] {scroll-behavior:smooth}
}
.site-masthead.workshop-opening {--header-density:1;position:sticky;top:0;z-index:10;background:transparent}
/* The veil belongs to the masthead stacking context, behind its controls. It neither
   changes layout nor intercepts links; the same mask softens colour and blur. */
.site-masthead::before {
  content:"";position:absolute;inset:0 0 calc(-1 * var(--header-fade-height));z-index:-1;
  pointer-events:none;background:rgb(var(--header-rgb));
  -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 var(--site-header-height),rgba(0,0,0,.94) calc(var(--site-header-height) + var(--header-fade-height)*.15),rgba(0,0,0,.76) calc(var(--site-header-height) + var(--header-fade-height)*.35),rgba(0,0,0,.44) calc(var(--site-header-height) + var(--header-fade-height)*.55),rgba(0,0,0,.17) calc(var(--site-header-height) + var(--header-fade-height)*.75),rgba(0,0,0,.035) calc(var(--site-header-height) + var(--header-fade-height)*.9),transparent 100%);
  mask-image:linear-gradient(to bottom,#000 0,#000 var(--site-header-height),rgba(0,0,0,.94) calc(var(--site-header-height) + var(--header-fade-height)*.15),rgba(0,0,0,.76) calc(var(--site-header-height) + var(--header-fade-height)*.35),rgba(0,0,0,.44) calc(var(--site-header-height) + var(--header-fade-height)*.55),rgba(0,0,0,.17) calc(var(--site-header-height) + var(--header-fade-height)*.75),rgba(0,0,0,.035) calc(var(--site-header-height) + var(--header-fade-height)*.9),transparent 100%);
  transition:opacity 260ms linear
}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) {
  .site-masthead::before {opacity:calc(.90 + var(--header-density)*.08);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
}
.site-masthead[data-motion="paused"]::before,.site-masthead[data-motion="reduced"]::before {transition:none}
.skip {position:fixed}
@media(max-width:900px) { :root {--site-header-height:118px;--header-fade-height:60px} }
@media(max-width:600px) { :root {--site-header-height:108px;--header-fade-height:48px} }
.workshop-opening .hero-wordmark {font-family:Sora,"Avenir Next",system-ui,sans-serif;font-size:27px;letter-spacing:-1.3px;font-weight:500;min-height:44px;display:inline-flex;align-items:center;margin-right:auto;white-space:nowrap}
/* Luminous depth without moving or extruding the letterforms. */
.workshop-opening .brand-stage {position:relative;isolation:isolate;user-select:none;display:inline-flex;align-items:center;min-height:44px;padding-inline:6px;margin-left:-6px;margin-right:auto;--brand-awake:0;--brand-light-x:50%;--brand-light-y:50%;--brand-core:#d18b45;--brand-halo:230,165,87}
:root[data-effective-theme="dark"] .brand-stage,:root[data-effective-theme="dark"] .brand-orbit {--brand-core:#ffdb9d;--brand-halo:255,195,116}
.workshop-opening .brand-stage::before,.workshop-opening .brand-stage::after {content:"";position:absolute;pointer-events:none;z-index:-1}
.workshop-opening .brand-stage::before {inset:-18px -20px;background:radial-gradient(ellipse at var(--brand-light-x) var(--brand-light-y),rgba(var(--brand-halo),.62),rgba(var(--brand-halo),.2) 40%,transparent 72%);filter:blur(12px);opacity:calc(var(--brand-awake)*.8)}
.workshop-opening .brand-stage::after {inset:8px 0;background:radial-gradient(ellipse at var(--brand-light-x) var(--brand-light-y),rgba(var(--brand-halo),.65),transparent 68%);filter:blur(5px);opacity:calc(var(--brand-awake)*.65)}
.workshop-opening .brand-stage .hero-wordmark {position:relative;z-index:1;margin-right:0}
.workshop-opening .wordmark-name {display:block;color:var(--h-ink);text-shadow:0 0 9px rgba(var(--brand-halo),calc(var(--brand-awake)*.48)),0 0 23px rgba(var(--brand-halo),calc(var(--brand-awake)*.42))}
/* These same four diamonds orbit the wordmark, then travel in the shared page layer. */
.brand-orbit {position:absolute;inset:0;--brand-awake:0;--brand-departure:0;--brand-core:#d18b45;--brand-halo:230,165,87;opacity:calc(.48 + var(--brand-awake)*.52 - var(--brand-departure)*.08);pointer-events:none}
/* Brand lights are visible around the name or below the header, never across menu text. */
.brand-orbit {-webkit-mask-image:radial-gradient(ellipse var(--brand-mask-x,130px) var(--brand-mask-y,48px) at var(--brand-origin-x,160px) var(--brand-origin-y,50px),#000 85%,transparent 100%),linear-gradient(to bottom,transparent var(--site-header-height),#000 calc(var(--site-header-height) + var(--header-fade-height)));mask-image:radial-gradient(ellipse var(--brand-mask-x,130px) var(--brand-mask-y,48px) at var(--brand-origin-x,160px) var(--brand-origin-y,50px),#000 85%,transparent 100%),linear-gradient(to bottom,transparent var(--site-header-height),#000 calc(var(--site-header-height) + var(--header-fade-height)))}
.brand-satellite {position:absolute;left:0;top:0;width:3px;height:3px;transform:translate3d(var(--satellite-x,0px),var(--satellite-y,0px),0) translate(-50%,-50%) rotate(45deg);will-change:transform;pointer-events:none}
.brand-satellite::after {content:"";position:absolute;inset:0;border-radius:.7px;background:var(--brand-core);box-shadow:0 0 7px 1px rgba(var(--brand-halo),calc(.4 + var(--satellite-awake,var(--brand-awake))*.4)),0 0 20px 3px rgba(var(--brand-halo),calc(.16 + var(--satellite-awake,var(--brand-awake))*.38))}
.brand-satellite:nth-child(2) {width:2px;height:2px}
.brand-satellite:nth-child(4) {width:2.5px;height:2.5px}
.workshop-opening .brand-stage[data-motion="reduced"] .wordmark-name {transform:none;text-shadow:none}
.workshop-opening .workshop-header nav {display:flex;align-items:center;gap:32px;font-size:14px}
.workshop-opening .workshop-header nav a {min-height:44px;display:inline-flex;align-items:center}
.workshop-opening .hero-theme {display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--h-ink);cursor:pointer;transition:color 240ms,background-color 240ms,box-shadow 240ms}
.workshop-opening .hero-theme:focus-visible {color:var(--h-accent);background-color:rgba(var(--ui-rim-rgb),.12);box-shadow:inset 0 0 0 1px rgba(var(--ui-rim-rgb),.32),0 0 18px rgba(var(--ui-rim-rgb),.12)}
.theme-icons {display:block;width:22px;height:22px;pointer-events:none}
.theme-icons svg {display:none;width:100%;height:100%}
:root[data-theme="system"] .theme-icon-system,:root[data-theme="light"] .theme-icon-light,:root[data-theme="dark"] .theme-icon-dark {display:block}
/* Space below the footer keeps its final links clear of the persistent control. */
body.companions-active {padding-bottom:76px}
.page-motion-control {position:fixed;z-index:12;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));font-family:Manrope,"Avenir Next",system-ui,sans-serif}
.page-motion-control .hero-motion {display:inline-flex;gap:8px;align-items:center;min-height:44px;padding:10px 12px;border:1px solid var(--h-line);border-radius:12px;background:var(--h-raised);color:var(--h-muted);font-size:10px;line-height:1.5;transition:color 180ms,border-color 180ms}
.page-motion-control .hero-motion-symbol {min-width:12px;text-align:center}
.workshop-opening[data-motion="running"] {--h-play:running}
.workshop-opening .workshop-header {line-height:1.5}
.workshop-opening .workshop-header nav a[aria-current] {color:var(--h-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:7px}
@media(max-width:1200px) and (min-width:901px) {
  .workshop-opening .workshop-header {padding-inline:40px;gap:24px}
  .workshop-opening .workshop-header nav {gap:22px}
}
@media(max-width:900px) {
  .workshop-opening .workshop-header {padding:20px 32px 0;flex-wrap:wrap;gap:6px 20px;min-height:118px}
  .workshop-opening .workshop-header nav {order:3;width:100%;gap:28px;font-size:13px;flex-wrap:wrap}
}
@media(max-width:600px) {
  .workshop-opening .workshop-header {padding:16px 20px 0;gap:4px 12px;min-height:108px}
  .workshop-opening .hero-wordmark {font-size:23px;letter-spacing:-1.1px}
  .workshop-opening .workshop-header nav {font-size:12px;column-gap:22px;row-gap:0}
}
@media(max-width:350px) {
  .workshop-opening .hero-wordmark {font-size:21px}
  .workshop-opening .workshop-header nav {column-gap:16px}
}
.page-companions,.page-motion-control {--h-spark:var(--companion-spark);--h-glow:var(--companion-glow);--h-raised:var(--panel);--h-line:var(--border);--h-ink:var(--ink);--h-muted:var(--secondary);--h-focus:var(--focus)}
.page-motion-control .hero-motion:focus-visible {outline:3px solid var(--h-focus);outline-offset:3px}
/* A single viewport layer carries the same lights from the product to page margins. */
.page-companions {position:fixed;inset:0;z-index:11;pointer-events:none;overflow:hidden;--h-play:paused;--travel:0;--awake:0;--companion-x:0px;--companion-y:0px;--rail-left:clamp(8px,2vw,24px);--rail-right:calc(100% - var(--rail-left))}
.page-companions[data-motion="running"] {--h-play:running}
/* Hide the whole light layer without resetting its frozen animation phases. */
.page-companions[data-motion="paused"] {visibility:hidden}
.page-companions[data-motion="reduced"] {display:none}
.page-companions .signal-field {position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;opacity:calc((.66 - var(--travel)*.18 + var(--awake)*.3)*var(--companion-strength,1)*(1 - var(--brand-departure,0)*.22))}
/* Roaming signals stay below navigation; the four brand satellites retain their origin. */
.page-companions .signal-field {-webkit-mask-image:linear-gradient(to bottom,transparent var(--header-clearance,var(--site-header-height)),#000 calc(var(--header-clearance,var(--site-header-height)) + var(--header-fade-height)));mask-image:linear-gradient(to bottom,transparent var(--header-clearance,var(--site-header-height)),#000 calc(var(--header-clearance,var(--site-header-height)) + var(--header-fade-height)))}
.page-companions .signal-light {position:absolute;display:block;width:3px;height:3px;border-radius:50%;background:var(--h-spark);box-shadow:0 0 10px 2px var(--h-glow);scale:calc(var(--companion-scale,1)*(1 + var(--light-awake,0)*.10));opacity:0;animation:signal-flight 9s ease-in-out infinite;animation-play-state:var(--h-play);translate:var(--light-x,0px) var(--light-y,0px);--from-x:61%;--from-y:62%;--bend-x:72%;--bend-y:26%;--to-x:89%;--to-y:40%}
.page-companions .signal-light::after {content:"";position:absolute;inset:-5px;border-radius:50%;background:var(--h-glow);filter:blur(4px);opacity:calc(.28 + var(--light-awake,0)*.42);animation:signal-breathe 3.8s ease-in-out infinite;animation-play-state:var(--h-play)}
.page-companions .signal-light:nth-child(2) {width:3px;height:3px;animation-duration:11s;animation-delay:-4s;--affinity:0.7;--from-x:92%;--from-y:69%;--bend-x:82%;--bend-y:42%;--to-x:68%;--to-y:36%}
.page-companions .signal-light:nth-child(3) {width:4px;height:4px;animation-duration:10s;animation-delay:-7s;--affinity:1.2;--from-x:65%;--from-y:78%;--bend-x:82%;--bend-y:87%;--to-x:90%;--to-y:60%}
.page-companions .signal-light:nth-child(4) {width:3px;height:3px;animation-duration:13s;animation-delay:-2s;--affinity:0.5;--from-x:18%;--from-y:18%;--bend-x:40%;--bend-y:3%;--to-x:65%;--to-y:10%}
.page-companions .signal-light:nth-child(5) {width:3px;height:3px;animation-duration:12s;animation-delay:-8s;--affinity:0.9;--from-x:5%;--from-y:62%;--bend-x:25%;--bend-y:75%;--to-x:58%;--to-y:69%}
.page-companions .signal-light:nth-child(6) {width:3px;height:3px;animation-duration:14s;animation-delay:-10s;--affinity:1.1;--from-x:91%;--from-y:77%;--bend-x:77%;--bend-y:67%;--to-x:62%;--to-y:75%}
.page-companions .signal-light:nth-child(7) {width:2px;height:2px;animation-duration:15s;animation-delay:-5s;--affinity:0.55;--from-x:36%;--from-y:4%;--bend-x:64%;--bend-y:9%;--to-x:88%;--to-y:23%}
.page-companions .signal-light:nth-child(8) {width:3px;height:3px;animation-duration:12s;animation-delay:-3s;--affinity:1.25;--from-x:96%;--from-y:32%;--bend-x:88%;--bend-y:55%;--to-x:78%;--to-y:80%}
.page-companions .signal-light:nth-child(9) {width:2px;height:2px;animation-duration:16s;animation-delay:-12s;--affinity:0.65;--from-x:13%;--from-y:70%;--bend-x:41%;--bend-y:82%;--to-x:71%;--to-y:71%}
.page-companions .signal-light:nth-child(10) {width:3px;height:3px;animation-duration:11s;animation-delay:-6s;--affinity:1.15;--from-x:68%;--from-y:14%;--bend-x:82%;--bend-y:23%;--to-x:98%;--to-y:49%}
.page-companions .signal-light:nth-child(11) {width:2px;height:2px;animation-duration:14s;animation-delay:-9s;--affinity:0.8;--from-x:54%;--from-y:71%;--bend-x:33%;--bend-y:65%;--to-x:8%;--to-y:52%}
.page-companions .signal-light:nth-child(12) {width:3px;height:3px;animation-duration:13s;animation-delay:-11s;--affinity:0.6;--from-x:8%;--from-y:32%;--bend-x:16%;--bend-y:9%;--to-x:45%;--to-y:5%}
.page-companions .signal-light:nth-child(3n)::after {animation-delay:-1.4s}
.page-companions .signal-light:nth-child(3n+1)::after {animation-delay:-2.6s}
@keyframes signal-flight {0%{left:calc(var(--from-x)*(1 - var(--travel)) + var(--edge-from-x)*var(--travel));top:calc(var(--from-y)*(1 - var(--travel)) + var(--edge-from-y)*var(--travel));opacity:0;transform:scale(.6)}15%{opacity:.65}50%{left:calc(var(--bend-x)*(1 - var(--travel)) + var(--edge-bend-x)*var(--travel));top:calc(var(--bend-y)*(1 - var(--travel)) + var(--edge-bend-y)*var(--travel));opacity:.95;transform:scale(1)}85%{opacity:.5}100%{left:calc(var(--to-x)*(1 - var(--travel)) + var(--edge-to-x)*var(--travel));top:calc(var(--to-y)*(1 - var(--travel)) + var(--edge-to-y)*var(--travel));opacity:0;transform:scale(.5)}}
@keyframes signal-breathe {0%,100%{transform:scale(1)}50%{transform:scale(calc(1 + var(--light-awake,0)*.35))}}
.page-companions .signal-light:nth-child(1) {--edge-from-x:var(--rail-left);--edge-bend-x:calc(var(--rail-left) + 1px);--edge-to-x:var(--rail-left);--edge-from-y:12%;--edge-bend-y:19%;--edge-to-y:13%}
.page-companions .signal-light:nth-child(2) {--edge-from-x:var(--rail-right);--edge-bend-x:calc(var(--rail-right) - 1px);--edge-to-x:var(--rail-right);--edge-from-y:12%;--edge-bend-y:19%;--edge-to-y:13%}
.page-companions .signal-light:nth-child(3) {--edge-from-x:var(--rail-left);--edge-bend-x:calc(var(--rail-left) + 1px);--edge-to-x:var(--rail-left);--edge-from-y:25%;--edge-bend-y:32%;--edge-to-y:26%}
.page-companions .signal-light:nth-child(4) {--edge-from-x:var(--rail-right);--edge-bend-x:calc(var(--rail-right) - 1px);--edge-to-x:var(--rail-right);--edge-from-y:25%;--edge-bend-y:32%;--edge-to-y:26%}
.page-companions .signal-light:nth-child(5) {--edge-from-x:var(--rail-left);--edge-bend-x:calc(var(--rail-left) + 1px);--edge-to-x:var(--rail-left);--edge-from-y:38%;--edge-bend-y:45%;--edge-to-y:39%}
.page-companions .signal-light:nth-child(6) {--edge-from-x:var(--rail-right);--edge-bend-x:calc(var(--rail-right) - 1px);--edge-to-x:var(--rail-right);--edge-from-y:38%;--edge-bend-y:45%;--edge-to-y:39%}
.page-companions .signal-light:nth-child(7) {--edge-from-x:var(--rail-left);--edge-bend-x:calc(var(--rail-left) + 1px);--edge-to-x:var(--rail-left);--edge-from-y:51%;--edge-bend-y:58%;--edge-to-y:52%}
.page-companions .signal-light:nth-child(8) {--edge-from-x:var(--rail-right);--edge-bend-x:calc(var(--rail-right) - 1px);--edge-to-x:var(--rail-right);--edge-from-y:51%;--edge-bend-y:58%;--edge-to-y:52%}
.page-companions .signal-light:nth-child(9) {--edge-from-x:var(--rail-left);--edge-bend-x:calc(var(--rail-left) + 1px);--edge-to-x:var(--rail-left);--edge-from-y:64%;--edge-bend-y:71%;--edge-to-y:65%}
.page-companions .signal-light:nth-child(10) {--edge-from-x:var(--rail-right);--edge-bend-x:calc(var(--rail-right) - 1px);--edge-to-x:var(--rail-right);--edge-from-y:64%;--edge-bend-y:71%;--edge-to-y:65%}
.page-companions .signal-light:nth-child(11) {--edge-from-x:var(--rail-left);--edge-bend-x:calc(var(--rail-left) + 1px);--edge-to-x:var(--rail-left);--edge-from-y:77%;--edge-bend-y:84%;--edge-to-y:78%}
.page-companions .signal-light:nth-child(12) {--edge-from-x:var(--rail-right);--edge-bend-x:calc(var(--rail-right) - 1px);--edge-to-x:var(--rail-right);--edge-from-y:77%;--edge-bend-y:84%;--edge-to-y:78%}
@media(max-width:600px) {
  html {scroll-padding-bottom:80px}
  .page-motion-control {--motion-fade-height:48px;left:0;right:0;bottom:0;display:flex;justify-content:flex-end;align-items:center;padding:8px max(16px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom));min-height:60px;background:transparent;isolation:isolate;pointer-events:none}
  /* Mirror the masthead veil: page content softly recedes beneath the control.
     Only the button receives input; the transparent fade never covers links. */
  .page-motion-control::before {content:"";position:absolute;inset:calc(-1 * var(--motion-fade-height)) 0 0;z-index:-1;pointer-events:none;background:rgb(var(--header-rgb));-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.035) calc(var(--motion-fade-height)*.1),rgba(0,0,0,.17) calc(var(--motion-fade-height)*.25),rgba(0,0,0,.44) calc(var(--motion-fade-height)*.45),rgba(0,0,0,.76) calc(var(--motion-fade-height)*.65),rgba(0,0,0,.94) calc(var(--motion-fade-height)*.85),#000 var(--motion-fade-height),#000 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.035) calc(var(--motion-fade-height)*.1),rgba(0,0,0,.17) calc(var(--motion-fade-height)*.25),rgba(0,0,0,.44) calc(var(--motion-fade-height)*.45),rgba(0,0,0,.76) calc(var(--motion-fade-height)*.65),rgba(0,0,0,.94) calc(var(--motion-fade-height)*.85),#000 var(--motion-fade-height),#000 100%)}
  .page-motion-control .hero-motion {pointer-events:auto}
  @supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) {
    .page-motion-control::before {-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
  }
  .page-companions .signal-light:nth-child(n+7) {display:none}
  .page-companions .signal-light:nth-child(1),.page-companions .signal-light:nth-child(2) {--edge-from-y:18%;--edge-bend-y:26%;--edge-to-y:20%}
  .page-companions .signal-light:nth-child(3),.page-companions .signal-light:nth-child(4) {--edge-from-y:44%;--edge-bend-y:55%;--edge-to-y:49%}
  .page-companions .signal-light:nth-child(5),.page-companions .signal-light:nth-child(6) {--edge-from-y:72%;--edge-bend-y:84%;--edge-to-y:76%}
}
@media(prefers-reduced-motion:reduce) {
  html {scroll-behavior:auto}
  .page-companions {display:none}
  .page-companions *, .page-companions *::after,.page-motion-control * {animation:none!important;transition:none!important}
}

@media(prefers-reduced-motion:reduce) {
  .brand-orbit {display:none}
  .workshop-opening .wordmark-name {transform:none!important;text-shadow:none!important}
}

/* Project cards share their warm response with the nearby page companions. */
.work-tray,.project-transition,.project-panel {--card-awake:0;--card-light-x:50%;--card-light-y:50%;--card-light-rgb:255,229,196;--card-rim-rgb:230,165,87;--card-wash:.16;--card-rim:.24;position:relative;isolation:isolate}
:root[data-effective-theme="dark"] :is(.work-tray,.project-transition,.project-panel) {--card-light-rgb:255,195,116;--card-rim-rgb:255,195,116;--card-wash:.11;--card-rim:.28}
.work-tray::before,.project-transition::before,.project-panel::before {content:"";position:absolute;inset:0;border-radius:inherit;z-index:-1;pointer-events:none;opacity:var(--card-awake);background:radial-gradient(ellipse at var(--card-light-x) var(--card-light-y),rgba(var(--card-light-rgb),var(--card-wash)),transparent 72%);box-shadow:inset 0 0 0 1px rgba(var(--card-rim-rgb),var(--card-rim)),inset 0 0 28px rgba(var(--card-light-rgb),.035)}
@media(prefers-reduced-motion:reduce) {
  .work-tray:focus-within::before,.project-transition:focus-within::before,.project-panel:focus-within::before {opacity:.35}
}
@media(prefers-reduced-motion:reduce) and (hover:hover) {
  .work-tray:hover::before,.project-transition:hover::before,.project-panel:hover::before {opacity:.35}
}

/* Quiet control feedback shares the cards' reflected light; ink and geometry stay still. */
:root {--ui-light-rgb:255,229,196;--ui-rim-rgb:230,165,87;--ui-link-wash:.24;--ui-button-wash:.24;--ui-rim:.22;--ui-halo:.10}
:root[data-effective-theme="dark"] {--ui-light-rgb:255,195,116;--ui-rim-rgb:255,195,116;--ui-link-wash:.11;--ui-button-wash:.12;--ui-rim:.24;--ui-halo:.08}
@media(prefers-color-scheme:dark) {
  :root:not([data-effective-theme]) {--ui-light-rgb:255,195,116;--ui-rim-rgb:255,195,116;--ui-link-wash:.11;--ui-button-wash:.12;--ui-rim:.24;--ui-halo:.08}
}
:is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a),:is(.workshop-opening .hero-cta,.contact-invitation .primary-link,main .button,.page-motion-control .hero-motion:not(:disabled),.workshop-opening .preview-switcher button:not(:disabled),.workshop-opening .hero-theme) {position:relative;isolation:isolate}
:is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a) {transition:color 320ms,border-color 320ms}
:is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a)::before,:is(.workshop-opening .hero-cta,.contact-invitation .primary-link,main .button,.page-motion-control .hero-motion:not(:disabled),.workshop-opening .preview-switcher button:not(:disabled),.workshop-opening .hero-theme)::before {content:"";position:absolute;z-index:-1;pointer-events:none;opacity:0;transition:opacity 320ms cubic-bezier(.2,.75,.25,1)}
/* The light reaches zero before leaving its canvas, with no rectangular rim. */
:is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a)::before {inset:-8px -10px;border-radius:50%;background:radial-gradient(ellipse closest-side at 50% 50%,rgba(var(--ui-light-rgb),var(--ui-link-wash)),rgba(var(--ui-light-rgb),calc(var(--ui-link-wash)*.45)) 45%,transparent 100%);box-shadow:none}
:is(.workshop-opening .hero-cta,.contact-invitation .primary-link,main .button,.page-motion-control .hero-motion:not(:disabled),.workshop-opening .preview-switcher button:not(:disabled))::before {inset:0;border-radius:inherit;background:radial-gradient(ellipse at 50% 70%,rgba(var(--ui-light-rgb),var(--ui-button-wash)),transparent 85%);box-shadow:inset 0 0 0 1px rgba(var(--ui-rim-rgb),var(--ui-rim)),0 0 16px rgba(var(--ui-rim-rgb),var(--ui-halo))}
.workshop-opening .hero-theme::before {inset:-4px;border-radius:50%;background:radial-gradient(ellipse closest-side,rgba(var(--ui-light-rgb),var(--ui-link-wash)),transparent 100%);box-shadow:none}
@media(hover:hover) {
  .workshop-opening .hero-theme:hover {color:var(--h-accent);background-color:rgba(var(--ui-rim-rgb),.12);box-shadow:inset 0 0 0 1px rgba(var(--ui-rim-rgb),.32),0 0 18px rgba(var(--ui-rim-rgb),.12)}
  :is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a):hover {color:var(--accent);border-color:var(--accent)}
  :is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a):hover::before,:is(.workshop-opening .hero-cta,.contact-invitation .primary-link,main .button,.page-motion-control .hero-motion:not(:disabled),.workshop-opening .preview-switcher button:not(:disabled),.workshop-opening .hero-theme):hover::before {opacity:.7}
}
:is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a):focus-visible {color:var(--accent);border-color:var(--accent)}
:is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a):focus-visible::before,:is(.workshop-opening .hero-cta,.contact-invitation .primary-link,main .button,.page-motion-control .hero-motion:not(:disabled),.workshop-opening .preview-switcher button:not(:disabled),.workshop-opening .hero-theme):focus-visible::before,:is(.workshop-opening .hero-cta,.contact-invitation .primary-link,main .button,.page-motion-control .hero-motion:not(:disabled),.workshop-opening .preview-switcher button:not(:disabled),.workshop-opening .hero-theme):focus-within::before {opacity:.7}
:is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a):active::before,:is(.workshop-opening .hero-cta,.contact-invitation .primary-link,main .button,.page-motion-control .hero-motion:not(:disabled),.workshop-opening .preview-switcher button:not(:disabled),.workshop-opening .hero-theme):active::before {opacity:.8}
@media(prefers-reduced-motion:reduce) {
  :is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a),:is(.workshop-header nav a,.hero-directions a,main .text-link,main .project-link,main .email-link,.breadcrumbs a,.site-footer a)::before,:is(.workshop-opening .hero-cta,.contact-invitation .primary-link,main .button,.page-motion-control .hero-motion:not(:disabled),.workshop-opening .preview-switcher button:not(:disabled),.workshop-opening .hero-theme)::before {transition:none!important}
}

/* The same company contact is available in both footer layouts. */
.site-footer .footer-identity {display:grid;justify-items:start;min-width:0}
.site-footer .footer-email {display:inline-flex;align-items:center;min-height:44px;max-width:100%;font-size:13px;line-height:1.65;color:var(--accent);overflow-wrap:anywhere}
.site-footer .footer-email span {min-width:0}

/* A broad atmospheric invitation, behind content and outside its flow.
   One low-contrast wash replaces local spots. Both axes reach transparency;
   the side mask keeps section boundaries seamless. The existing clock drives opacity. */
main > [data-section-cue] {--section-edge-fade:64px;--section-invitation:0;--section-light-rgb:255,229,196;--section-light-wash:.12;position:relative;isolation:isolate}
:root[data-effective-theme="dark"] main > [data-section-cue] {--section-light-rgb:255,195,116;--section-light-wash:.018}
main > [data-section-cue]::after {content:"";position:absolute;left:0;right:0;top:calc(var(--section-light-y,0px) - 60px);height:300px;max-height:100%;z-index:-1;pointer-events:none;border-radius:inherit;opacity:var(--section-invitation);-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--section-edge-fade),#000 calc(100% - var(--section-edge-fade)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--section-edge-fade),#000 calc(100% - var(--section-edge-fade)),transparent);background:radial-gradient(ellipse 75% 50% at 50% 50%,rgba(var(--section-light-rgb),var(--section-light-wash)),transparent 76%)}
@media(max-width:600px) {
  main > [data-section-cue] {--section-edge-fade:32px}
}
@media(prefers-reduced-motion:reduce) {
  main > [data-section-cue]::after {display:none}
}
