/* 60 — Copy any style + plug in any AI tool (builder B3). Two beats, one idea per viewport. Beat a: the 3D-phones
   loop big in a frame that tilts flat as it arrives. Beat b: copy left, the AI loop right, and a glass connections
   panel that hangs off the video's bottom-left corner (over the timeline, never over the "Generations" proof). */
.sty{display:grid;gap:clamp(88px,10vw,140px);padding-block:clamp(72px,8vw,120px)}
.sty-beat{position:relative}
.sty-copy{max-width:620px}
.sty-lead{margin-top:20px;max-width:44ch}
.sty-fine{margin-top:18px}
.sty-copy--split{max-width:none;display:grid;grid-template-columns:7fr 5fr;gap:clamp(24px,4vw,64px);align-items:end}
.sty-copy--split .sty-lead{margin-top:0;padding-bottom:6px}

.sty-glow{position:absolute;inset:-6% -4% -12%;z-index:-1;pointer-events:none;
  background:radial-gradient(52% 50% at 50% 55%,rgba(59,99,255,.22),rgba(59,99,255,.06) 48%,transparent 72%)}
.sty-screen{width:100%;aspect-ratio:16/9}
.sty-screen video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* beat a */
.sty-refstage{position:relative;isolation:isolate;margin:clamp(32px,4vw,52px) auto 0;max-width:1040px;perspective:1800px}
.sty-tilt{transform-origin:50% 100%}

/* beat b */
.sty-ai{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(16px,2vw,24px);align-items:start}
.sty-copy--ai{grid-column:1/span 5;padding-top:clamp(8px,2vw,28px);padding-right:clamp(0px,1.5vw,20px)}
.sty-copy--ai .sty-lead{max-width:40ch}
.sty-aistage{grid-column:6/-1;position:relative;isolation:isolate;padding-bottom:clamp(150px,15vw,210px)}
.sty-glow--ai{inset:-12% -6% 10% -10%}

.sty-conn{position:absolute;left:18px;bottom:0;width:300px;z-index:3;padding:14px 14px 12px;border-radius:var(--r-panel);
  background-color:rgba(5,6,10,.46);display:grid;gap:2px}
.sty-conn>*{position:relative;z-index:2}
.sty-conn__head{display:flex;align-items:center;gap:10px;padding:2px 4px 10px;border-bottom:1px solid var(--line)}
.sty-conn__logo{width:24px;height:auto}
.sty-conn__title{font-size:15px;font-weight:600;letter-spacing:-.01em}
.sty-conn__count{margin-left:auto;font-size:13px;color:var(--fg-3)}
.sty-conn__list{display:grid}
.sty-row{display:flex;align-items:center;gap:12px;padding:3px 0 3px 4px;min-height:52px;border-bottom:1px solid var(--line)}
.sty-row__txt{display:grid;gap:0;min-width:0;flex:1}
.sty-row__t{font-size:15px;font-weight:600;letter-spacing:-.005em;color:var(--fg)}
.sty-row__s{font-size:13px;color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s}
.sty-row.is-on .sty-row__s{color:var(--blue-2)}

/* hairline switch: a 1.5 px line with a knob that slides along it; the line left of the knob lights blue.
   The button itself is 44 px tall (tap target); the drawing is centred in it. */
.sty-sw{position:relative;flex:none;width:52px;height:44px;border-radius:12px;touch-action:manipulation}
.sty-sw::before,.sty-sw::after{content:"";position:absolute;left:9px;right:9px;top:50%;height:1.5px;margin-top:-.75px;border-radius:2px}
.sty-sw::before{background:var(--line-3)}
.sty-sw::after{background:var(--blue);box-shadow:0 0 10px rgba(59,99,255,.9);transform-origin:0 50%;transform:scaleX(0);transition:transform .2s var(--e-out)}
.sty-sw i{position:absolute;z-index:1;top:50%;left:9px;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;
  background:var(--bg-2);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.5);transition:transform .2s var(--e-out),background-color .2s,box-shadow .2s}
.sty-sw.is-on::after{transform:scaleX(1)}
.sty-sw.is-on i{transform:translateX(34px);background:#fff;box-shadow:0 0 0 3px rgba(59,99,255,.28),0 0 14px rgba(120,150,255,.9)}

.sty-gens{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 4px 2px}
.sty-gens__l{font-size:13px;color:var(--fg-3);line-height:1.35;max-width:9em}
.sty-gens__row{display:grid;grid-template-columns:repeat(3,36px);gap:6px}
.sty-gens__row img{width:100%;height:auto;aspect-ratio:9/16;object-fit:cover;border-radius:7px;box-shadow:inset 0 0 0 1px var(--line-2);
  transition:opacity .25s,filter .25s}
.sty-gens.is-off img{opacity:.28;filter:grayscale(1)}

@media (max-width:900px){
  .sty-copy--split{grid-template-columns:1fr;gap:0}
  .sty-copy--split .sty-lead{margin-top:18px;padding-bottom:0}
  .sty-ai{display:block}
  .sty-aistage{margin-top:28px;padding-bottom:0}
  .sty-conn{position:relative;left:auto;bottom:auto;width:auto;max-width:420px;margin:-28px auto 0;margin-inline:12px}
}
@media (max-width:733px){
  .sty{gap:72px}
  .sty-conn{margin:-24px 8px 0}
}

/* phones: cheaper to scroll — solid connections panel (no backdrop blur over video), single shadows, no filter transition */
@media (max-width:733px){
  .sty-conn{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:rgba(16,18,26,.96)!important}
  .sty-screen.frame{box-shadow:0 30px 60px -24px rgba(0,0,0,.7)}
  .sty-gens__row img{transition:opacity .2s}
  .sty-gens.is-off img{filter:none}
  .sty-glow{inset:-4% 0 -8%}
}
