@font-face{font-family:Manrope;src:url('/assets/manrope-regular.ttf') format('truetype');font-weight:400 500;font-display:swap}@font-face{font-family:Manrope;src:url('/assets/manrope-bold.ttf') format('truetype');font-weight:600 800;font-display:swap}
:root{--ink:#080a0e;--panel:#131923;--line:#28303e;--text:#f0f2f7;--muted:#a3abba;--blue:#8aa8fa;--radius:16px;--gutter:clamp(22px,5vw,80px)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--ink);color:var(--text);font:17px/1.65 Manrope,Arial,sans-serif;-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{color:inherit;cursor:pointer}img,video{display:block;max-width:100%}button{border:0}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--blue);outline-offset:6px}::selection{background:#8aa8fa;color:#080a0e}h1,h2,h3,p,figure{margin:0}h1,h2,h3{line-height:1.07;letter-spacing:-.045em;font-weight:700}p{max-width:65ch}svg.icon{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}.wrap{width:min(100% - var(--gutter)*2,1440px);margin-inline:auto}.skip{position:fixed;left:20px;top:-100px;background:var(--text);color:var(--ink);padding:12px;z-index:100}.skip:focus{top:12px}.site-header{position:relative;z-index:20;border-bottom:1px solid #ffffff0d}.header-inner{height:100px;display:flex;align-items:center;justify-content:space-between;gap:30px}.brand{display:inline-flex;align-items:center;gap:14px;font-size:23px;letter-spacing:.15em;font-weight:800}.brand-mark{width:33px;height:38px;color:var(--blue);flex:none}.navigation{display:flex;align-items:center;gap:37px;font-size:14px}.navigation>a:not(.button){color:#c4cad5;transition:color .2s}.navigation>a:hover{color:white}.button{display:inline-flex;align-items:center;justify-content:center;gap:20px;min-height:54px;padding:14px 24px;border:1px solid #e4e9f4;border-radius:10px;background:#f0f2f7;color:#11141b;font-size:14px;font-weight:700;line-height:1.4;transition:background .2s,transform .2s}.button:hover{background:#dfe8ff;transform:translateY(-2px)}.button.outline{background:transparent;color:var(--text);border-color:#7a8395}.button.outline:hover{border-color:var(--blue);background:#8aa8fa12}.button.blue{background:var(--blue);border-color:var(--blue)}.button.small{min-height:46px;padding:11px 20px;font-size:13px}.menu-toggle{display:none;background:transparent;padding:10px;border:1px solid var(--line);border-radius:7px}.hero{position:relative;isolation:isolate;overflow:hidden;padding-top:54px}.hero:before{content:'';position:absolute;width:730px;height:650px;right:-130px;top:-140px;z-index:-1;background:radial-gradient(ellipse,#315ebc28,transparent 65%);pointer-events:none}.hero h1{font-size:clamp(60px,6.6vw,112px);max-width:1130px;position:relative;z-index:2}.hero-description{font-size:19px;line-height:1.6;color:#b2bbc9;margin-top:28px;max-width:570px}.hero-actions{display:flex;align-items:center;gap:30px;margin-top:29px;position:relative;z-index:3}.text-link{display:inline-flex;align-items:center;gap:12px;color:var(--blue);font-size:14px}.text-link:hover{text-decoration:underline;text-underline-offset:6px}.hero-symbol{position:absolute;width:290px;height:300px;right:var(--gutter);top:40px;z-index:-1;opacity:.43;fill:none;stroke:#7d9fe9;stroke-width:.7}.hero-showcase{height:410px;position:relative;margin-top:34px;max-width:1410px;margin-inline:auto;perspective:1600px}.hero-preview{position:absolute;display:block;border:1px solid #515d705c;border-radius:12px;overflow:hidden;box-shadow:0 15px 65px #0007;transition:transform .45s;will-change:transform}.hero-preview img{width:100%;height:auto}.hero-preview.splash{width:50%;left:1%;top:36px;transform:rotate(-5deg)}.hero-preview.cats{width:45%;right:0;top:37px;transform:rotate(5deg)}.hero-preview.nokvar{width:204px;left:50%;top:-105px;transform:translateX(-30%) rotate(-4deg);border:5px solid #2a3039;border-radius:29px;z-index:2;box-shadow:0 0 0 1px #6f7785,0 25px 90px #000a}.hero-preview:hover{transform:translateY(-8px) rotate(0deg)}.hero-preview.nokvar:hover{transform:translateX(-30%) translateY(-8px) rotate(0deg)}.hero-preview .preview-label{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#080a0e);padding:32px 20px 14px;font-size:11px;color:#d5dceb}.hero-showcase:after{content:'';height:100px;position:absolute;left:-10%;right:-10%;bottom:-5px;background:linear-gradient(transparent,var(--ink));pointer-events:none;z-index:3}.hero-foot{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:25px;padding:19px 0;color:#939dae;font-size:12px;position:relative}.hero-foot span:first-child{color:#d6dcea}.section{padding:110px 0;scroll-margin-top:20px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-bottom:42px}.section h2{font-size:clamp(38px,4.4vw,66px);max-width:1000px}.section-label{color:var(--muted);font-size:13px;margin-bottom:18px;display:block}.section-intro{color:var(--muted);max-width:320px;font-size:15px;line-height:1.7}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.project-card{position:relative;border:1px solid #ffffff18;border-radius:var(--radius);overflow:hidden;min-height:540px;isolation:isolate;display:flex;flex-direction:column;transition:border-color .3s,transform .3s}.project-card:hover{border-color:#889cc466;transform:translateY(-4px)}.project-card.wide{grid-column:1/-1;min-height:520px;display:grid;grid-template-columns:34% 66%;align-items:center}.project-copy{position:relative;z-index:3;padding:36px;pointer-events:none}.project-copy h3{font-size:42px;margin:12px 0 17px}.project-copy p{color:#b9beca;max-width:340px;font-size:16px;line-height:1.65}.project-type{color:#9ba5b5;font-size:12px}.case-link{position:absolute;inset:0;z-index:5;border-radius:inherit}.case-link:focus-visible{outline-offset:-5px}.project-bottom{position:absolute;bottom:29px;left:36px;right:32px;display:flex;align-items:center;justify-content:space-between;z-index:4;font-size:13px;color:var(--blue);pointer-events:none}.round-arrow{width:48px;height:48px;border:1px solid #a6baea90;border-radius:50%;display:grid;place-items:center;transition:background .2s,transform .2s}.project-card:hover .round-arrow{background:#cbd9fb;color:#10151f;transform:rotate(45deg)}.project-card.splash{background:radial-gradient(ellipse at 85% 50%,#363125,#151515 68%)}.project-card.nokvar{background:radial-gradient(ellipse at 50% 75%,#4e1829,#1c1018 70%)}.project-card.catvideos{background:radial-gradient(ellipse at 60% 80%,#29466b,#101a2a 70%)}.project-card.cats{background:radial-gradient(ellipse at 75% 70%,#5a4830,#171d22 72%)}.project-visual{position:relative;min-width:0;align-self:stretch;pointer-events:none;overflow:hidden}.browser-frame{border:1px solid #65708480;border-radius:9px;overflow:hidden;background:#101318;box-shadow:0 20px 70px #0006}.browser-chrome{height:24px;display:flex;align-items:center;gap:4px;padding:0 10px;background:#20232b;position:relative}.browser-chrome i{width:4px;height:4px;border-radius:50%;background:#687387}.browser-chrome span{font-size:8px;color:#aab1bd;position:absolute;left:50%;transform:translateX(-50%)}.browser-frame img{width:100%}.splash .project-visual>.browser-frame,.cats .project-visual>.browser-frame{width:104%;position:absolute;left:4%;top:55px;transform:rotate(-2deg)}.cats .project-visual>.browser-frame{top:48px;transform:rotate(-3deg)}.nokvar .project-copy,.catvideos .project-copy{padding-bottom:0}.nokvar .project-visual{height:390px;margin-top:30px}.phone-frame{position:relative;overflow:hidden;border:5px solid #25282f;border-radius:24px;box-shadow:0 0 0 1px #66707c,0 25px 60px #0007;background:#08090b}.phone-frame img{width:100%;height:auto}.project-card.nokvar .phone-frame{position:absolute;width:188px;top:0;left:15%;transform:rotate(-7deg)}.project-card.nokvar .phone-frame+ .phone-frame{left:51%;top:38px;transform:rotate(7deg)}.catvideos .project-visual{height:400px;margin-top:25px}.project-card.catvideos .browser-frame{position:absolute;width:86%;left:4%;top:20px;transform:rotate(-5deg)}.catvideos .video-preview{width:156px;position:absolute;right:8%;top:58px;transform:rotate(7deg);border:4px solid #2a3545;border-radius:20px;overflow:hidden;box-shadow:0 20px 60px #0009}.video-preview img{width:100%}.project-fade{position:absolute;inset:60% 0 0;background:linear-gradient(transparent,#080a0eaa);z-index:2}.services{border-top:1px solid var(--line)}.services .section-heading{align-items:start}.services h2{max-width:750px}.service-list{border-top:1px solid #435069}.service{border-bottom:1px solid #354050}.service summary{list-style:none;padding:24px 0;font-size:27px;letter-spacing:-.035em;font-weight:500;display:flex;align-items:center;justify-content:space-between;gap:24px;cursor:pointer}.service summary::-webkit-details-marker{display:none}.service summary .plus{font-size:30px;line-height:1;font-weight:400;color:var(--blue);position:relative;width:24px;height:24px}.plus:before,.plus:after{content:'';position:absolute;background:currentColor;left:0;top:12px;width:22px;height:1px}.plus:after{transform:rotate(90deg);transition:transform .2s}.service[open] .plus:after{transform:rotate(0deg)}.service-content{padding:0 42px 28px;display:flex;align-items:center;justify-content:space-between;gap:45px}.service-content p{font-size:16px;color:#b3bdcb;max-width:680px}.service-content .text-link{white-space:nowrap}.team{padding-top:5px}.team-top{display:grid;grid-template-columns:1.4fr 1fr;gap:100px;align-items:center}.team h2{max-width:730px}.team p{color:#aeb8c8;font-size:18px;margin-top:30px;max-width:610px}.team-symbol{width:80%;margin:auto;filter:drop-shadow(0 0 40px #608bea40);stroke:var(--blue);fill:#1934650a;stroke-width:1}.process{display:grid;grid-template-columns:repeat(3,1fr);gap:45px;margin-top:70px}.process article{border-top:1px solid var(--line);padding-top:25px}.process h3{font-size:18px;letter-spacing:-.025em;line-height:1.4}.process p{font-size:14px;margin-top:14px;line-height:1.7}.contact{position:relative;isolation:isolate;overflow:hidden;border-top:1px solid var(--line);padding:85px 0}.contact:before{content:'';position:absolute;width:700px;height:700px;right:-210px;bottom:-510px;border-radius:50%;border:1px solid #80a9ff;box-shadow:0 -10px 100px #537edc40,inset 0 20px 100px #3a66c333;z-index:-1;pointer-events:none}.contact h2{font-size:clamp(44px,5.1vw,76px);max-width:830px}.contact p{margin-top:25px;font-size:17px;color:var(--muted);max-width:540px}.contact-actions{display:flex;align-items:center;gap:35px;margin-top:34px}.contact-handle{display:flex;align-items:center;gap:10px;color:var(--blue)}.copy-contact{background:transparent;padding:9px;color:var(--muted);display:grid;place-items:center}.copy-contact:hover{color:var(--text)}.copy-status{font-size:12px;min-height:22px;color:var(--blue);margin-top:8px}.site-footer{border-top:1px solid var(--line);padding:30px 0 35px}.footer-inner{display:flex;gap:35px;align-items:center;justify-content:space-between}.footer-inner .brand{font-size:17px}.footer-inner p{font-size:12px;color:#8f99aa}.footer-nav{display:flex;gap:24px;font-size:12px;color:#aeb8c8}.case-main{padding-top:34px}.back-link{display:inline-flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;margin-bottom:34px}.back-link:hover{color:var(--text)}.case-head{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:end;margin-bottom:40px}.case-head h1{font-size:clamp(60px,7.5vw,110px);line-height:.98}.case-subtitle{font-size:23px;letter-spacing:-.02em;color:#bdc6d5;margin-top:24px;max-width:650px}.case-head .case-actions{display:flex;justify-content:flex-end;gap:16px;flex-wrap:wrap}.case-category{font-size:12px;color:var(--blue);margin-bottom:20px}.case-facts{display:flex;gap:65px;padding:25px 0;border-top:1px solid var(--line);margin-bottom:20px;font-size:13px}.case-facts div{display:flex;flex-direction:column;gap:4px}.case-facts small{color:var(--muted);font-size:11px}.case-cover{position:relative;min-height:540px;border:1px solid #ffffff18;border-radius:16px;overflow:hidden;background:#141923;display:grid;place-items:center;padding:45px}.case-cover.nokvar{background:radial-gradient(ellipse at 50% 100%,#501424,#170e15 75%)}.case-cover.nokvar .phones{display:flex;align-items:center;gap:35px;width:100%;max-width:780px;justify-content:center}.case-cover .phones .phone-frame{width:220px;flex-shrink:1;transform:rotate(-5deg)}.case-cover .phones .phone-frame:nth-child(2){width:240px;transform:translateY(-15px);z-index:2}.case-cover .phones .phone-frame:nth-child(3){transform:rotate(5deg)}.case-cover.splash{background:radial-gradient(ellipse at 70% 90%,#42402b,#18191b 80%)}.case-cover.splash .browser-frame{width:86%;max-width:1050px;transform:rotate(-1deg)}.case-cover.catvideos{background:radial-gradient(ellipse at 70% 70%,#2e4968,#111b29 80%);display:flex;justify-content:center;gap:35px;align-items:center}.case-cover.project-card.catvideos .browser-frame{width:72%}.case-cover .episode-cover{width:19%;max-width:215px;border:3px solid #495365;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0007}.case-cover.cats{background:#17241f;padding:0}.case-cover.cats>img{width:100%;height:auto}.cover-caption{font-size:12px;color:var(--muted);margin-top:14px}.case-section{padding:75px 0;border-bottom:1px solid var(--line)}.case-section h2{font-size:37px;line-height:1.2}.case-story{display:grid;grid-template-columns:1fr 2fr;gap:70px}.case-story>p{font-size:20px;color:#bdc6d5;line-height:1.75}.solutions{display:grid;grid-template-columns:repeat(3,1fr);gap:42px;margin-top:35px}.solutions article{border-top:1px solid var(--line);padding-top:24px}.solutions h3{font-size:21px;letter-spacing:-.025em;line-height:1.35}.solutions p{color:var(--muted);font-size:15px;margin-top:15px}.architecture{display:flex;gap:12px;align-items:stretch;margin-top:32px}.architecture span{display:flex;align-items:center;justify-content:center;padding:18px 20px;border:1px solid var(--line);border-radius:9px;text-align:center;flex:1;font-size:14px}.architecture .icon{align-self:center;color:var(--blue);flex:none}.stack{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px;color:#c1ccdd;font-size:12px}.stack span{padding:5px 0;margin-right:13px;border-bottom:1px solid #58657a}.gallery-head{display:flex;justify-content:space-between;gap:25px;align-items:end;margin-bottom:28px}.gallery-tabs{display:flex;gap:6px;padding:5px;border:1px solid var(--line);border-radius:10px;flex-wrap:wrap}.gallery-tab{background:transparent;padding:10px 17px;font-size:12px;border-radius:6px;color:var(--muted)}.gallery-tab[aria-selected=true]{background:#263143;color:var(--text)}.gallery-stage{display:grid;place-items:center;background:radial-gradient(ellipse,#1d2737,#10141c);border:1px solid var(--line);border-radius:12px;min-height:430px;padding:32px;position:relative}.gallery-stage.portrait{background:radial-gradient(ellipse,#371b25,#11141c)}.gallery-stage>button{background:transparent;max-width:100%;padding:0}.gallery-stage img{max-height:700px;object-fit:contain;border-radius:5px;box-shadow:0 10px 50px #0006}.gallery-stage.portrait img{max-height:650px}.zoom-hint{font-size:11px;color:var(--muted);margin-top:13px;display:flex;align-items:center;gap:7px}.project-note{padding:23px 26px;border:1px solid #324056;border-radius:10px;margin:35px 0 70px;font-size:13px;line-height:1.8;color:#b9c5d8}.project-note a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}.next-project{display:flex;justify-content:space-between;gap:35px;align-items:center;padding:0 0 70px}.next-project small{font-size:12px;color:var(--muted)}.next-project h2{font-size:40px;margin-top:12px}.next-project a{display:flex;align-items:center;gap:50px}.video-section{display:grid;grid-template-columns:1.2fr 1fr;gap:80px;align-items:center}.video-section p{font-size:18px;color:var(--muted);margin:25px 0}.video-shell{position:relative;max-width:330px;margin-inline:auto;border:1px solid #4b5971;border-radius:18px;overflow:hidden;background:#111}.video-shell video{width:100%;max-height:680px}.video-play{position:absolute;inset:0;background:#080a0e22;display:flex;align-items:center;justify-content:center}.video-play span{width:76px;height:76px;background:#d5e0f4e8;color:#111b2e;border-radius:50%;display:grid;place-items:center;backdrop-filter:blur(6px)}.video-play[hidden]{display:none}.video-play .icon{width:28px;height:28px;fill:currentColor;stroke-width:0}.demo-link-row{padding:35px;border:1px solid var(--line);border-radius:12px;display:flex;justify-content:space-between;align-items:center;gap:30px;margin-top:35px}.demo-link-row p{color:var(--muted);margin-top:12px;font-size:14px}.lightbox{border:1px solid #3d4b61;border-radius:14px;background:#0a0e15;color:var(--text);padding:20px;width:min(96vw,1500px);max-height:94dvh;overflow:auto}.lightbox::backdrop{background:#030509e8;backdrop-filter:blur(10px)}.lightbox-header{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:15px;font-size:13px;color:var(--muted)}.lightbox-close{background:#1d2737;border:1px solid #3a4c64;border-radius:8px;padding:10px;display:flex;align-items:center;gap:9px;font-size:12px}.lightbox img{margin:auto;max-height:calc(90dvh - 100px);object-fit:contain}.lightbox-controls{display:flex;justify-content:center;gap:20px;margin-top:15px}.lightbox-controls button{background:#1d2737;border-radius:7px;padding:9px 18px;font-size:12px}.category-filters{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:30px}.filter-button{padding:10px 16px;background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:8px;font-size:12px}.filter-button[aria-pressed=true]{color:#10151f;background:#c5d4f6;border-color:#c5d4f6}.project-card[hidden]{display:none}.filter-status{color:var(--muted);font-size:12px;min-height:20px;margin-top:18px}.appear{animation:enter .7s both}.hero-description{animation-delay:.08s}.hero-actions{animation-delay:.14s}@keyframes enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1700px){.hero-showcase{height:470px}.hero-preview.nokvar{width:235px}.hero{padding-top:75px}}
@media(max-width:1100px){.navigation{gap:23px}.header-inner{height:86px}.hero h1{font-size:7.2vw}.hero-symbol{width:210px;right:20px;opacity:.3}.hero-showcase{height:340px}.hero-preview.nokvar{width:170px;top:-70px}.hero-description{font-size:17px;max-width:460px}.project-copy{padding:28px}.project-copy h3{font-size:34px}.project-card.wide{grid-template-columns:35% 65%;min-height:430px}.splash .project-visual>.browser-frame,.cats .project-visual>.browser-frame{top:45px;width:110%}.project-card{min-height:520px}.project-card.nokvar .phone-frame{width:155px}.catvideos .video-preview{width:130px}.project-bottom{left:28px}.team-top{gap:35px}.case-cover{min-height:400px;padding:30px}.case-head h1{font-size:76px}.case-story{gap:40px}.case-story>p{font-size:18px}.solutions{gap:25px}.case-facts{gap:40px}}
@media(max-width:760px){:root{--gutter:22px}.header-inner{height:78px}.brand{font-size:19px;gap:10px}.brand-mark{width:27px;height:30px}.menu-toggle{display:flex;align-items:center;gap:7px;font-size:12px}.menu-toggle .icon{width:18px}.navigation{display:none;position:absolute;left:0;right:0;top:78px;background:#0e131df5;backdrop-filter:blur(20px);border-bottom:1px solid var(--line);padding:25px var(--gutter);flex-direction:column;align-items:stretch;gap:0}.navigation[data-open=true]{display:flex}.navigation>a{padding:14px 0;font-size:17px}.navigation>a.button{margin-top:15px;font-size:14px;padding:15px}.hero{padding-top:42px}.hero h1{font-size:clamp(39px,7.6vw,58px);letter-spacing:-.055em;line-height:1.12}.hero-symbol{width:180px;top:85px;right:-85px;opacity:.25}.hero-description{font-size:15px;line-height:1.7;margin-top:22px;max-width:390px}.hero-actions{gap:15px;flex-wrap:wrap;margin-top:26px}.button{padding:13px 19px;min-height:50px;font-size:12px;gap:13px}.hero-actions .text-link{font-size:12px;gap:7px}.hero-showcase{height:285px;margin-top:52px;width:calc(100% + 38px);margin-left:-19px}.hero-preview.splash{width:70%;left:-15%;top:35px;transform:rotate(-7deg)}.hero-preview.cats{width:69%;right:-16%;top:48px;transform:rotate(7deg)}.hero-preview.nokvar{width:128px;top:-20px;left:50%;transform:translateX(-50%) rotate(-3deg);border-width:3px;border-radius:19px}.hero-preview.nokvar:hover{transform:translateX(-50%) translateY(-5px)}.hero-preview .preview-label{padding:25px 10px 8px;font-size:8px}.hero-showcase:after{height:60px}.hero-foot{font-size:10px;padding:16px 0;gap:20px;align-items:center}.hero-foot span:last-child{max-width:125px;text-align:right}.section{padding:70px 0}.section-heading{display:block;margin-bottom:28px}.section h2{font-size:39px}.section-label{font-size:11px;margin-bottom:15px}.section-intro{font-size:14px;margin-top:22px;max-width:340px}.project-grid{grid-template-columns:1fr;gap:19px}.project-card.wide{display:flex;min-height:520px}.project-card{min-height:540px}.project-copy{padding:27px}.project-copy h3{font-size:34px;margin:10px 0 14px}.project-copy p{font-size:14px;max-width:300px}.project-type{font-size:11px}.project-bottom{bottom:23px;left:27px;right:24px;font-size:12px}.round-arrow{width:42px;height:42px}.project-visual{flex:1;min-height:280px}.splash .project-visual>.browser-frame,.cats .project-visual>.browser-frame{width:108%;left:6%;top:22px;transform:rotate(-4deg)}.nokvar .project-visual{height:350px;min-height:320px;margin-top:18px}.project-card.nokvar .phone-frame{width:156px;left:13%}.project-card.nokvar .phone-frame+ .phone-frame{left:52%;top:22px}.catvideos .project-visual{min-height:310px;height:330px;margin-top:25px}.project-card.catvideos .browser-frame{width:91%;top:5px;left:3%}.catvideos .video-preview{width:136px;top:68px;right:7%}.service summary{font-size:20px;padding:22px 0;line-height:1.4}.service-content{display:block;padding:0 0 25px}.service-content p{font-size:14px}.service-content .text-link{margin-top:18px;font-size:12px}.team{padding-top:5px}.team-top{display:block;position:relative}.team h2{max-width:500px}.team p{font-size:15px;max-width:500px;margin-top:23px}.team-symbol{position:absolute;width:160px;right:-30px;top:0;opacity:.1;z-index:-1}.process{grid-template-columns:1fr;gap:25px;margin-top:40px}.process article{padding-top:21px}.process p{font-size:14px;margin-top:10px}.contact{padding:65px 0 45px}.contact h2{font-size:43px}.contact p{font-size:14px;margin-top:23px}.contact-actions{gap:20px;flex-wrap:wrap}.contact-handle{font-size:15px}.contact:before{right:-480px;bottom:-580px}.footer-inner{align-items:start;gap:24px;flex-wrap:wrap}.footer-inner p{font-size:11px;max-width:165px}.footer-nav{width:100%;justify-content:space-between;font-size:11px}.case-main{padding-top:25px}.back-link{margin-bottom:32px;font-size:12px}.case-head{display:block;margin-bottom:30px}.case-head h1{font-size:56px;overflow-wrap:anywhere}.case-subtitle{font-size:19px;margin-top:20px}.case-head .case-actions{justify-content:flex-start;margin-top:25px;gap:12px}.case-category{font-size:11px;margin-bottom:17px}.case-facts{gap:22px;flex-wrap:wrap;padding:20px 0;font-size:11px}.case-facts small{font-size:10px}.case-cover{min-height:290px;padding:25px 15px;border-radius:12px}.case-cover.splash .browser-frame{width:95%;transform:none}.case-cover.nokvar .phones{gap:14px}.case-cover .phones .phone-frame{border-width:2px;border-radius:13px;width:90px;box-shadow:0 0 0 1px #66707c,0 10px 20px #0007}.case-cover .phones .phone-frame:nth-child(2){width:108px;transform:translateY(-9px)}.case-cover.catvideos{gap:12px;padding:25px 12px}.case-cover.project-card.catvideos .browser-frame{width:72%}.case-cover .episode-cover{border-width:2px;border-radius:8px;width:22%}.browser-chrome{height:17px;padding:0 6px}.browser-chrome i{width:3px;height:3px}.browser-chrome span{font-size:6px}.cover-caption{font-size:10px}.case-section{padding:48px 0}.case-section h2{font-size:29px}.case-story{display:block}.case-story>p{font-size:17px;margin-top:22px}.solutions{grid-template-columns:1fr;gap:27px;margin-top:28px}.solutions article{padding-top:20px}.solutions h3{font-size:21px}.solutions p{font-size:14px;margin-top:12px}.architecture{flex-direction:column;gap:7px}.architecture span{font-size:13px;padding:15px}.architecture .icon{transform:rotate(90deg);width:17px;height:17px}.stack{gap:8px;font-size:11px;margin-top:24px}.gallery-head{display:block}.gallery-tabs{margin-top:24px;width:fit-content}.gallery-tab{padding:9px 12px;font-size:11px}.gallery-stage{min-height:210px;padding:14px}.gallery-stage.portrait{padding:20px;min-height:400px}.gallery-stage.portrait img{max-height:580px}.zoom-hint{font-size:10px}.project-note{font-size:12px;padding:19px;margin:30px 0 45px}.next-project{padding-bottom:45px}.next-project h2{font-size:32px}.next-project a{gap:20px}.next-project>.text-link{display:none}.video-section{display:block}.video-section p{font-size:15px}.video-shell{max-width:275px;margin-top:35px}.demo-link-row{display:block;padding:23px}.demo-link-row h3{font-size:23px}.demo-link-row .button{margin-top:24px}.lightbox{padding:13px;width:97vw}.lightbox-header{font-size:11px}.lightbox-close{font-size:10px;padding:7px}.category-filters{gap:6px}.filter-button{font-size:10px;padding:9px 12px}}
.skip{top:0;left:0;width:1px;height:1px;overflow:hidden;padding:0;clip-path:inset(50%)}.skip:focus{top:12px;left:20px;width:auto;height:auto;padding:12px;clip-path:none}.hero-showcase{clip-path:inset(-140px -100px 0 -100px)}
img{height:auto}.project-card.interior{background:linear-gradient(120deg,#211d18,#111416);grid-template-columns:40% 60%;min-height:460px}.interior-type{font-size:clamp(44px,4.6vw,72px);font-weight:600;line-height:1.13;letter-spacing:-.05em;padding:40px 50px;border-left:1px solid #9a8b7033;color:#c7bdac}.interior-type span{display:block}.interior-type span:last-child{color:#7e7568}.project-card.nvz{background:radial-gradient(ellipse at 70% 70%,#2e2345,#17131e 80%);min-height:470px}.nvz .project-visual>.browser-frame{width:102%;position:absolute;top:40px;left:4%;transform:rotate(-2deg)}.interior-cover{padding:65px 70px;background:linear-gradient(130deg,#27221d,#11151a);border:1px solid #8e7c5d50;border-radius:16px;position:relative;overflow:hidden}.interior-cover:after{content:'';position:absolute;right:-100px;top:-30px;width:500px;height:500px;border:1px solid #7c6a463d;border-radius:50%;box-shadow:0 0 0 55px #7c6a4609,0 0 0 110px #7c6a4609}.interior-statement{font-size:clamp(44px,5.7vw,83px);font-weight:600;line-height:1.15;letter-spacing:-.05em;color:#d6cdbf;position:relative;z-index:1}.interior-cover>p{font-size:13px;color:#9f978e;margin-top:33px}.budget-table{margin-top:32px;border-top:1px solid var(--line);font-size:15px}.budget-table>div{display:grid;grid-template-columns:1fr 1.5fr;gap:30px;padding:20px 0;border-bottom:1px solid var(--line)}.budget-table strong{font-size:12px;color:var(--muted);font-weight:400}.budget-table>div>span:last-child{color:var(--muted)}.full-intro.section-intro{max-width:800px;margin-top:28px;font-size:16px}.nvz-cover{background:radial-gradient(ellipse,#2b243b,#0e1016);padding:35px}.plain-zoom{padding:0;background:transparent;display:block;border-radius:8px;overflow:hidden}.nvz-cover img{width:100%;height:auto}.tech-status{display:grid;grid-template-columns:1fr 1fr;gap:45px;margin-top:45px}.tech-status>div{padding-top:23px;border-top:1px solid var(--line)}.tech-status h3{font-size:21px}.tech-status p{font-size:15px;color:var(--muted);margin-top:15px}
@media(max-width:760px){.project-card.interior{min-height:530px;display:flex}.interior-type{padding:25px 27px 95px;margin-top:20px;font-size:48px;border-left:none}.project-card.nvz{min-height:510px}.nvz .project-visual>.browser-frame{top:20px;left:5%;width:110%}.interior-cover{padding:35px 24px}.interior-statement{font-size:39px}.interior-cover>p{font-size:11px}.interior-cover:after{width:300px;height:300px;right:-160px}.budget-table{font-size:12px}.budget-table>div{grid-template-columns:1fr 1.3fr;gap:20px;padding:17px 0}.budget-table strong{font-size:11px}.full-intro.section-intro{font-size:14px}.nvz-cover{min-height:220px;padding:12px}.tech-status{grid-template-columns:1fr;gap:25px;margin-top:30px}.tech-status p{font-size:14px}}
@media(max-width:760px){.team-symbol{right:0}}
@media(max-width:374px){.hero h1{font-size:34px}.hero-actions{gap:18px}.section h2{font-size:35px}.contact h2{font-size:38px}.interior-statement{font-size:33px}.case-head h1{font-size:49px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.hero-preview,.project-card{will-change:auto}}
/* Material-backed additions; existing product layouts are preserved. */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.interior-card-photo{align-self:stretch;overflow:hidden;position:relative}.interior-card-photo img{width:100%;height:100%;object-fit:cover;object-position:center}.project-card.interior .project-copy{z-index:2}.project-card.interior .project-fade{background:linear-gradient(0deg,#16191ce6,transparent 45%);pointer-events:none}
.interior-photo-cover{display:grid;grid-template-columns:1.2fr 1fr;background:#17191a;border:1px solid #71634855;border-radius:16px;overflow:hidden}.interior-photo-cover>.plain-zoom{border-radius:0;width:100%}.interior-photo-cover img{width:100%;height:100%;object-fit:cover}.interior-cover-copy{padding:clamp(26px,4vw,60px);align-self:center}.interior-cover-copy>p{font-size:clamp(29px,3.1vw,48px);font-weight:600;letter-spacing:-.05em;line-height:1.2;color:#d9d0c3}.interior-cover-copy>span{display:block;margin-top:28px;color:#a49c90;font-size:12px;max-width:24ch}.interior-gallery .gallery-head{align-items:flex-start;gap:30px}.interior-gallery .gallery-tabs{flex-wrap:wrap;max-width:620px}.interior-gallery .gallery-stage{background:#131516;min-height:350px}.interior-gallery .gallery-stage img{max-height:730px;box-shadow:none}.interior-gallery .gallery-stage button{width:auto}
.compare-intro{font-size:14px;color:var(--muted);max-width:27ch}.interior-comparison{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin-top:32px}.compare-item label{font-size:11px;color:var(--muted);display:block;margin-bottom:8px}.compare-item select{width:100%;font:inherit;font-size:15px;background:#161c25;color:var(--text);border:1px solid #3b4658;border-radius:8px;padding:13px 15px;margin-bottom:16px}.compare-item .plain-zoom{width:100%;aspect-ratio:4/3;background:#141719}.compare-item img{width:100%;height:100%;object-fit:contain}.compare-item figcaption,.estimate-sources figcaption,.nvz-evidence figcaption{font-size:12px;color:var(--muted);line-height:1.7;margin-top:13px}.compare-item select:focus-visible{outline:2px solid var(--blue);outline-offset:4px}
.budget-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:30px}.budget-heading p{font-size:14px;color:var(--muted);margin-top:18px}.budget-heading>strong{font-size:clamp(30px,3.6vw,53px);font-weight:500;letter-spacing:-.045em;line-height:1.1;white-space:nowrap;color:#d7cbb8}.budget-heading small{display:block;font-size:12px;font-weight:400;color:var(--muted);letter-spacing:0;margin-top:12px}.estimate-table{border-collapse:collapse;width:100%;margin:35px 0;font-size:16px}.estimate-table th,.estimate-table td{padding:21px 0;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.estimate-table th{font-weight:400}.estimate-table td:last-child,.estimate-table th:last-child{text-align:right;white-space:nowrap;padding-left:25px}.estimate-table thead{font-size:12px;color:var(--muted)}.estimate-table th>span{display:block;font-size:12px;color:var(--muted);margin-top:8px;max-width:65ch}.estimate-table tfoot{font-weight:700;color:#d7cbb8;font-size:20px}.estimate-sources{display:grid;grid-template-columns:1fr 1fr;gap:30px}.estimate-sources button{width:100%;height:100%;max-height:360px;background:#15191e}.estimate-sources figure{display:flex;flex-direction:column}.estimate-sources img{width:100%;height:100%;object-fit:contain}
.ui-fragment{position:relative;overflow:hidden;width:100%;background:#120c24;border-radius:10px;isolation:isolate}.ui-fragment img{position:absolute;left:0;top:0;width:100%;max-width:none;height:auto}.fragment-header{aspect-ratio:801/240}.fragment-search{aspect-ratio:801/164}.fragment-search img{transform:translateY(-41.5285%)}.fragment-navigation{aspect-ratio:801/146}.fragment-navigation img{transform:translateY(-88.1759%)}
.nvz-card-fragments{width:87%;max-width:560px;margin:32px auto 100px;align-self:center;display:grid;gap:19px;transform:rotate(-2deg)}.nvz-interface-cover{display:grid;grid-template-columns:1fr 1fr;gap:50px;padding:clamp(25px,4vw,64px);background:radial-gradient(ellipse at 85% 80%,#302047,#14111d 75%);border:1px solid #4c365f;border-radius:16px;align-items:center}.nvz-cover-copy h2{font-size:clamp(28px,3vw,44px);line-height:1.15}.nvz-cover-copy p{font-size:15px;color:#b9afca;margin-top:23px;max-width:36ch}.nvz-screen-note{display:block;margin-top:32px;font-size:11px;color:#ac91c7}.nvz-ui-stack{display:grid;gap:14px;min-width:0}.nvz-ui-stack .ui-fragment{box-shadow:0 10px 30px #0003;border:1px solid #69517944}.nvz-fragment-label{font-size:11px;color:#bfa5d5;margin-top:8px}.nvz-evidence{display:grid;grid-template-columns:1fr 1.1fr;gap:65px;align-items:center}.nvz-evidence p{font-size:16px;color:var(--muted);margin-top:22px}.nvz-evidence figure{min-width:0}.nvz-evidence img{width:100%;height:auto}
@media(max-width:1100px){.interior-gallery .gallery-head{display:block}.interior-gallery .gallery-tabs{margin-top:25px}.nvz-interface-cover{gap:28px}.nvz-evidence{gap:35px}}
@media(max-width:760px){.project-card.interior{min-height:560px}.interior-card-photo{flex:1;min-height:300px}.interior-card-photo img{height:100%;position:absolute}.interior-photo-cover{grid-template-columns:1fr}.interior-cover-copy{padding:27px}.interior-cover-copy>p{font-size:31px}.interior-cover-copy>span{margin-top:17px;max-width:none}.interior-photo-cover>.plain-zoom{max-height:380px}.interior-gallery .gallery-tabs{max-width:100%}.interior-gallery .gallery-stage{min-height:230px}.interior-gallery .gallery-head{margin-bottom:22px}.interior-comparison{gap:28px;grid-template-columns:1fr}.compare-intro{margin-top:17px;max-width:none}.compare-item select{font-size:14px}.budget-heading{display:block}.budget-heading>strong{display:block;margin-top:30px;font-size:40px}.estimate-table{font-size:14px;margin-top:24px}.estimate-table th,.estimate-table td{padding:18px 0}.estimate-table th>span{font-size:11px}.estimate-table td:last-child{padding-left:12px;font-size:13px}.estimate-sources{grid-template-columns:1fr;gap:28px}.estimate-sources button{max-height:none}.nvz-card-fragments{max-width:400px;width:82%;margin:20px auto 95px;gap:17px}.nvz-interface-cover{grid-template-columns:1fr;padding:28px 22px;gap:32px}.nvz-cover-copy h2{font-size:32px}.nvz-cover-copy p{font-size:14px}.nvz-screen-note{margin-top:20px}.nvz-evidence{grid-template-columns:1fr;gap:30px}.nvz-evidence p{font-size:14px}.nvz-ui-stack{gap:12px}}
.interior-case .case-head,.nvz-case .case-head{display:block}

/* ==========================================================================
   NEFORM v2 — motion & polish layer
   Всё ниже надстраивается поверх базовых стилей. Контент и вёрстка не менялись.
   Без JS сайт выглядит нормально: скрытые состояния выдаёт только скрипт.
   ========================================================================== */
:root{--violet:#b79cff;--pink:#ff9fc6;--grad:linear-gradient(100deg,#8aa8fa 0%,#b79cff 48%,#ff9fc6 100%);--ease:cubic-bezier(.2,.8,.2,1);--glow:#8aa8fa}
body{overflow-x:hidden}

/* зерно поверх всего: убирает «пластиковость» градиентов */
body:before{content:'';position:fixed;inset:0;z-index:90;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* полоса прогресса скролла */
.scroll-progress{position:fixed;left:0;top:0;height:2px;width:100%;z-index:120;background:var(--grad);transform-origin:0 50%;transform:scaleX(var(--p,0));pointer-events:none;box-shadow:0 0 14px #8aa8fa99}

/* ---------- шапка: стекло при скролле ---------- */
.site-header{position:sticky;top:0;z-index:60;background:transparent;border-bottom-color:transparent;transition:background .35s,border-color .35s,backdrop-filter .35s}
.site-header .header-inner{transition:height .35s var(--ease)}
.site-header.scrolled{background:#080a0eb8;backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border-bottom-color:#ffffff14}
.site-header.scrolled .header-inner{height:74px}
.brand-mark{transition:transform .6s var(--ease),filter .4s}
.brand:hover .brand-mark{transform:rotate(180deg) scale(1.08);filter:drop-shadow(0 0 12px #8aa8fa99)}
.navigation>a:not(.button){position:relative;padding:6px 0}
.navigation>a:not(.button):after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--grad);transform:scaleX(0);transform-origin:0 50%;transition:transform .4s var(--ease)}
.navigation>a:not(.button):hover:after{transform:scaleX(1)}

/* ---------- кнопки ---------- */
.button,.copy-contact{transition:background .25s,transform .35s var(--ease),box-shadow .35s,border-color .25s,translate .35s var(--ease),color .3s}.button{position:relative;overflow:hidden;isolation:isolate}
.button:before{content:'';position:absolute;top:0;bottom:0;left:0;width:60%;z-index:-1;background:linear-gradient(105deg,transparent,#ffffff8c,transparent);transform:translateX(-130%) skewX(-18deg);transition:transform .8s var(--ease);pointer-events:none}
.button:hover:before{transform:translateX(230%) skewX(-18deg)}
.button:hover{box-shadow:0 10px 40px -8px #8aa8fa8c}
.button .icon{transition:transform .35s var(--ease)}
.button:hover .icon{transform:translateX(4px)}
.button.outline:hover .icon,.navigation .button .icon{transform:none}
.button.outline:hover .icon{transform:translate(2px,-2px)}
.hero-actions .button:not(.outline){animation:ping 2.8s 2.2s infinite}
@keyframes ping{0%{box-shadow:0 0 0 0 #8aa8fa66}70%,100%{box-shadow:0 0 0 20px #8aa8fa00}}
.button.blue{background:var(--grad);border-color:transparent;color:#0a0d14;background-size:140% 100%;animation:ping 2.8s infinite}
.button.blue:hover{background-position:100% 0}
.text-link .icon{transition:transform .35s var(--ease)}
.text-link:hover .icon{transform:translateX(4px) rotate(-8deg)}

/* ---------- HERO ---------- */
.hero:before{display:none}
:root{--hh:100px}body:has(.hero) .site-header{margin-bottom:calc(var(--hh)*-1)}.hero{padding-top:calc(var(--hh) + 54px)}
.aurora{position:absolute;inset:0 0 0;z-index:-2;pointer-events:none;overflow:hidden;translate:0 calc(var(--sy,0)*70px)}
.aurora i{position:absolute;border-radius:50%;filter:blur(90px);opacity:.55;will-change:transform}
.aurora i:nth-child(1){width:46vw;height:46vw;max-width:760px;max-height:760px;left:-10%;top:-30%;background:radial-gradient(circle,#4568e8,transparent 68%);animation:drift1 22s ease-in-out infinite alternate;translate:calc(var(--px,0)*30px) calc(var(--py,0)*20px)}
.aurora i:nth-child(2){width:42vw;height:42vw;max-width:700px;max-height:700px;right:-12%;top:-26%;background:radial-gradient(circle,#9a5bf0,transparent 68%);animation:drift2 26s ease-in-out infinite alternate;translate:calc(var(--px,0)*-36px) calc(var(--py,0)*26px)}
.aurora i:nth-child(3){width:34vw;height:34vw;max-width:560px;max-height:560px;left:38%;top:8%;background:radial-gradient(circle,#ff6fa8,transparent 70%);opacity:.26;animation:drift3 30s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate(14vw,10vh) scale(1.2)}}
@keyframes drift2{to{transform:translate(-12vw,14vh) scale(.9)}}
@keyframes drift3{to{transform:translate(-18vw,-4vh) scale(1.25)}}
.hero-grid{position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(#ffffff0b 1px,transparent 1px),linear-gradient(90deg,#ffffff0b 1px,transparent 1px);background-size:72px 72px;-webkit-mask-image:radial-gradient(ellipse 70% 62% at 50% 28%,#000,transparent 74%);mask-image:radial-gradient(ellipse 70% 62% at 50% 28%,#000,transparent 74%)}
.hero:after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(520px circle at var(--mx,70%) var(--my,25%),#8aa8fa1f,transparent 62%);transition:background .2s}

/* заголовок: слова выезжают из-под маски, вторая строка переливается */
.hero h1{font-size:clamp(54px,7vw,118px);line-height:1.04}
.hero h1 .line{display:block}
.hero h1 .w{display:inline-block;overflow:hidden;padding:.06em .04em .14em;margin:-.06em -.04em -.14em;vertical-align:top}
.hero h1 .wi{display:inline-block;animation:wordUp 1.05s var(--ease) both;animation-delay:calc(var(--i)*.09s + .15s)}
@keyframes wordUp{from{transform:translateY(112%) rotate(4deg);opacity:0}to{transform:none;opacity:1}}
.hero h1 .wi.g{background:var(--grad);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:wordUp 1.05s var(--ease) both,shimmer 7s linear 1.4s infinite;animation-delay:calc(var(--i)*.09s + .15s),0s}
@keyframes shimmer{from{background-position:0 0}to{background-position:-220% 0}}
.hero-description.appear{animation:enter .9s .55s var(--ease) both}
.hero-actions.appear{animation:enter .9s .7s var(--ease) both}
@keyframes enter{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* символ: прорисовывается линией, затем дышит */
.hero-symbol{top:calc(var(--hh) + 36px);stroke:#9db6ff;stroke-width:1.1;stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.8s .3s var(--ease) forwards,breathe 9s 3s ease-in-out infinite;filter:drop-shadow(0 0 18px #6f8fff88);translate:calc(var(--px,0)*-22px) calc(var(--py,0)*-14px)}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes breathe{0%,100%{opacity:.43;transform:translateY(0) rotate(0)}50%{opacity:.7;transform:translateY(-14px) rotate(2deg)}}

/* витрина: въезд, параллакс от мыши, плавание */
.hero-preview{--r:0deg;--tx:0px;box-shadow:0 20px 80px #0009,0 0 0 1px #ffffff10;transition:scale .6s var(--ease),box-shadow .5s,border-color .4s;animation:rise 1.3s var(--ease) backwards}
.hero-preview.splash{--r:-5deg;animation:rise 1.3s .5s var(--ease) backwards,float1 9s 1.8s ease-in-out infinite;translate:calc(var(--px,0)*-16px) calc(var(--py,0)*-9px)}
.hero-preview.cats{--r:5deg;animation:rise 1.3s .65s var(--ease) backwards,float2 10s 1.9s ease-in-out infinite;translate:calc(var(--px,0)*16px) calc(var(--py,0)*-9px)}
.hero-preview.nokvar{--r:-4deg;--tx:-30%;animation:rise 1.3s .8s var(--ease) backwards,float3 8s 2s ease-in-out infinite;translate:calc(var(--px,0)*30px) calc(var(--py,0)*16px)}
@keyframes rise{from{opacity:0;scale:.86;filter:blur(10px)}to{opacity:1;scale:1;filter:blur(0)}}
@keyframes float1{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-12px) rotate(-4.2deg)}}
@keyframes float2{0%,100%{transform:translateY(0) rotate(5deg)}50%{transform:translateY(-10px) rotate(4.2deg)}}
@keyframes float3{0%,100%{transform:translateX(-30%) translateY(0) rotate(-4deg)}50%{transform:translateX(-30%) translateY(-16px) rotate(-3deg)}}
.hero-preview:hover,.hero-preview.nokvar:hover{scale:1.045;border-color:#9bb2f0aa;box-shadow:0 30px 100px #000c,0 0 60px -10px #8aa8fa77}
.hero-preview .preview-label{transition:padding .4s var(--ease)}
.hero-preview:hover .preview-label{padding-bottom:20px}
.hero-foot{border-image:linear-gradient(90deg,transparent,#3b4660 20%,#3b4660 80%,transparent) 1}

/* ---------- бегущая строка ---------- */
.marquee{overflow:hidden;padding:34px 0;border-bottom:1px solid var(--line);-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.marquee-track{display:flex;width:max-content;animation:marquee 42s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-group{display:flex;align-items:center;flex:none}
.marquee-group span{font-size:clamp(26px,3.3vw,48px);font-weight:700;letter-spacing:-.04em;white-space:nowrap;color:#46526d;transition:color .35s}
.marquee-group span:hover{color:#eef2ff}
.marquee-group b{font-size:20px;color:var(--blue);margin:0 clamp(24px,3vw,48px);font-weight:400;animation:spin 8s linear infinite;display:inline-block;text-shadow:0 0 16px #8aa8fa}
@keyframes marquee{to{transform:translateX(-50%)}}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- цифры ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:56px 0 8px}
.stat{padding:6px 28px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:10px}
.stat:first-child{border-left:0;padding-left:0}
.stat strong{font-size:clamp(54px,6vw,92px);line-height:1;letter-spacing:-.06em;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;font-variant-numeric:tabular-nums}
.stat span{color:var(--muted);font-size:14px;line-height:1.5;max-width:22ch}

/* ---------- секции ---------- */
.section{padding:120px 0}
.section h2,.contact h2{background:linear-gradient(180deg,#fff 35%,#c3cde8);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.section-label{display:flex;align-items:center;gap:10px;color:#9fb4ee;letter-spacing:.04em}
.section-label:before{content:'';width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 0 #8aa8fa99;animation:dot 2.6s infinite}
@keyframes dot{0%{box-shadow:0 0 0 0 #8aa8fa99}70%,100%{box-shadow:0 0 0 10px #8aa8fa00}}

/* ---------- reveal ---------- */
.reveal{opacity:0;translate:0 38px;scale:.985;transition:opacity .9s var(--ease),translate .9s var(--ease),scale .9s var(--ease);transition-delay:var(--d,0s)}
.reveal.in{opacity:1;translate:0 0;scale:1}
.project-card.reveal{transition:opacity .9s var(--ease),translate .9s var(--ease),scale .9s var(--ease),border-color .3s,transform .4s var(--ease);transition-delay:var(--d,0s),var(--d,0s),var(--d,0s),0s,0s}

/* ---------- фильтры ---------- */
.filter-button{transition:background .3s,color .3s,border-color .3s,transform .3s var(--ease)}
.filter-button:hover{border-color:#6c7da6;color:var(--text);transform:translateY(-2px)}
.filter-button[aria-pressed=true]{background:var(--grad);border-color:transparent;box-shadow:0 8px 28px -8px #8aa8fa99}
.project-card:not([hidden]){animation:cardIn .6s var(--ease) backwards}
@keyframes cardIn{from{opacity:0;scale:.95}}

/* ---------- карточки проектов ---------- */
.project-card{--sx:50%;--sy2:50%;--cx:0;--cy:0;background-color:#0d1117;transition:border-color .4s,transform .5s var(--ease),box-shadow .5s}
.project-card:hover{transform:translateY(-6px);border-color:#9cb3f066;box-shadow:0 40px 90px -30px #000,0 0 80px -34px #8aa8fa}
.project-fade{inset:48% 0 0!important;background:linear-gradient(transparent,#080a0ef2 88%)!important}.project-card.interior .project-fade{background:linear-gradient(0deg,#16191ce6,transparent 45%)!important;inset:60% 0 0!important}.project-card:before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .4s;background:radial-gradient(560px circle at var(--sx) var(--sy2),#a5bbff26,transparent 55%)}
.project-card:hover:before{opacity:1}
.project-card:after{content:'';position:absolute;inset:0;z-index:6;pointer-events:none;border-radius:inherit;padding:1px;opacity:0;transition:opacity .4s;background:radial-gradient(360px circle at var(--sx) var(--sy2),#b9caff,transparent 60%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.project-card:hover:after{opacity:1}
.project-visual,.nvz-card-fragments{transition:translate .7s var(--ease),scale .8s var(--ease);translate:calc(var(--cx)*-14px) calc(var(--cy)*-10px)}
.project-card:hover .project-visual{scale:1.045}
.project-card:hover .nvz-card-fragments{scale:1.05}
.interior-card-photo img{transition:scale 1.1s var(--ease),filter .6s;filter:saturate(.92)}
.project-card:hover .interior-card-photo img{scale:1.07;filter:saturate(1.08)}
.project-copy h3{transition:letter-spacing .5s var(--ease),translate .5s var(--ease)}
.project-card:hover .project-copy h3{translate:6px 0}
.project-bottom>span:first-child{transition:translate .4s var(--ease),letter-spacing .4s var(--ease)}
.project-card:hover .project-bottom>span:first-child{translate:6px 0;letter-spacing:.02em}
.round-arrow{transition:background .3s,transform .5s var(--ease),box-shadow .4s}
.project-card:hover .round-arrow{box-shadow:0 0 36px #8aa8fa88;background:#dbe5ff}
.project-type{display:inline-flex;align-items:center;padding:5px 11px;border:1px solid #ffffff1f;border-radius:99px;background:#ffffff08;backdrop-filter:blur(6px);color:#c0c8d8}
.phone-frame,.browser-frame{transition:transform .7s var(--ease),box-shadow .5s}
.project-card:hover .browser-frame{box-shadow:0 30px 90px #000a}
.project-card.nokvar:hover .phone-frame{transform:rotate(-4deg) translateY(-8px)}
.project-card.nokvar:hover .phone-frame+.phone-frame{transform:rotate(4deg) translateY(-14px)}
.catvideos .video-preview{transition:transform .7s var(--ease)}
.project-card.catvideos:hover .video-preview{transform:rotate(3deg) translateY(-10px)}

/* ---------- услуги ---------- */
.service-list{counter-reset:svc}
.service{counter-increment:svc;position:relative;interpolate-size:allow-keywords;transition:background .4s}
.service:after{content:'';position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--grad);transform:scaleX(0);transform-origin:0 50%;transition:transform .7s var(--ease)}
.service:hover:after,.service[open]:after{transform:scaleX(1)}
.service summary{position:relative;padding-left:78px;transition:padding-left .5s var(--ease),color .3s}
.service summary:before{content:counter(svc,decimal-leading-zero);position:absolute;left:0;top:50%;translate:0 -50%;font-size:14px;font-weight:600;letter-spacing:.06em;color:#6d7a96;transition:color .3s,translate .5s var(--ease)}
.service:hover summary,.service[open] summary{padding-left:92px}
.service:hover summary:before,.service[open] summary:before{color:var(--blue)}
.service summary .plus{transition:transform .5s var(--ease)}
.service[open] summary .plus{transform:rotate(180deg)}
.service::details-content{block-size:0;overflow:hidden;opacity:0;transition:block-size .55s var(--ease),opacity .45s,content-visibility .55s allow-discrete}
.service[open]::details-content{block-size:auto;opacity:1}
.service-content{padding-left:92px}
.service-content .text-link{padding:12px 20px;border:1px solid #3c4a68;border-radius:99px;transition:background .3s,border-color .3s}
.service-content .text-link:hover{background:#8aa8fa1a;border-color:var(--blue);text-decoration:none}

/* ---------- команда ---------- */
.team-symbol{animation:teamFloat 11s ease-in-out infinite;stroke:#9db6ff;filter:drop-shadow(0 0 36px #7c9cff88)}
@keyframes teamFloat{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-18px) rotate(2deg)}}
.process{counter-reset:step}
.process article{counter-increment:step;position:relative;padding:34px 28px 30px;border:1px solid #ffffff14;border-radius:var(--radius);background:linear-gradient(180deg,#ffffff08,#ffffff02);overflow:hidden;transition:border-color .4s,transform .5s var(--ease),background .4s}
.process article:before{content:counter(step,decimal-leading-zero);display:block;font-size:54px;font-weight:800;letter-spacing:-.06em;line-height:1;margin-bottom:22px;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;opacity:.9}
.process article:after{content:'';position:absolute;left:0;top:0;height:2px;width:100%;background:var(--grad);transform:scaleX(0);transform-origin:0 50%;transition:transform .8s var(--ease)}
.process article:hover{transform:translateY(-6px);border-color:#8aa8fa55;background:linear-gradient(180deg,#8aa8fa14,#ffffff02)}
.process article:hover:after{transform:scaleX(1)}

/* ---------- контакт ---------- */
.contact{padding:120px 0 110px}
.contact:before{animation:orb 7s ease-in-out infinite;border-color:#a7b9ff;background:radial-gradient(circle at 50% 18%,#6f8fff40,transparent 60%)}
.contact:after{content:'';position:absolute;width:980px;height:980px;right:-360px;bottom:-760px;border-radius:50%;border:1px solid #b79cff55;z-index:-1;pointer-events:none;animation:orb 9s -3s ease-in-out infinite}
@keyframes orb{0%,100%{transform:scale(1);opacity:.85}50%{transform:scale(1.08);opacity:1}}
.contact-handle a{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;font-weight:700;font-size:20px}
.copy-contact{transition:color .3s,transform .4s var(--ease)}
.copy-contact:hover{transform:scale(1.15) rotate(-6deg)}

/* ---------- подвал ---------- */
.footer-nav a{position:relative;transition:color .25s}
.footer-nav a:hover{color:#fff}

/* ---------- страницы кейсов ---------- */
.back-link{transition:color .3s,translate .4s var(--ease)}
.back-link:hover{translate:-6px 0}
.case-main>.back-link,.case-head>*,.case-facts,.case-cover,.cover-caption{animation:enter .9s var(--ease) backwards}
.case-head>div:first-child{animation-delay:.08s}.case-head>.case-actions{animation-delay:.2s}.case-facts{animation-delay:.28s}.case-cover{animation-delay:.38s}
.case-head h1{background:linear-gradient(180deg,#fff 35%,#9fb0d6);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;padding-bottom:.06em}
.case-category{display:inline-flex;padding:6px 13px;border:1px solid #8aa8fa44;border-radius:99px;background:#8aa8fa12;color:#b4c6ff}
.case-facts div{padding-left:18px;border-left:1px solid #8aa8fa66}
.case-cover{box-shadow:0 40px 110px -50px #000,inset 0 1px 0 #ffffff14}
.case-cover .phones .phone-frame{transition:transform .8s var(--ease),box-shadow .5s;animation:phoneFloat 8s ease-in-out infinite}
.case-cover .phones .phone-frame:nth-child(2){animation-delay:-2.5s}.case-cover .phones .phone-frame:nth-child(3){animation-delay:-5s}
@keyframes phoneFloat{0%,100%{translate:0 0}50%{translate:0 -12px}}
.case-cover .browser-frame{animation:phoneFloat 10s ease-in-out infinite}
.solutions article,.tech-status>div{position:relative;padding:28px 24px;border:1px solid #ffffff14;border-top:1px solid #ffffff14;border-radius:var(--radius);background:linear-gradient(180deg,#ffffff07,#ffffff01);transition:transform .5s var(--ease),border-color .4s,background .4s}
.solutions article:hover,.tech-status>div:hover{transform:translateY(-6px);border-color:#8aa8fa55;background:linear-gradient(180deg,#8aa8fa12,#ffffff01)}
.case-section h2{background:linear-gradient(180deg,#fff 35%,#c3cde8);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.architecture span{transition:border-color .3s,background .3s,transform .4s var(--ease)}
.architecture span:hover{border-color:var(--blue);background:#8aa8fa14;transform:translateY(-4px)}
.stack span{transition:color .3s,border-color .3s}.stack span:hover{color:#fff;border-bottom-color:var(--blue)}
.gallery-tab{transition:background .3s,color .3s}.gallery-tab:hover{color:var(--text)}
.gallery-stage img{transition:opacity .4s,scale .6s var(--ease)}.gallery-stage:hover img{scale:1.02}
.next-project a{transition:translate .5s var(--ease)}.next-project a:hover{translate:10px 0}
.next-project h2{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}

/* ---------- мобильные правки ---------- */
@media(max-width:1100px){:root{--hh:86px}.aurora i{filter:blur(70px)}.hero h1{font-size:clamp(46px,7.4vw,84px)}.stats{grid-template-columns:repeat(2,1fr);row-gap:34px}.stat:nth-child(3){border-left:0;padding-left:0}}
@media(max-width:760px){
 :root{--hh:78px}.hero{padding-top:calc(var(--hh) + 36px)}.hero h1{font-size:clamp(33px,9.5vw,58px);letter-spacing:-.05em;line-height:1.1}
 .hero-grid{background-size:48px 48px}.aurora i{filter:blur(56px);opacity:.5}
 .aurora i:nth-child(1){width:90vw;height:90vw}.aurora i:nth-child(2){width:80vw;height:80vw}.aurora i:nth-child(3){display:none}
 .hero-preview.splash{animation:rise 1.3s .5s var(--ease) backwards,float1m 9s 1.8s ease-in-out infinite}
 .hero-preview.cats{animation:rise 1.3s .65s var(--ease) backwards,float2m 10s 1.9s ease-in-out infinite}
 .hero-preview.nokvar{animation:rise 1.3s .8s var(--ease) backwards,float3m 8s 2s ease-in-out infinite}
 @keyframes float1m{0%,100%{transform:translateY(0) rotate(-7deg)}50%{transform:translateY(-8px) rotate(-6deg)}}
 @keyframes float2m{0%,100%{transform:translateY(0) rotate(7deg)}50%{transform:translateY(-7px) rotate(6deg)}}
 @keyframes float3m{0%,100%{transform:translateX(-50%) translateY(0) rotate(-3deg)}50%{transform:translateX(-50%) translateY(-10px) rotate(-2deg)}}
 .marquee{padding:24px 0}.stats{padding-top:40px;grid-template-columns:1fr 1fr}.stat{padding:4px 16px}.stat span{font-size:12px}.stat strong{font-size:52px}
 .section{padding:76px 0}.contact{padding:76px 0 56px}
 .service summary{padding-left:46px}.service:hover summary,.service[open] summary{padding-left:46px}.service-content{padding-left:46px}.service summary:before{font-size:12px}
 .process article{padding:26px 22px}.process article:before{font-size:42px;margin-bottom:16px}
 .project-card:hover{transform:none}.project-card:hover .project-visual{scale:1}
 .solutions article,.tech-status>div{padding:22px 20px}
 .case-head h1{padding-bottom:.08em}
 .site-header.scrolled .header-inner{height:78px}
}

/* ---------- пользователь просит меньше движения ---------- */
@media(prefers-reduced-motion:reduce){
 .hero-symbol{stroke-dashoffset:0}.reveal{opacity:1;translate:none;scale:1}.scroll-progress{display:none}
 .hero h1 .wi.g{animation:none}
}

/* ==========================================================================
   v3 — общий живой фон, человечность, исправления
   ========================================================================== */
:root{--radius:20px}

/* фон на весь сайт: тёплые и холодные пятна света медленно плывут и едут за скроллом */
.ambient{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;--p:0;--gx:50%;--gy:30%;background:radial-gradient(120% 80% at 50% 0%,#0d1220 0%,transparent 60%)}
.ambient i{position:absolute;border-radius:50%;filter:blur(120px);will-change:transform;translate:0 calc(var(--p)*var(--k,-20vh))}
.ambient i:nth-child(1){--k:-28vh;width:62vmax;height:62vmax;left:-22vmax;top:8vh;background:radial-gradient(circle,#3d55d8,transparent 68%);opacity:.20;animation:amb1 38s ease-in-out infinite alternate}
.ambient i:nth-child(2){--k:-14vh;width:56vmax;height:56vmax;right:-24vmax;top:34vh;background:radial-gradient(circle,#8a5cf0,transparent 68%);opacity:.17;animation:amb2 46s ease-in-out infinite alternate}
.ambient i:nth-child(3){--k:-34vh;width:50vmax;height:50vmax;right:6vmax;bottom:-30vmax;background:radial-gradient(circle,#ff9a6e,transparent 68%);opacity:calc(.07 + var(--p)*.16);animation:amb3 42s ease-in-out infinite alternate}
.ambient i:nth-child(4){--k:-10vh;width:44vmax;height:44vmax;left:4vmax;bottom:-26vmax;background:radial-gradient(circle,#2fc4b2,transparent 68%);opacity:.09;animation:amb4 52s ease-in-out infinite alternate}
@keyframes amb1{to{transform:translate(12vw,10vh) scale(1.18)}}
@keyframes amb2{to{transform:translate(-14vw,-8vh) scale(.92)}}
@keyframes amb3{to{transform:translate(-16vw,-6vh) scale(1.2)}}
@keyframes amb4{to{transform:translate(14vw,-10vh) scale(1.12)}}
.ambient:after{content:'';position:absolute;inset:0;background:radial-gradient(460px circle at var(--gx) var(--gy),#a9bdff14,transparent 62%)}
.ambient .dust{position:absolute;inset:0;width:100%;height:100%}

/* герою больше не нужно тянуть всё на себе */
.aurora i{opacity:.46}

/* мягче и дружелюбнее */
.project-card,.process article,.solutions article,.tech-status>div,.case-cover{border-radius:var(--radius)}
.button{border-radius:12px}
::selection{background:#b79cff;color:#0a0d14}

/* планшет: телефон NOKVAR не лезет на кнопки */
@media(min-width:761px) and (max-width:1100px){.hero-showcase{margin-top:76px}}

/* тач-устройства: никакого «залипшего» ховера */
@media(hover:none){
 .project-card:hover{transform:none;box-shadow:none;border-color:#ffffff18}
 .project-card:hover:before,.project-card:hover:after{opacity:0}
 .project-card:hover .project-visual,.project-card:hover .nvz-card-fragments{scale:1}
 .project-card:hover .interior-card-photo img{scale:1;filter:saturate(.92)}
 .project-card.nokvar:hover .phone-frame,.project-card.nokvar:hover .phone-frame+.phone-frame,.project-card.catvideos:hover .video-preview{transform:revert-layer}
 .process article:hover,.solutions article:hover,.tech-status>div:hover{transform:none}
}
@media(prefers-reduced-motion:reduce){.ambient i{animation:none}.ambient .dust{display:none}}
@media(max-width:760px){.ambient i{filter:blur(80px)}.ambient i:nth-child(4){display:none}}

/* ==========================================================================
   v3 perf — без дорогих blur() на больших анимируемых слоях.
   Блики уже радиальные градиенты с плавным затуханием, размытие было лишним.
   ========================================================================== */
.aurora i,.ambient i{filter:none!important}
.aurora i:nth-child(1){--c:#4568e8}.aurora i:nth-child(2){--c:#9a5bf0}.aurora i:nth-child(3){--c:#ff6fa8}
.ambient i:nth-child(1){--c:#3d55d8}.ambient i:nth-child(2){--c:#8a5cf0}.ambient i:nth-child(3){--c:#ff9a6e}.ambient i:nth-child(4){--c:#2fc4b2}
@supports (color:color-mix(in srgb,red,blue)){
 .aurora i,.ambient i{background-image:radial-gradient(circle,var(--c) 0%,color-mix(in srgb,var(--c) 62%,transparent) 22%,color-mix(in srgb,var(--c) 26%,transparent) 44%,color-mix(in srgb,var(--c) 7%,transparent) 66%,transparent 82%)!important}
}

/* ==========================================================================
   v4 — мощный слой: шейдер-фон, заставка, курсор, 3D, кинетика, переходы
   ========================================================================== */

/* ---------- WebGL-фон (поверх CSS-пятен, которые остаются запасным вариантом) ---------- */
.ambient .gl{position:absolute;inset:0;width:100%;height:100%;display:block}
.ambient.gl i{display:none}
html.gl body:before{display:none}
html.gl .aurora i{opacity:.3}

/* ---------- заставка при первом заходе ---------- */
.intro{display:none}
.intro-on .intro{display:grid;position:fixed;inset:0;z-index:300;place-items:center;background:#06080c;pointer-events:none;animation:curtain .95s 1.05s cubic-bezier(.76,0,.24,1) forwards}
.intro-inner{display:flex;align-items:center;gap:20px;font-size:clamp(26px,4vw,46px);font-weight:800;letter-spacing:.16em;color:#eef2ff;animation:introText .5s .75s ease-in forwards}
.intro-inner span{opacity:0;animation:introIn .7s .35s var(--ease) forwards}
.intro-mark{width:clamp(36px,5vw,58px);height:auto;fill:#8aa8fa00;stroke:#a9c0ff;stroke-width:1.4;stroke-dasharray:1;stroke-dashoffset:1;animation:drawIntro .9s .1s var(--ease) forwards,fillIntro .5s .8s ease forwards;filter:drop-shadow(0 0 16px #6f8fffaa)}
@keyframes drawIntro{to{stroke-dashoffset:0}}
@keyframes fillIntro{to{fill:#8aa8fa;stroke:#8aa8fa}}
@keyframes introIn{from{opacity:0;transform:translateY(14px);letter-spacing:.4em}to{opacity:1;transform:none;letter-spacing:.16em}}
@keyframes introText{to{opacity:0;transform:translateY(-10px)}}
@keyframes curtain{0%{clip-path:inset(0 0 0 0)}99%{clip-path:inset(0 0 100% 0);visibility:visible}100%{clip-path:inset(0 0 100% 0);visibility:hidden}}
/* hero стартует, когда занавес поднимается */
.intro-on .hero h1 .wi{animation-delay:calc(var(--i)*.09s + 1.25s)}
.intro-on .hero h1 .wi.g{animation-delay:calc(var(--i)*.09s + 1.25s),0s}
.intro-on .hero-description.appear{animation-delay:1.65s}
.intro-on .hero-actions.appear{animation-delay:1.8s}
.intro-on .hero-symbol{animation-delay:1.35s,4.2s}
.intro-on .hero-preview.splash{animation-delay:1.6s,1.8s}
.intro-on .hero-preview.cats{animation-delay:1.75s,1.9s}
.intro-on .hero-preview.nokvar{animation-delay:1.9s,2s}

/* ---------- плавные переходы между страницами (Chrome/Edge; в остальных — обычная навигация) ---------- */
@view-transition{navigation:auto}
.site-header{view-transition-name:hdr}
::view-transition-old(root){animation:vtOut .32s ease both}
::view-transition-new(root){animation:vtIn .55s .06s var(--ease) both}
@keyframes vtOut{to{opacity:0;transform:translateY(-14px) scale(.996)}}
@keyframes vtIn{from{opacity:0;transform:translateY(22px) scale(1.004)}}

/* ---------- курсор ---------- */
.cursor,.cursor-dot{position:fixed;left:0;top:0;z-index:250;pointer-events:none;opacity:0;transition:opacity .3s}
.cursor.on,.cursor-dot.on{opacity:1}
.cursor{width:38px;height:38px;margin:-19px 0 0 -19px;border:1px solid #c5d2ff99;border-radius:50%;display:grid;place-items:center;transition:opacity .3s,width .45s var(--ease),height .45s var(--ease),margin .45s var(--ease),background .35s,border-color .35s,backdrop-filter .35s;will-change:transform}
.cursor span{font-size:12px;font-weight:700;letter-spacing:.02em;color:#0a0d14;opacity:0;transform:scale(.6);transition:opacity .3s,transform .4s var(--ease);white-space:nowrap}
.cursor[data-s=link]{width:60px;height:60px;margin:-30px 0 0 -30px;background:#8aa8fa22;border-color:#a9bdff}
.cursor[data-s=card]{width:104px;height:104px;margin:-52px 0 0 -52px;background:#e6edff;border-color:#e6edff}
.cursor[data-s=card] span{opacity:1;transform:none}
.cursor[data-s=down]{width:30px;height:30px;margin:-15px 0 0 -15px;background:#8aa8fa44}
.cursor-dot{width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#dfe7ff;box-shadow:0 0 12px #8aa8fa}
.cursor-dot.hide{opacity:0!important}

/* ---------- hero: глубина ---------- */
.hero h1 .line:first-child{translate:calc(var(--px,0)*-12px) calc(var(--py,0)*-4px)}
.hero h1 .line:last-child{translate:calc(var(--px,0)*12px) calc(var(--py,0)*4px)}
.hero-preview img{scale:1.1;translate:calc(var(--px,0)*10px) calc(var(--py,0)*7px);transition:scale .8s var(--ease)}
.hero-preview:hover img{scale:1.16}

/* ---------- 3D-наклон карточек ---------- */
.project-card:hover{transform:perspective(1200px) rotateX(calc(var(--cy)*-3.2deg)) rotateY(calc(var(--cx)*4deg)) translateY(-8px)}
.project-card:before{background:radial-gradient(560px circle at var(--sx) var(--sy2),#a5bbff2e,transparent 55%),radial-gradient(260px circle at var(--sx) var(--sy2),#ffffff12,transparent 70%)}

/* ---------- бегущие строки, реагирующие на скролл ---------- */
.marquee.js .marquee-track{animation:none;will-change:transform}
.marquee-2{padding:10px 0 34px;border-bottom:0}
.marquee-2 .marquee-group span{font-size:clamp(40px,6.4vw,104px);letter-spacing:-.06em;color:#2c3957;transition:color .4s}
.marquee-2 .marquee-group span:hover{color:#e6ecff}
.marquee-2 .marquee-group b{color:var(--violet);font-size:26px}

/* ---------- заголовки: «шторка» ---------- */
.wipe{clip-path:inset(-8% 100% -14% -2%);translate:0 24px;transition:clip-path 1.25s var(--ease),translate 1.25s var(--ease)}
.wipe.in{clip-path:inset(-8% -2% -14% -2%);translate:0 0}

/* ---------- текст, который проявляется при чтении ---------- */
.sw{opacity:.16;transition:opacity .25s linear}
.sw.on{opacity:1}

/* ---------- мега-логотип в подвале ---------- */
.site-footer{overflow:hidden;position:relative}
.mega{--mx:50%;margin-top:34px;text-align:center;user-select:none;pointer-events:none;height:.8em;font-size:clamp(70px,21vw,360px);line-height:1;font-weight:800;letter-spacing:-.065em;overflow:hidden;white-space:nowrap}
.mega span{display:block;background:radial-gradient(620px circle at var(--mx) 55%,#8aa8fa 0%,#b79cff55 40%,transparent 72%),linear-gradient(180deg,#2b3652,#0d1220 92%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;transform:translateY(calc((1 - var(--m,1))*55%));opacity:calc(.35 + var(--m,1)*.65)}

/* ---------- мелочи ---------- */
.stat strong{text-shadow:0 0 60px #8aa8fa44}
.project-card:hover .project-type{border-color:#9bb2f088;background:#8aa8fa14}

@media(max-width:760px){
 .marquee-2 .marquee-group span{font-size:44px}.mega{margin-top:20px}
 .intro-inner{letter-spacing:.12em}
}
@media(hover:none){.cursor,.cursor-dot{display:none}.project-card:hover{transform:none}}
@media(prefers-reduced-motion:reduce){
 .intro{display:none!important}.wipe{clip-path:none;translate:none}.sw{opacity:1}.cursor,.cursor-dot{display:none}
 .mega span{transform:none;opacity:1}
 @view-transition{navigation:none}
}
