@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-bottom:.08em}
.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%}}

@keyframes staffdown{from{transform:translateY(0)}to{transform:translateY(46.00px)}}

@keyframes staffup{from{transform:translateY(0)}to{transform:translateY(-49.70px)}}

@keyframes staffwalk{0%{transform:translateY(0);opacity:0}3%{opacity:1}84%{transform:translateY(529.5px);opacity:1}95%{transform:translateY(529.5px);opacity:1}100%{transform:translateY(529.5px);opacity:0}}

@keyframes staffink{0%{clip-path:inset(0 0 100% 0);opacity:1}84%{clip-path:inset(0 0 0 0);opacity:1}95%{clip-path:inset(0 0 0 0);opacity:1}100%{clip-path:inset(0 0 0 0);opacity:0}}

@keyframes staffdraw{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.staff-a{animation:staffdown 33s linear infinite;will-change:transform}
.staff-b{animation:staffup 28s linear infinite;will-change:transform}
.staff-line{transform-origin:50% 0;animation:staffdraw 1.6s cubic-bezier(.65,0,.35,1) .2s both}
.staff-bead{animation:staffwalk 30s linear 1.6s infinite both}
.staff-moss{animation:staffink 30s linear 1.6s infinite both}
.staff-row{transition:color .2s ease}
a.staff-row:hover{color:#355241}
@media (prefers-reduced-motion: reduce){.staff-a,.staff-b,.staff-line{animation:none}.staff-bead{animation:none;transform:translateY(296.5px);opacity:1}.staff-moss{animation:none;clip-path:inset(0 0 44.0% 0);opacity:1}}

/* 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;
}
.canvas-page[data-canvas="self-check"] {
  min-width: 1440px;
}
