/* DCS Sprint — home hero: the build floor. Your old site is read, real template
   pages drop onto the grid, a QA scanner passes over them and the finished site
   stands up live. Ink + gold only; the template screenshots carry their own colours. */

.hero.hx{display:block;height:100vh;min-height:720px;max-height:1180px;padding:0;overflow:hidden}
.hx>.wrap{position:relative;z-index:3;height:100%;display:flex;align-items:center;padding-top:70px}
.hx-copy{max-width:min(640px,44vw)}
.hx .hero-grid{display:block}
.hero.hx h1{font-size:clamp(44px,4.6vw,88px) !important}
.hx .heronums{margin-top:44px}

/* left fade so the copy always sits on plain ink */
.hx-fade{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(90deg,var(--s1) 0%,rgba(var(--bg-rgb),.94) 30%,rgba(var(--bg-rgb),.25) 44%,rgba(var(--bg-rgb),0) 54%)}
.hero.hx:after{z-index:0}

/* ---------- the floor ---------- */
.hx-iso{position:absolute;z-index:1;left:34%;right:-16%;top:0;bottom:0;perspective:2400px;perspective-origin:60% 30%;pointer-events:none}
.hx-floor{position:absolute;left:1%;top:20%;width:1100px;height:680px;transform-style:preserve-3d;
  transform:rotateX(calc(56deg + var(--ry,0deg))) rotateZ(calc(-34deg + var(--rz,0deg)));
  transition:transform 1.6s var(--ease),opacity 1.2s var(--ease)}
.hx-floor.intro{transform:translateZ(-300px) rotateX(68deg) rotateZ(-16deg);opacity:0}
.hx-floor *{transform-style:preserve-3d}
.hx-floor:before{content:"";position:absolute;inset:-50px -70px;border-radius:34px;
  background:radial-gradient(rgba(var(--acc-rgb),.16) 1px,transparent 1.6px) 0 0/22px 22px,linear-gradient(135deg,var(--s2) 0%,var(--s1) 100%);
  border:1px solid rgba(var(--hi-rgb),.07);box-shadow:inset 0 1px 0 rgba(var(--hi-rgb),.05),0 14px 0 -4px var(--s0),0 80px 110px -40px rgba(var(--sh-rgb),calc(.9 * var(--sha))),0 0 120px -40px rgba(var(--acc-rgb),.25)}

/* billboards: anchored on the floor, turned to face the viewer */
.hx-bb{position:absolute;width:0;height:0}
.hx-bb>.in{position:absolute;left:0;top:0;width:0;height:0;transform:translateZ(var(--z,0px)) rotateZ(34deg) rotateX(-56deg)}

/* stage labels */
.hx-lbl .in span{position:absolute;left:0;bottom:0;transform:translateX(-50%);white-space:nowrap;font:600 12px 'JetBrains Mono',monospace;letter-spacing:.1em;text-transform:uppercase;
  color:var(--t2);background:rgba(var(--s2-rgb),.92);border:1px solid rgba(var(--hi-rgb),.12);padding:6px 10px;border-radius:8px;box-shadow:0 12px 24px -12px rgba(var(--sh-rgb),calc(.8 * var(--sha)));transition:background .35s,color .35s,border-color .35s,box-shadow .35s}
.hx-lbl .in span i{font-style:normal;opacity:.5;margin-right:6px}
.hx-lbl.on .in span{background:linear-gradient(135deg,var(--acc-hi),var(--acc) 50%,var(--acc-lo));color:var(--on-acc);border-color:transparent;box-shadow:0 12px 30px -10px rgba(var(--acc-rgb),.7)}
.hx-lbl.on .in span i{opacity:.6}

/* 01 — the old site being read */
.hx-in{position:absolute;left:140px;top:230px;width:200px;height:230px;border-radius:14px;background:linear-gradient(180deg,var(--s2),var(--s2));border:1px solid rgba(var(--hi-rgb),.1);
  box-shadow:0 8px 0 -2px var(--s0),0 30px 40px -20px rgba(var(--sh-rgb),calc(.8 * var(--sha)));overflow:hidden;transform:translateZ(3px)}
.hx-in .u{display:flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-bottom:1px solid rgba(var(--hi-rgb),.07);font:500 10px 'JetBrains Mono',monospace;color:var(--t3)}
.hx-in .u:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ln2);box-shadow:9px 0 0 var(--ln2),18px 0 0 var(--ln2);margin-right:22px}
.hx-in .b{margin:10px 12px 0;height:10px;border-radius:4px;background:rgba(var(--hi-rgb),.07)}
.hx-in .b.w6{width:60%}.hx-in .b.w4{width:40%}.hx-in .b.h{height:52px;background:rgba(var(--hi-rgb),.05)}
.hx-in .scan{position:absolute;left:0;right:0;top:-40px;height:40px;background:linear-gradient(180deg,transparent,rgba(var(--acc-rgb),.35),transparent);opacity:0}
.hx-in.reading .scan{opacity:1;animation:hxscan 1.1s linear infinite}
.hx-in.reading{border-color:rgba(var(--acc-rgb),.5)}
@keyframes hxscan{to{top:100%}}

