/* NOVA case — portfolio-specific layout and motion */
.nova-card .case-image{aspect-ratio:16/9;object-fit:cover;object-position:center;transform-origin:center;transition:transform 520ms cubic-bezier(.22,1,.36,1),opacity 180ms ease!important}
.nova-card:hover .case-image{transform:translateY(-3px) scale(1.012)!important}
.nova-card .case-stats .stat:first-child b{white-space:nowrap}

.nova-case{--nova-violet:#6f19ff}
.nova-case .case-study{gap:38px}
.nova-case .case-hero{gap:10px}
.nova-nda-note{margin-top:2px}
.nova-nda-note strong{color:var(--text);font-weight:600}

.nova-intro-questions{margin-top:10px;border-top:1px solid var(--control-border)}
.nova-intro-question{display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;padding:11px 0;border-bottom:1px solid var(--control-border)}
.nova-intro-question span{color:var(--muted);font-size:14px}
.nova-intro-question strong{color:var(--text);font-weight:600}

.nova-reveal{opacity:0;transform:translateY(18px);transition:opacity 620ms ease,transform 720ms cubic-bezier(.22,1,.36,1)}
.nova-reveal[data-motion="left"]{transform:translate3d(-26px,14px,0)}
.nova-reveal[data-motion="right"]{transform:translate3d(26px,14px,0)}
.nova-reveal[data-motion="scale"]{transform:translate3d(0,16px,0) scale(.975)}
.nova-reveal.is-visible,.nova-reveal.is-visible[data-motion]{opacity:1;transform:none}

.nova-opening{width:min(900px,100%);margin:0 auto 8px}
.nova-opening-stage{position:relative;min-height:610px;background:transparent}
.nova-opening-phone{position:absolute;width:min(292px,34%);background:transparent!important;filter:drop-shadow(0 28px 40px rgba(35,18,68,.13));transform-origin:center;will-change:transform;cursor:zoom-in}
.nova-opening-phone--start{left:20%;top:24px;z-index:1;transform:rotate(-4.5deg)}
.nova-opening-phone--end{right:19%;top:0;z-index:2;transform:rotate(4.5deg)}
.nova-opening-line{position:absolute;left:43%;right:42%;top:48%;height:1px;background:linear-gradient(90deg,color-mix(in srgb,#7a20ff 10%,transparent),color-mix(in srgb,#7a20ff 70%,transparent),color-mix(in srgb,#7a20ff 10%,transparent));transform:scaleX(0);transform-origin:left;transition:transform 900ms cubic-bezier(.22,1,.36,1) 180ms}
.nova-opening-line::after{content:"";position:absolute;top:-4px;left:-4px;width:9px;height:9px;border-radius:50%;background:#7a20ff;box-shadow:0 0 0 6px color-mix(in srgb,#7a20ff 12%,transparent);opacity:0}
.nova-opening.is-visible .nova-opening-line{transform:scaleX(1)}
.nova-opening.is-visible .nova-opening-line::after{opacity:1;animation:novaOpeningTravel 3.7s ease-in-out infinite 1s}
.nova-opening.is-visible .nova-opening-phone--start{animation:novaOpeningFloatA 6.2s ease-in-out infinite}
.nova-opening.is-visible .nova-opening-phone--end{animation:novaOpeningFloatB 6.2s ease-in-out infinite}
.nova-opening-caption{width:min(680px,100%);margin:14px auto 0;color:var(--muted);font-size:14px;line-height:20px;text-align:center}
@keyframes novaOpeningTravel{0%,100%{left:-4px;opacity:.25}50%{left:calc(100% - 5px);opacity:1}}
@keyframes novaOpeningFloatA{0%,100%{transform:rotate(-4.5deg)}50%{transform:rotate(-4.5deg) translate3d(-3px,-8px,0)}}
@keyframes novaOpeningFloatB{0%,100%{transform:rotate(4.5deg)}50%{transform:rotate(4.5deg) translate3d(4px,7px,0)}}

.nova-flow{width:min(1080px,100%);margin:6px auto 0}
.nova-flow-head{width:min(680px,100%);margin:0 auto 18px}
.nova-flow-head p+p{margin-top:8px}
.nova-flow-strip{position:relative;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;align-items:start}
.nova-flow-strip::before{content:"";position:absolute;top:41%;left:5%;right:5%;height:1px;background:linear-gradient(90deg,color-mix(in srgb,var(--muted) 15%,transparent),color-mix(in srgb,#7b23ff 55%,transparent),color-mix(in srgb,var(--muted) 15%,transparent));transform:scaleX(0);transform-origin:left;transition:transform 1.1s cubic-bezier(.22,1,.36,1)}
.nova-flow.is-visible .nova-flow-strip::before{transform:scaleX(1)}
.nova-flow-card{position:relative;z-index:1;margin:0}
.nova-flow-card img{width:100%;background:transparent!important;border-radius:18px;cursor:zoom-in;transition:transform 260ms cubic-bezier(.22,1,.36,1)}
.nova-flow-card:hover img{transform:translateY(-7px)}
.nova-flow-card figcaption{margin-top:10px;color:var(--muted);font-size:12px;line-height:17px;text-align:center}
.nova-flow.is-visible .nova-flow-card{animation:novaCardIn 640ms cubic-bezier(.22,1,.36,1) both}
.nova-flow.is-visible .nova-flow-card:nth-child(2){animation-delay:70ms}.nova-flow.is-visible .nova-flow-card:nth-child(3){animation-delay:140ms}.nova-flow.is-visible .nova-flow-card:nth-child(4){animation-delay:210ms}.nova-flow.is-visible .nova-flow-card:nth-child(5){animation-delay:280ms}.nova-flow.is-visible .nova-flow-card:nth-child(6){animation-delay:350ms}
@keyframes novaCardIn{from{opacity:0;transform:translate3d(0,20px,0) scale(.96)}to{opacity:1;transform:none}}

.nova-pair,.nova-triple,.nova-kitchen,.nova-asyncline,.nova-state-story{margin-inline:auto}
.nova-pair{width:min(760px,100%);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
.nova-triple{width:min(860px,100%);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.nova-kitchen{width:min(860px,100%);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.nova-state-story{width:min(1080px,100%)}
.nova-state-story .nova-story-copy{width:min(680px,100%);margin:0 auto 18px}
.nova-asyncline{width:min(730px,100%);display:grid;grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);gap:10px;align-items:center}
.nova-pair figure{width:min(330px,100%)}.nova-triple figure,.nova-kitchen figure{width:min(270px,100%)}.nova-asyncline figure{width:min(310px,100%)}
.nova-pair figure,.nova-triple figure,.nova-kitchen figure,.nova-asyncline figure{margin:0;justify-self:center;background:transparent!important}
.nova-pair img,.nova-triple img,.nova-kitchen img,.nova-asyncline img{width:100%;background:transparent!important;border-radius:20px;cursor:zoom-in;transition:transform 260ms cubic-bezier(.22,1,.36,1)}
.nova-pair img:hover,.nova-triple img:hover,.nova-kitchen img:hover{transform:translateY(-3px)}
.nova-case figure figcaption{width:100%;max-width:320px;margin:10px auto 0;color:var(--muted);font-size:13px;line-height:18px;text-align:center!important}
.nova-asyncline .arrow{position:relative;overflow:hidden;color:transparent;text-align:center;font-size:20px}
.nova-asyncline .arrow::before{content:"→";color:var(--muted);display:inline-block;animation:novaAsyncArrow 1.9s ease-in-out infinite}
@keyframes novaAsyncArrow{0%,100%{transform:translateX(-3px);opacity:.35}50%{transform:translateX(4px);opacity:1}}

[data-theme="dark"] .nova-case figure,[data-theme="dark"] .nova-case img{background:transparent!important}

.nova-lightbox{position:fixed;z-index:90;inset:0;display:flex;align-items:center;justify-content:center;padding:clamp(18px,4vw,48px);background:rgba(5,5,8,.9);opacity:0;visibility:hidden;transition:opacity 180ms ease,visibility 180ms ease;cursor:zoom-out}
.nova-lightbox.is-open{opacity:1;visibility:visible}
.nova-lightbox img{width:auto;height:auto;max-width:min(92vw,1200px);max-height:92vh;object-fit:contain;background:transparent!important;cursor:default;filter:drop-shadow(0 28px 70px rgba(0,0,0,.45))}
.nova-lightbox__close{position:absolute;top:18px;right:18px;width:44px;height:44px;border:0;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font:inherit;font-size:22px;cursor:pointer;backdrop-filter:blur(14px)}
.nova-lightbox__close:hover{background:rgba(255,255,255,.22)}

@media(max-width:840px){.nova-opening-stage{min-height:520px}.nova-opening-phone{width:min(270px,39%)}.nova-opening-phone--start{left:10%}.nova-opening-phone--end{right:9%}.nova-flow-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.nova-flow-strip::before{display:none}}
@media(max-width:620px){.nova-opening-stage{min-height:405px}.nova-opening-phone{width:min(220px,51%)}.nova-opening-phone--start{left:3%;top:38px}.nova-opening-phone--end{right:2%;top:2px}.nova-flow-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.nova-pair,.nova-triple,.nova-kitchen,.nova-asyncline{grid-template-columns:1fr;width:min(390px,100%)}.nova-pair figure,.nova-triple figure,.nova-kitchen figure,.nova-asyncline figure{width:min(330px,100%)}.nova-asyncline .arrow{transform:rotate(90deg)}}
@media(prefers-reduced-motion:reduce){.nova-reveal,.nova-opening-line,.nova-opening-line::after,.nova-opening-phone,.nova-flow-card,.nova-asyncline .arrow::before{animation:none!important;transition:none!important}.nova-reveal{opacity:1;transform:none}.nova-opening.is-visible .nova-opening-line{transform:scaleX(1)}.nova-opening.is-visible .nova-opening-line::after{opacity:1;left:50%}}
