body{margin:0;font-family:Bricolage Grotesque,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}*{margin:0;padding:0;box-sizing:border-box}:root{--color-primary: #323E7C;--color-secondary:#EDECF3;--color-accent: #A8BEF7;--color-text-dark: #080B27;--color-text-secondary: #494949;--color-text-light: #EDECF3;--color-border: #e5e5e5;--color-surface: #fff;--font-family-base: "Bricolage Grotesque", sans-serif;--section-max-width: 1200px;--section-padding-block: 80px;--section-padding-inline: 2rem;--section-padding: var(--section-padding-block) var(--section-padding-inline);--heading-display-size: 3.5rem;--heading-xl-size: 4rem;--heading-lg-size: 3rem;--heading-md-size: 1.6rem;--heading-base-weight: 600;--heading-display-weight: 700;--heading-line-height: 1.1;--text-size: 1.4rem;--btn-text-size: 1rem}body{font-family:var(--font-family-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--color-text-primary);text-decoration:none}a{text-decoration:none;color:var(--color-text-primary)}.app{width:100%;overflow-x:hidden}.heading-display{font-size:var(--heading-display-size);font-weight:var(--heading-display-weight);line-height:var(--heading-line-height);color:var(--color-text-primary)}h1{font-size:var(--heading-xl-size);font-weight:var(--heading-base-weight);line-height:var(--heading-line-height);color:var(--color-text-primary)}h2{font-size:var(--heading-lg-size);font-weight:var(--heading-base-weight);line-height:var(--heading-line-height);color:var(--color-text-primary)}h3{font-size:var(--heading-md-size);font-weight:var(--heading-base-weight);line-height:1.3;color:var(--color-text-primary)!important}p{font-size:var(--text-size);line-height:1.3;color:var(--color-text-secondary)}.text-secondary{color:var(--color-text-secondary)}.section-container{max-width:var(--section-max-width);margin:0 auto;padding:var(--section-padding)}.section-heading{text-align:center;margin-bottom:1rem}.navbar{position:fixed;top:0;width:100%;background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:1000;padding:1rem 0}.nav-container{max-width:var(--section-max-width);margin:0 auto;padding:0 2rem;display:flex;justify-content:space-between;align-items:center;position:relative}.logo{font-weight:700;font-size:2rem}.nav-links{display:flex;gap:2rem}.nav-toggle{display:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:36px;height:36px;border:none;background:none;cursor:pointer;padding:0}.nav-toggle span{display:block;width:24px;height:2px;background:var(--color-text-primary);transition:transform .3s ease,opacity .3s ease}.nav-toggle.open span:nth-child(1){transform:translateY(8px) rotate(45deg)}.nav-toggle.open span:nth-child(2){opacity:0}.nav-toggle.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}.nav-links a{text-decoration:none;color:var(--color-text-primary);font-size:.9rem;transition:color .3s}.nav-links a:hover{color:var(--color-text-muted)}.nav-buttons{display:flex;gap:1rem}.btn-primary,.btn-outline{background:var(--color-primary);color:var(--color-text-light);border:none;padding:.75rem 1.75rem;border-radius:999px;cursor:pointer;font-size:1.2rem;line-height:1.3;transition:background .3s ease,color .3s ease;font-family:var(--font-family-base)}.btn-primary:hover,.btn-outline:hover,.btn-outline.active{background:var(--color-secondary);color:var(--color-primary)}.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-text-primary);padding:.75rem 1.5rem;border-radius:999px;cursor:pointer;font-size:.9rem;transition:background .3s ease,color .3s ease}.btn-secondary:hover{background:#f5f5f5}.filter-buttons{display:flex;justify-content:center;gap:1rem;margin:2rem 0 4rem;flex-wrap:wrap}.filter-buttons .btn-outline{margin-top:0}.heropic{background-image:url(/me.jpg);background-size:cover;border-radius:100px;width:100px;height:100px;margin-bottom:20px}.hero{max-width:1200px;margin:0 auto;padding:120px 2rem 0px;text-align:center;justify-items:center}.hero-title{margin-bottom:1rem}.subtitle{margin-bottom:1.5rem}.description{line-height:1.6;margin-bottom:2rem;font-size:1.2rem}.section-subtitle{text-align:center;margin-bottom:4rem}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:2rem}.project-card.large{grid-column:1 / -1}.project-card{border:1px solid #e5e5e5;border-radius:8px;overflow:hidden;transition:transform .3s,box-shadow .3s}.project-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000001a}.project-card .project-image{width:100%;height:260px;background-color:#f0f0f0;background-position:top;background-size:cover;background-repeat:no-repeat;display:flex;align-items:center;justify-content:top;position:relative}.project-card.large .project-image{height:360px}.project-image.has-image{background-color:transparent;background-position:top;background-size:cover}.project-image.has-image:before{display:none}.project-info{padding:1.5rem;display:flex;flex-direction:column;gap:.75rem}.project-info p{font-size:.95rem;line-height:1.6;margin-bottom:1rem;color:var(--color-text-secondary)}.tech-tags{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.tech-tags span{background:#f5f5f5;padding:.4rem .8rem;border-radius:999px;font-size:.8rem}.project-link{color:var(--color-text-primary);text-decoration:none;font-size:.9rem;font-weight:500;transition:opacity .3s}.project-link:hover{opacity:.7}.featured-section,.research-section{display:flex;flex-direction:column;align-items:center}.project-grid-two{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:2rem;width:100%}.timeline{max-width:800px;margin:0 auto}.timeline-content ul li{padding-bottom:20px;color:var(--color-text-secondary)}.timeline-item{display:flex;gap:2rem;margin-bottom:3rem;position:relative}.timeline-item:before{content:"";position:absolute;left:11px;top:30px;bottom:-30px;width:2px;background:#e5e5e5}.timeline-item:last-child:before{display:none}.timeline-dot{width:24px;height:24px;border-radius:50%;border:3px var(--color-primary);background:var(--color-primary);flex-shrink:0;margin-top:4px;z-index:1}.timeline-content{display:flex;flex-direction:column;gap:20px}.timeline-content p{font-size:1rem;line-height:1.7}.testimonials-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;margin-bottom:2rem}.testimonial-card{border:1px solid #e5e5e5;border-radius:8px;padding:2rem}.stars{color:gold;font-size:1.2rem;margin-bottom:1rem}.testimonial-text{font-size:1rem;line-height:1.7;color:var(--color-text-secondary);margin-bottom:1.5rem}.testimonial-author{display:flex;align-items:center;gap:1rem}.author-avatar{width:48px;height:48px;border-radius:50%;background:#e5e5e5}.author-name{font-weight:600;font-size:1rem;margin-bottom:.25rem}.author-role{font-size:.85rem;color:var(--color-text-muted)}.pagination{display:flex;gap:.5rem;justify-content:center}.page-dot{width:12px;height:12px;border-radius:50%;border:2px solid #ccc;background:var(--color-surface);cursor:pointer;transition:all .3s}.page-dot.active{background:var(--color-text-primary);border-color:var(--color-text-primary)}.page-dot:hover{border-color:var(--color-text-muted)}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:3rem}.skill-items{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:20px}.skill-items span{background:#f0f0f0;padding:.5rem 1rem;border-radius:100px;font-size:.85rem;font-weight:500}.footer{background:#f9f9f9;padding:2rem 2rem 4rem}.footer-content{max-width:var(--section-max-width);margin:0 auto;display:grid;grid-template-columns:1.5fr 2fr;gap:4rem;margin-bottom:3rem}.footer-logo{font-weight:700;font-size:3rem;margin-bottom:1rem}.footer-left p{font-size:.9rem;color:var(--color-text-muted);margin-bottom:1.5rem}.social-icons{display:flex;gap:1rem;justify-content:center}.social-icons a{width:36px;height:36px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;text-decoration:none;color:#000;font-weight:700;border:1px solid #e5e5e5;transition:all .3s}.social-icons a:hover{background:#000;color:#fff;border-color:#000}.footer-links{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}.footer-column h4{font-size:.95rem;font-weight:600;margin-bottom:1rem}.footer-column{display:flex;flex-direction:column;gap:.5rem}.footer-column a{text-decoration:none;color:var(--color-text-muted);font-size:.9rem;transition:color .3s}.footer-column a:hover{color:var(--color-text-primary)}.footer-bottom{max-width:var(--section-max-width);margin:0 auto;text-align:center}.footer-company{font-size:3.5rem;font-weight:700;margin-bottom:1rem}.footer-bottom>p{font-size:.9rem;color:var(--color-text-muted);margin-bottom:1.5rem}.footer-legal{display:flex;gap:2rem;justify-content:center;font-size:.85rem;color:#999}.footer-legal span{cursor:pointer;transition:color .3s}.footer-legal span:hover{color:var(--color-text-primary)}@media(max-width:968px){.nav-container{padding:0 1.5rem}.nav-toggle{display:flex}.nav-links{display:none;position:absolute;top:100%;left:0;width:100%;margin-top:.75rem;padding:1.5rem 1.5rem 2rem;background:#fff;border:1px solid #e5e5e5;border-radius:12px;box-shadow:0 16px 32px #00000014;flex-direction:column;gap:1.25rem;z-index:1000}.nav-links.visible{display:flex}.nav-links a{font-size:1rem}.project-grid,.project-grid-two{grid-template-columns:1fr}.project-card.large{grid-column:1}.testimonials-grid,.skills-grid,.footer-content{grid-template-columns:1fr}.footer-company{font-size:2.5rem}.heading-display{font-size:3rem}.heading-xl{font-size:2.5rem}.heading-lg{font-size:2.2rem}}@media(max-width:640px){.nav-buttons{gap:.5rem}.btn-primary,.btn-secondary{padding:.5rem 1rem;font-size:.85rem}.footer-legal{flex-direction:column;gap:.5rem}.heading-display{font-size:2.5rem}.heading-xl{font-size:2rem}.heading-lg{font-size:1.8rem}}.page-content{padding-top:120px}.project-page{padding:150px 2rem 120px}.container{max-width:1000px;margin:0 auto}.project-header{margin-bottom:3rem}.project-type{font-size:.9rem;margin-bottom:1.5rem;font-weight:400}.project-title{margin-bottom:1.5rem}.project-tags{display:flex;gap:1rem;flex-wrap:wrap}.tag{background:var(--color-primary);border:1px solid var(--color-text-primary);padding:.5rem 1rem;font-size:.9rem;font-weight:500;color:var(--color-text-light);border-radius:100px}.project-description{display:grid;grid-template-columns:1fr 1fr;gap:4rem;margin-bottom:3rem}.description-text p{margin-bottom:1.5rem;font-size:.95rem;line-height:1.7;color:var(--color-text-secondary)}.project-links{display:flex;flex-direction:column;gap:2rem}.link-item{border-top:1px solid var(--color-text-primary);padding-bottom:20px;display:flex;justify-content:space-between;align-items:center;border-bottom:solid 1px #b0b0b0}.link-label{font-size:1rem;font-weight:600;color:var(--color-text-primary)}.link-with-arrow{color:var(--color-primary);text-decoration:none;font-size:2rem;display:flex;align-items:center;gap:.5rem;transition:opacity .3s}.link-with-arrow:hover{opacity:.7}.no-link{font-size:.9rem;color:var(--color-text-muted)}.no-link-info{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.note{font-size:.9rem;color:var(--color-text-primary)}.no-arrow-text{font-size:.8rem;color:#999}.project-image-section{margin-bottom:4rem}.project-image{width:100%;background:#e5e5e5;border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden}.image-placeholder{display:flex;align-items:center;justify-content:center}.project-image img{width:100%;height:100%;object-fit:cover}.key-features{margin-bottom:4rem}.key-features h2{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem}.features-content p{margin-bottom:1.5rem;font-size:.95rem;line-height:1.7;color:#000}.features-content p:last-child{margin-bottom:0}@media(max-width:768px){.project-page{padding:120px 1.5rem 80px}.project-title{font-size:2.5rem}.project-description{grid-template-columns:1fr;gap:2rem}.link-item{flex-direction:column;gap:.5rem;align-items:flex-start}.no-link-info{align-items:flex-start}.project-tags{gap:.75rem}.tag{font-size:.85rem;padding:.4rem .8rem}}@media(max-width:480px){.project-page{padding:110px 1.25rem 60px}.project-title{font-size:2rem}.project-type{font-size:.85rem}.tag{font-size:.8rem;padding:.35rem .7rem}.description-text p,.features-content p{font-size:.9rem}}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bricolage-grotesque-vietnamese-400-normal-B7Iv8-Rg.woff2) format("woff2"),url(/assets/bricolage-grotesque-vietnamese-400-normal-Sle7MYWg.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bricolage-grotesque-latin-ext-400-normal-D42HmrHD.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-ext-400-normal-BH175q6o.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bricolage-grotesque-latin-400-normal-A6LyuA6R.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-400-normal-D89K-qEP.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}