/* 02 — what we pull out of it */
.hx-chip .in span{position:absolute;left:0;bottom:0;white-space:nowrap;font:600 11px 'Plus Jakarta Sans',sans-serif;color:var(--on-acc);background:var(--acc-hi);border-radius:99px;padding:5px 11px;
  box-shadow:0 12px 22px -10px rgba(var(--sh-rgb),calc(.8 * var(--sha)));transform:translateX(-50%);opacity:0;animation:hxrise 1.9s var(--ease) forwards}
@keyframes hxrise{12%{opacity:1}65%{opacity:1}to{opacity:0;transform:translateX(-50%) translateY(-120px)}}
.hx-rail{position:absolute;left:346px;top:343px;width:22px;height:4px;border-radius:4px;transform:translateZ(1px);
  background:repeating-linear-gradient(90deg,rgba(var(--acc-rgb),.5) 0 8px,transparent 8px 14px)}
.hx-rail b{position:absolute;top:-3px;left:0;width:10px;height:10px;border-radius:50%;background:var(--acc-hi);box-shadow:0 0 14px 3px rgba(var(--acc-rgb),.7);opacity:0}
.hx-rail b.go{animation:hxpk .7s linear forwards}
@keyframes hxpk{10%{opacity:1}90%{opacity:1}to{left:18px;opacity:0}}

/* 03 — the page grid */
.hx-grid{position:absolute;left:380px;top:130px;width:480px;height:400px}
.hx-grid:before{content:"";position:absolute;inset:-16px;border-radius:16px;border:1.5px dashed rgba(var(--acc-rgb),.28)}
.hx-slot{position:absolute;border-radius:6px;border:1px dashed rgba(var(--hi-rgb),.14)}
.hx-tile{position:absolute;border-radius:6px;overflow:hidden;background:#fff;border:1px solid rgba(var(--hi-rgb),.25);transform:translateZ(3px);
  box-shadow:0 5px 0 -1px var(--s0),0 16px 18px -10px rgba(var(--sh-rgb),calc(.9 * var(--sha)));animation:hxdrop .55s cubic-bezier(.3,1.3,.5,1) both;transition:border-color .3s,box-shadow .3s,transform .6s var(--ease),opacity .6s}
