.type-display,.type-h1,.type-h2,.type-h3,.type-h4{font-family:Space Grotesk,sans-serif}.type-display{font-size:clamp(3.75rem,6vw,6.5rem);font-weight:700;line-height:.92;letter-spacing:-.05em}.type-h1{font-size:clamp(2.8rem,4vw,4.75rem);font-weight:700;line-height:1.05;letter-spacing:-.04em}.type-h2{font-size:clamp(2.2rem,3vw,3.6rem);font-weight:700;line-height:1.1;letter-spacing:-.03em}.type-h3{font-size:clamp(1.6rem,2vw,2.3rem);font-weight:600;line-height:1.2}.type-h4{font-size:clamp(1.3rem,1.5vw,1.65rem);font-weight:600;line-height:1.3}.type-body-large,.type-body,.type-body-small,.type-caption{font-family:Sora,sans-serif}.type-body-large{font-size:clamp(1.125rem,1.3vw,1.3rem);font-weight:400;line-height:1.8;letter-spacing:-.01em}.type-body{font-size:clamp(1rem,1vw,1.08rem);font-weight:400;line-height:1.75}.type-body-small{font-size:clamp(.9rem,.9vw,.95rem);font-weight:400;line-height:1.6}.type-caption{font-size:clamp(.78rem,.8vw,.85rem);font-weight:600;line-height:1.5;letter-spacing:.12em;text-transform:uppercase}.container{width:min(100% - 32px,1280px);margin-inline:auto}.section{padding-block:64px}.text-center{text-align:center}.text-left{text-align:left}.flex-center{display:flex;align-items:center;justify-content:center}.grid-auto-fit{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,256px),1fr));gap:32px}@media (max-width: 767px){.hidden-mobile{display:none!important}}@media (min-width: 768px){.hidden-desktop{display:none!important}}.divider{width:100%;height:1px;background-color:#e8eaec}.accent-text{color:#2f8d8c}.gradient-text{background:linear-gradient(90deg,#2f8d8c,#4cafae);background-clip:text;color:transparent}.max-width-xs{max-width:384px}.max-width-sm{max-width:512px}.max-width-md{max-width:640px}.max-width-lg{max-width:960px}.max-width-xl{max-width:1280px}@media (min-width: 768px){.container{width:min(100% - 64px,1280px)}.section{padding-block:96px}}.button-primary,.button-secondary{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:56px;padding:16px 32px;border:1px solid transparent;border-radius:999px;cursor:pointer;text-decoration:none;font:inherit;font-size:.95rem;font-weight:600;line-height:1;white-space:nowrap;transition:background-color .25s ease,border-color .25s ease,color .25s ease,box-shadow .25s ease,transform .25s ease}.button-primary:focus-visible,.button-secondary:focus-visible{outline:2px solid #4cafae;outline-offset:4px}.button-primary:disabled,.button-primary.is-disabled,.button-secondary:disabled,.button-secondary.is-disabled{cursor:not-allowed;opacity:.55;pointer-events:none}.button-primary{background:#2f8d8c;color:#fff;box-shadow:0 12px 30px #0000001f}.button-primary:hover:not(:disabled):not(.is-disabled){background:color-mix(in srgb,#2f8d8c,#171b23 12%);transform:translateY(-3px);box-shadow:0 18px 42px #0000002e}.button-primary:active:not(:disabled){transform:translateY(-1px)}.button-secondary{background:#fff;color:#2f8d8c;border-color:color-mix(in srgb,#2f8d8c,transparent 55%)}.button-secondary:hover:not(:disabled):not(.is-disabled){background:#2f8d8c;color:#fff;border-color:#2f8d8c;transform:translateY(-3px);box-shadow:0 18px 42px #0000001f}.button-secondary:active:not(:disabled){transform:translateY(-1px)}@media (max-width: 768px){.button-primary,.button-secondary{width:100%;min-height:52px;justify-content:center}}.card,.card--service,.card--project,.card--testimonial{display:flex;flex-direction:column;height:100%;overflow:hidden;background:#fff;border:1px solid #e8eaec;border-radius:24px;box-shadow:0 1px 2px #171b230f;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.card:hover,.card--service:hover,.card--project:hover,.card--testimonial:hover{transform:translateY(-8px);border-color:#2f8d8c40;box-shadow:0 18px 40px #171b231f}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeLeft{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}@keyframes fadeRight{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes slowRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fade-up{animation:fadeUp .6s ease-out both}.animate-fade-left{animation:fadeLeft .6s ease-out both}.animate-fade-right{animation:fadeRight .6s ease-out both}.animate-scale-in{animation:scaleIn .5s ease-out both}.animate-float{animation:float 4s ease-in-out infinite}.animate-slow-rotate{animation:slowRotate 20s linear infinite}.animate-in{opacity:1!important;transform:translateY(0)!important}.animate-left{opacity:1!important;transform:translate(0)!important}[appFadeUp]{opacity:0;transform:translateY(40px);transition:opacity .7s ease,transform .7s ease}[appFadeLeft]{opacity:0;transform:translate(-40px);transition:opacity .7s ease,transform .7s ease}[appStagger]>*{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease}@media (prefers-reduced-motion: reduce){.animate-fade-up,.animate-fade-left,.animate-fade-right,.animate-scale-in,.animate-float,.animate-slow-rotate{animation-duration:1ms;animation-iteration-count:1}}.app-shell{display:flex;flex-direction:column;min-height:100dvh}.app-main{flex:1 0 auto}.layout-container{width:min(100% - 2rem,1400px);margin-inline:auto}.layout-section{padding-block:clamp(4rem,6vw,6rem)}.layout-section--compact{padding-block:clamp(2rem,4vw,3rem)}@media (min-width: 768px){.layout-container{width:min(100% - 4rem,1400px)}.layout-section{padding-block:clamp(5rem,7vw,7rem)}.layout-section--compact{padding-block:clamp(3rem,5vw,4rem)}}@media (min-width: 1280px){.layout-container{width:min(100% - 6rem,1480px)}}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url("./media/space-grotesk-vietnamese-400-normal-VYALUVHJ.woff2") format("woff2"),url("./media/space-grotesk-vietnamese-400-normal-HYAY6YMN.woff") format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url("./media/space-grotesk-latin-ext-400-normal-6RDUJ6X4.woff2") format("woff2"),url("./media/space-grotesk-latin-ext-400-normal-SFKLEDM4.woff") format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url("./media/space-grotesk-latin-400-normal-LF3ZIHND.woff2") format("woff2"),url("./media/space-grotesk-latin-400-normal-OMAEQ2EW.woff") format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:400;src:url("./media/sora-latin-ext-400-normal-H2XQBDLE.woff2") format("woff2"),url("./media/sora-latin-ext-400-normal-SUU6ZH6V.woff") format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:400;src:url("./media/sora-latin-400-normal-F3CRNV4J.woff2") format("woff2"),url("./media/sora-latin-400-normal-ULFOU22Q.woff") format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html{box-sizing:border-box;min-height:100%;scroll-behavior:smooth}*,*:before,*:after{box-sizing:inherit}body{min-height:100%;margin:0;background-color:#f9f8f6;color:#171b23;font-family:Sora,sans-serif;line-height:1.5;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background-color:#2f8d8c;color:#fff}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background-color:#f9f8f6}::-webkit-scrollbar-thumb{background-color:#e8eaec;border-radius:999px}::-webkit-scrollbar-thumb:hover{background-color:#6b7280}img{display:block;max-width:100%}button{font:inherit}a{color:inherit;text-decoration:none}
