@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-vietnamese-opsz-normal.D9N6E8K1.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-ext-opsz-normal.IcJDqblK.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-opsz-normal.Cre6nC2_.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}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-ext-wght-normal.B5bTHO_g.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:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-wght-normal.BbzFLZTg.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}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.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{--ease:cubic-bezier(.22,1,.36,1);--spring:cubic-bezier(.34,1.56,.64,1);--font-display:"Bricolage Grotesque Variable","Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;--font-body:"Instrument Sans Variable","Instrument Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono Variable","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;color-scheme:light;--bg:#f7f8f2;--surface:#fff;--surface-2:#edf1e3;--line:#dee4d0;--line-strong:#b6c19f;--text:#161c0f;--muted:#525c46;--accent:#bdec72;--on-accent:#1a2408;--ink:#46700c;--accent-soft:#eaf7d3;--accent-shadow:#46700c66;--dots:#161c0f1a;--shadow:0 30px 60px -32px #161c0f4d;--ph-bg:#fff1e2;--ph-text:#8f4300;--ph-line:#e59a4f;--code-bg:#12150e;--code-accent:#cbf191}:root[data-theme=dark]{color-scheme:dark;--bg:#11130e;--surface:#191c15;--surface-2:#22271b;--line:#2c3324;--line-strong:#465039;--text:#edf1e6;--muted:#a7b09a;--accent:#c6ef86;--on-accent:#1a2408;--ink:#cbf191;--accent-soft:#2b3818;--accent-shadow:#c6ef8642;--dots:#edf1e612;--shadow:0 30px 60px -28px #000000a6;--ph-bg:#33220f;--ph-text:#ffbe7a;--ph-line:#a8692c;--code-bg:#0b0d08;--code-accent:#cbf191}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:88px}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;transition:background-color .4s var(--ease),color .4s var(--ease);flex-direction:column;margin:0;font-size:17px;line-height:1.6;display:flex;overflow-x:clip}a{color:var(--ink)}a:hover{color:var(--text)}img{max-width:100%;display:block}:focus-visible{outline:2.5px solid var(--ink);outline-offset:3px;border-radius:8px}[tabindex="-1"]:focus{outline:none}.display{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.025em}.mono{font-family:var(--font-mono)}.wrap{width:100%;max-width:1240px;margin:0 auto;padding:0 48px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ph{font-family:var(--font-mono);letter-spacing:0;border:1px dashed var(--ph-line);background:var(--ph-bg);color:var(--ph-text);vertical-align:middle;white-space:nowrap;border-radius:6px;align-items:center;padding:3px 7px;font-size:12px;font-weight:600;line-height:1.3;display:inline-flex}.skip{z-index:50;background:var(--text);color:var(--bg);border-radius:10px;padding:10px 16px;font-weight:600;text-decoration:none;position:absolute;top:-60px;left:16px}.skip:focus{color:var(--bg);top:12px}main{flex-direction:column;flex:1 0 auto;display:flex}.nav{z-index:20;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);transition:background-color .4s var(--ease),border-color .4s;position:sticky;top:0}.nav-in{justify-content:space-between;align-items:center;gap:24px;height:76px;display:flex}.logo{color:var(--text);align-items:center;gap:12px;min-height:44px;text-decoration:none;display:inline-flex}.logo:hover{color:var(--text)}.logo-mark{background:var(--text);width:40px;height:40px;color:var(--bg);letter-spacing:-.06em;transition:transform .45s var(--spring),background-color .4s;border-radius:12px;place-items:center;font-size:19px;font-weight:800;display:grid}.logo:hover .logo-mark{transform:rotate(-8deg)scale(1.06)}.logo-name{white-space:nowrap;font-size:16px;font-weight:600}.logo-hint{color:var(--muted);opacity:0;transition:opacity .25s,transform .3s var(--ease);font-size:13px;transform:translate(-6px)}.logo:hover .logo-hint{opacity:1;transform:none}.nav-links{align-items:center;gap:6px;display:flex}.nlink{min-height:44px;color:var(--muted);transition:color .2s,background-color .25s var(--ease);border-radius:999px;align-items:center;padding:0 14px;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex;position:relative}.nlink:hover{color:var(--text);background:var(--surface-2)}.nav-actions{align-items:center;gap:12px;display:flex}.menu-btn{border:1.5px solid var(--line-strong);width:44px;height:44px;color:var(--text);cursor:pointer;background:0 0;border-radius:12px;justify-content:center;align-items:center;display:none}.sheet{background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow);animation:sheet .3s var(--ease) both;flex-direction:column;gap:4px;padding:12px 20px 24px;display:flex;position:absolute;top:100%;left:0;right:0}.sheet[hidden]{display:none}.sheet a{border-bottom:1px solid var(--line);min-height:52px;color:var(--text);justify-content:space-between;align-items:center;padding:0 4px;font-size:18px;font-weight:600;text-decoration:none;display:flex}.sheet-num{color:var(--muted);font-size:12px}@keyframes sheet{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.toggle{cursor:pointer;min-height:44px;color:var(--muted);background:0 0;border:0;align-items:center;padding:0 4px;display:inline-flex;position:relative}.track{background:var(--surface-2);border:1.5px solid var(--line-strong);width:58px;height:32px;transition:background-color .35s var(--ease),border-color .35s;border-radius:999px;position:relative}.knob{background:var(--accent);width:23px;height:23px;color:var(--on-accent);transition:transform .5s var(--spring),background-color .35s;border-radius:50%;place-items:center;display:grid;position:absolute;top:3px;left:3px}[data-theme=dark] .knob{transform:translate(26px)}.toggle:hover .knob{box-shadow:0 0 0 5px var(--accent-soft)}.knob svg{width:14px;height:14px;transition:opacity .3s,transform .5s var(--ease);position:absolute}.i-moon{opacity:0;transform:rotate(-90deg)scale(.4)}[data-theme=dark] .i-sun{opacity:0;transform:rotate(90deg)scale(.4)}[data-theme=dark] .i-moon{opacity:1;transform:none}.quip{white-space:nowrap;background:var(--text);color:var(--bg);font:500 13px/1.3 var(--font-body);opacity:0;pointer-events:none;transition:opacity .2s,transform .3s var(--ease);border-radius:10px;padding:8px 12px;position:absolute;top:calc(100% + 10px);right:-8px;transform:translateY(-4px)}.toggle:hover .quip,.toggle:focus-visible .quip,.quip-on .quip{opacity:1;transform:none}.btn{min-height:52px;font:600 16px/1 var(--font-body);cursor:pointer;white-space:nowrap;transition:transform .25s var(--ease),background-color .25s var(--ease),box-shadow .3s var(--ease),border-color .25s,color .25s;border:1.5px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:0 24px;text-decoration:none;display:inline-flex}.btn svg{transition:transform .3s var(--ease);flex:none}.btn:hover{transform:translateY(-2px)}.btn:hover .go{transform:translate(4px)}.btn:hover .back{transform:translate(-4px)}.btn:hover .up{transform:translate(2px,-2px)}.btn:hover .dl{transform:translateY(2px)}.btn:active{transition-duration:.1s;transform:translateY(0)scale(.97)}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{color:var(--on-accent);box-shadow:0 14px 28px -12px var(--accent-shadow)}.btn-ghost{color:var(--text);border-color:var(--line-strong);background:0 0}.btn-ghost:hover{color:var(--text);border-color:var(--text);background:var(--surface)}.btn-sm{min-height:44px;padding:0 18px;font-size:15px}.alink{min-height:44px;color:var(--ink);transition:background-size .3s var(--ease);background:linear-gradient(currentColor,currentColor) 0 calc(100% - 10px)/0% 1.5px no-repeat;align-items:center;gap:6px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.alink:hover{color:var(--ink);background-size:100% 1.5px}.alink svg{transition:transform .3s var(--ease)}.alink:hover svg{transform:translate(2px,-2px)}.hero{padding:72px 0 88px;position:relative}.hero-bg{background-image:radial-gradient(var(--dots) 1.2px,transparent 1.6px);pointer-events:none;background-size:24px 24px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 60% at 70% 40%,#000 30%,#0000 75%);mask-image:radial-gradient(70% 60% at 70% 40%,#000 30%,#0000 75%)}.hero-grid{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);align-items:center;gap:72px;display:grid;position:relative}.hero-copy{flex-direction:column;align-items:flex-start;gap:24px;display:flex}.status{background:var(--surface);border:1px solid var(--line);color:var(--muted);border-radius:999px;flex-wrap:wrap;align-items:center;gap:10px;margin:0;padding:7px 14px 7px 12px;font-size:14px;font-weight:500;display:inline-flex}.dot{background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 4px var(--accent-soft);border-radius:50%;flex:none}.eyebrow{color:var(--muted);letter-spacing:.02em;margin:0;font-size:14px}.hero-title{text-wrap:balance;margin:0;font-size:94px;font-weight:750;line-height:.98}.hl{white-space:nowrap;background:linear-gradient(var(--accent),var(--accent)) no-repeat 0 86%/100% .3em;animation:swipe .6s .55s var(--ease) both;position:relative}@keyframes swipe{0%{background-size:0% .3em}to{background-size:100% .3em}}.lead{max-width:34em;color:var(--muted);text-wrap:pretty;margin:0;font-size:19px;line-height:1.6}.lead strong{color:var(--text);font-weight:600}.cta-row{flex-wrap:wrap;align-items:center;gap:12px;margin-top:4px;display:flex}.proof{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 20px;margin:2px 0 0;font-size:15px;display:flex}.proof span{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.proof span:before{content:"";background:var(--ink);border-radius:50%;flex:none;width:6px;height:6px}.proof strong{color:var(--text);font-weight:600}.stack-row{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.stack-row li{font:500 13px/1 var(--font-mono);background:var(--surface-2);color:var(--text);border-radius:8px;padding:8px 11px}.rise{animation:rise .6s var(--ease) both;animation-delay:var(--d,0s)}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.hero-visual{perspective:1600px;position:relative}.flip{height:520px;position:relative}.flip-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .6s var(--ease);position:relative}.flipped .flip-inner{transform:rotateY(180deg)}.face{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:24px;flex-direction:column;transition:background-color .4s,border-color .4s;display:flex;position:absolute;inset:0;overflow:hidden}.face-back{background:var(--code-bg);color:#d6e4dd;border-color:#ffffff14;transform:rotateY(180deg)}.win-bar{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:7px;height:44px;padding:0 16px;display:flex}.face-back .win-bar{border-color:#ffffff14}.wdot{background:var(--line-strong);border-radius:50%;width:11px;height:11px}.face-back .wdot{background:#35423c}.win-title{color:var(--muted);margin-left:10px;font-size:12px}.face-back .win-title{color:#8fa59a}.dash{flex:1;grid-template:"map chart"minmax(0,1fr)"map appr"minmax(0,1fr)/minmax(0,1.2fr) minmax(0,1fr);gap:14px;padding:16px;display:grid}.panel{background:var(--surface-2);animation:rise .55s var(--ease) both;animation-delay:var(--d,0s);border-radius:16px;transition:background-color .4s;position:relative;overflow:hidden}.panel-label{color:var(--muted);font-size:11px;position:absolute;top:10px;left:12px}.map-panel{background-image:radial-gradient(var(--dots) 1.2px,transparent 1.6px);background-size:14px 14px;grid-area:map}.map-panel svg{width:100%;height:100%;position:absolute;inset:0}.m-zone{fill:var(--accent);opacity:.28}.m-route{fill:none;stroke:var(--ink);stroke-width:2px;stroke-dasharray:4 6;stroke-linecap:round}.m-pin{fill:var(--ink);transform-box:fill-box;transform-origin:50%;animation:pop .45s var(--spring) both;animation-delay:var(--d,0s)}@keyframes pop{0%{transform:scale(0)}to{transform:scale(1)}}.chart-panel{grid-area:chart;align-items:flex-end;gap:7px;padding:34px 14px 14px;display:flex}.bar{background:var(--line-strong);transform-origin:bottom;animation:grow .6s var(--ease) both;animation-delay:var(--d,0s);border-radius:6px 6px 3px 3px;flex:1;transition:background-color .25s}.bar.hi,.chart-panel:hover .bar{background:var(--accent)}@keyframes grow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.appr-panel{flex-direction:column;grid-area:appr;justify-content:center;gap:10px;padding:32px 14px 14px;display:flex}.appr-row{align-items:center;gap:10px;display:flex}.av{background:var(--line-strong);border-radius:50%;flex:none;width:22px;height:22px}.sk-line{background:var(--line-strong);opacity:.7;border-radius:4px;flex:1;height:8px}.pill-ok{background:var(--accent-soft);color:var(--ink);border-radius:999px;flex:none;padding:4px 9px;font-size:11px;font-weight:600}.pill-wait{background:var(--surface);color:var(--muted);border-radius:999px;flex:none;padding:4px 9px;font-size:11px;font-weight:600}.face-foot{border-top:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:12px;padding:12px 12px 12px 18px;display:flex}.face-back .face-foot{border-color:#ffffff14}.foot-note{color:var(--muted);font-size:12px}.face-back .foot-note{color:#8fa59a}.flip-btn{border:1.5px solid var(--line-strong);background:var(--surface);min-height:44px;color:var(--text);font:600 14px/1 var(--font-body);cursor:pointer;transition:transform .25s var(--ease),border-color .25s,background-color .25s;border-radius:999px;align-items:center;gap:8px;padding:0 16px;display:inline-flex}.flip-btn:hover{border-color:var(--text);transform:translateY(-2px)}.flip-btn svg{transition:transform .45s var(--ease)}.flip-btn:hover svg{transform:rotate(180deg)}.face-back .flip-btn{color:#e6f0eb;background:0 0;border-color:#3a4a42}.face-back .flip-btn:hover{border-color:#e6f0eb}.code{flex:1;margin:0;padding:22px 24px;font-size:14px;line-height:1.85;overflow:hidden}.ln{white-space:pre}.i1{padding-left:2ch}.i2{padding-left:4ch}.i3{padding-left:6ch}.c-k{color:#c7a6ff}.c-f{color:var(--code-accent)}.c-s{color:#f4c98e}.c-c{color:#7e948a;font-style:italic}.c-t{color:var(--code-accent)}.c-a{color:#9ccbff}.sticker{z-index:3;transition:transform .45s var(--spring);cursor:default;border-radius:12px;padding:9px 14px;font-size:14px;font-weight:700;line-height:1.2;position:absolute;box-shadow:0 12px 24px -14px #00000073}.s1{background:var(--accent);color:var(--on-accent);top:-20px;right:-14px;transform:rotate(5deg)}.s1:hover{transform:rotate(-2deg)scale(1.06)}.s2{background:var(--text);color:var(--bg);font-size:13px;font-weight:600;bottom:-18px;left:-22px;transform:rotate(-4deg)}.s2:hover{transform:rotate(2deg)scale(1.06)}.section{padding:88px 0;position:relative}.section+.section{border-top:1px solid var(--line)}.sec-head{flex-direction:column;gap:14px;max-width:760px;margin-bottom:48px;display:flex}.kicker{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:10px;margin:0;font-size:13px;display:flex}.k-num{background:var(--accent-soft);height:24px;color:var(--ink);border-radius:6px;place-items:center;padding:0 8px;font-weight:600;display:inline-grid}.h2{text-wrap:balance;margin:0;font-size:56px;font-weight:720;line-height:1.02}.h2-soft{color:var(--muted);font-weight:500}.sec-sub{color:var(--muted);text-wrap:pretty;max-width:38em;margin:0;font-size:18px}.reveal-on .reveal{opacity:0;transition:opacity .6s var(--ease),translate .7s var(--ease);transition-delay:var(--reveal-delay,0s);translate:0 28px}.reveal-on .reveal.in{opacity:1;translate:none}.about-grid{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start;gap:80px;display:grid}.photo{aspect-ratio:4/5;background:var(--surface-2);border:1.5px dashed var(--line-strong);color:var(--muted);transition:transform .5s var(--spring);border-radius:28px;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:relative;overflow:hidden;transform:rotate(-2deg)}.photo:hover{transform:rotate(0)scale(1.01)}.photo.has-img{border-style:solid;border-color:var(--line)}.photo img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.photo-cap{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0 0 8px;font-size:14px;display:flex}.about-copy{flex-direction:column;gap:22px;display:flex}.about-copy p.body{color:var(--muted);text-wrap:pretty;margin:0;font-size:19px;line-height:1.65}.about-copy p.body strong{color:var(--text);font-weight:600}.facts{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:12px 0 0;display:grid}.fact{border-bottom:1px solid var(--line);padding:16px 16px 16px 0}.fact dt{font:500 12px/1.4 var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.fact dd{color:var(--text);margin:4px 0 0;font-size:16px;font-weight:600}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;display:grid}.card{background:var(--surface);border:1px solid var(--line);transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .3s,background-color .4s;border-radius:26px;flex-direction:column;display:flex;position:relative;overflow:hidden}.card:hover{box-shadow:var(--shadow);border-color:var(--line-strong);transform:translateY(-6px)}.thumb{background:var(--surface-2);background-image:radial-gradient(var(--dots) 1.2px,transparent 1.6px);border-bottom:1px solid var(--line);background-size:16px 16px;height:220px;position:relative;overflow:hidden}.thumb svg,.thumb img{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease);position:absolute;inset:0}.card:hover .thumb svg,.card:hover .thumb img{transform:scale(1.045)}.thumb .ph{position:absolute;bottom:14px;right:14px}.thumb-shot{background:#fff;height:260px}.t-fill{fill:var(--surface)}.t-line{fill:none;stroke:var(--line-strong);stroke-width:2px}.t-soft{fill:var(--line-strong);opacity:.6}.t-acc{fill:var(--accent)}.t-ink{fill:var(--ink)}.t-stroke-ink{fill:none;stroke:var(--ink);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.t-stamp{font:700 18px var(--font-mono);fill:var(--surface)}.card-body{flex-direction:column;flex:1;gap:18px;padding:28px 30px 22px;display:flex}.card-meta{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.tag{background:var(--surface-2);color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.tag-acc{background:var(--accent-soft);color:var(--ink)}.h3{margin:0;font-size:32px;font-weight:700;line-height:1.08}.card-sub{color:var(--muted);margin:6px 0 0;font-size:16px}.pr{flex-direction:column;gap:14px;margin:0;display:flex}.pr dt{font:600 12px/1.4 var(--font-mono);color:var(--ink);text-transform:uppercase;letter-spacing:.06em}.pr dd{color:var(--text);text-wrap:pretty;margin:3px 0 0;font-size:15.5px;line-height:1.58}.chips{flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;display:flex}.chips li{font:500 12.5px/1 var(--font-mono);background:var(--surface-2);color:var(--text);transition:background-color .2s,color .2s,transform .25s var(--ease);border-radius:7px;padding:7px 10px}.card-links{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px 22px;margin-top:auto;padding-top:12px;display:flex}.nolink{min-height:44px;color:var(--muted);align-items:center;gap:8px;font-size:14px;display:inline-flex}.exp-grid{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);align-items:start;gap:80px;display:grid}.exp-grid .sec-head{margin-bottom:0;position:sticky;top:120px}.timeline{flex-direction:column;margin:0;padding:0;list-style:none;display:flex;position:relative}.timeline:before{content:"";background:var(--line);width:2px;position:absolute;top:10px;bottom:10px;left:7px}.t-item{padding:0 0 40px 44px;position:relative}.t-item:last-child{padding-bottom:0}.t-dot{background:var(--bg);border:2px solid var(--line-strong);width:16px;height:16px;transition:background-color .3s,border-color .3s,transform .4s var(--spring);border-radius:50%;position:absolute;top:6px;left:0}.t-item:hover .t-dot{background:var(--accent);border-color:var(--ink);transform:scale(1.2)}.t-now .t-dot{background:var(--accent);border-color:var(--ink)}.t-date{color:var(--muted);margin:0;font-size:13px}.t-role{margin:6px 0 0;font-size:24px;font-weight:700;line-height:1.2}.t-org{color:var(--text);flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 0;font-size:16px;display:flex}.t-desc{color:var(--muted);text-wrap:pretty;max-width:40em;margin:10px 0 0;font-size:16px;line-height:1.6}.t-group{font:600 13px/1 var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:48px 0 24px 44px}.t-group:first-child{margin-top:0}.skills-grid{grid-template-rows:auto auto;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:24px;display:grid}.sk{background:var(--surface);border:1px solid var(--line);border-radius:26px;flex-direction:column;gap:22px;padding:30px;transition:border-color .3s,background-color .4s;display:flex}.sk:hover{border-color:var(--line-strong)}.sk-main{grid-row:1/span 2}.sk-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.sk-title{margin:0;font-size:30px;font-weight:720;line-height:1.1}.sk-note{color:var(--muted);margin:-10px 0 0;font-size:15px}.sk-group{flex-direction:column;gap:10px;display:flex}.sk-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:12px}.chips-lg li{border-radius:10px;padding:10px 13px;font-size:14px}.chips-lg li:hover,.chips li:hover{background:var(--accent);color:var(--on-accent);transform:translateY(-2px)}.chips-main li{background:var(--accent-soft);color:var(--text)}.contact{flex-grow:1;align-items:center;display:flex}.contact-card{background:var(--accent);color:var(--on-accent);border-radius:36px;flex-direction:column;gap:24px;padding:64px 72px;transition:background-color .4s;display:flex;position:relative;overflow:hidden}.contact-card:after{content:"";pointer-events:none;background-image:radial-gradient(#06231a29 1.4px,#0000 1.8px);background-size:18px 18px;border-radius:50%;width:360px;height:360px;position:absolute;top:-60px;right:-60px}.contact-card .kicker{color:var(--on-accent)}.contact-card .k-num{background:var(--on-accent);color:var(--accent)}.contact-card :focus-visible{outline-color:var(--on-accent)}.contact-title{text-wrap:balance;max-width:12em;margin:0;font-size:76px;font-weight:780;line-height:.98}.contact-sub{opacity:.9;max-width:34em;margin:0;font-size:19px}.email-row{flex-wrap:wrap;align-items:center;gap:12px;margin-top:10px;display:flex}.email{color:var(--on-accent);transition:background-size .35s var(--ease);overflow-wrap:anywhere;background:linear-gradient(currentColor,currentColor) 0 100%/100% 3px no-repeat;padding-bottom:4px;font-size:40px;font-weight:700;text-decoration:none}.email:hover{color:var(--on-accent);background-position:100% 100%;background-size:0% 3px}.btn-dark{background:var(--on-accent);color:var(--accent)}.btn-dark:hover{color:var(--accent);box-shadow:0 14px 28px -12px #00000073}.btn-line{color:var(--on-accent);border-color:var(--on-accent);background:0 0}.btn-line:hover{color:var(--on-accent);background:#ffffff47}.copy-note{min-height:26px;margin:0;font-size:15px;font-weight:600}.contact-links{flex-wrap:wrap;gap:12px;margin-top:6px;display:flex}.contact-card .ph{border-color:var(--on-accent);color:var(--on-accent);background:#ffffff8c}.footer{padding:40px 0 48px}.foot-in{justify-content:space-between;align-items:flex-end;gap:32px;display:flex}.foot-copy{flex-direction:column;gap:8px;display:flex}.foot-copy p{color:var(--muted);margin:0;font-size:15px}.foot-copy .foot-main{color:var(--text);font-weight:500}.foot-egg{font-size:13px}.totop{min-height:44px;color:var(--text);align-items:center;gap:10px;padding:0 4px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.totop svg{transition:transform .35s var(--spring)}.totop:hover{color:var(--text)}.totop:hover svg{transform:translateY(-4px)}.totop-quip{color:var(--muted);opacity:0;transition:opacity .2s,transform .3s var(--ease);font-size:13px;font-weight:500;transform:translate(6px)}.totop:hover .totop-quip{opacity:1;transform:none}@media (width<=1100px){.hero-title{font-size:72px}.hero-grid,.about-grid,.exp-grid{gap:48px}.contact-title{font-size:60px}.contact-card{padding:56px}.code{padding:18px 20px;font-size:12.5px}}@media (width<=960px){.logo-hint{display:none}.nlink{padding:0 10px}.hero-grid{grid-template-columns:minmax(0,1fr);gap:64px}.work-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){body{font-size:16px}html{scroll-padding-top:72px}.wrap{padding:0 20px}.ph{white-space:normal}.nav-in{height:64px}.nav-links,.nav-cta,.logo-hint{display:none}.menu-btn{display:inline-flex}.logo-name{font-size:15px}.hero{padding:32px 0 56px}.hero-grid{gap:56px}.hero-copy{gap:20px}.hero-title{font-size:54px;line-height:1}.lead{font-size:17px}.cta-row{flex-direction:column;align-items:stretch;width:100%}.flip{height:400px}.dash{grid-template-rows:minmax(0,1.3fr) minmax(0,1fr);grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"map map""chart appr";gap:10px;padding:12px}.code{padding:16px;font-size:12px;line-height:1.75}.foot-note{display:none}.face-foot{justify-content:flex-end}.s1{right:-4px}.s2{left:-6px}.section{padding:56px 0}.sec-head{margin-bottom:36px}.h2{font-size:40px}.sec-sub{font-size:16px}.about-grid{grid-template-columns:minmax(0,1fr);gap:40px}.photo{aspect-ratio:4/3}.about-copy p.body{font-size:17px}.facts{grid-template-columns:minmax(0,1fr)}.work-grid{gap:20px}.thumb{height:150px}.thumb-shot{height:200px}.card-body{gap:14px;padding:22px 20px 16px}.h3{font-size:28px}.exp-grid{grid-template-columns:minmax(0,1fr);gap:40px}.exp-grid .sec-head{position:static}.t-item{padding-left:36px}.t-group{margin-left:36px}.t-role{font-size:21px}.skills-grid{grid-template-columns:minmax(0,1fr)}.sk-main{grid-row:auto}.sk{padding:22px}.sk-title{font-size:26px}.contact-card{border-radius:28px;padding:40px 22px}.contact-title{font-size:44px}.contact-sub{font-size:17px}.email{font-size:21px}.contact-links{flex-direction:column;align-items:stretch}.foot-in{flex-direction:column;align-items:flex-start;gap:20px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-delay:0s!important}}.preloader{display:none}html.preload{overflow:hidden}html.preload .preloader{z-index:100;background:var(--bg);color:var(--text);transition:transform .75s var(--ease),opacity .4s var(--ease);place-items:center;display:grid;position:fixed;inset:0}.pl-inner{transition:opacity .3s,transform .5s var(--ease);flex-direction:column;align-items:center;gap:18px;display:flex}.pl-mark{background:var(--text);width:72px;height:72px;color:var(--bg);letter-spacing:-.06em;animation:pl-pop .6s var(--spring) both;border-radius:22px;place-items:center;font-size:34px;font-weight:800;display:grid}.pl-line{color:var(--muted);animation:pl-fade .5s .15s var(--ease) both;margin:0;font-size:13px}.pl-bar{background:var(--surface-2);width:160px;height:4px;animation:pl-fade .5s .25s var(--ease) both;border-radius:4px;overflow:hidden}.pl-bar span{border-radius:inherit;background:var(--accent);transform-origin:0;width:100%;height:100%;animation:2.2s cubic-bezier(.2,.7,.2,1) .3s forwards pl-fill;display:block;transform:scaleX(0)}html.preload-done .pl-bar span{transition:transform .25s var(--ease);animation:none;transform:scaleX(1)}html.preload-done .pl-inner{opacity:0;transition-delay:.15s;transform:translateY(-12px)}html.preload-done .preloader{transition-delay:.3s;transform:translateY(-100%)}@keyframes pl-pop{0%{opacity:0;transform:scale(.6)rotate(-12deg)}to{opacity:1;transform:none}}@keyframes pl-fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pl-fill{to{transform:scaleX(.85)}}html.preload .rise,html.preload .hl,html.preload .panel,html.preload .bar,html.preload .m-pin{animation-play-state:paused}@media (prefers-reduced-motion:reduce){html.preload-done .preloader{opacity:0;transition-delay:0s;transform:none}}
