@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/instrument-sans-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/instrument-sans-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/fonts/instrument-sans-600.woff2') format('woff2');
}

body{margin:0;background:#F3F1EC}
a{color:#1A1A18}a:hover{color:#355241}

@keyframes orbit{from{transform:rotate(40deg)}to{transform:rotate(400deg)}}

@keyframes orbitrev{from{transform:rotate(0deg)}to{transform:rotate(-360deg)}}

@keyframes pulse{0%{transform:scale(.1);opacity:.35}100%{transform:scale(1);opacity:0}}

@keyframes up{from{transform:translateY(108%)}to{transform:none}}

@keyframes fadeup{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

@keyframes flow{0%{offset-distance:0%;opacity:0}12%{opacity:1}88%{opacity:1}100%{offset-distance:100%;opacity:0}}

@keyframes halt{0%{offset-distance:0%;opacity:0}8%{opacity:1}60%{offset-distance:100%;opacity:1;animation-timing-function:cubic-bezier(.15,.75,.3,1)}100%{offset-distance:38%;opacity:0}}

@keyframes gatepulse{0%,54%,70%,100%{opacity:.35}60%{opacity:1}}

@keyframes satorbit{from{offset-distance:0%}to{offset-distance:100%}}
.sat{position:absolute;left:0;top:0;border-radius:50%;offset-rotate:0deg;animation:satorbit 16s linear infinite}
.gate{animation:gatepulse 3s linear infinite}
.orbit{transform-origin:100px 100px;animation:orbit 14s linear infinite}
.orbitrev{transform-origin:100px 100px;animation:orbitrev 40s linear infinite}
.pulse{transform-origin:100px 100px;animation:pulse 6s cubic-bezier(.16,1,.3,1) infinite}
.pulse2{animation-delay:3s}
.mask{display:block;overflow:hidden;padding-top:.08em;padding-bottom:.28em}
.mask>span{display:block;animation:up 1.4s cubic-bezier(.16,1,.3,1) both}
.fadeup{animation:fadeup 1.2s cubic-bezier(.16,1,.3,1) both}
.marquee{animation:marquee 90s linear infinite}
.marquee:hover{animation-play-state:paused}
.dot{position:absolute;left:0;top:0;border-radius:50%;offset-rotate:0deg;opacity:0;animation-iteration-count:infinite}
.rowlink:hover .arrow{transform:translateX(6px)}
.arrow{transition:transform .25s cubic-bezier(.16,1,.3,1);display:inline-block}
@media (prefers-reduced-motion: reduce){.orbit,.orbitrev,.pulse,.mask>span,.fadeup,.marquee,.dot,.gate,.sat{animation:none !important}.orbit{transform:rotate(40deg)}.pulse{opacity:0}.sat{offset-distance:11%}}

@property --sweep{syntax:'<angle>';inherits:false;initial-value:187deg}

@keyframes sealcw{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

@keyframes sealccw{from{transform:rotate(0deg)}to{transform:rotate(-360deg)}}

@keyframes sealdraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}

@keyframes sealin{from{opacity:0}to{opacity:1}}

@keyframes sealsweep{from{--sweep:0deg}to{--sweep:360deg}}

@keyframes sealyear{0%,95%{opacity:1}100%{opacity:0}}

@keyframes sealbeat{0%{transform:scale(.08);opacity:0}6%{opacity:.5}100%{transform:scale(1);opacity:0}}

@keyframes sealbreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.14)}}
.seal-layer{position:absolute;left:0;top:0;width:100%;height:100%;will-change:transform}
.seal-a{animation:sealcw 900s linear infinite}
.seal-b{animation:sealccw 700s linear infinite}
.seal-text{animation:sealcw 240s linear infinite}
.seal-sat{animation:sealcw 18s linear infinite}
.seal-bead{animation:sealccw 64s linear infinite}
.seal-fade{animation:sealin 1.6s cubic-bezier(.16,1,.3,1) both}
.seal-ring{stroke-dasharray:1;animation:sealdraw 2s cubic-bezier(.65,0,.35,1) .2s both}
.seal-ticks-on{-webkit-mask:conic-gradient(#000 var(--sweep),transparent 0);mask:conic-gradient(#000 var(--sweep),transparent 0);animation:sealsweep 62.4s steps(52,end) infinite,sealyear 62.4s linear infinite}
.seal-beat{transform-origin:50% 50%;animation:sealbeat 18s cubic-bezier(.16,1,.3,1) infinite}
.seal-heart{transform-origin:50% 50%;animation:sealbreathe 6s ease-in-out infinite}
.seal-trail{position:absolute;left:0;top:0;width:100%;height:100%;border-radius:50%;background:conic-gradient(from 0deg,rgba(26,26,24,0) 0deg,rgba(26,26,24,0) 232deg,rgba(26,26,24,.07) 270deg,rgba(26,26,24,.62) 360deg);-webkit-mask:radial-gradient(circle closest-side,transparent 55.7%,#000 56%,#000 58.4%,transparent 58.7%);mask:radial-gradient(circle closest-side,transparent 55.7%,#000 56%,#000 58.4%,transparent 58.7%)}
@media (prefers-reduced-motion: reduce){.seal-a,.seal-b,.seal-text,.seal-sat,.seal-bead,.seal-fade,.seal-ring,.seal-ticks-on,.seal-beat,.seal-heart{animation:none !important}.seal-sat{transform:rotate(40deg)}.seal-beat{opacity:0}.seal-ring{stroke-dashoffset:0}}

@keyframes spark{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.spark{stroke-dasharray:1;stroke-dashoffset:1;animation:spark 2.4s cubic-bezier(.65,0,.35,1) both}
.pledge:hover{background:#FBFAF7}
.pledge{transition:background .3s ease}
@media (prefers-reduced-motion: reduce){.spark{animation:none !important;stroke-dashoffset:0}}

/* Production frame: keep 1440 design, centre on wide screens */
.canvas-page {
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  background: #F3F1EC;
  color: #1A1A18;
  font-family: 'Instrument Sans', 'Helvetica Neue', Arial, sans-serif;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  overflow-x: visible;
}
.canvas-page a { color: inherit; }
/* Board wrappers must not generate boxes — they sit inside flex/grid rows. */
sc-if, sc-for, [data-logic] {
  display: contents;
}
