/* Tech-Net "server -> cloud" migration film  (film.css, pairs with film.js)
   Progressive enhancement: the default state below is a complete static section
   (illustration + caption list). Everything hidden/animated lives under classes
   that ONLY film.js adds:  .mf.is-live (canvas running)  .mf.is-pin (pinned scrub). */

/* ---------- tokens: inherit the Cinematic Dark system, fall back to literals ---------- */
.mf{
  --mf-bg:var(--bg,#050a14); --mf-bg2:var(--bg-2,#070e1b); --mf-deep:var(--bg-deep,#03070e);
  --mf-line:var(--line,rgba(255,255,255,.09)); --mf-line2:var(--line-2,rgba(255,255,255,.16));
  --mf-glass:var(--glass,rgba(255,255,255,.045));
  --mf-text:var(--text,#eaf3fa); --mf-muted:var(--muted,#a7b9cb);
  --mf-brand:var(--brand,#0a7fa5); --mf-brand2:var(--brand-2,#19b5d8);
  --mf-glow:var(--glow,#5ee7ff); --mf-g:var(--glow-rgb,94,231,255); --mf-amber:var(--amber,#f5c451);
  --mf-ffd:var(--ff-d,"Inter Tight","Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif);
  --mf-ffb:var(--ff-b,"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif);
  --mf-ffm:var(--ff-m,"JetBrains Mono",ui-monospace,"SFMono-Regular",Consolas,monospace);
  --mf-r:var(--r,18px); --mf-rlg:var(--r-lg,28px); --mf-ease:var(--ease,cubic-bezier(.2,.7,.2,1));
  --mf-nav:var(--nav-h,0px);      /* height of a fixed top nav, 0 if none */
  --mf-track:340vh;               /* length of the pinned scroll track (desktop only) */
  --mf-max:1280px; --mf-pad:24px;
  position:relative; isolation:isolate; color-scheme:dark;
  background:var(--mf-bg); color:var(--mf-text);
  font-family:var(--mf-ffb); font-size:1rem; line-height:1.6; -webkit-font-smoothing:antialiased;
  padding:clamp(4rem,8vw,7rem) 0;
}
.mf *,.mf *::before,.mf *::after{box-sizing:border-box}

/* ---------- default / static layout (no JS, reduced motion, phones, tablets) ---------- */
.mf-stage{position:relative;width:100%;max-width:var(--mf-max);margin:0 auto;padding:0 var(--mf-pad)}
.mf-head{max-width:46rem;margin:0 auto 2.2rem;text-align:center}
.mf-lbl{display:inline-block;margin:0 0 1rem;font-family:var(--mf-ffm);font-size:.72rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--mf-glow)}
.mf-title{margin:0;font-family:var(--mf-ffd);font-weight:600;font-size:clamp(1.9rem,4vw,3.2rem);line-height:1.06;letter-spacing:-.035em;color:#fff;text-wrap:balance}
.mf-title em{font-style:normal;background:linear-gradient(100deg,#8df0ff,var(--mf-brand2));-webkit-background-clip:text;background-clip:text;color:transparent}

.mf-frame{position:relative;width:100%;max-width:980px;margin:0 auto;aspect-ratio:16/10;overflow:hidden;
  border:1px solid var(--mf-line);border-radius:var(--mf-rlg);
  background:
    radial-gradient(55% 60% at 50% 46%,rgba(var(--mf-g),.11),transparent 72%),
    radial-gradient(45% 50% at 8% 100%,rgba(10,127,165,.20),transparent 70%),
    linear-gradient(180deg,var(--mf-bg2),var(--mf-deep));
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 40px 90px -40px rgba(0,0,0,.9)}
.mf-frame::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.10) 1px,transparent 1.4px);background-size:28px 28px;
  -webkit-mask-image:radial-gradient(70% 70% at 50% 50%,#000,transparent);mask-image:radial-gradient(70% 70% at 50% 50%,#000,transparent)}
.mf-still{position:absolute;inset:0;width:100%;height:100%;display:block}
.mf-canvas{position:absolute;inset:0;width:100%;height:100%;display:none}   /* empty until film.js runs */
.mf-rail,.mf-skip{display:none}                                              /* pinned-mode chrome only */

.mf-caps{list-style:none;margin:2rem auto 0;padding:0;max-width:980px;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));counter-reset:mf}
.mf-cap{position:relative;margin:0;padding:1.15rem 1.25rem 1.25rem;border:1px solid var(--mf-line);border-radius:var(--mf-r);
  background:linear-gradient(180deg,rgba(255,255,255,.06),var(--mf-glass));
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 20px 50px -24px rgba(0,0,0,.8);
  transition:border-color .5s var(--mf-ease),box-shadow .5s var(--mf-ease)}
.mf-step{display:block;margin:0 0 .55rem;font-family:var(--mf-ffm);font-size:.7rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--mf-glow)}
.mf-cap p{margin:0;color:var(--mf-muted);font-size:.98rem;line-height:1.6}
.mf-cap p strong{color:var(--mf-text);font-weight:600}
#mf-end{display:block;height:0;outline:0}

/* ---------- live (canvas running): swap illustration for film, follow the narration ---------- */
.mf.is-live .mf-canvas{display:block}
.mf.is-live .mf-still{display:none}
.mf.is-live:not(.is-pin) .mf-cap.is-on{border-color:rgba(var(--mf-g),.5);box-shadow:0 0 0 1px rgba(var(--mf-g),.22),0 0 44px -10px rgba(var(--mf-g),.5)}

/* ---------- pinned scroll-scrub (class set by film.js: >=1024px, fine pointer, motion OK) ---------- */
.mf.is-pin{padding:0}
.mf.is-pin .mf-track{height:var(--mf-track)}
.mf.is-pin .mf-stage{position:sticky;top:0;height:100vh;max-width:none;overflow:hidden;
  padding:var(--mf-nav) max(var(--mf-pad),calc((100vw - var(--mf-max))/2 + var(--mf-pad))) 0;
  display:grid;grid-template-columns:minmax(0,min(430px,34vw)) 1fr;grid-template-rows:44% 56%;column-gap:2rem;
  background:
    radial-gradient(46% 56% at 66% 50%,rgba(var(--mf-g),.12),transparent 72%),
    radial-gradient(40% 46% at 6% 100%,rgba(10,127,165,.22),transparent 70%),
    radial-gradient(30% 30% at 100% 0,rgba(245,196,81,.05),transparent 70%),
    linear-gradient(180deg,var(--mf-bg),var(--mf-deep) 55%,var(--mf-bg))}
@supports (height:100svh){.mf.is-pin .mf-stage{height:100svh}}
.mf.is-pin .mf-stage::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
  background:radial-gradient(120% 90% at 60% 50%,transparent 55%,rgba(0,0,0,.55))}
.mf.is-pin .mf-frame{position:absolute;inset:0;max-width:none;aspect-ratio:auto;border:0;border-radius:0;background:none;box-shadow:none}
.mf.is-pin .mf-head{position:relative;z-index:2;grid-column:1;grid-row:1;align-self:end;margin:0 0 1.6rem;max-width:none;text-align:left}
.mf.is-pin .mf-title{font-size:clamp(1.7rem,2.7vw,2.6rem)}
.mf.is-pin .mf-caps{position:relative;z-index:2;grid-column:1;grid-row:2;align-self:start;margin:0;max-width:none;display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.mf.is-pin .mf-cap{grid-area:1/1;opacity:0;transform:translate3d(0,14px,0);pointer-events:none;
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.035));border-color:var(--mf-line2);
  transition:opacity .55s var(--mf-ease),transform .55s var(--mf-ease)}
.mf.is-pin .mf-cap.is-on{opacity:1;transform:none;pointer-events:auto}
.mf.is-pin .mf-cap p{font-size:1.06rem;color:var(--mf-text)}

.mf.is-pin .mf-rail{position:absolute;z-index:2;left:0;right:0;bottom:26px;display:flex;align-items:center;gap:16px;
  padding:0 max(var(--mf-pad),calc((100vw - var(--mf-max))/2 + var(--mf-pad)));
  font-family:var(--mf-ffm);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mf-muted)}
.mf-bar{position:relative;flex:1;height:2px;border-radius:2px;background:var(--mf-line2);overflow:hidden}
.mf-bar i{position:absolute;inset:0;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--mf-brand),var(--mf-glow));box-shadow:0 0 12px rgba(var(--mf-g),.8)}
.mf-count{min-width:4.2em;color:var(--mf-glow)}
.mf.is-pin .mf-skip{display:inline-block;position:absolute;z-index:3;right:max(var(--mf-pad),calc((100vw - var(--mf-max))/2 + var(--mf-pad)));top:calc(var(--mf-nav) + 18px);
  padding:.5rem .8rem;border:1px solid var(--mf-line2);border-radius:999px;background:rgba(5,10,20,.55);
  font-family:var(--mf-ffm);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--mf-muted);text-decoration:none}
.mf.is-pin .mf-skip:hover{color:#fff;border-color:rgba(var(--mf-g),.6)}
.mf-skip:focus-visible{outline:2px solid var(--mf-glow);outline-offset:3px}

@media (max-width:600px){
  .mf{--mf-pad:16px}
  .mf-frame{border-radius:var(--mf-r)}
}
@media (prefers-reduced-motion:reduce){.mf-cap,.mf.is-pin .mf-cap{transition:none}}
@media print{.mf.is-pin .mf-track{height:auto}.mf.is-pin .mf-stage{position:relative;height:auto}}
