@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%}}

.seg{display:inline-flex;border:1px solid #C9C4BA;border-radius:999px;padding:3px;background:#FBFAF7}
.seg label{position:relative;display:block;cursor:pointer}
.seg input{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.seg span{display:block;padding:9px 17px;border-radius:999px;font-size:14px;font-weight:500;line-height:22px;color:#1A1A18;white-space:nowrap;transition:background .2s ease,color .2s ease}
.seg label:hover span{background:#ECE8E0}
.seg input:checked + span{background:#1A1A18;color:#F3F1EC}
.seg input:focus-visible + span{outline:2px solid #1A1A18;outline-offset:2px}
.fx{transition:background .45s ease,border-color .45s ease,color .45s ease,opacity .3s ease}
.fx circle{transition:stroke .45s ease,fill .45s ease}
.leg{appearance:none;-webkit-appearance:none;width:100%;border:0;border-top:1px solid #DDD9D1;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer;display:grid;grid-template-columns:52px minmax(0,1fr);padding:24px 20px 26px 14px;transition:background .25s ease}
.leg:hover{background:#F3F1EC}
.leg:focus-visible{outline:2px solid #1A1A18;outline-offset:-2px}
@media (prefers-reduced-motion: reduce){.fx,.fx circle,.leg,.seg span{transition:none}}

/* 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;
}
