:root{--ink:#101312;--paper:#f4f1ea;--muted:#85877e;--line:rgba(16,19,18,.18);--acid:#c9f55b;--warm:#e7a77b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,"Noto Sans SC",sans-serif}body:has(.hero),body:has(.resume),body:has(.share){min-height:100vh}.grain{position:fixed;inset:0;pointer-events:none;opacity:.06;z-index:5;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E")}.page-pad{padding-left:clamp(24px,6vw,96px);padding-right:clamp(24px,6vw,96px)}.site-header{height:86px;padding:0 clamp(24px,6vw,96px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:10}.brand{font:700 24px/1 "DM Mono",monospace;letter-spacing:-.1em;color:var(--ink);text-decoration:none}.brand span,.eyebrow,.section-kicker{color:#5f8b17}.site-header nav{display:flex;gap:28px;margin-left:auto;margin-right:44px}.site-header nav a,.header-cta,.site-footer{font:500 11px "DM Mono",monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);text-decoration:none}.site-header nav a{opacity:.58}.site-header nav a:hover,.site-header nav a.active{opacity:1}.header-cta{border-bottom:1px solid var(--ink);padding-bottom:5px}.header-cta span,.button span,.text-link span,.arrow-link span,.big-email span{color:#5f8b17}.hero{min-height:calc(100svh - 86px);display:grid;grid-template-columns:minmax(0,1.05fr) minmax(380px,.95fr);align-items:center;gap:4vw;padding-top:72px;padding-bottom:72px;background:radial-gradient(circle at 80% 42%,rgba(201,245,91,.13),transparent 32%)}.eyebrow,.section-kicker{font:500 11px "DM Mono",monospace;letter-spacing:.1em}.status-dot{display:inline-block;width:7px;height:7px;background:#8ebf28;border-radius:50%;margin-right:8px;box-shadow:0 0 0 4px rgba(142,191,40,.15)}h1,h2,h3,p{margin-top:0}.hero h1,.share h1{max-width:800px;font-size:clamp(54px,8vw,124px);line-height:.96;letter-spacing:-.075em;margin:28px 0 34px;font-weight:800}.hero h1 em,.share h1 em,h2 em{font-style:normal;color:#6e832b}.hero-intro{font-size:clamp(17px,1.5vw,22px);line-height:1.65;max-width:620px;color:#555950}.hero-intro strong{color:var(--ink);font-weight:600}.hero-actions{display:flex;align-items:center;gap:28px;margin-top:42px}.button{display:inline-block;text-decoration:none;font:500 11px "DM Mono",monospace;letter-spacing:.05em;text-transform:uppercase;padding:16px 20px;cursor:pointer}.button-primary{background:var(--ink);color:var(--paper);border:1px solid var(--ink)}.button-primary:hover{background:#4d6020;border-color:#4d6020}.button-ghost{color:var(--ink);border:1px solid var(--line)}.text-link,.arrow-link{color:var(--ink);text-decoration:none;font:500 11px "DM Mono",monospace;letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid var(--line);padding-bottom:6px}.hero-orbit{aspect-ratio:1;max-width:590px;width:100%;justify-self:end;position:relative;display:grid;place-items:center}.orbit-ring{position:absolute;border:1px solid rgba(16,19,18,.22);border-radius:50%;animation:spin 28s linear infinite}.ring-one{inset:4%;border-style:dashed}.ring-two{inset:18%;border-color:rgba(95,139,23,.45);animation-direction:reverse;animation-duration:20s}.orbit-core{width:46%;aspect-ratio:1;border-radius:50%;background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:center;flex-direction:column;transform:rotate(-12deg);box-shadow:15px 18px 0 rgba(231,167,123,.52)}.orbit-core span{font-size:clamp(48px,7vw,90px);line-height:.8;letter-spacing:-.1em;font-weight:800}.orbit-core small,.orbit-label{font:500 10px/1.4 "DM Mono",monospace;letter-spacing:.1em}.orbit-label{position:absolute;background:var(--paper);padding:5px 8px}.label-top{top:11%;right:4%}.label-bottom{bottom:13%;left:4%}@keyframes spin{to{transform:rotate(360deg)}}.section-rule{border-top:1px solid var(--line)}.signal{padding-top:28px;padding-bottom:140px}.signal-grid{display:grid;grid-template-columns:1fr 1fr;gap:8vw;margin-top:72px}.signal-title,h2{font-size:clamp(34px,4.6vw,68px);line-height:1.02;letter-spacing:-.065em;margin:0;font-weight:700}.signal-body{max-width:480px;font-size:17px;line-height:1.8;color:#62665d}.signal-body .arrow-link{display:inline-block;margin-top:28px}.work{padding-top:28px;padding-bottom:150px}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;margin:72px 0 76px}.section-index{font:500 10px "DM Mono",monospace;color:var(--muted);letter-spacing:.12em}.capability-list{border-top:1px solid var(--line)}.capability-list article{display:grid;grid-template-columns:110px 1fr 40px;gap:20px;align-items:start;padding:30px 0;border-bottom:1px solid var(--line)}.cap-number,.timeline-meta{font:500 11px "DM Mono",monospace;color:var(--muted);letter-spacing:.08em}.capability-list h3{font-size:27px;letter-spacing:-.04em;margin-bottom:12px}.capability-list p{font-size:15px;line-height:1.7;max-width:600px;color:#62665d;margin:0}.cap-arrow{font-size:22px;color:#6e832b}.contact{background:var(--ink);color:var(--paper);padding-top:28px;padding-bottom:120px}.contact .section-kicker{color:var(--acid)}.contact h2{margin-top:70px}.contact h2 em{color:var(--acid)}.contact-row{display:flex;justify-content:space-between;align-items:end;margin-top:80px}.big-email{font-size:clamp(20px,3vw,44px);letter-spacing:-.06em;color:var(--paper);text-decoration:none;border-bottom:1px solid rgba(244,241,234,.4);padding-bottom:10px}.big-email span{font-size:.6em;color:var(--acid)}.contact-note{font:500 11px/1.6 "DM Mono",monospace;color:#aeb2a8;text-align:right}.site-footer{display:flex;justify-content:space-between;gap:20px;padding-top:24px;padding-bottom:24px;color:var(--muted)}.site-footer a{color:var(--ink);text-decoration:none}.resume,.share{padding-top:84px;padding-bottom:100px}.resume-top{display:flex;justify-content:space-between;align-items:end;padding-bottom:76px;border-bottom:1px solid var(--line)}.resume h1{font-size:clamp(58px,8vw,120px);letter-spacing:-.08em;margin:28px 0 14px;line-height:.9}.role{font-size:17px;color:#62665d}.resume-layout{display:grid;grid-template-columns:220px 1fr;gap:8vw;padding-top:74px}.resume aside{font-size:13px;line-height:1.8;color:#62665d}.aside-gap{margin-top:54px}.resume-main{max-width:800px}.resume-main section{padding-bottom:82px}.resume-lead{font-size:clamp(24px,3vw,40px);line-height:1.25;letter-spacing:-.05em;max-width:760px}.timeline article{display:grid;grid-template-columns:170px 1fr;gap:28px;padding:26px 0;border-top:1px solid var(--line)}.timeline h3,.skills-grid h3{font-size:18px;margin-bottom:11px}.timeline p,.skills-grid p{font-size:14px;line-height:1.8;color:#62665d}.skills-grid{display:grid;grid-template-columns:1fr 1fr;gap:7vw}.share{min-height:calc(100svh - 86px);display:grid;grid-template-columns:1fr 360px;gap:10vw;align-items:center}.share h1{font-size:clamp(52px,7vw,100px);margin:28px 0}.share-copy>p:not(.eyebrow){max-width:550px;color:#62665d;font-size:17px;line-height:1.8}.share-links{display:flex;gap:26px;flex-wrap:wrap;margin-top:42px}.share-links a{color:var(--ink);text-decoration:none;font:500 12px "DM Mono",monospace;border-bottom:1px solid var(--line);padding-bottom:7px}.qr-panel{background:var(--ink);padding:35px;text-align:center;color:var(--paper);display:flex;flex-direction:column;align-items:center;gap:20px}.qr-panel #qrcode{background:var(--paper);padding:12px;line-height:0}.qr-panel p{font:500 10px/1.6 "DM Mono",monospace;letter-spacing:.1em;color:var(--acid)}.qr-panel p span{color:#aeb2a8;font-size:9px}.qr-panel .button{width:100%}.qr-panel .text-link{color:var(--paper);border-color:rgba(244,241,234,.35)}.reveal{animation:rise .8s both}.reveal-delay{animation-delay:.16s}@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@media(max-width:800px){.site-header{height:72px}.site-header nav{display:none}.header-cta{margin-left:auto}.hero{min-height:auto;grid-template-columns:1fr;padding-top:70px;padding-bottom:90px}.hero-orbit{max-width:390px;margin:30px auto 0}.signal-grid,.share{grid-template-columns:1fr;gap:48px}.signal{padding-bottom:90px}.work{padding-bottom:100px}.section-heading{margin:52px 0 48px;display:block}.section-index{display:block;margin-top:22px}.capability-list article{grid-template-columns:45px 1fr 25px}.capability-list h3{font-size:22px}.contact{padding-bottom:80px}.contact-row{display:block;margin-top:55px}.contact-note{text-align:left;margin-top:38px}.resume,.share{padding-top:55px}.resume-top{display:block;padding-bottom:45px}.resume-top .button{margin-top:35px}.resume-layout{grid-template-columns:1fr;gap:42px;padding-top:52px}.resume aside{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px}.resume aside .section-kicker{margin:0}.resume aside p:not(.section-kicker){margin:0}.resume .aside-gap{margin-top:20px}.timeline article{grid-template-columns:1fr;gap:12px}.skills-grid{gap:30px}.share{padding-bottom:70px}.qr-panel{max-width:360px}.site-footer{font-size:9px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
/* Personal signal system */
.hero{position:relative;overflow:hidden;background-color:var(--ink);color:var(--paper);background-image:linear-gradient(rgba(244,241,234,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(244,241,234,.055) 1px,transparent 1px),radial-gradient(circle at 80% 42%,rgba(201,245,91,.17),transparent 32%);background-size:48px 48px,48px 48px,auto}
.hero:after{content:"L O U I E  L I  /  0 0 1";position:absolute;right:clamp(24px,6vw,96px);top:30px;color:rgba(244,241,234,.38);font:500 10px "DM Mono",monospace;letter-spacing:.12em}.hero .eyebrow{color:var(--acid)}.hero h1{color:var(--paper)}.hero h1 em{color:var(--acid)}.hero-intro{color:#b9beb4}.hero-intro strong{color:var(--paper)}.hero .text-link{color:var(--paper);border-color:rgba(244,241,234,.32)}.hero .button-primary{background:var(--acid);border-color:var(--acid);color:var(--ink)}.hero .button-primary:hover{background:#e0ff91;border-color:#e0ff91}
.hero-telemetry{display:flex;gap:clamp(24px,4vw,62px);margin-top:72px;padding-top:18px;border-top:1px solid rgba(244,241,234,.22);max-width:610px}.hero-telemetry div{display:flex;align-items:baseline;gap:9px}.hero-telemetry strong{font-size:clamp(20px,2.2vw,31px);letter-spacing:-.08em;color:var(--paper)}.hero-telemetry span{font:500 9px/1.35 "DM Mono",monospace;letter-spacing:.08em;color:#8f978c}.hero-orbit:before{content:"HK / GBA / APAC";position:absolute;top:0;left:50%;transform:translateX(-50%);font:500 9px "DM Mono",monospace;letter-spacing:.14em;color:rgba(244,241,234,.48)}.hero-orbit .orbit-ring{border-color:rgba(244,241,234,.26)}.hero-orbit .ring-two{border-color:rgba(201,245,91,.5)}.hero-orbit .orbit-core{background:var(--acid);color:var(--ink);box-shadow:15px 18px 0 var(--warm)}.hero-orbit .orbit-label{background:var(--ink);color:var(--paper);border:1px solid rgba(244,241,234,.28)}.orbit-node{position:absolute;width:10px;height:10px;background:var(--acid);border:3px solid var(--ink);border-radius:50%;box-shadow:0 0 0 1px var(--acid);animation:pulse 2.8s ease-in-out infinite}.node-one{top:18%;left:20%}.node-two{right:12%;top:47%;animation-delay:.7s}.node-three{bottom:17%;left:28%;animation-delay:1.4s}@keyframes pulse{50%{transform:scale(1.7);opacity:.55}}
.work{background:#ebe8df}.capability-list article{grid-template-columns:80px minmax(0,1fr) 40px;align-items:start;min-width:0}.capability-list article>div{grid-column:2;min-width:0}.cap-number{grid-column:1;grid-row:1;padding-top:6px}.cap-glyph{grid-column:1;grid-row:1;justify-self:end;margin-top:3px;width:34px;height:34px;display:grid;place-items:center;border:1px solid #789b28;border-radius:50%;font-size:19px;line-height:1;color:#6e832b;background:rgba(201,245,91,.22)}.capability-list article:hover{background:rgba(201,245,91,.18);padding-left:12px;padding-right:12px;transition:padding .25s ease,background .25s ease}.capability-list article:hover .cap-glyph{transform:rotate(12deg);transition:transform .25s ease}.section-rule{position:relative}.signal{background:var(--paper)}
@media(max-width:800px){.hero:after{top:18px;font-size:8px}.hero-telemetry{gap:18px;margin-top:52px}.hero-telemetry div{display:block}.hero-telemetry strong,.hero-telemetry span{display:block}.hero-telemetry span{margin-top:4px}.capability-list article{grid-template-columns:64px minmax(0,1fr) 25px;padding-left:0;padding-right:0}.cap-glyph{width:29px;height:29px;font-size:16px}.cap-number{padding-top:4px}.capability-list article:hover{padding-left:8px;padding-right:8px}}

/* Resume sheet tuning: steady type scale, deliberate rhythm, and a shared timeline mark. */
.resume-top{padding-bottom:48px}.resume h1{font-size:clamp(46px,5.4vw,78px);letter-spacing:-.075em;margin:24px 0 12px}.resume .role{font-size:15px}.resume-layout{padding-top:58px;gap:clamp(48px,7vw,110px)}.resume-main section{padding-bottom:62px}.resume-lead{font-size:clamp(20px,2.2vw,31px);line-height:1.32;letter-spacing:-.045em}.resume-main .section-kicker:before{content:"";display:inline-block;width:18px;height:2px;background:#9bc43e;vertical-align:middle;margin:0 10px 3px 0}.timeline{position:relative;margin-top:10px}.timeline:before{content:"";position:absolute;top:7px;bottom:7px;left:5px;width:1px;background:rgba(95,139,23,.38)}.timeline article{position:relative;padding:25px 0 25px 34px;border-top:0}.timeline article:before{content:"";position:absolute;left:0;top:31px;width:11px;height:11px;border:2px solid var(--paper);background:var(--acid);box-shadow:0 0 0 1px #789b28;border-radius:50%;z-index:1}.timeline-meta{line-height:1.55}.timeline h3{font-size:16px;line-height:1.35;margin-bottom:8px}.timeline p,.skills-grid p{font-size:14px;line-height:1.75}.skills-grid h3{font-size:16px}.resume aside{font-size:12px;line-height:1.75}.resume-top .button{margin-bottom:7px}
@media(max-width:800px){.resume h1{font-size:clamp(44px,14vw,64px)}.resume .role{font-size:14px;line-height:1.5}.resume-top{padding-bottom:38px}.resume-layout{padding-top:46px}.resume-lead{font-size:23px}.timeline article{padding-left:28px}.timeline h3{font-size:16px}.timeline p,.skills-grid p{font-size:14px}.resume-main section{padding-bottom:52px}}
