/* Inside the kit: light scroll story on product.html.
   Without JS or with reduced motion the section is a static figure plus a plain
   chapter list; js/kit-story.js adds .is-live for the sticky, scroll-driven stage. */
.ks{
  /* palette, named after the subject */
  --ks-bench:#f6f8fb;          /* clean lab bench: stage ground */
  --ks-hairline:rgba(11,14,20,.12);
  --ks-label:#0b0e14;          /* label ink: headings and keys */
  --ks-print:#3a3f4b;          /* small-print grey: body text */
  --ks-idle:#5b616e;           /* unlit channel row */
  --ks-shadow:rgba(11,14,20,.16); /* carton shadow on the bench */
  --ks-carton:#f3f5f7;         /* carton board */
  --ks-carton-shade:#d9dee4;
  --ks-carton-ink:#3b3e43;     /* carton print */
  --ks-band:#6ba7c8;           /* the two blue bands round the carton */
  --ks-signal:#1850e1;         /* CarciScan blue: one signal per view */
  --ks-fam:#5f8a00;            /* the four dye channels, schematic */
  --ks-hex:#0e8a7e;
  --ks-rox:#1850e1;
  --ks-cy5:#3a3f4b;
  --S:min(420px,88vw);
  position:relative;
  background:var(--ks-bench);
  color:var(--ks-label);
  border-top:1px solid var(--ks-hairline);
  padding:clamp(72px,10vw,128px) 0 clamp(72px,9vw,120px);
  overflow:clip;
}
.ks p{color:var(--ks-print);}
.ks__skip{
  position:absolute;left:16px;top:12px;z-index:5;padding:10px 16px;border-radius:8px;
  background:var(--ks-label);color:#fff;font-size:14px;font-weight:600;
  transform:translateY(-160%);transition:transform .2s;
}
.ks__skip:focus{transform:none;}
.ks a:focus-visible{outline:2px solid var(--ks-signal);outline-offset:3px;}

.ks__intro{max-width:var(--max);}
.ks__title{
  font-size:clamp(34px,5.4vw,68px);line-height:1.02;font-weight:600;letter-spacing:-.035em;
  color:var(--ks-label);max-width:12ch;
}
.ks__lede{margin-top:20px;font-size:clamp(16px,1.6vw,19px);max-width:46ch;}

/* ---------- scene (shared by static and live) ---------- */
.ks__scene{position:relative;width:var(--S);height:var(--S);margin:0 auto;perspective:calc(var(--S) * 3.2);}
.ks-floor{
  position:absolute;left:8%;right:8%;top:66%;height:18%;
  background:radial-gradient(50% 50% at 50% 50%,var(--ks-shadow),rgba(11,14,20,0) 70%);
  pointer-events:none;
}

