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

html{scroll-behavior:smooth}
.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:11px 19px;border-radius:999px;font-size:15px;font-weight:500;line-height:24px;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 label.good input:checked + span{background:#355241}
.seg label.bad input:checked + span{background:#9B4A36}
.seg label.ns input:checked + span{background:#55534E}
.seg input:focus-visible + span{outline:2px solid #1A1A18;outline-offset:2px}
.chip{position:relative;display:inline-block;cursor:pointer}
.chip input{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.chip span{display:inline-flex;align-items:center;gap:9px;padding:12px 18px;border-radius:999px;border:1px solid #C9C4BA;background:#F3F1EC;font-size:15px;font-weight:500;line-height:20px;white-space:nowrap;transition:background .2s ease,color .2s ease,border-color .2s ease}
.chip span::before{content:"";width:9px;height:9px;border-radius:50%;border:1.5px solid #8C887F;box-sizing:border-box}
.chip:hover span{border-color:#1A1A18}
.chip input:checked + span{background:#1A1A18;border-color:#1A1A18;color:#F3F1EC}
.chip input:checked + span::before{background:#9CC2AE;border-color:#9CC2AE}
.chip input:focus-visible + span{outline:2px solid #1A1A18;outline-offset:2px}
.plainbtn{background:none;border:0;padding:0;font:inherit;color:#1A1A18;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.plainbtn:hover{color:#355241}
.qrow{scroll-margin-top:120px;transition:background .3s ease}
.parthead{appearance:none;-webkit-appearance:none;width:100%;border:0;background:none;margin:0;padding:30px 0;font:inherit;color:inherit;cursor:pointer;display:grid;grid-template-columns:76px minmax(0,1fr) auto;align-items:center;text-align:left;transition:background .25s ease}
.parthead:hover{background:#FBFAF7}
.parthead:focus-visible{outline:2px solid #1A1A18;outline-offset:-2px}
.mapl{appearance:none;-webkit-appearance:none;border:0;background:none;margin:0;padding:8px 0 6px;flex:1 1 0;min-width:0;cursor:pointer;display:block}
.mapl:focus-visible,.mapsec:focus-visible,.backbtn:focus-visible,.nextbtn:focus-visible,.barbtn:focus-visible{outline:2px solid #1A1A18;outline-offset:2px}
.mapsec{appearance:none;-webkit-appearance:none;border:0;background:none;margin:0;padding:0;font:inherit;font-size:12px;font-weight:600;color:#1A1A18;cursor:pointer;text-align:left}
.backbtn{appearance:none;-webkit-appearance:none;border:0;background:none;margin:0;padding:0 0 0 20px;font:inherit;font-size:14px;font-weight:600;color:#6B6862;font-variant-numeric:tabular-nums;cursor:pointer;text-align:left}
.backbtn:hover{color:#1A1A18}
.nextbtn{appearance:none;-webkit-appearance:none;border:1px solid #1A1A18;background:#1A1A18;color:#F3F1EC;margin:0;padding:14px 24px;border-radius:999px;font:inherit;font-size:15px;font-weight:500;cursor:pointer;white-space:nowrap}
.barbtn{appearance:none;-webkit-appearance:none;border:0;background:#1A1A18;color:#F3F1EC;margin:0;padding:11px 20px;border-radius:999px;font:inherit;font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap}
.part{scroll-margin-top:84px}
.tick{display:block;height:5px;border-radius:3px;transition:background .3s ease}
.mapl:hover .tick{filter:brightness(.82)}
.ringseg{transition:stroke .4s ease}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.qrow,.tick,.ringseg,.seg span,.chip span{transition:none}}
@media print{.noprint,nav,footer{display:none !important}#result{border:0 !important;padding-top:24px !important}}

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