@property --float-y{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --float-x{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --float-r{syntax: "<angle>"; inherits: false; initial-value: 0deg;}@property --float-on{syntax: "<number>"; inherits: false; initial-value: 0;}.page-v4 .hero-logo{--float-amp: (1 - var(--dock, 0)) * var(--float-on);translate:calc(var(--float-x) * var(--float-amp)) calc(var(--float-y) * var(--float-amp));rotate:calc(var(--float-r) * var(--float-amp))}.is-ready .page-v4 .hero-logo{animation:logo-float-on 2.4s cubic-bezier(.16,1,.3,1) .6s both,logo-float-y 7.5s ease-in-out infinite,logo-float-x 11s ease-in-out infinite,logo-float-r 9s ease-in-out infinite}@keyframes logo-float-on{0%{--float-on: 0}to{--float-on: 1}}@keyframes logo-float-y{0%,to{--float-y: -9px}50%{--float-y: 9px}}@keyframes logo-float-x{0%,to{--float-x: -4px}50%{--float-x: 4px}}@keyframes logo-float-r{0%,to{--float-r: -.7deg}50%{--float-r: .7deg}}@media(prefers-reduced-motion:reduce){.is-ready .page-v4 .hero-logo{animation:none}}.projects-section{padding-block:clamp(4rem,2rem + 6vw,7rem)}.projects-section .section__head{margin-bottom:clamp(.5rem,.5vw,1rem)}.pstream{--card-w: 480px;--card-h: 300px;position:relative;width:100vw;margin-left:calc(50% - 50vw);height:calc(var(--card-h) * 1.55);perspective:1100px;perspective-origin:50% 50%;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 16%,#000 84%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0%,#000 16%,#000 84%,transparent 100%)}.pstream.is-dragging{cursor:grabbing}.pstream:focus-visible{outline-offset:-4px}.pstream__stage{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d}.pcard{--dim: 1;position:absolute;left:50%;top:50%;width:var(--card-w);height:var(--card-h);margin:calc(var(--card-h) / -2) 0 0 calc(var(--card-w) / -2);border-radius:clamp(12px,1.4vw,20px);overflow:hidden;background:var(--surface);border:1px solid var(--line-2);box-shadow:0 30px 60px -30px #000000e6;backface-visibility:hidden;will-change:transform;-webkit-tap-highlight-color:transparent}.pcard img{width:100%;height:100%;object-fit:cover;object-position:top center;filter:brightness(var(--dim)) saturate(calc(.6 + var(--dim) * .4));transition:transform .8s var(--ease-out);pointer-events:none}.pcard__shade{position:absolute;top:45%;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent,rgba(5,6,8,.85));opacity:0;transition:opacity .5s var(--ease-out)}.pcard__meta{position:absolute;left:1.1rem;right:1.1rem;bottom:.95rem;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;opacity:0;translate:0 8px;transition:opacity .5s var(--ease-out),translate .6s var(--ease-out)}.pcard__name{font-weight:500;letter-spacing:-.02em;font-size:clamp(.95rem,.8rem + .5vw,1.2rem)}.pcard__cat{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}.pcard.is-center{border-color:#dce4f047}.pcard.is-center .pcard__shade,.pcard.is-center .pcard__meta{opacity:1;translate:0 0}@media(hover:hover){.pcard:hover .pcard__shade,.pcard:hover .pcard__meta{opacity:1;translate:0 0}.pcard:hover img{transform:scale(1.04)}}.pinfo{max-width:46rem;margin:clamp(1rem,.5rem + 2vw,2.5rem) auto 0;text-align:center;min-height:11.5rem}.pinfo.is-in>*{animation:pinfo-in .6s var(--ease-out) both}.pinfo.is-in>:nth-child(2){animation-delay:.05s}.pinfo.is-in>:nth-child(3){animation-delay:.1s}@keyframes pinfo-in{0%{opacity:0;transform:translateY(8px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}.pinfo__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.6rem 1rem}.pinfo__name{font-size:clamp(1.6rem,1.1rem + 2vw,2.6rem);font-weight:500;letter-spacing:-.04em;line-height:1.1}.pinfo__status{display:inline-flex;align-items:center;gap:.45rem;padding:.3rem .7rem;border:1px solid var(--line-2);border-radius:999px;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}.pinfo__status:before{content:"";width:6px;height:6px;border-radius:50%;background:#f5b94a}.pinfo__status.is-done:before{background:#4ade80}.pinfo__desc{margin:.85rem auto 0;max-width:38rem;color:var(--ink-2);font-size:var(--fs-lead);text-wrap:pretty}.pinfo__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1rem 1.5rem;margin-top:1.25rem}.pinfo__tags{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem}.pinfo__tags li{padding:.25rem .6rem;border-radius:6px;background:#ffffff0a;border:1px solid var(--line);font-size:var(--fs-xs);color:var(--ink-2)}.pinfo__actions{display:inline-flex;flex-wrap:wrap;justify-content:center;gap:.6rem}.pstream__hint{margin-top:1rem;text-align:center;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.cases-head{position:relative;display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:1.25rem 2rem;margin:clamp(4.5rem,3rem + 6vw,8rem) 0 clamp(1.75rem,1rem + 2.5vw,3rem);padding:clamp(2rem,1rem + 2vw,3rem) 0 1.5rem;border-top:1px solid var(--line);scroll-margin-top:1rem}.cases-head h3{font-size:clamp(1.6rem,1.1rem + 2vw,2.6rem);font-weight:500;letter-spacing:-.04em;line-height:1.1}.cases-head p{margin-top:.6rem;max-width:30rem;color:var(--ink-2)}.cases-nav{display:flex;align-items:center;gap:.6rem}.cases-nav__count{min-width:4.5rem;margin-right:.4rem;font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:.08em;color:var(--muted);text-align:right}.cases-nav__count b{font-weight:500;color:var(--ink)}.cases-nav__btn{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;border:1px solid var(--line-2);background:#ffffff08;color:var(--ink);transition:background-color .3s,border-color .3s,transform .4s var(--ease-out);-webkit-tap-highlight-color:transparent}.cases-nav__btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--ease-out)}@media(hover:hover){.cases-nav__btn:hover{background:var(--ink);border-color:var(--ink);color:var(--bg)}.cases-nav__btn[data-prev]:hover svg{transform:translate(-2px)}.cases-nav__btn[data-next]:hover svg{transform:translate(2px)}}.cases-nav__btn:active{transform:scale(.94)}.cases-nav__progress{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line);overflow:hidden}.cases-nav__progress i{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,var(--silver-3),var(--ink));transform-origin:left;transform:scaleX(0);transition:transform .7s var(--ease-out)}.cases{position:relative;overflow:hidden;touch-action:pan-y;transition:height .6s var(--ease-out)}.cases:focus-visible{outline-offset:6px}.cases__track{display:flex;align-items:flex-start;transition:transform .75s var(--ease-out);will-change:transform}.case{flex:0 0 100%;min-width:0;display:grid;gap:clamp(1.75rem,1rem + 2.5vw,3.5rem);align-items:center;padding-bottom:2rem}@media(min-width:960px){.case{grid-template-columns:1.25fr 1fr}}.case .case__media,.case .case__body{opacity:.25;transition:opacity .6s var(--ease-out),transform .8s var(--ease-out)}.case .case__body{transform:translate(24px)}.case.is-active .case__media,.case.is-active .case__body{opacity:1;transform:none}.case.is-active .case__body{transition-delay:.12s}.browser{border-radius:clamp(10px,1.2vw,16px);overflow:hidden;border:1px solid var(--line-2);background:var(--surface);box-shadow:0 50px 90px -40px #000000f2,0 0 0 1px #ffffff05 inset}.browser__bar{display:flex;align-items:center;gap:.9rem;height:36px;padding:0 .85rem;background:#ffffff09;border-bottom:1px solid var(--line)}.browser__dots{display:inline-flex;gap:6px}.browser__dots i{width:9px;height:9px;border-radius:50%;background:#ffffff24}.browser__url{flex:1;max-width:22rem;margin-inline:auto;padding:.25rem .75rem;border-radius:6px;background:#00000059;font-family:var(--font-mono);font-size:.68rem;color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.browser__screen{position:relative;aspect-ratio:16 / 9.5;overflow:hidden}.browser__screen img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:top center;opacity:0;transform:scale(1.03);transition:opacity .6s var(--ease-out),transform 1.2s var(--ease-out)}.browser__screen img.is-active{opacity:1;transform:none}.case__thumbs{display:flex;gap:.6rem;margin-top:.85rem}.case__thumb{flex:1;max-width:7.5rem;aspect-ratio:16 / 10;border-radius:8px;overflow:hidden;border:1px solid var(--line);opacity:.45;transition:opacity .3s,border-color .3s,transform .4s var(--ease-out)}.case__thumb img{width:100%;height:100%;object-fit:cover;object-position:top}.case__thumb.is-active{opacity:1;border-color:#dce4f066}@media(hover:hover){.case__thumb:hover{opacity:.85;transform:translateY(-2px)}}.case__index{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.14em;color:var(--muted)}.case__index span{color:var(--ink)}.case__title{font-size:clamp(2rem,1.3rem + 2.6vw,3.25rem);font-weight:500;letter-spacing:-.045em;line-height:1.02}.case__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1.5rem;margin:1.4rem 0 0;padding:1.1rem 0;border-block:1px solid var(--line)}@media(min-width:560px){.case__facts{grid-template-columns:repeat(4,auto);justify-content:start}}.case__facts dt{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.case__facts dd{margin:.3rem 0 0;font-size:var(--fs-sm);color:var(--ink)}.case__status{display:inline-flex;align-items:center;gap:.45rem}.case__status:before{content:"";width:6px;height:6px;border-radius:50%;background:#f5b94a}.case__status.is-done:before{background:#4ade80}.case__summary{margin-top:1.25rem;color:var(--ink-2);font-size:var(--fs-lead);text-wrap:pretty}.case__label{margin-top:1.6rem;font-family:var(--font-mono);font-size:.68rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.case__list{display:grid;gap:.55rem;margin-top:.85rem}.case__list li{position:relative;padding-left:1.6rem;font-size:var(--fs-sm);line-height:1.55;color:var(--ink)}.case__list li:before{content:"";position:absolute;left:0;top:.35em;width:.95rem;height:.95rem;border-radius:50%;border:1px solid rgba(156,192,255,.45);background:no-repeat center / .55rem url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M2 5.2 4.1 7.2 8 3' fill='none' stroke='%239cc0ff' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.case__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-top:1.75rem}.case__tags{display:flex;flex-wrap:wrap;gap:.4rem}.case__tags li{padding:.25rem .6rem;border-radius:6px;background:#ffffff0a;border:1px solid var(--line);font-size:var(--fs-xs);color:var(--ink-2)}@media(max-width:699px){.pstream{perspective:800px}.pstream{-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 8%,#000 92%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0%,#000 8%,#000 92%,transparent 100%)}}.section--contact{overflow:hidden;background:radial-gradient(50% 45% at 25% 95%,rgba(156,192,255,.06),transparent 70%)}.contact__head{max-width:none;margin-bottom:clamp(2.5rem,1.5rem + 3vw,4rem)}.contact__title-main{white-space:nowrap;font-size:min(var(--fs-h2),5.6vw)}.contact__lead{max-width:40rem}.contact__lead .nowrap{white-space:nowrap}.contact__rotator{vertical-align:bottom;font-weight:500;color:var(--ink)}.contact__rotator .ch{padding-bottom:.12em}.pill{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .85rem;border-radius:999px;border:1px solid rgba(156,192,255,.28);background:#3d6bff14;font-size:var(--fs-xs);font-weight:500;letter-spacing:.02em;color:var(--blue-soft)}.contact{display:grid;gap:clamp(2.5rem,1.5rem + 3vw,4rem);align-items:start}@media(min-width:960px){.contact{grid-template-columns:1fr 1.05fr}}.contact__title{font-size:clamp(1.15rem,1rem + .5vw,1.4rem);font-weight:500;letter-spacing:-.02em}.contact__sub{margin-top:.4rem;font-size:var(--fs-sm);color:var(--muted)}.channels{display:grid;gap:.35rem;margin-top:1.5rem}.channel{display:flex;align-items:center;gap:.9rem;padding:.45rem .5rem .45rem 0;border-radius:12px;transition:transform .4s var(--ease-out)}.channel__icon{display:grid;place-items:center;width:40px;height:40px;flex:none;border-radius:10px;border:1px solid var(--line-2);background:#ffffff08;color:var(--ink-2);transition:color .3s,border-color .3s,background-color .3s}.channel__icon svg,.contact-card__icon svg,.orbiter svg{width:18px;height:18px}.channel__text{display:grid;line-height:1.3}.channel__text small{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.channel__text span{font-size:var(--fs-sm);color:var(--ink)}@media(hover:hover){.channel:hover{transform:translate(4px)}.channel:hover .channel__icon{color:var(--ink);border-color:#dce4f059;background:#ffffff0f}}.contact-card{display:flex;align-items:center;gap:.35rem;margin-top:1.5rem}.contact-card__copy{display:inline-flex;align-items:center;gap:.5rem;height:42px;padding:0 1.1rem;margin-right:.4rem;border-radius:999px;background:var(--ink);color:var(--bg);font-size:var(--fs-sm);font-weight:500;transition:transform .4s var(--ease-out),background-color .3s}.contact-card__copy svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.contact-card__copy.is-done{background:#c9f5d9}.contact-card__copy:active{transform:scale(.96)}.contact-card__icon{position:relative;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;color:var(--muted);transition:color .3s,background-color .3s}.contact-card__icon:focus-visible{color:var(--ink)}.tip{position:absolute;bottom:calc(100% + 12px);left:50%;z-index:5;display:grid;gap:.2rem;width:max-content;max-width:15rem;padding:.8rem 1rem;border-radius:14px;border:1px solid var(--line-2);background:#15181e;box-shadow:0 20px 40px -18px #000000e6;font-size:var(--fs-xs);line-height:1.45;color:var(--muted);text-align:left;pointer-events:none;opacity:0;transform:translate(-50%,6px) scale(.97);transform-origin:bottom center;transition:opacity .25s var(--ease-out),transform .35s var(--ease-out)}.tip b{font-size:var(--fs-sm);font-weight:500;color:var(--ink)}@media(hover:hover){.contact-card__icon:hover{color:var(--ink);background:#ffffff0d}.contact-card__icon:hover .tip{opacity:1;transform:translate(-50%) scale(1)}}.contact-card__icon:focus-visible .tip{opacity:1;transform:translate(-50%) scale(1)}.globe{position:relative;width:100%;max-width:520px;aspect-ratio:1 / .78;margin-top:clamp(1rem,3vw,2rem);-webkit-mask-image:linear-gradient(180deg,#000 70%,transparent 100%);mask-image:linear-gradient(180deg,#000 70%,transparent 100%)}.globe canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none}.orbiter{position:absolute;left:0;top:0;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;border:1px solid var(--line-2);background:#101319e0;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:var(--ink);box-shadow:0 10px 30px -12px #000000e6,0 0 0 4px #ffffff05;will-change:transform;transition:background-color .3s,border-color .3s}.orbiter.is-back{pointer-events:none}@media(hover:hover){.orbiter:hover{background:var(--ink);color:var(--bg);border-color:var(--ink)}}.contact__form{padding:clamp(1.4rem,1rem + 1.5vw,2.25rem);border-radius:var(--radius-lg);border:1px solid var(--line-2);background:linear-gradient(180deg,#ffffff0a,#ffffff04);box-shadow:0 40px 80px -50px #000000e6}.form-grid{display:grid;grid-template-columns:1fr;gap:1rem;margin-top:1.5rem}@media(min-width:560px){.form-grid{grid-template-columns:1fr 1fr}.field--full{grid-column:1 / -1}}.field{display:grid;gap:.45rem;min-width:0;border:0;padding:0;margin:0}.field>span,.field legend{padding:0;font-family:var(--font-mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.field em{font-style:normal;text-transform:none;letter-spacing:0;opacity:.8}.field input,.field textarea{width:100%;padding:.75rem .9rem;border-radius:10px;border:1px solid var(--line-2);background:#00000040;color:var(--ink);font:inherit;font-size:16px;transition:border-color .25s,background-color .25s,box-shadow .25s}.field textarea{resize:vertical;min-height:7.5rem}.field input::placeholder,.field textarea::placeholder{color:#565e6b}.field input:focus,.field textarea:focus{outline:none;border-color:#9cc0ff8c;background:#00000059;box-shadow:0 0 0 4px #3d6bff1f}.field.is-invalid input,.field.is-invalid textarea{border-color:#f87171b3}.chips{display:flex;flex-wrap:wrap;gap:.45rem}.chips legend{width:100%;margin-bottom:.45rem;float:left}.chips label{position:relative}.chips input{position:absolute;opacity:0;pointer-events:none}.chips span{display:inline-flex;align-items:center;height:36px;padding:0 .95rem;border-radius:999px;border:1px solid var(--line-2);font-size:var(--fs-sm);color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .25s,color .25s,border-color .25s}.chips input:checked+span{background:var(--ink);border-color:var(--ink);color:var(--bg)}.chips input:focus-visible+span{outline:2px solid var(--blue-soft);outline-offset:2px}@media(hover:hover){.chips span:hover{border-color:#dce4f059;color:var(--ink)}}.contact__submit{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;margin-top:1.5rem}.form-status{font-size:var(--fs-sm);color:var(--ink-2)}.contact__form.is-sent .form-status{color:#86efac}@media(max-width:479px){.contact__submit .btn{width:100%}}
