.reading-progress{position:fixed;z-index:80;top:0;left:0;width:100%;height:2px;background:linear-gradient(90deg,#69a8ff,#a290ff);transform:scaleX(0);transform-origin:left;pointer-events:none}
.type-line{min-height:2em;margin:12px 0 0;color:#91bfff;font:600 clamp(16px,2vw,21px)/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}.type-caret{display:inline-block;width:2px;height:1em;margin-left:3px;background:#91bfff;vertical-align:-.15em;animation:caret-blink .7s steps(1) infinite}@keyframes caret-blink{50%{opacity:0}}
.project{transform-style:preserve-3d;will-change:transform}.project>a,.project .screen,.project .dashboard,.project h3,.project .project-link{transform-style:preserve-3d}.project .project-link{border-bottom:1px solid transparent;transition:border-color .25s,transform .25s}.project:hover .project-link{border-color:#69a8ff}.project[href]:focus-visible{outline:2px solid #9fc8ff;outline-offset:4px}.project[href]::after{content:'↗';position:absolute;right:22px;bottom:22px;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#69a8ff;color:#07111f;font-size:25px;opacity:0;transform:translateY(12px);transition:.3s}.project[href]:hover::after{opacity:1;transform:none}
.reveal{filter:blur(7px);transition:opacity .75s ease,transform .75s ease,filter .75s ease}.reveal.show{filter:blur(0)}.projects .project:nth-child(2),.services .service:nth-child(even),.steps .step:nth-child(even){transition-delay:.1s}.portrait.reveal{transform:translateY(40px) scale(.97)}.portrait.reveal.show{transform:none}
.links>a:not(.nav-cta),.footer-links>a{position:relative}.links>a:not(.nav-cta)::after,.footer-links>a::after{content:'';position:absolute;left:0;right:0;bottom:-4px;height:1px;background:#69a8ff;transform:scaleX(0);transform-origin:left;transition:transform .3s}.links>a:hover::after,.footer-links>a:hover::after{transform:scaleX(1)}.btn span,.project .arrow,.footer-links a{transition:transform .25s}.btn:hover span,.project:hover .arrow{transform:translate(3px,-3px)}
.lab-shell{display:grid;grid-template-columns:250px minmax(0,1fr);gap:26px;background:#0d131d;border:1px solid #2d3748;border-radius:26px;padding:24px;box-shadow:0 35px 90px #0005}.lab-controls{display:flex;flex-direction:column;gap:26px;padding:12px 3px}.lab-controls fieldset{min-width:0;margin:0;padding:0;border:0}.lab-controls legend{color:#91a2ba;font:700 12px Manrope,sans-serif;letter-spacing:.16em;margin-bottom:12px}.lab-options{display:flex;flex-wrap:wrap;gap:8px}.lab-options button{border:1px solid #344155;border-radius:9px;padding:9px 12px;background:#141e2b;color:#c4ceda;font:600 13px 'DM Sans',sans-serif;cursor:pointer;transition:background .2s,border-color .2s,transform .2s}.lab-options button:hover{transform:translateY(-2px);border-color:#7bb5ff}.lab-options button.selected{background:#25446d;color:#fff;border-color:#74aefa}.lab-colors button{padding:7px;display:grid;place-items:center}.lab-colors i{display:block;width:21px;height:21px;border-radius:50%}.lab-colors button.selected{box-shadow:0 0 0 2px #74aefa inset}.lab-stage{min-width:0;min-height:480px;display:grid;place-items:center;border-radius:18px;background:radial-gradient(circle at 50% 40%,#24324a,#101721 65%);padding:28px;overflow:hidden}.lab-device{--lab-accent:#6399ee;--lab-bg:#f9fafc;--lab-ink:#152130;--lab-muted:#64717d;width:min(100%,650px);min-height:400px;background:var(--lab-bg);color:var(--lab-ink);border:1px solid #46576a;border-radius:12px;box-shadow:0 30px 80px #0008;overflow:hidden;transition:width .55s cubic-bezier(.2,.8,.2,1),border-radius .55s,background .35s,color .35s,transform .45s}.lab-device.color-violet{--lab-accent:#a178e8}.lab-device.color-coral{--lab-accent:#e77b68}.lab-device.color-green{--lab-accent:#70ba9e}.lab-device.device-mobile{width:min(100%,285px);min-height:440px;border-radius:34px;border:8px solid #1a2330}.lab-browser{height:32px;background:#e9edf2;border-bottom:1px solid #d9e1e8;display:flex;align-items:center;padding:0 13px;gap:12px;color:#758397;font:11px ui-monospace,monospace}.lab-browser-dots{display:flex;gap:4px}.lab-browser-dots i{width:6px;height:6px;border-radius:50%;background:#aeb8c5}.lab-device.device-mobile .lab-browser{height:22px;justify-content:center}.lab-device.device-mobile .lab-browser-dots{display:none}.lab-page{min-height:370px;padding:26px 36px;transition:padding .3s}.lab-nav{display:flex;justify-content:space-between;font-size:11px;align-items:center}.lab-nav strong{font:800 16px Manrope}.lab-nav strong span{color:var(--lab-accent)}.lab-content{padding:40px 0 30px;transition:padding .35s}.lab-overline{font:700 10px Manrope;letter-spacing:.18em;color:var(--lab-accent)}.lab-content h3{font:700 clamp(32px,4vw,55px)/1.04 Manrope,sans-serif;letter-spacing:-.06em;margin:13px 0}.lab-content h3 em{font-style:normal;color:var(--lab-accent)}.lab-content p{font-size:13px;margin:0 0 18px;color:var(--lab-muted)}.lab-demo-button{display:inline-flex;gap:20px;padding:10px 16px;border-radius:5px;background:var(--lab-accent);color:#fff;font-size:12px;font-weight:700;transition:transform .3s,border-radius .3s}.lab-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.lab-tiles>div{background:#eef1f5;padding:16px;border-radius:5px;transition:background .3s,transform .3s,border-radius .3s}.lab-tiles small{display:block;font-size:9px;color:var(--lab-muted);margin-bottom:10px}.lab-tiles b{font-size:14px}.lab-device.style-modern{--lab-bg:#101c30;--lab-ink:#f2f7ff;--lab-muted:#b3c0d5;border-radius:18px}.style-modern .lab-browser{background:#1d2d46;border-color:#283c59;color:#91a9c8}.style-modern .lab-page{padding:28px 42px}.style-modern .lab-content h3{font-weight:800}.style-modern .lab-demo-button{border-radius:100px}.style-modern .lab-tiles>div{background:#1e3048;border:1px solid #344761;border-radius:16px}.lab-device.style-luxury{--lab-bg:#181715;--lab-ink:#f4f0e8;--lab-muted:#b6aea0;border-radius:4px}.style-luxury .lab-browser{background:#272520;border-color:#49443b;color:#b6aea0}.style-luxury .lab-page{padding:34px 46px}.style-luxury .lab-content{padding:45px 0 36px}.style-luxury .lab-content h3{font-family:Georgia,serif;font-weight:400;letter-spacing:-.04em}.style-luxury .lab-demo-button{border:1px solid var(--lab-accent);background:transparent;color:var(--lab-ink);border-radius:0;letter-spacing:.08em;text-transform:uppercase}.style-luxury .lab-tiles>div{background:#292722;border-top:1px solid var(--lab-accent);border-radius:0}.lab-device.motion-dynamic .lab-demo-button{animation:lab-pulse 2.2s ease-in-out infinite}.lab-device.motion-dynamic .lab-tiles>div:nth-child(2){animation:lab-float 2.4s ease-in-out infinite}@keyframes lab-pulse{50%{transform:scale(1.07)}}@keyframes lab-float{50%{transform:translateY(-7px)}}.lab-device.device-mobile .lab-page{padding:18px!important}.device-mobile .lab-nav>span{font-size:0}.device-mobile .lab-nav>span::after{content:'☰';font-size:18px}.device-mobile .lab-content{padding:43px 0 22px}.device-mobile .lab-content h3{font-size:37px}.device-mobile .lab-tiles>div{padding:10px}.device-mobile .lab-tiles b{font-size:11px}
.chip{cursor:pointer;transition:transform .25s,border-color .25s,background .25s}.chip:hover,.chip:focus-visible,.chip.selected{transform:translateY(-3px);border-color:#69a8ff;background:#1b2c43;color:#fff}.tech-description{min-height:3em;color:#9eb6d7;font-size:14px;margin:20px 0 0}.footer-links button{border:0;background:none;color:#707d90;cursor:pointer;font:14px monospace}.footer-links button:hover{color:#91bfff}.terminal-dialog{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;background:#02050ad9;padding:20px}.terminal-panel{width:min(100%,490px);border:1px solid #426391;border-radius:14px;background:#0a111b;box-shadow:0 30px 90px #000;padding:20px 26px}.terminal-panel button{float:right;background:none;border:0;color:#b9cce6;font-size:24px;cursor:pointer}.terminal-panel pre{color:#9ac7ff;font:15px/2 ui-monospace,monospace;white-space:pre-wrap}
@media(max-width:900px){.lab-shell{grid-template-columns:1fr}.lab-controls{display:grid;grid-template-columns:repeat(2,1fr)}.lab-stage{min-height:480px}}@media(max-width:620px){.lab-shell{padding:14px}.lab-controls{gap:18px}.lab-options button{padding:8px;font-size:12px}.lab-stage{padding:14px;min-height:450px}.lab-device.device-desktop .lab-page{padding:16px}.lab-device.device-desktop .lab-content h3{font-size:35px}.lab-device.device-desktop .lab-content{padding:36px 0 22px}.lab-device.device-desktop .lab-tiles>div{padding:9px}.lab-device.device-desktop .lab-tiles b{font-size:11px}}
@media(hover:none),(pointer:coarse){.project{will-change:auto}}
@media(prefers-reduced-motion:reduce){.type-caret{animation:none}.reveal{filter:none}.lab-device.motion-dynamic .lab-demo-button,.lab-device.motion-dynamic .lab-tiles>div{animation:none}.project,.lab-device{transition:none!important}}
.dev-card .float-card{translate:var(--parallax-x,0px) var(--parallax-y,0px);transition:translate .25s ease}
#code-intro .intro-code{animation:intro-type .75s steps(28,end) both}@keyframes intro-type{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@media(prefers-reduced-motion:reduce){#code-intro .intro-code{animation:none}}
