@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/archivo-vietnamese-wght-normal.3cbdnbmi1hpzs.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/archivo-latin-ext-wght-normal.3cxrhsknk8wrd.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/archivo-latin-wght-normal.0inx24hl2eswd.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--ground:#eef0e9;--paper:#f8f8f3;--ink:#171b18;--muted:#58605b;--line:#b8beb9;--forest:#31574c;--forest-light:#dbe5de;--signal:#ff5d35;--signal-dark:#a42b11;--font:"Archivo Variable", "Helvetica Neue", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}body{color:var(--ink);background:var(--ground);font-family:var(--font);text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.55}::selection{color:var(--paper);background:var(--forest)}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--ground)}::-webkit-scrollbar-thumb{border:3px solid var(--ground);background:var(--forest);border-radius:999px}a{color:inherit;text-underline-offset:.24em}button,summary{font:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--signal);outline-offset:4px}svg{display:block}h1,h2,h3,p{margin-top:0}.topbar{z-index:20;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--ground) 94%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);justify-content:space-between;align-items:center;min-height:88px;padding:0 clamp(1.25rem,4.5vw,4.5rem);display:flex;position:sticky;top:0}.brand{letter-spacing:-.04em;font-size:1.05rem;font-weight:760;text-decoration:none}.desktop-nav{align-items:center;gap:2rem;display:flex}.desktop-nav>a:not(.header-action){color:var(--muted);font-size:.9rem;font-weight:560;text-decoration:none}.desktop-nav>a:not(.header-action):hover{color:var(--ink)}.header-action,.primary-action{min-height:50px;color:var(--paper);background:var(--ink);border-radius:999px;justify-content:center;align-items:center;gap:.6rem;padding:.8rem 1.2rem;font-size:.86rem;font-weight:700;text-decoration:none;transition:color .18s,background-color .18s,box-shadow .18s;display:inline-flex}.header-action svg,.primary-action svg,.contact button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:18px}.header-action:hover,.primary-action:hover{color:var(--ink);background:var(--signal);box-shadow:0 12px 28px #ff5d3533}.mobile-nav{display:none}.hero{grid-template-columns:minmax(0,1.72fr) minmax(380px,.88fr);align-items:center;gap:clamp(3rem,7vw,8rem);min-height:calc(100svh - 88px);padding:clamp(5rem,9vh,8rem) clamp(1.25rem,4.5vw,4.5rem) clamp(4rem,8vh,7rem);display:grid}.hero-copy{min-width:0}.hero h1{letter-spacing:-.065em;text-wrap:balance;max-width:11.5ch;margin-bottom:2.25rem;font-size:clamp(4.1rem,7.3vw,7.2rem);font-weight:720;line-height:.93}.hero-copy>p{max-width:62ch;color:var(--muted);margin-bottom:2rem;font-size:clamp(1.05rem,1.5vw,1.25rem)}.hero-actions{align-items:center;gap:1.5rem;display:flex}.primary-action{color:var(--ink);background:var(--signal);box-shadow:0 12px 28px #ff5d352e}.primary-action:hover{color:var(--paper);background:var(--ink)}.secondary-action{font-size:.88rem;font-weight:650}.hero-meta{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));max-width:820px;margin:clamp(4rem,8vh,7rem) 0 0;display:grid}.hero-meta div{padding:1rem 1.4rem 0 0}.hero-meta dt{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.25rem;font-size:.7rem;font-weight:650}.hero-meta dd{margin:0;font-size:.88rem;font-weight:620}.hero-plate{min-height:600px;color:var(--paper);background:var(--ink);border-radius:6px;grid-template-rows:auto 1fr auto;align-self:stretch;margin:0;padding:1.5rem;display:grid;box-shadow:0 28px 58px #171b1826}.plate-header,.hero-plate figcaption{justify-content:space-between;gap:1rem;display:flex}.plate-header{color:#aeb8b2;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid #3e4741;padding-bottom:1rem;font-size:.72rem;font-weight:620}.hero-plate figcaption{border-top:1px solid #3e4741;align-items:end;padding-top:1rem}.hero-plate figcaption span{letter-spacing:-.04em;font-size:1.7rem;font-weight:670}.hero-plate figcaption strong{color:#aeb8b2;font-size:.78rem;font-weight:520}.system-diagram{width:100%;height:100%;min-height:300px;overflow:visible}.diagram-ring{fill:none;stroke:var(--forest)}.ring-outer{stroke-width:42px;opacity:.55}.ring-inner{stroke:#dce4de;stroke-width:1px;opacity:.7}.diagram-path{fill:none;stroke:#68736d;stroke-width:1.5px}.diagram-route{fill:none;stroke:var(--paper);stroke-dasharray:5 7;stroke-width:1.8px;animation:12s linear infinite route-trace}.diagram-nodes circle{fill:var(--paper)}.diagram-nodes .diagram-core{fill:var(--signal)}.work{color:var(--paper);background:var(--ink);padding:clamp(6rem,10vw,11rem) clamp(1.25rem,4.5vw,4.5rem)}.work-heading,.section-intro,.process-heading{grid-template-columns:1.5fr minmax(280px,.5fr);align-items:end;gap:clamp(2rem,7vw,8rem);margin-bottom:clamp(4rem,7vw,7rem);display:grid}.work-heading h2,.section-intro h2,.process-heading h2,.contact h2{letter-spacing:-.06em;text-wrap:balance;max-width:13ch;margin-bottom:0;font-size:clamp(3.2rem,6vw,6rem);font-weight:690;line-height:.96}.work-heading p,.section-intro p,.process-heading p{color:#aeb8b2;max-width:66ch;margin:0}.work-browser{border-top:1px solid #3e4741;grid-template-columns:minmax(250px,.42fr) minmax(0,1.58fr);display:grid}.work-tabs{flex-direction:column;display:flex}.work-tabs button{color:#aeb8b2;text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #3e4741;grid-template-rows:auto auto;grid-template-columns:42px 1fr;align-content:center;gap:.3rem 1rem;min-height:148px;padding:1.5rem 1.5rem 1.5rem 0;display:grid}.work-tabs button:hover{color:var(--paper)}.work-tabs button[aria-selected=true]{color:var(--signal)}.work-tabs button>span{color:#77817b;grid-row:1/3;font-size:.75rem}.work-tabs strong{color:inherit;font-size:1.15rem;font-weight:620}.work-tabs small{color:#77817b;font-size:.74rem}.work-panel{border-left:1px solid #3e4741;grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);min-height:620px;animation:.52s cubic-bezier(.16,1,.3,1) both panel-reveal;display:grid}.project-visual{background:#212622;min-height:520px;padding:clamp(2rem,5vw,5rem);position:relative}.project-visual>span{color:#849088;letter-spacing:.06em;text-transform:uppercase;font-size:.7rem;position:absolute;bottom:1.25rem;right:1.5rem}.project-copy{background:#181d19;flex-direction:column;justify-content:center;padding:clamp(2rem,4vw,4.5rem);display:flex}.project-position{color:var(--signal);letter-spacing:.08em;text-transform:uppercase;margin-bottom:2.5rem;font-size:.72rem;font-weight:650}.project-copy h3{letter-spacing:-.055em;margin-bottom:.5rem;font-size:clamp(2.7rem,4.3vw,4.5rem);font-weight:650;line-height:1}.project-type{color:#aeb8b2;margin-bottom:2rem}.project-summary{max-width:58ch;font-size:1.04rem}.project-copy ul{gap:.65rem;margin:1.25rem 0 2rem;padding:0;list-style:none;display:grid}.project-copy li{color:#c7cec9;padding-left:1.25rem;font-size:.9rem;position:relative}.project-copy li:before{background:var(--signal);content:"";border-radius:50%;width:5px;height:5px;position:absolute;top:.62em;left:0}.stack-list{flex-wrap:wrap;gap:.45rem;display:flex}.stack-list span{color:#c7cec9;border:1px solid #4c5750;border-radius:999px;padding:.35rem .6rem;font-size:.72rem}.project-archive{margin-top:clamp(6rem,10vw,10rem)}.archive-heading{grid-template-columns:1.5fr minmax(280px,.5fr);align-items:end;gap:clamp(2rem,7vw,8rem);margin-bottom:3rem;display:grid}.archive-heading>div>p{color:var(--signal);letter-spacing:.08em;text-transform:uppercase;margin-bottom:1.5rem;font-size:.72rem;font-weight:650}.archive-heading h3{letter-spacing:-.055em;max-width:13ch;margin:0;font-size:clamp(2.7rem,5vw,5rem);font-weight:660;line-height:.98}.archive-heading>p{color:#aeb8b2;margin:0}.archive-list{border-top:1px solid #536059}.archive-row{border-bottom:1px solid #3e4741;grid-template-columns:.16fr .8fr 1.5fr .58fr;align-items:center;gap:1.5rem;min-height:126px;display:grid}.archive-row>span{color:var(--signal);font-size:.7rem;font-weight:650}.archive-row h4{letter-spacing:-.035em;margin:0 0 .2rem;font-size:clamp(1.15rem,1.8vw,1.65rem);font-weight:610;line-height:1.1}.archive-row small{color:#819087;font-size:.69rem}.archive-row>p{color:#c7cec9;max-width:68ch;margin:0;font-size:.88rem}.archive-row>small{color:#a9b8af;text-align:right}.services{background:var(--paper);padding:clamp(6rem,10vw,11rem) clamp(1.25rem,4.5vw,4.5rem)}.section-intro p{color:var(--muted)}.service-list{border-top:1px solid var(--ink)}.service-row{border-bottom:1px solid var(--line);grid-template-columns:.22fr .9fr 1.5fr .65fr;align-items:center;gap:1.5rem;min-height:156px;display:grid}.service-row>span{color:var(--signal-dark);font-size:.72rem;font-weight:650}.service-row h3{letter-spacing:-.04em;margin:0;font-size:clamp(1.45rem,2.3vw,2.25rem);font-weight:610}.service-row p{max-width:65ch;color:var(--muted);margin:0}.service-row small{color:var(--forest);font-size:.73rem;font-weight:600}.process{color:var(--paper);background:var(--forest);padding:clamp(6rem,10vw,11rem) clamp(1.25rem,4.5vw,4.5rem)}.process-heading p{color:#d5e0d8}.process-list{border-top:1px solid #749186;grid-template-columns:repeat(4,1fr);margin:0;padding:0;list-style:none;display:grid}.process-list li{border-right:1px solid #749186;min-height:280px;padding:1.5rem 1.5rem 1.5rem 0}.process-list li+li{padding-left:1.5rem}.process-list li:last-child{border-right:0}.process-list>li>span{color:#bed0c5;margin-bottom:4.5rem;font-size:.75rem;display:block}.process-list h3{letter-spacing:-.035em;margin-bottom:.75rem;font-size:1.55rem;font-weight:620}.process-list p{color:#d5e0d8;max-width:36ch;margin:0;font-size:.88rem}.contact{background:var(--signal);grid-template-columns:minmax(0,.9fr) minmax(480px,1.1fr);align-items:start;gap:clamp(3rem,7vw,8rem);padding:clamp(6rem,11vw,12rem) clamp(1.25rem,4.5vw,4.5rem);display:grid}.contact h2{max-width:13ch;margin-bottom:2rem}.contact-copy>p{color:#482016;max-width:60ch;margin:0;font-size:1.04rem}.contact-form{color:var(--paper);background:var(--ink);border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;padding:clamp(1.5rem,3vw,2.5rem);display:grid;position:relative;box-shadow:0 26px 50px #5e1b0a2e}.form-field{gap:.5rem;display:grid}.form-field>span{color:#bcc6c0;letter-spacing:.07em;text-transform:uppercase;font-size:.7rem;font-weight:650}.form-field input,.form-field select,.form-field textarea{width:100%;color:var(--paper);font:inherit;background:#212622;border:1px solid #59635d;border-radius:3px;font-size:.92rem}.form-field input,.form-field select{height:50px;padding:0 .85rem}.form-field textarea{resize:vertical;min-height:152px;padding:.8rem}.form-field input::placeholder,.form-field textarea::placeholder{color:#7e8882}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--signal);outline:2px solid var(--signal);outline-offset:2px}.form-field-wide,.form-submit{grid-column:1/-1}.bot-field{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.form-submit{align-items:center;gap:1.25rem;display:flex}.contact-form button{min-height:58px;color:var(--ink);background:var(--signal);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:.7rem;padding:.9rem 1.35rem;font-weight:700;transition:color .18s,background-color .18s;display:inline-flex}.contact-form button:hover:not(:disabled){color:var(--ink);background:var(--paper)}.contact-form button:disabled{color:#8e9691;cursor:wait;background:#363b38}.contact-status{color:#aeb8b2;margin:0;font-size:.75rem}.contact-status.success{color:#a8dfbd}.contact-status.error{color:#ff9e86}footer{color:#bfc8c2;background:var(--ink);grid-template-columns:1fr 1fr auto;align-items:center;gap:2rem;padding:2rem clamp(1.25rem,4.5vw,4.5rem);font-size:.78rem;display:grid}footer p{margin:0}footer p:first-child{color:var(--paper);font-weight:700}footer a{color:var(--paper)}@keyframes route-trace{to{stroke-dashoffset:-120px}}@keyframes panel-reveal{0%{opacity:.25;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1100px){.hero{grid-template-columns:minmax(0,1.4fr) minmax(330px,.75fr);gap:3rem}.hero h1{font-size:clamp(4rem,7.8vw,6.3rem)}.work-panel{grid-template-columns:1fr}.project-visual{min-height:390px}.service-row{grid-template-columns:.2fr .9fr 1.5fr}.service-row small{display:none}}@media (max-width:800px){html{scroll-padding-top:72px}.topbar{min-height:72px}.desktop-nav{display:none}.mobile-nav{display:block}.mobile-nav summary{width:48px;height:48px;color:var(--paper);background:var(--ink);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;list-style:none;display:flex}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav summary svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.8px;width:20px}.mobile-nav nav{border:1px solid var(--line);background:var(--paper);border-radius:10px;width:min(300px,100vw - 2rem);padding:.5rem;display:grid;position:absolute;top:72px;right:1rem;box-shadow:0 20px 45px #171b182e}.mobile-nav nav a{border-radius:6px;padding:.9rem 1rem;text-decoration:none}.mobile-nav nav a:hover{background:var(--forest-light)}.hero{grid-template-columns:1fr;gap:4rem;min-height:auto;padding-top:5.5rem}.hero h1{max-width:10ch;font-size:clamp(3.5rem,14vw,5.3rem)}.hero-plate{min-height:560px}.hero-meta{grid-template-columns:1fr}.hero-meta div{border-bottom:1px solid var(--line);grid-template-columns:110px 1fr;padding:.8rem 0;display:grid}.work-heading,.section-intro,.process-heading,.archive-heading{grid-template-columns:1fr;gap:1.5rem}.work-browser{grid-template-columns:1fr}.work-tabs{grid-template-columns:repeat(3,1fr);display:grid}.work-tabs button{border-right:1px solid #3e4741;grid-template-rows:auto auto;grid-template-columns:1fr;min-height:110px;padding:1rem}.work-tabs button>span,.work-tabs small{display:none}.work-panel{border-left:0}.archive-row{grid-template-columns:42px .75fr 1.25fr;padding:1.25rem 0}.archive-row>small{display:none}.service-row{grid-template-columns:48px 1fr;gap:.7rem 1rem;padding:1.5rem 0}.service-row p{grid-column:2}.process-list{grid-template-columns:1fr 1fr}.process-list li{border-bottom:1px solid #749186}.process-list li:nth-child(2n){border-right:0}.contact{grid-template-columns:1fr}footer{grid-template-columns:1fr;gap:.75rem}}@media (max-width:520px){.hero-actions{flex-direction:column;align-items:flex-start}.hero-plate{min-height:470px;padding:1rem}.hero-plate figcaption{flex-direction:column;align-items:flex-start}.work-heading h2,.section-intro h2,.process-heading h2,.contact h2{font-size:clamp(3rem,14vw,4.25rem)}.work{padding-inline:1rem}.work-tabs strong{font-size:.78rem}.project-visual{min-height:300px;padding:1.25rem}.project-copy{padding:2rem 1.25rem 2.5rem}.contact-form{grid-template-columns:1fr}.form-field-wide,.form-submit{grid-column:auto}.form-submit{flex-direction:column;align-items:flex-start}.archive-row{grid-template-columns:34px 1fr;gap:.8rem}.archive-row>p{grid-column:2}.process-list{grid-template-columns:1fr}.process-list li,.process-list li+li{border-right:0;min-height:220px;padding:1.5rem 0}.process-list>li>span{margin-bottom:2.5rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