.hx-tile img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 0}
.hx-tile:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,rgba(var(--acc-rgb),.55) 50%,transparent 65%) no-repeat;background-size:300% 100%;background-position:130% 0;opacity:0}
.hx-tile.ok{border-color:var(--acc);box-shadow:0 5px 0 -1px var(--s0),0 0 0 1px rgba(var(--acc-rgb),.5),0 16px 22px -10px rgba(var(--acc-rgb),.5)}
.hx-tile.ok:after{opacity:1;animation:hxsheen .9s var(--ease) forwards}
.hx-tile .ck{position:absolute;right:3px;top:3px;width:14px;height:14px;border-radius:50%;background:var(--acc);display:grid;place-items:center;transform:scale(0);transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.hx-tile .ck:before{content:"";width:5px;height:3px;border-left:1.5px solid var(--s1);border-bottom:1.5px solid var(--s1);transform:rotate(-45deg) translate(1px,-1px)}
.hx-tile.ok .ck{transform:scale(1)}
.hx-tile.out{transform:translateZ(-20px);opacity:0}
@keyframes hxdrop{from{transform:translateZ(200px);opacity:0}40%{opacity:1}}
@keyframes hxsheen{to{background-position:-30% 0}}

/* 04 — the QA scanner: a glass wall that walks across the grid */
.hx-scan{position:absolute;left:-30px;top:-26px;bottom:-26px;width:0;opacity:0;transition:opacity .4s}
.hx-scan.on{opacity:1}
.hx-scan .post{position:absolute;left:-3px;top:0;bottom:0;width:6px;border-radius:6px;background:linear-gradient(180deg,var(--acc-hi),var(--acc-lo));box-shadow:0 0 18px 2px rgba(var(--acc-rgb),.6)}
.hx-scan .wall{position:absolute;left:0;top:0;bottom:0;width:120px;transform-origin:0 50%;transform:rotateY(-90deg);border-radius:0 16px 16px 0;
  background:linear-gradient(90deg,rgba(var(--acc-rgb),.32),rgba(var(--acc-rgb),.06));border:1px solid rgba(var(--acc-rgb),.55);border-left:0;overflow:hidden}
.hx-scan .wall:after{content:"";position:absolute;left:0;right:0;top:-60px;height:60px;background:linear-gradient(180deg,transparent,rgba(var(--acc-rgb),.45),transparent);animation:hxscan 1s linear infinite}

/* 05 — the finished site, standing up */
.hx-live .in>div{position:absolute;left:-230px;bottom:0;width:460px}
.hx-shadow{position:absolute;left:800px;top:230px;width:240px;height:170px;border-radius:50%;background:radial-gradient(closest-side,rgba(var(--acc-rgb),.28),transparent);transform:translateZ(1px);opacity:.4;transition:opacity .6s}
.hx-shadow.on{opacity:1}
.hx-browser{border-radius:12px;overflow:hidden;background:var(--s1);border:1px solid rgba(var(--acc-rgb),.35);
  box-shadow:0 50px 80px -30px rgba(var(--sh-rgb),calc(.95 * var(--sha))),0 0 0 1px rgba(var(--sh-rgb),calc(.5 * var(--sha))),0 0 80px -20px rgba(var(--acc-rgb),.35);transform-origin:50% 100%;transition:transform .8s cubic-bezier(.3,1.4,.5,1)}
.hx-browser.pop{transform:scale(1.04)}
.hx-browser .bar{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid rgba(var(--hi-rgb),.07)}
.hx-browser .bar i{width:8px;height:8px;border-radius:50%;background:var(--ln2)}
.hx-browser .bar span{flex:1;margin-left:8px;background:var(--s2);border-radius:5px;font:500 10px 'JetBrains Mono',monospace;color:var(--t3);padding:4px 9px}
.hx-browser .bar em{font:700 9.5px 'JetBrains Mono',monospace;font-style:normal;letter-spacing:.1em;color:#5EEAB0;display:flex;align-items:center;gap:5px;opacity:0;transition:opacity .4s}
.hx-browser .bar em:before{content:"";width:6px;height:6px;border-radius:50%;background:#34D399;animation:blink 1.6s infinite}
.hx-browser.live .bar em{opacity:1}
.hx-browser .view{position:relative;height:290px;overflow:hidden;background:var(--s1)}
.hx-browser .view img{position:absolute;left:0;top:0;width:100%;height:auto;transition:transform 7s cubic-bezier(.45,0,.2,1),opacity .5s}
.hx-browser .view .wait{position:absolute;inset:0;display:grid;place-items:center;font:600 11px 'JetBrains Mono',monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--t4);transition:opacity .4s}
.hx-browser .view .wait b{display:block;margin:0 auto 10px;width:22px;height:22px;border:2px solid rgba(var(--acc-rgb),.6);border-top-color:transparent;border-radius:50%;animation:spin .9s linear infinite}
.hx-browser.live .view .wait{opacity:0}
.hx-browser .ft{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border-top:1px solid rgba(var(--hi-rgb),.07);font:600 10.5px 'JetBrains Mono',monospace;color:var(--t3)}
.hx-browser .ft b{color:var(--acc-t);font-weight:600}

/* the bundle of pages travelling from the grid to the live site */
.hx-fly{transition:left 1s cubic-bezier(.6,0,.3,1),top 1s cubic-bezier(.6,0,.3,1)}
.hx-fly .in span{position:absolute;left:0;bottom:0;transform:translateX(-50%);white-space:nowrap;font:700 11px 'JetBrains Mono',monospace;color:var(--on-acc);
  background:linear-gradient(135deg,var(--acc-hi),var(--acc));border-radius:8px;padding:7px 11px;box-shadow:0 0 0 4px rgba(var(--acc-rgb),.18),0 18px 30px -10px rgba(var(--acc-rgb),.7);animation:hxarc 1s cubic-bezier(.6,0,.3,1) forwards}
@keyframes hxarc{50%{bottom:90px}to{bottom:40px;opacity:.2}}

/* ---------- counters ---------- */
.hx-count{position:absolute;z-index:3;right:var(--gutter);bottom:58px;text-align:right;font:600 11px 'JetBrains Mono',monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--t3)}
.hx-count .big{display:block;font:400 64px/1 'Instrument Serif',Georgia,serif;letter-spacing:0;color:var(--t1);font-variant-numeric:tabular-nums;margin:6px 0 4px}
.hx-count .big small{font-size:.45em;color:var(--t4);margin-left:4px}
.hx-count .plan{display:block;font-size:10.5px;letter-spacing:.08em;color:var(--acc-t);text-transform:none}
.hx-count .clk{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:12px;font-size:10px}
.hx-count .clk i{display:block;width:120px;height:3px;border-radius:3px;background:rgba(var(--hi-rgb),.08);overflow:hidden}
.hx-count .clk i b{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--acc-lo),var(--acc-hi));box-shadow:0 0 10px rgba(var(--acc-rgb),.7)}
.hx-tag{position:absolute;z-index:3;right:var(--gutter);bottom:20px;font:600 10px 'JetBrains Mono',monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--t4);border:1px solid rgba(var(--hi-rgb),.1);border-radius:99px;padding:4px 10px}

