@font-face{font-family:Source;src:url(brand-assets/SourceSans3-Regular.ttf);font-weight:400;font-display:swap}
@font-face{font-family:Source;src:url(brand-assets/SourceSans3-Semibold.ttf);font-weight:600 900;font-display:swap}
@font-face{font-family:Noto;src:url(brand-assets/NotoSansSC-brand.ttf);font-weight:100 900;font-display:swap}
:root{--bg:#f5f4ef;--ink:#161c22;--muted:#667078;--nav:#161c22;--strip:#667078;--panel:#eeeee8;--line:#d4d7d3;--line-soft:#d4d7d380;--accent:#637b6c;--accent-bright:#52665b;--pill:#161c22;--pill-ink:#f5f4ef;--sans:Source,Noto,'Microsoft YaHei',sans-serif;--display:var(--sans);--max:1440px;--gutter:clamp(24px,5.6vw,88px)}
body{background:var(--bg);color:var(--ink);font:15px/1.8 var(--sans)}a{color:inherit;text-decoration:none}button{font-family:inherit}::selection{background:#c8d6cc;color:#161c22}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#161c2240}:focus-visible{outline:2px solid #526d60;outline-offset:4px}
nav,nav.scrolled{height:82px;padding:0 var(--gutter);border:0;background:var(--bg);position:relative;gap:35px;backdrop-filter:none;z-index:100}.brand-lockup{width:116px;height:31px;display:block;object-fit:contain}.brand-group{gap:28px}.lang-toggle{border:0;padding:0;color:var(--muted);border-radius:0;background:none;font-size:12px;font-weight:400}.lang-toggle:hover{color:var(--ink)}.nav-links{margin-left:auto;gap:35px}.nav-links a{font-size:13px;padding:25px 0;color:var(--ink);font-weight:400}.nav-links a:hover,.nav-links a.active{color:var(--ink)}.nav-links a:after{bottom:18px;height:1px;background:var(--ink)}nav>.pill{padding:0;height:auto;border:0;font-size:13px;font-weight:400;background:none;color:var(--ink)}nav>.pill:hover{transform:none}.burger{background:none;border:0;backdrop-filter:none}.burger i{background:var(--ink)}.mobile-menu{background:#f5f4effa;inset:82px 0 0;z-index:99}.mobile-menu a{color:var(--ink)}
.identity{max-width:var(--max);margin:auto;padding:55px var(--gutter) 0}.identity-heading{display:grid;grid-template-columns:1fr 1.4fr 1fr;align-items:baseline;gap:24px;font-size:13px}.identity-heading h1{font-size:15px;font-weight:400;letter-spacing:.08em}.identity-heading p{color:var(--muted);font-size:13px}.identity-heading>span{font-size:10px;letter-spacing:.09em;text-align:right;color:var(--muted)}.identity-wordmark{display:block;width:100%;height:auto;margin:49px 0 35px}.identity-bottom{display:flex;justify-content:space-between;align-items:center;padding:17px 0 21px;border-bottom:1px solid var(--ink);font-size:11px;color:var(--muted)}.identity-bottom a{color:var(--ink);padding:5px 0}.identity-bottom a:hover{opacity:.6}
.page-hero{padding-top:65px}.page-title,.sec-title{font-weight:600}.page-title{font-size:clamp(44px,6vw,80px);line-height:1.2}.sec-title{font-size:clamp(30px,4vw,52px);line-height:1.3}.pill.ghost,.page-cta{color:var(--ink);border-color:var(--line)}.ghost-link{color:var(--ink)}.ghost-link:hover{color:var(--accent)}.ghost-link::after{background:var(--line)}.pill.ghost:hover{color:var(--ink);border-color:var(--ink)}
.partner-strip{border-color:var(--line-soft)}.partner{color:var(--muted)}.stats-main .stat-number{color:var(--ink);font-weight:600}.stats-main .stat-number #growthNum{font-size:1em;color:var(--ink);margin-left:0;letter-spacing:-.04em}.stat-cell:hover,.resume-row:hover,.skill-cell:hover,.contact-item:hover{background:#e8ebe4}.cat-name,.tag,.resume-row .where{color:var(--muted)}.cat-track{background:#161c221a}.tag{border-color:var(--line)}.tag:hover{color:var(--ink)}.contact-item a,.contact-item a:hover,.copy-btn,.copy-btn:hover,.section-link,.section-link:hover,footer a:hover{color:var(--ink)}.copy-btn,.section-link{border-color:var(--line)}.copy-btn:hover,.contact-item:hover{border-color:#7e9284}.section-link:hover{border-color:var(--ink)}
.stats-main .stat-number{font-size:clamp(48px,7.5vw,100px)}.stats-main .stat-number>span:last-child{display:block;font-size:14px;line-height:1.5;margin:16px 0 0;white-space:nowrap}
.work-feature,.work-tile,.vfx-tile{color:#f5f4ef;box-shadow:none}.work-tag,.work-tile .cap small{color:#d2ded6}.work-meta{color:#d3d7d8}.work-feature.tone-white video{filter:brightness(.85)}.work-feature.tone-white:hover video{filter:brightness(.96)}.play-mark{border-color:#ffffff90}.vfx-label{color:var(--accent)}.portrait img{filter:none}.reveal{opacity:1;transform:none}
/* Original LIGHT PASS A motion: fixed geometry, full 2-second playback, gentle exit. */
.intro{position:fixed;inset:0;background:#161c22;z-index:1000;display:none;place-items:center;transition:opacity .42s ease;overflow:hidden}.intro video{width:100%;height:100%;object-fit:contain;position:absolute;inset:0;transform:none;filter:none;transition:none}.intro-skip{display:block;position:absolute;bottom:32px;right:var(--gutter);z-index:1;border:1px solid #ffffff50;background:transparent;color:#f5f4ef;padding:8px 16px;font-size:12px;cursor:pointer}.intro-label{position:absolute;left:var(--gutter);bottom:37px;color:#9ba3a7;font-size:10px;letter-spacing:.16em}.intro.leaving{opacity:0;pointer-events:none}.intro-hold{overflow:hidden}.intro-hold nav,.intro-hold main,.intro-hold footer{visibility:hidden}
/* The masthead gate only paints when this visit will actually play the intro, so returning to the homepage never flashes the ink panel. */
html.intro-live .intro{display:grid}
/* Match the supplied desktop masthead proportions. */
@media(min-width:761px){:root{--gutter:clamp(24px,4.9vw,88px)}.brand-lockup{width:174px;height:48px}.brand-group{gap:40px}.lang-toggle{font-size:14px}.nav-links{gap:50px}.nav-links a,nav>.pill{font-size:18px}.identity{padding-top:75px}.identity-heading h1{font-size:20px}.identity-heading p{font-size:18px}.identity-heading>span{font-size:13px}.identity-wordmark{margin:58px 0 72px}.identity-bottom{font-size:15px;padding:17px 0 40px}}
@media(min-width:761px) and (max-width:1000px){.brand-lockup{width:140px;height:38px}.brand-group{gap:24px}.nav-links{gap:30px}.nav-links a,nav>.pill{font-size:15px}.identity{padding-top:50px}.identity-heading h1{font-size:17px}.identity-heading p{font-size:15px}.identity-heading>span{font-size:11px}.identity-wordmark{margin:44px 0 44px}.identity-bottom{font-size:13px;padding-bottom:27px}}
@media(max-width:760px){nav,nav.scrolled{height:72px;gap:16px}.brand-group{gap:23px}.brand-lockup{width:108px;height:29px}.nav-links{display:none}.mobile-menu{inset:72px 0 0}.identity{padding-top:32px}.identity-heading{grid-template-columns:1fr auto;gap:9px 10px}.identity-heading h1{font-size:14px}.identity-heading p{font-size:11px;grid-row:2}.identity-heading>span{font-size:9px;grid-column:2;grid-row:1}.identity-wordmark{margin:32px 0 23px}.identity-bottom{font-size:10px;gap:16px;padding:13px 0 18px}.identity-bottom p{max-width:190px}.identity-bottom a{white-space:nowrap}.page-hero{padding-top:36px}.intro video{width:min(177.78dvh,250vw);max-width:none;height:100dvh;left:50%;transform:translateX(-50%);object-fit:contain}.intro-skip{bottom:25px}.intro-label{bottom:31px;font-size:9px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.intro,html.intro-live .intro{display:none}.intro-hold{overflow:auto}.intro-hold nav,.intro-hold main,.intro-hold footer{visibility:visible}}

/* Full-screen LIGHT PASS, followed by one continuous dissolve into the masthead. */
.intro{inset:0;width:100%;height:100dvh;background:#161c22;touch-action:none;overscroll-behavior:contain;transition:opacity .9s cubic-bezier(.22,.61,.36,1),background-color .85s ease}
.intro video{inset:0;width:100%;max-width:none;height:100%;object-fit:cover;object-position:center;transform:none;filter:none;transition:opacity .65s cubic-bezier(.22,.61,.36,1)}
.intro.leaving{opacity:0;background-color:#f5f4ef;pointer-events:auto}.intro.leaving video{opacity:0}
.intro-hold,.intro-entering{overflow:hidden;overscroll-behavior:none}
.intro-hold nav,.intro-hold main,.intro-hold footer{visibility:visible;opacity:0;transform:translateY(8px)}
.intro-entering nav,.intro-entering main,.intro-entering footer{visibility:visible;animation:linus-home-enter .9s cubic-bezier(.22,.61,.36,1) both}
@keyframes linus-home-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.intro,html.intro-live .intro{display:none}.intro-hold,.intro-entering{overflow:auto}.intro-hold nav,.intro-hold main,.intro-hold footer,.intro-entering nav,.intro-entering main,.intro-entering footer{visibility:visible;opacity:1;transform:none;animation:none}}
