:root{--bg:#fff;--bg-elevated:#fff;--ink:#0a1630;--ink-soft:#3a4660;--muted:#8b94a7;--line:#0a16301a;--accent:#12388f;--accent-soft:#12388f1a;--navy:#0f2a6b;--blob:#b8ceff;--radius:18px;--sidebar:clamp(220px, 22vw, 280px);--font-display:"Fira Sans", system-ui, sans-serif;--font-body:"Fira Sans", system-ui, sans-serif;--shadow:0 18px 40px #0a163014;--max:1040px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;font-family:var(--font-body);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit}.shell{min-height:100vh;display:flex}.shell-main{min-width:0;margin-left:var(--sidebar);flex:1;padding:0 clamp(1.25rem,4vw,3.5rem) 3rem;position:relative}main{width:min(100%, var(--max));margin-inline:auto}.sidebar{z-index:40;width:var(--sidebar);background:var(--bg-elevated);border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:2rem;padding:2.25rem 1.5rem 1.75rem;display:flex;position:fixed;inset:0 auto 0 0}@media (width>=821px){.sidebar{opacity:0;animation:.35s .4s forwards menu-in;transform:translate(-12px)}}.sidebar-avatar{aspect-ratio:1;background:#0f2a6b;border-radius:50%;flex-shrink:0;width:min(168px,72%);height:auto;margin-bottom:.75rem;display:block;overflow:hidden}.sidebar-avatar img{object-fit:cover;object-position:center 20%;width:100%;height:100%}.sidebar-nav{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.85rem;width:100%;display:flex}.sidebar-link{width:88px;min-height:76px;color:var(--ink);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;padding:.7rem .35rem;font-size:.78rem;font-weight:500;transition:background .2s,color .2s;display:flex}.sidebar-link.is-active{color:var(--navy);background:#dce8ff}.sidebar-link:hover{background:#eaf1ff}.sidebar-label{text-align:center;max-width:5.5rem;line-height:1.15}.sidebar-icon{border:1.8px solid;border-radius:4px;width:1.45rem;height:1.45rem;display:block;position:relative}.sidebar-icon--home{border-radius:3px}.sidebar-icon--home:before{content:"";border-top:1.8px solid;border-left:1.8px solid;width:10px;height:10px;position:absolute;top:-6px;left:50%;transform:translate(-50%)rotate(45deg)}.sidebar-icon--projects{background:linear-gradient(currentColor,currentColor) 50%/1.8px 100% no-repeat,linear-gradient(currentColor,currentColor) 50%/100% 1.8px no-repeat;border-radius:2px}.sidebar-icon--cases,.sidebar-icon--about{border-radius:50%}.sidebar-icon--about:after{content:"";border:1.6px solid;border-top:none;border-radius:0 0 9px 9px;width:9px;height:4.5px;position:absolute;top:58%;left:50%;transform:translate(-50%)}.sidebar-foot{flex-direction:column;align-items:center;gap:1.15rem;margin-top:auto;padding-top:1rem;display:flex}.lang-switch{color:var(--muted);letter-spacing:.02em;align-items:center;gap:.3rem;font-size:.88rem;font-weight:600;display:flex}.lang-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:.2rem}.lang-btn.is-active{color:var(--ink);font-weight:700}.sidebar-social{grid-template-columns:repeat(3,1fr);gap:.45rem;display:grid}.sidebar-social a{width:2.15rem;height:2.15rem;color:var(--ink);place-items:center;transition:opacity .2s;display:grid}.sidebar-social a:hover{opacity:.55}.nav-mobile-toggle,.sidebar-backdrop{display:none}.progress-track{z-index:60;background:#0b1c3a14;position:fixed}.progress-bar{background:linear-gradient(137deg,#fff,#b8ceff,#002e92,#002279) 0 0/240% 240%;width:100%;height:0%;animation:5s infinite gradient-animation}@media (width>=1025px){.progress-track{width:4px;top:0;bottom:0;right:0}}@media (width<=1024px){.progress-track{height:3px;top:0;left:0;right:0}.progress-bar{width:0%;height:100%}}@keyframes gradient-animation{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.hero{flex-direction:column;justify-content:center;min-height:100vh;padding:5rem 0 6.5rem;display:flex;position:relative;overflow:hidden}.hero-blob{filter:blur(18px);opacity:.9;z-index:0;pointer-events:none;will-change:transform;background:linear-gradient(145deg,#eef4ff 0%,#b8ceff 55%,#9bb8ff 100%);border-radius:28px;width:min(220px,34vw);height:min(220px,34vw);position:absolute;top:14%;left:4%}.code-block{z-index:1;gap:.35rem;width:fit-content;max-width:100%;display:grid;position:relative}.code-line{grid-template-columns:2.2rem minmax(0,1fr);align-items:baseline;gap:.9rem;display:grid}.code-num{font-family:var(--font-display);color:#a9b2c4;padding-top:.35em;font-size:.95rem;font-weight:300;line-height:1}.line-wrap{max-width:100%;display:inline-block;position:relative;overflow:hidden}.code-text{z-index:1;font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);white-space:nowrap;margin:0;font-size:clamp(1.85rem,4.8vw,3.35rem);font-weight:500;line-height:1.18;position:relative}@media (width<=700px){.code-text{white-space:normal}}.code-text strong{color:var(--navy);font-weight:700}.bracket{color:#9aa3b5;font-weight:400}.line-mask{z-index:2;border-left:2px solid var(--ink);pointer-events:none;background:#fff;width:100%;animation:1s forwards typing,.15s step-end infinite alternate blink,1.45s forwards opt;position:absolute;inset:0 0 0 auto}.line2 .line-mask{animation-delay:1.35s,1.35s,1.35s}.line3 .line-mask{animation-delay:2.7s,2.7s,2.7s}.line2 .code-text,.line3 .code-text{opacity:0;animation:10ms forwards opl}.line2 .code-text{animation-delay:1.25s}.line3 .code-text{animation-delay:2.55s}@keyframes typing{0%{width:100%}25%{width:100%}to{width:0%}}@keyframes blink{50%{border-color:#0000}}@keyframes opt{0%,92%{opacity:1}to{opacity:0}}@keyframes opl{to{opacity:1}}.hero-sub{z-index:1;max-width:28rem;color:var(--ink);opacity:0;margin:1.6rem 0 0;font-size:1.05rem;font-weight:400;animation:2.6s 1.1s forwards up;position:relative}.btn-learn{z-index:2;border:1px solid var(--line);opacity:0;background:#fff;border-radius:10px;align-items:center;gap:.75rem;min-height:2.9rem;padding:.35rem .35rem .35rem 1.15rem;font-size:.95rem;font-weight:500;transition:border-color .2s,box-shadow .2s;animation:2.6s 1.35s forwards up-center;display:inline-flex;position:absolute;bottom:2.2rem;left:50%}.btn-learn:hover{border-color:var(--navy);box-shadow:var(--shadow)}.btn-learn-arrow{background:var(--navy);color:#fff;border-radius:8px;place-items:center;width:2.15rem;height:2.15rem;font-size:.95rem;display:grid}@keyframes up{80%{opacity:0;transform:translateY(3vh)}to{opacity:1;transform:translateY(0)}}@keyframes up-center{80%{opacity:0;transform:translate(-50%,3vh)}to{opacity:1;transform:translate(-50%)}}.section{padding:clamp(3.5rem,8vw,6rem) 0}.section-kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 .65rem;font-size:.8rem;font-weight:700}.section-title{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 .85rem;font-size:clamp(1.9rem,4vw,3rem);font-weight:600;line-height:1.1}.section-lead{max-width:38rem;color:var(--ink-soft);margin:0}.process-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:2.25rem;display:grid}.process-card{border:1px solid var(--line);background:#fff;border-radius:18px;padding:1.4rem 1.45rem;transition:transform .25s,box-shadow .25s,border-color .25s}.process-card:hover{box-shadow:var(--shadow);border-color:#0f2a6b40;transform:translateY(-4px)}.process-num{letter-spacing:.08em;color:var(--accent);margin-bottom:.75rem;font-size:.85rem;font-weight:600;display:inline-block}.process-card h3{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0 0 .55rem;font-size:clamp(1.2rem,2.2vw,1.45rem);font-weight:600}.process-card p{color:var(--ink-soft);margin:0;font-size:.98rem;line-height:1.55}.cases-grid{gap:1.15rem;margin-top:2.25rem;display:grid}.case{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-elevated);padding:clamp(1.35rem,3vw,1.85rem)}.case-meta{align-items:center;gap:.75rem;margin-bottom:.65rem;display:flex}.case-index{font-family:var(--font-display);color:var(--accent);font-weight:800}.case-product{color:var(--muted);font-size:.82rem;font-weight:700}.case h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 1rem;font-size:clamp(1.2rem,2.5vw,1.55rem);line-height:1.2}.case-block{margin-bottom:.9rem}.case-block h4,.case-result h4{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:0 0 .35rem;font-size:.75rem;font-weight:700}.case-block p,.case-result p,.case-block ol{color:var(--ink-soft);margin:0}.case-block ol{padding-left:1.15rem}.case-block li+li{margin-top:.3rem}.case-result{background:var(--accent-soft);border-radius:14px;margin:1rem 0 1.1rem;padding:.95rem 1rem}.stack{flex-wrap:wrap;gap:.4rem;display:flex}.chip{border:1px solid var(--line);color:var(--ink-soft);border-radius:999px;padding:.28rem .6rem;font-size:.76rem;font-weight:600;display:inline-flex}.section--projects{width:100%}.projects-grid{gap:3rem;margin-top:1.5rem;display:grid}.project{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-elevated);transition:transform .3s,box-shadow .3s;overflow:hidden}.project:not(.project--devices):hover{box-shadow:var(--shadow);transform:translateY(-4px)}.project--devices{background:0 0;border:none;overflow:visible}.project-devices-scene{margin-bottom:0;position:relative}.project-devices-stage{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:start;gap:clamp(1.5rem,3vw,2.25rem);width:100%;padding:0;display:grid;position:relative}.project-devices-visual{width:100%;min-width:0;max-width:100%;padding:.35rem .15rem .75rem;display:block;position:relative;overflow:hidden}.device-browser{z-index:2;background:#fff;border:1px solid #0a16300f;border-radius:22px;width:100%;max-width:100%;height:fit-content;margin:auto;position:absolute;inset:0;overflow:hidden;box-shadow:0 30px 80px #0a163029,0 8px 24px #0a16300f}.device-pair{z-index:1;box-sizing:border-box;justify-content:center;align-items:flex-end;gap:clamp(.55rem,1.4vw,1rem);width:100%;max-width:100%;margin-inline:auto;padding:0;display:flex;position:relative}.device-browser-chrome{background:linear-gradient(#f7f8fb,#eef1f6);border-bottom:1px solid #0a16300f;align-items:center;gap:.4rem;height:2.1rem;padding:0 1rem;display:flex}.device-browser-chrome span{background:#d7dbe5;border-radius:50%;width:9px;height:9px}.device-browser-chrome span:first-child{background:#ff6b6b}.device-browser-chrome span:nth-child(2){background:#ffc15e}.device-browser-chrome span:nth-child(3){background:#5bd17a}.device-browser-screen{aspect-ratio:16/10;background:#0b1f4d;position:relative;overflow:hidden}.device-scroll-viewport{background:#fff;width:100%;height:100%;position:relative;overflow:hidden}.device-scroll-scaler,.device-scroll-track{will-change:transform}.device-live-frame{pointer-events:none;background:#fff;border:0;display:block}.device-scroll-image{pointer-events:none;width:100%;height:auto;display:block}.device-laptop{flex:1 1 0;min-width:0;max-width:none}.device-laptop-lid{background:linear-gradient(160deg,#2a3142,#12151d);border-radius:14px 14px 4px 4px;padding:.55rem .55rem .35rem;position:relative;box-shadow:0 28px 60px #0a163038}.device-laptop-bezel{background:#05070c;border-radius:8px;overflow:hidden}.device-laptop-screen{aspect-ratio:16/10;background:#0b1f4d;position:relative;overflow:hidden}.device-laptop-base{background:linear-gradient(#c9ced8,#9aa3b2);border-radius:0 0 10px 10px;height:.85rem;margin:0 -1.5% -.15rem;position:relative;box-shadow:0 10px 18px #0a16301f}.device-laptop-notch{background:#7f8796;border-radius:0 0 6px 6px;width:18%;height:.28rem;position:absolute;top:0;left:50%;transform:translate(-50%)}.device-phone{z-index:2;background:linear-gradient(160deg,#2a3142,#10131a);border-radius:24px;flex:none;width:clamp(84px,26%,118px);padding:.4rem;position:relative;transform:translateY(6%);box-shadow:0 24px 50px #0a16303d,inset 0 0 0 1px #ffffff14}.device-phone-notch{z-index:2;background:#05070c;border-radius:999px;width:36%;height:.55rem;position:absolute;top:.7rem;left:50%;transform:translate(-50%)}.device-phone-screen{aspect-ratio:9/19.5;background:#0b1f4d;border-radius:22px;position:relative;overflow:hidden}.project-media{aspect-ratio:16/9;background:#0b1f4d}.project-media img{object-fit:contain;width:100%;height:100%}.project-media--empty{aspect-ratio:auto;border-radius:var(--radius);border:1px solid var(--line);min-height:180px;color:var(--ink-soft);background:linear-gradient(145deg,#e8efff,#f5f7fb);flex-direction:column;justify-content:center;gap:.75rem;padding:1.4rem;display:flex}.project-media-badge{background:var(--accent-soft);width:fit-content;color:var(--navy);letter-spacing:.08em;border-radius:999px;padding:.28rem .6rem;font-size:.72rem;font-weight:800;display:inline-flex}.project-media--empty p{max-width:28rem;margin:0;font-weight:500}.project--devices .project-body{z-index:1;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-elevated);width:100%;min-width:0;box-shadow:var(--shadow);align-self:start;position:relative}.project-body{padding:clamp(1.2rem,3vw,1.7rem)}.project-top{flex-wrap:wrap;justify-content:space-between;gap:.65rem;margin-bottom:.7rem;display:flex}.project-name{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:clamp(1.4rem,3vw,1.85rem)}.project-sub{color:var(--muted);margin:.2rem 0 0}.project-period{color:var(--accent);font-size:.85rem;font-weight:600}.project-body>p{color:var(--ink-soft);margin:.85rem 0}.project-body ul{color:var(--ink-soft);margin:0 0 1rem;padding-left:1.1rem}.project-links{flex-wrap:wrap;gap:.75rem 1.1rem;display:flex}.project-links a{color:var(--accent);font-weight:700}.project-links a:hover{text-decoration:underline}.timeline{gap:1rem;margin-top:2rem;display:grid}.job{border-bottom:1px solid var(--line);grid-template-columns:10rem 1fr;gap:1.25rem;padding:1.25rem 0;display:grid}.job-period{color:var(--accent);font-size:.88rem;font-weight:700}.job h3{font-family:var(--font-display);margin:0 0 .2rem;font-size:1.15rem}.job-company{color:var(--muted);margin:0 0 .7rem}.job ul{color:var(--ink-soft);margin:0;padding-left:1.1rem}.job li+li{margin-top:.3rem}.job-link{color:var(--accent);margin-top:.7rem;font-weight:700;display:inline-block}.skills-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.5rem;margin-top:2rem;display:grid}.skill-item{font-family:var(--font-display);letter-spacing:-.02em;border-bottom:1px solid var(--line);align-items:center;gap:.7rem;padding-bottom:.75rem;font-size:clamp(1.15rem,2.4vw,1.55rem);font-weight:700;display:flex}.skill-icons{flex-shrink:0;align-items:center;gap:.35rem;display:inline-flex}.skill-icon{object-fit:contain;width:1.35rem;height:1.35rem}.skill-label{min-width:0}.about-name{font-family:var(--font-display);letter-spacing:-.045em;text-transform:uppercase;margin:0;font-size:clamp(2.6rem,9vw,5.5rem);font-weight:800;line-height:.95}.about-location{color:var(--muted);margin:.75rem 0 1.5rem;font-weight:600}.about-headline{max-width:34rem;font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 1.5rem;font-size:clamp(1.25rem,2.5vw,1.7rem);line-height:1.25}.about-grid{grid-template-columns:1.4fr .8fr;gap:2rem;display:grid}.about-copy p{color:var(--ink-soft);margin:0 0 1rem}.about-copy h4{font-family:var(--font-display);margin:1.5rem 0 .6rem;font-size:1.15rem}.about-link{color:var(--accent);margin-top:.5rem;font-weight:700;display:inline-block}.fact{border:1px solid var(--line);background:var(--bg-elevated);border-radius:16px;padding:1.15rem 1.25rem}.fact strong{font-family:var(--font-display);margin-bottom:.25rem;display:block}.fact span{color:var(--muted);font-size:.92rem}.contact-panel{border-radius:calc(var(--radius) + 4px);border:1px solid var(--line);background:linear-gradient(135deg, #2f6fed1a, transparent 45%), var(--bg-elevated);padding:clamp(1.5rem,4vw,2.5rem)}.contact-links{flex-wrap:wrap;gap:.7rem;margin-top:1.5rem;display:flex}.btn-primary,.btn-ghost{border-radius:999px;justify-content:center;align-items:center;min-height:2.9rem;padding:.65rem 1.15rem;font-weight:700;transition:transform .2s,background .2s;display:inline-flex}.btn-primary{background:var(--navy);color:#f4f7ff}.btn-primary:hover{background:var(--accent);transform:translateY(-2px)}.btn-ghost{border:1px solid var(--line);background:0 0}.btn-ghost:hover{border-color:var(--accent);background:var(--accent-soft)}.footer{width:min(100%, var(--max));border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.75rem;margin:1rem auto 0;padding-top:1.5rem;font-size:.9rem;display:flex}@keyframes menu-in{to{opacity:1;transform:none}}@media (width<=900px){.about-grid,.job,.skills-list,.process-grid{grid-template-columns:1fr}.job-period{margin-bottom:-.5rem}.project-devices-scene{min-height:auto}.project-devices-stage{grid-template-columns:1fr;align-items:stretch;gap:1.25rem;padding:.25rem 0 1rem}.project-devices-visual{padding:.25rem 0 .5rem;overflow:visible}.device-browser{display:none}.device-pair{opacity:1!important;pointer-events:auto!important;transform:none!important}.device-laptop,.device-phone{opacity:1!important;transform:none!important}.device-phone{width:clamp(92px,24%,130px);transform:translateY(6%)}.device-laptop{max-width:none}}@media (width<=820px){:root{--sidebar:0px}.shell-main{margin-left:0;padding-top:1rem}.nav-mobile-toggle{z-index:50;border:1px solid var(--line);background:var(--bg-elevated);cursor:pointer;border-radius:12px;flex-direction:column;justify-content:center;gap:5px;width:2.7rem;height:2.7rem;padding:.65rem;display:inline-flex;position:fixed;top:1.1rem;left:1.1rem}.nav-mobile-toggle span{background:var(--ink);height:2px;display:block}.sidebar{align-items:stretch;gap:1.5rem;width:min(280px,82vw);padding:1.5rem 1.35rem;transition:transform .28s;transform:translate(-110%)}.sidebar.is-open{transform:translate(0)}.sidebar-avatar{width:120px;height:auto;margin-bottom:0}.sidebar-nav{flex:0;justify-content:flex-start;align-items:stretch}.sidebar-link{flex-direction:row;justify-content:flex-start;gap:.85rem;width:100%;min-height:auto;padding:.9rem 1rem;font-size:.95rem}.sidebar-label{max-width:none}.sidebar-foot{align-items:flex-start}.sidebar-social{grid-template-columns:repeat(3,2.15rem)}.sidebar-backdrop{z-index:35;background:#0b1c3a47;border:none;display:block;position:fixed;inset:0}.hero{padding-top:5rem;padding-bottom:7rem}.btn-learn{bottom:1.25rem}}