/* ---------- sizes ---------- */
@media (min-width:1101px) and (max-width:1440px){.hx-floor{scale:.7}}
@media (min-width:1441px) and (max-width:1799px){.hx-floor{scale:.78}}
@media (min-width:1800px){.hx-iso{left:39%}.hx-floor{scale:.92}}
@media (max-width:1100px) and (min-width:901px){.hx-iso{left:40%}.hx-floor{scale:.66;left:-14%;top:4%}.hx-copy{max-width:52vw}}
@media (max-width:900px){
  .hero.hx{height:auto;min-height:0;max-height:none;padding:0 0 440px}
  .hx>.wrap{height:auto;padding-top:112px}
  .hx-copy{max-width:none}
  .hx-fade{display:none}
  .hx-iso{left:-30%;right:-30%;top:auto;bottom:-30px;height:520px}
  .hx-floor{left:50%;top:6%;margin-left:-550px;scale:.5}
  .hx-count{display:none}
  .hx-tag{bottom:auto;top:auto;display:none}
}
@media (max-width:560px){.hx .heronums{gap:18px;flex-wrap:nowrap}.hx .heronums .n{font-size:30px}.hx .heronums>div{padding-left:12px}.hx .heronums .l{font-size:9.5px;letter-spacing:.1em}.hx-floor{scale:.4;top:250px;margin-left:-585px}.hero.hx{padding-bottom:440px}.hx-iso{height:760px}}
@media (prefers-reduced-motion:reduce){.hx-floor,.hx-tile,.hx-browser .view img{transition:none !important;animation:none !important}}

/* the other two services on the floor, and what comes free with every site */
.hx-svc .in>div{position:absolute;left:0;bottom:0;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;animation:hxbob 6s ease-in-out infinite}
.hx-crm .in>div{animation-delay:-3s}
@keyframes hxbob{50%{transform:translateX(-50%) translateY(-8px)}}
.hx-svc .ph{position:relative;width:86px;aspect-ratio:9/19;border-radius:16px;padding:4px;background:linear-gradient(180deg,#3A3E44,#17191C);box-shadow:0 0 0 1px rgba(var(--hi-rgb),.14),0 30px 40px -18px rgba(var(--sh-rgb),.9);overflow:hidden}
.hx-svc .ph img{position:absolute;inset:4px;width:calc(100% - 8px);height:calc(100% - 8px);border-radius:12px;object-fit:cover;object-position:50% 0;transition:transform .6s var(--ease),opacity .6s}
.hx-svc .ph .nx{transform:translateX(100%);opacity:0}
.hx-svc .ph.swap img:first-child{transform:translateX(-30%);opacity:0}
.hx-svc .ph.swap .nx{transform:none;opacity:1}
.hx-svc .db{width:190px;border-radius:9px;overflow:hidden;border:1px solid var(--ln2);background:var(--s2);box-shadow:0 30px 40px -18px rgba(var(--sh-rgb),.9)}
.hx-svc .db img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;object-position:0 0}
.hx-svc span{white-space:nowrap;font:600 10.5px 'JetBrains Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--t2);background:var(--s2);border:1px solid var(--ln2);border-radius:99px;padding:5px 10px;box-shadow:0 10px 20px -12px rgba(var(--sh-rgb),.6)}
.hx-svc span b{color:var(--t1);margin-right:6px}
.hx-inc .in span{position:absolute;left:0;bottom:0;transform:translateX(-50%);white-space:nowrap;font:700 10.5px 'Plus Jakarta Sans',sans-serif;color:var(--on-acc);background:var(--acc);border-radius:99px;padding:5px 11px;
  box-shadow:0 12px 22px -10px rgba(var(--sh-rgb),.7);opacity:0;animation:hxinc 3.2s var(--ease) forwards}
@keyframes hxinc{12%{opacity:1;transform:translateX(-50%) translateY(-20px)}75%{opacity:1;transform:translateX(-50%) translateY(-40px)}to{opacity:0;transform:translateX(-50%) translateY(-70px)}}
