/* ============================================================
   migrare.css — the page's own parts (prefix mg-), linked only from
   migrare.html. Everything else comes from host.css / style.css.
   Monochrome, reads the tokens, so the same rules work on black and on
   a white sheet (.inv). Glass follows docs/liquid-glass-spec.md §3.2:
   clear glass on the sheets (.mg-rules, the second source card), smoked
   glass for the black cards on a sheet (.mg-out, the cPanel card), baked
   glass on black. Rows inside a glass panel are flat: no glass on glass.
   Page order (11.09.2026): hero · conditions (white) · steps · what we move
   and what you send (white) · no downtime · FAQ (white) · contact.
   ============================================================ */
.mg-in{max-width:var(--maxw);margin-inline:auto}
.shead h2{text-wrap:balance}

/* ---- hero: the move, drawn as two servers and what travels between them ---- */
.mg-move{position:relative;border-radius:var(--r-l);overflow:hidden}
.mg-move>*{position:relative;z-index:2}
.mg-route{display:grid;grid-template-columns:minmax(0,1fr) clamp(44px,7vw,104px) minmax(0,1fr);align-items:center;
  padding:20px 18px 6px}
.mg-node{display:grid;gap:5px;min-width:0;padding:16px 18px;border-radius:14px;border:1px solid var(--w05);
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.008))}
.mg-node.to{border-color:var(--w18);background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.015))}
.mg-node .mg-k{font-family:var(--fd);font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--w30)}
.mg-node b{font-size:15px;font-weight:500;letter-spacing:-.01em;line-height:1.25;color:#fff}
.mg-node .mg-s{font-size:11.5px;line-height:1.45;color:var(--w42)}
.mg-wire{position:relative;height:1px;margin:0 10px;
  background:repeating-linear-gradient(90deg,var(--w30) 0 4px,transparent 4px 9px)}
.mg-wire::after{content:"";position:absolute;right:0;top:-4px;width:8px;height:8px;
  border-top:1px solid var(--w56);border-right:1px solid var(--w56);transform:rotate(45deg)}
/* each packet is a full-width strip, so translateX(100%) carries its dot from one server to the other */
.mg-wire i{position:absolute;left:0;right:0;top:-3px;height:7px;opacity:0;animation:mgPkt 2.7s var(--e-soft) infinite}
.mg-wire i:nth-child(2){animation-delay:.9s}
.mg-wire i:nth-child(3){animation-delay:1.8s}
.mg-wire i::before{content:"";position:absolute;left:-3px;top:0;width:7px;height:7px;border-radius:50%;
  background:#fff;box-shadow:0 0 10px rgba(255,255,255,.75)}
@keyframes mgPkt{0%{transform:translateX(0);opacity:0}14%,84%{opacity:1}100%{transform:translateX(100%);opacity:0}}
.mg-load{display:grid;gap:2px;padding:14px 16px 12px}
.mg-load li{--dl:calc(.9s + var(--i,0) * .42s);display:grid;grid-template-columns:16px minmax(0,1fr) auto;
  align-items:center;gap:14px;padding:10px;border-radius:10px;font-size:13.5px;color:var(--w30);
  transition:color .5s var(--e) var(--dl),background .5s var(--e) var(--dl)}
.mg-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mg-v{font-family:var(--fm);font-size:11.5px;color:var(--w30);white-space:nowrap;transition:color .5s var(--e) var(--dl)}
.mg-ck{position:relative;width:14px;height:14px;border-radius:50%;border:1px solid var(--w18);
  transition:border-color .4s var(--e) var(--dl),background .4s var(--e) var(--dl),box-shadow .4s var(--e) var(--dl)}
.mg-ck::after{content:"";position:absolute;left:4px;top:1.5px;width:3.5px;height:7px;border:solid #000;
  border-width:0 1.6px 1.6px 0;transform:rotate(45deg);opacity:0;transition:opacity .3s var(--e) var(--dl)}
.mg-move.in .mg-load li{color:var(--w96)}
.mg-move.in .mg-v{color:var(--w56)}
.mg-move.in .mg-ck{border-color:var(--acc);background:var(--acc)}
.mg-move.in .mg-ck::after{opacity:1}
.mg-move.in .mg-load li:last-child{background:var(--w03)}
.mg-move.in .mg-load li:last-child .mg-ck{box-shadow:var(--glow)}
.mg-move.in .mg-load li:last-child .mg-v{color:#fff}
@media (max-width:520px){
  .mg-route{grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr);padding:16px 12px 4px}
  .mg-node{padding:12px}
  .mg-node b{font-size:14px}
  .mg-wire{margin:0 5px}
  .mg-load{padding:10px 8px}
  .mg-load li{gap:11px;font-size:13px}
}

/* ---- conditions: one clear-glass panel, four columns split by hairlines; then what is left out,
        on smoked glass, on the same four-column grid (title over column 1, list from column 2) ---- */
.mg-cond{padding:var(--sec) var(--pad)}
.mg-cond .shead .lead a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.mg-rules{--cp:clamp(24px,2.6vw,38px);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  border-radius:var(--r-l);overflow:hidden}
.mg-rules>li{position:relative;z-index:2;display:flex;flex-direction:column;padding:var(--cp)}
.mg-rules>li+li{border-left:1px solid var(--w08)}
.mg-rn{display:flex;align-items:center;gap:12px;font-family:var(--fd);font-size:10.5px;letter-spacing:.24em;color:var(--w56)}
/* the tick: a solid ink bead (black on the sheet), set on the spring when the panel arrives */
.mg-ok{position:relative;flex:none;width:24px;height:24px;border-radius:50%;background:var(--ink);
  box-shadow:inset 0 1px 0 rgb(255 255 255/.2),0 6px 14px -6px rgb(0 0 0/.45)}
.mg-ok::after{content:"";position:absolute;left:9px;top:6px;width:5px;height:9px;border:solid var(--bg);
  border-width:0 1.6px 1.6px 0;transform:rotate(45deg)}
.mg-rules.in .mg-ok{animation:mgPop .8s var(--e-spring) both}
.mg-rules.in li:nth-child(2) .mg-ok{animation-delay:.1s}
.mg-rules.in li:nth-child(3) .mg-ok{animation-delay:.2s}
.mg-rules.in li:nth-child(4) .mg-ok{animation-delay:.3s}
@keyframes mgPop{from{transform:scale(.3);opacity:0}to{transform:none;opacity:1}}
.mg-rules h3{font-size:17px;font-weight:500;letter-spacing:-.018em;line-height:1.25;margin:clamp(22px,2.4vw,32px) 0 10px}
.mg-rules p{font-size:14px;line-height:1.62;color:var(--w56)}
/* .mg-out is .glass.glass--dark: tint, rim, shadow and the white tokens come from host.css §13 */
.mg-out{--cp:clamp(24px,2.6vw,38px);position:relative;overflow:hidden;display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;margin-top:clamp(12px,1.4vw,18px);
  padding:var(--cp) 0;border-radius:var(--r-l)}
.mg-out>*{position:relative;z-index:2;padding-inline:var(--cp)}
.mg-out ::selection{background:#fff;color:#000}
.mg-out-h{display:flex;align-items:center;gap:14px;font-size:clamp(1.15rem,1.6vw,1.4rem);font-weight:400;
  letter-spacing:-.02em;line-height:1.2}
.mg-x{position:relative;flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--w18)}
.mg-x::before,.mg-x::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1.4px;margin:-.7px 0 0 -6px;
  background:#fff;transform:rotate(45deg)}
.mg-x::after{transform:rotate(-45deg)}
.mg-out ul{grid-column:2/-1;display:grid;gap:14px}
.mg-out li{position:relative;padding-left:20px;font-size:14.5px;line-height:1.65;color:var(--w56)}
.mg-out li::before{content:"";position:absolute;left:0;top:.8em;width:9px;height:1px;background:var(--w42)}
.mg-out li b{font-weight:500;color:#fff}
.mg-out a{color:#fff;text-decoration:underline;text-underline-offset:3px}
@media (max-width:1100px){
  .mg-rules,.mg-out{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mg-rules>li:nth-child(3){border-left:0}
  .mg-rules>li:nth-child(n+3){border-top:1px solid var(--w08)}
  .mg-out ul{grid-column:2}
}
@media (max-width:760px){
  .mg-out{grid-template-columns:1fr;gap:20px}
  .mg-out ul{grid-column:auto}
}
@media (max-width:560px){
  .mg-rules{grid-template-columns:1fr}
  .mg-rules>li+li{border-left:0;border-top:1px solid var(--w08)}
  .mg-rules h3{margin-top:18px}
}

/* ---- what we move + what you send: two source cards, one per panel. Each card lists what
        travels with the site (a state bead per row) and the two things you can send ---- */
.mg-src{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(14px,1.6vw,22px);
  max-width:1120px;margin-inline:auto;align-items:stretch}
/* the badge pill is taller than the plain label: one height for both tops, so the two cards align row by row */
.mg-src .pl-top{min-height:36px}
.mg-src .pl-card h3{margin-bottom:clamp(24px,2.6vw,34px)}
.mg-lbl{display:block;padding-top:18px;margin-bottom:10px;border-top:1px solid var(--w08);
  font-family:var(--fd);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--w56)}
.mg-man{display:grid;gap:2px;margin:0 0 26px}
.mg-man li{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:14px;
  padding:10px 14px;margin-inline:-14px;border-radius:12px;font-size:14.5px;line-height:1.4;color:var(--w96);
  transition:background var(--t1) var(--e)}
.mg-man li:hover{background:var(--w03)}
.mg-man .v{font-family:var(--fm);font-size:11.5px;color:var(--w56);text-align:right;white-space:nowrap}
/* state beads: comes with the copy (solid tick) · created again (ring with a plus) · you keep it (dashed ring) */
.mg-st{position:relative;width:18px;height:18px;border-radius:50%;flex:none}
.mg-st.ok{background:var(--acc)}
.mg-st.ok::after{content:"";position:absolute;left:6.5px;top:4px;width:4px;height:8px;border:solid var(--bg);
  border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
.mg-st.new{border:1.4px solid var(--w72)}
.mg-st.new::before,.mg-st.new::after{content:"";position:absolute;left:50%;top:50%;width:8px;height:1.4px;
  margin:-.7px 0 0 -4px;background:var(--w72)}
.mg-st.new::after{transform:rotate(90deg)}
.mg-st.you{border:1.4px dashed var(--w56)}
.mg-send{display:grid;margin:4px 0 30px}
.mg-send li{position:relative;padding-left:24px;font-size:14px;line-height:1.6;color:var(--w72)}
.mg-send li::before{content:"";position:absolute;left:1px;top:.8em;width:12px;height:1px;background:var(--w42)}
.mg-send li+li{margin-top:38px}
.mg-send li+li::after{content:"sau";position:absolute;left:0;top:-28px;padding:1px 10px;border-radius:var(--r-pill);
  border:1px solid var(--w12);font-family:var(--fd);font-size:9px;letter-spacing:.22em;line-height:1.7;
  text-transform:uppercase;color:var(--w56)}
.mg-send b{font-weight:600;color:var(--ink)}
@media (max-width:980px){.mg-src{grid-template-columns:1fr;max-width:560px}}
@media (max-width:520px){
  .mg-man li{grid-template-columns:18px minmax(0,1fr);row-gap:2px}
  .mg-man .v{grid-column:2;text-align:left;white-space:normal}
}

/* ---- steps: the provisioning terminal types an 11-letter example domain ---- */
.mg-term.in .tl-cmd .type{animation:mgType 1.1s steps(11,end) .45s forwards}
@keyframes mgType{to{width:11ch}}

/* ---- no downtime: two servers on one time line. --p comes from the scene engine
        (data-scene="plat": 0 as the chart enters, 1 when its top nears the header);
        --h maps it to the playhead, so the sweep happens while the chart is in view ---- */
.mg-flow{padding:var(--sec) var(--pad)}
.mg-dual{--lc:clamp(118px,13vw,168px);--g:clamp(14px,1.6vw,22px);
  --h:clamp(0,calc((var(--p,1) - .22) / .62),1);
  position:relative;margin:0;border-radius:var(--r-l);overflow:hidden;
  padding:clamp(24px,3vw,44px) clamp(18px,3vw,44px) clamp(20px,2.6vw,34px)}
.mg-dual>*{position:relative;z-index:2}
.mg-grid{position:relative;display:grid;gap:14px;padding-bottom:44px}
.mg-row{display:grid;grid-template-columns:var(--lc) minmax(0,1fr);gap:var(--g);align-items:center}
.mg-name{font-size:13.5px;font-weight:500;line-height:1.3;color:var(--w72)}
.mg-name small{display:block;margin-top:2px;font-size:11.5px;font-weight:400;color:var(--w42)}
.mg-lane{position:relative;height:42px;border-radius:12px;border:1px solid var(--w05);background:var(--w03)}
.mg-ph .mg-lane{height:auto;min-height:32px;border:0;background:none}
/* only the phase labels: the row's empty .mg-name must stay in the grid, or the lane drops into the name column */
.mg-ph .mg-lane>span{position:absolute;bottom:0;left:calc(var(--a) * 100%);width:calc((var(--b) - var(--a)) * 100%);
  padding:0 10px 7px;border-left:1px solid var(--w12);font-family:var(--fd);font-size:9.5px;letter-spacing:.18em;
  line-height:1.45;text-transform:uppercase;color:var(--w42)}
.seg{position:absolute;top:5px;bottom:5px;left:calc(var(--a) * 100%);width:calc((var(--b) - var(--a)) * 100%);
  display:flex;align-items:center;padding:0 12px;border-radius:8px;overflow:hidden;
  transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--e) var(--sd,0s)}
.mg-dual.in .seg{transform:none}
.seg em{font-style:normal;font-family:var(--fd);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seg .s{display:none}
.seg.live{background:linear-gradient(90deg,rgba(255,255,255,.78),#fff);color:#000;box-shadow:0 0 18px -4px rgba(255,255,255,.45)}
.seg.prep{border:1px dashed var(--w30);color:var(--w56)}
.seg.keep{background:repeating-linear-gradient(135deg,var(--w12) 0 5px,transparent 5px 10px);color:var(--w72)}
.mg-over{position:absolute;top:0;bottom:0;left:calc(var(--lc) + var(--g));right:0;pointer-events:none}
.mg-dns{position:absolute;top:0;bottom:14px;left:calc(var(--x) * 100%);border-left:1px dashed var(--w56);
  opacity:0;transition:opacity .6s var(--e) 1.1s}
.mg-dual.in .mg-dns{opacity:1}
.mg-dns span{position:absolute;bottom:-30px;left:0;transform:translateX(-50%);white-space:nowrap;padding:5px 11px;
  border-radius:var(--r-pill);border:1px solid var(--w30);background:#050507;
  font-family:var(--fd);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:#fff}
.mg-head{position:absolute;top:0;bottom:14px;left:0;right:0;transform:translateX(calc(var(--h) * 100%))}
.mg-head::before{content:"";position:absolute;left:-.5px;top:-4px;bottom:0;width:1px;
  background:linear-gradient(180deg,transparent,#fff 16%,#fff 84%,transparent);box-shadow:0 0 14px rgba(255,255,255,.55)}
.mg-head::after{content:"";position:absolute;left:-4.5px;top:-9px;width:9px;height:9px;border-radius:50%;
  background:#fff;box-shadow:var(--glow)}
.mg-read{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-top:20px;padding-top:18px;
  border-top:1px solid var(--w05)}
.mg-read .mg-k{font-family:var(--fd);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--w42)}
.mg-rs{display:grid;flex:1 1 16em;min-width:0}
.mg-r{grid-area:1/1;font-size:clamp(1.05rem,1.6vw,1.35rem);font-weight:400;letter-spacing:-.015em;line-height:1.3;color:#fff}
.mg-r.r1{opacity:clamp(0,calc((.42 - var(--h)) * 30),1)}
.mg-r.r2{opacity:min(clamp(0,calc((var(--h) - .42) * 30),1),clamp(0,calc((.72 - var(--h)) * 30),1))}
.mg-r.r3{opacity:clamp(0,calc((var(--h) - .72) * 30),1)}
/* the shop note: the one case that needs planning, under the chart, centred on it */
.mg-shop{display:flex;align-items:center;gap:16px;max-width:860px;margin:clamp(22px,2.8vw,34px) auto 0;
  padding:14px 22px 14px 14px;border-radius:var(--r-m);border:1px solid var(--w08);background:var(--w03);
  font-size:14px;line-height:1.6;color:var(--w72)}
.mg-shop-ic{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:14px;
  border:1px solid var(--w12);background:var(--w05);color:#fff}
.mg-shop-ic svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:760px){
  .mg-dual{--lc:0px;--g:0px}
  .mg-ph{display:none}
  .mg-row{grid-template-columns:1fr;gap:8px}
  .seg{padding:0 8px}
  .seg .l{display:none}
  .seg .s{display:inline}
  .mg-shop{align-items:flex-start;padding:14px 16px 14px 14px}
}
@media (prefers-reduced-motion:reduce){
  .mg-wire i{animation:none;opacity:0}
  .mg-rules.in .mg-ok{animation:none}
  .seg{transform:none!important;transition:none}
  .mg-dns{opacity:1;transition:none}
  .mg-head,.mg-read{display:none}
}

/* ---- order actions (Nbt, 11.09.2026): every primary button goes to comanda; WhatsApp is only the small
        text link under it (docs/checkout-spec.md §7). Same look as gazduire-web.css .pl-wa ---- */
.mg-wa{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:4px 6px;
  font-size:12.5px;line-height:1.3;color:var(--w56);text-decoration:underline;text-underline-offset:3px;
  text-decoration-color:var(--w18);transition:color var(--t1) var(--e),text-decoration-color var(--t1) var(--e)}
.mg-wa:hover,.mg-wa:focus-visible{color:var(--ink);text-decoration-color:currentColor}
.mg-wa svg{flex:none}
.mg-wa-hero{margin:14px 0 0 -6px}
.mg-acts{margin-top:auto;display:grid;gap:10px}
.mg-acts .pl-cta{margin-top:0}
.mg-acts .mg-wa{justify-self:center}
/* no passwords in messages: said once, as a band under the two source cards */
.mg-safe{display:flex;align-items:center;gap:16px;max-width:860px;margin:clamp(22px,2.8vw,34px) auto 0;
  padding:14px 22px 14px 14px;border-radius:var(--r-m);border:1px solid var(--w08);background:var(--w03);
  font-size:14px;line-height:1.6;color:var(--w72)}
.mg-safe b{font-weight:600;color:var(--ink)}
.mg-safe-ic{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:14px;
  border:1px solid var(--w12);background:var(--w05);color:var(--ink)}
.mg-safe-ic svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:560px){.mg-safe{align-items:flex-start;padding:14px 16px 14px 14px}}