/* 3D carton: 73.3 x 60.9 x 52.8 mm, measured on the real box */
.ks-box{
  --W:calc(var(--S) * .46);--H:calc(var(--W) * .831);--D:calc(var(--W) * .72);
  --rx:-20deg;--ry:-30deg;--lid:200deg;--bs:1;--bo:1;--by:0px;
  position:absolute;left:50%;top:50%;width:var(--W);height:var(--H);
  margin:calc(var(--H) / -2) 0 0 calc(var(--W) / -2);
  transform-style:preserve-3d;
  transform:translateY(var(--by)) scale(var(--bs)) rotateX(var(--rx)) rotateY(var(--ry));
}
/* opacity on a preserve-3d parent flattens it, so the fade lives on the leaf planes */
.ks-face,.ks-inner,.ks-insert,.ks-lid__out,.ks-lid__in{opacity:var(--bo);}
.ks-face,.ks-inner,.ks-insert,.ks-lid,.ks-lid__out,.ks-lid__in{position:absolute;backface-visibility:hidden;}
.ks-face{top:0;height:var(--H);background:var(--ks-carton);overflow:hidden;box-shadow:inset 0 0 0 1px rgba(11,14,20,.1);}
.ks-face--front,.ks-face--back{left:0;width:var(--W);}
.ks-face--front{transform:translateZ(calc(var(--D) / 2));background:linear-gradient(180deg,#fbfcfd,var(--ks-carton) 70%,#e9edf1);}
.ks-face--back{transform:rotateY(180deg) translateZ(calc(var(--D) / 2));}
.ks-face--right,.ks-face--left{left:calc((var(--W) - var(--D)) / 2);width:var(--D);}
.ks-face--right{transform:rotateY(90deg) translateZ(calc(var(--W) / 2));background:linear-gradient(90deg,#dfe4e9,#cfd5dc);}
.ks-face--left{transform:rotateY(-90deg) translateZ(calc(var(--W) / 2));background:#d3d9df;}
.ks-band{position:absolute;left:0;right:0;height:1.6%;min-height:1px;background:var(--ks-band);}
.ks-band--a{top:36%;}
.ks-band--b{top:57%;}
.ks-face--front .ks-band{height:1.8%;}
.ks-front__genoma{position:absolute;left:8%;top:13%;width:24%;height:auto;}
.ks-side__mark{position:absolute;left:14%;top:12%;width:7%;height:auto;opacity:.85;}
.ks-front__symbols{position:absolute;right:7%;top:10%;width:22%;display:flex;align-items:flex-start;gap:6%;color:var(--ks-carton-ink);}
.ks-sym{display:block;height:auto;}
.ks-sym--temp{width:44%;}
.ks-sym--sigma{width:44%;}
.ks-sym__n{position:absolute;right:-6%;top:78%;font-size:calc(var(--W) * .022);font-weight:500;}
.ks-front__name,.ks-front__sub{position:absolute;left:0;right:0;text-align:center;color:var(--ks-carton-ink);white-space:nowrap;letter-spacing:.005em;line-height:1;}
.ks-front__name{top:40%;font-size:calc(var(--W) * .066);font-weight:500;}
.ks-front__sub{top:49.5%;font-size:calc(var(--W) * .053);font-weight:400;}
.ks-front__marks{position:absolute;left:8%;top:77%;display:flex;align-items:center;gap:calc(var(--W) * .03);color:var(--ks-carton-ink);}
.ks-ivd{border:1.5px solid currentColor;padding:0 .25em;font-size:calc(var(--W) * .047);font-weight:700;line-height:1.25;letter-spacing:.04em;}
.ks-sym--ifu{width:calc(var(--W) * .07);}
.ks-sym--ce{width:calc(var(--W) * .085);}
.ks-front__edna{position:absolute;right:8%;top:73%;width:24%;height:auto;}

.ks-inner{background:#e4e8ec;}
.ks-inner--back,.ks-inner--front{left:0;top:0;width:var(--W);height:var(--H);}
.ks-inner--back{transform:translateZ(calc(var(--D) / -2 + 1px));background:linear-gradient(180deg,#eef1f4,#c9d0d7);}
.ks-inner--front{transform:rotateY(180deg) translateZ(calc(var(--D) / 2 - 1px));background:linear-gradient(180deg,#e9edf0,#c4cbd2);}
.ks-inner--left,.ks-inner--right{top:0;left:calc((var(--W) - var(--D)) / 2);width:var(--D);height:var(--H);background:linear-gradient(180deg,#e2e6ea,#bcc4cc);}
.ks-inner--left{transform:rotateY(90deg) translateZ(calc(var(--W) / -2 + 1px));}
.ks-inner--right{transform:rotateY(-90deg) translateZ(calc(var(--W) / -2 + 1px));}

/* card insert at 14 % depth, 3 x 2 holes, amber column on the left */
.ks-insert{
  left:0;width:var(--W);height:var(--D);top:calc(var(--H) * .14 - var(--D) / 2);
  transform:rotateX(90deg);
  background:linear-gradient(180deg,#e6eaee,#f6f8fa);
  display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);
  padding:9% 11%;gap:8% 10%;
}
.ks-hole{
  align-self:center;justify-self:center;width:72%;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle at 40% 38%,#ffffff,#e5eaee 55%,#b7c0c8 100%);
  box-shadow:0 0 0 2px rgba(120,132,144,.35);opacity:var(--caps,1);
}
.ks-hole--amber{width:64%;background:radial-gradient(circle at 42% 38%,#6a3a22,#2a140a 60%,#140904 100%);}

.ks-lid{left:0;top:0;width:var(--W);height:var(--D);transform-origin:50% 0;transform-style:preserve-3d;
  transform:translateZ(calc(var(--D) / -2)) rotateX(var(--lid));backface-visibility:visible;}
.ks-lid__out,.ks-lid__in{inset:0;}
.ks-lid__out{background:linear-gradient(180deg,#f7f9fa,#e6eaee);}
.ks-lid__in{transform:rotateY(180deg);background:#dfe4e8;}

/* tubes: static line-up by default */
.ks-vials{position:absolute;left:0;right:0;top:auto;bottom:4%;display:flex;justify-content:center;align-items:flex-end;gap:calc(var(--S) * .03);}
.ks-vial{width:calc(var(--S) * .095);height:auto;aspect-ratio:40/110;flex:none;overflow:visible;}
.ks-vial--amber + .ks-vial--clear{margin-left:calc(var(--S) * .04);}
.ks-call{position:absolute;font-size:12px;line-height:1.35;color:var(--ks-print);letter-spacing:.01em;}
.ks-call__rule{display:block;height:1px;background:var(--ks-hairline);margin-bottom:6px;}
.ks-call__txt{display:block;}
.ks-call__rule{width:var(--rw,auto);}
.ks-call--end{text-align:right;}
.ks-call--end .ks-call__rule{margin-left:auto;}
.ks-curves,.ks-board{display:none;}

/* static layout (no JS, reduced motion): box sits up top, open, tubes below it */
.ks__track{margin-top:clamp(40px,6vw,72px);}
.ks:not(.is-live) .ks-box{top:38%;--rx:-30deg;--ry:-28deg;--lid:205deg;}
.ks:not(.is-live) .ks-call{display:none;}
.ks:not(.is-live) .ks-insert{--caps:0;}
.ks:not(.is-live) .ks__scene{height:calc(var(--S) * 1.15);}
.ks:not(.is-live) .ks-floor{top:50%;}

/* chapters */
.ks__chapters{list-style:none;margin:0;padding:0;counter-reset:none;}
.ks-ch__body{max-width:34rem;}
.ks-ch__num{display:block;font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ks-signal);margin-bottom:14px;}
.ks-ch__title{font-size:clamp(24px,2.6vw,34px);line-height:1.12;letter-spacing:-.025em;color:var(--ks-label);margin-bottom:16px;}
.ks-ch__body p{font-size:16px;line-height:1.65;}
.ks-ch__body p + p{margin-top:12px;}
.ks-ch__small{font-size:13.5px !important;line-height:1.55 !important;}
.ks-parts{margin:0 0 14px;display:grid;gap:0;}
.ks-parts div{display:grid;grid-template-columns:9.5rem 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--ks-hairline);}
.ks-parts div:last-child{border-bottom:1px solid var(--ks-hairline);}
.ks-parts dt{font-weight:600;font-size:14px;color:var(--ks-label);}
.ks-parts dd{margin:0;font-size:14px;line-height:1.5;color:var(--ks-print);}
.ks-steps{list-style:none;margin:0 0 14px;padding:0;counter-reset:ks-step;}
.ks-steps li{counter-increment:ks-step;position:relative;padding:10px 0 10px 2.6rem;border-top:1px solid var(--ks-hairline);font-size:14.5px;line-height:1.55;color:var(--ks-print);}
.ks-steps li::before{content:counter(ks-step,decimal-leading-zero);position:absolute;left:0;top:11px;font-size:12px;font-weight:600;color:var(--ks-signal);letter-spacing:.06em;}
.ks-steps__k{display:block;font-weight:600;color:var(--ks-label);font-size:14.5px;}

.ks:not(.is-live) .ks__chapters{max-width:var(--max);margin:clamp(40px,6vw,64px) auto 0;padding:0 32px;display:grid;gap:56px;}
@media (min-width:960px){
  .ks:not(.is-live) .ks__chapters{grid-template-columns:1fr 1fr;column-gap:72px;}
}

/* closing line */
.ks__close{margin-top:clamp(56px,8vw,96px);}
.ks__line{
  font-size:clamp(28px,4.4vw,56px) !important;line-height:1.08 !important;font-weight:600;letter-spacing:-.03em;
  color:var(--ks-label) !important;max-width:20ch;
}
.ks__source{margin-top:22px;font-size:13px;max-width:62ch;}

/* ---------- live mode: sticky stage, chapters scroll past ---------- */
.ks.is-live .ks__track{position:relative;}
.ks.is-live .ks__stage{position:sticky;top:0;height:100vh;height:100svh;display:flex;align-items:center;justify-content:center;z-index:0;}
.ks.is-live .ks-vials{display:block;position:absolute;inset:0;}
.ks.is-live .ks-vial{position:absolute;left:0;top:0;transform-origin:50% 0;will-change:transform,opacity;opacity:0;}
.ks.is-live .ks-vial--amber + .ks-vial--clear{margin-left:0;}
.ks.is-live .ks-call{opacity:0;width:var(--cw,200px);}
.ks.is-live .ks-curves,.ks.is-live .ks-board{display:block;position:absolute;opacity:0;}
.ks.is-live .ks-ch{position:relative;z-index:1;min-height:100vh;min-height:100svh;display:flex;}
.ks.is-live .ks-ch__body{transition:opacity .35s ease;opacity:.78;}
.ks.is-live .ks-ch.is-active .ks-ch__body{opacity:1;}

.ks-curves{left:7%;right:7%;top:22%;}
.ks-curves svg{width:100%;height:auto;display:block;}
.ks-curves__axis{stroke:var(--ks-hairline);stroke-width:1.5;}
.ks-curves__thr{stroke:var(--ks-print);stroke-width:1;stroke-dasharray:4 5;opacity:.6;}
.ks-curves__lab{fill:var(--ks-print);font-size:11px;font-family:inherit;}
.ks-curve{stroke-width:3;stroke-linecap:round;}
.ks-curve--fam{stroke:var(--ks-fam);}
.ks-curve--hex{stroke:var(--ks-hex);}
.ks-curve--rox{stroke:var(--ks-rox);}
.ks-curve--cy5{stroke:var(--ks-cy5);}
.ks-curves__key{list-style:none;margin:10px 0 0;padding:0;display:flex;gap:18px;font-size:13px;font-weight:600;color:var(--ks-label);}
.ks-curves__key li{display:flex;align-items:center;gap:7px;}
.ks-curves__key li::before{content:"";width:14px;height:3px;border-radius:2px;background:currentColor;}
.ks-key--fam::before{background:var(--ks-fam) !important;}
.ks-key--hex::before{background:var(--ks-hex) !important;}
.ks-key--rox::before{background:var(--ks-rox) !important;}
.ks-key--cy5::before{background:var(--ks-cy5) !important;}
.ks-curves__note{margin-top:8px;font-size:12px;}

.ks-board{left:2%;right:2%;top:18%;grid-template-columns:1fr 1fr;gap:6%;}
.ks.is-live .ks-board{display:grid;}
.ks-board__col{display:flex;flex-direction:column;}
.ks-board__head{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ks-print);padding-bottom:10px;border-bottom:1px solid var(--ks-hairline);}
.ks-board__row{display:flex;gap:12px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--ks-hairline);font-size:clamp(13px,1.25vw,16px);color:var(--ks-idle);transition:color .3s;}
.ks-board__row b{flex:none;width:2.8em;font-size:11px;letter-spacing:.08em;color:var(--ks-idle);font-weight:600;}
.ks-board__row.is-on{color:var(--ks-label);}
.ks-board__row.is-on b{color:var(--ks-signal);}
.ks-board__row--ipc{font-size:clamp(12px,1.1vw,14px);}
.ks-board__foot{grid-column:1 / -1;margin:0;font-size:13px;line-height:1.55;color:var(--ks-print);}
.ks-board__foot b{color:var(--ks-label);font-weight:600;}

@media (min-width:960px){
  .ks.is-live .ks__track{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);max-width:calc(var(--max) + 64px);margin-left:auto;margin-right:auto;padding:0 32px;}
  .ks.is-live .ks__stage{grid-column:2;grid-row:1;padding-top:140px;}
  .ks.is-live .ks__chapters{grid-column:1;grid-row:1;}
  .ks.is-live .ks-ch{align-items:center;padding:12vh 0;}
}
@media (max-width:959px){
  /* phone: the kit sits in a compact, opaque band under the chapter bar; the text
     has its own lane below the band's hairline and never runs under a moving part */
  .ks.is-live .ks__stage{
    top:var(--ks-top,118px);height:auto;padding:12px 0 10px;z-index:3;overflow:hidden;
    background:var(--ks-bench);border-bottom:1px solid var(--ks-hairline);
  }
  .ks.is-live .ks__chapters{position:relative;z-index:1;}
  .ks.is-live .ks-ch{min-height:60vh;min-height:60svh;align-items:flex-start;padding:28px 20px 56px;}
  .ks.is-live .ks-ch + .ks-ch{border-top:1px solid var(--ks-hairline);}
  .ks.is-live .ks-ch__body{width:100%;}
  .ks.is-live .ks-board{top:0;left:calc(50% - 50vw + 20px);right:calc(50% - 50vw + 20px);gap:0 20px;}
  .ks.is-live .ks-board__foot{display:none;}
  .ks.is-live .ks-curves{top:0;left:50%;right:auto;width:min(calc(100vw - 40px),calc((var(--S) - 58px) / .65));transform:translateX(-50%);}
  .ks-curves__key{gap:14px;font-size:12px;margin-top:6px;}
  .ks-curves__note{margin-top:4px;font-size:11.5px;line-height:1.4;}
  .ks-board__head{font-size:11px;padding-bottom:6px;}
  .ks-board__row{padding:6px 0;font-size:13px;gap:8px;}
  .ks-board__row--ipc{font-size:12px;}
  .ks-parts div{grid-template-columns:8rem 1fr;padding:8px 0;}
  .ks-parts dd,.ks-parts dt{font-size:13.5px;}
  .ks-steps li{padding:8px 0 8px 2.2rem;font-size:14px;}
  .ks-call{font-size:11px;line-height:1.3;}
}
@media (max-width:640px){
  .ks:not(.is-live) .ks__chapters{padding:0 20px;}
}
@media (prefers-reduced-motion:reduce){
  .ks-ch__body{transition:none !important;}
}
@media print{
  .ks{background:#fff;color:#000;}
  .ks__stage{display:none;}
}
