.ferrofluid-container{width:100%;height:100%}.ferrofluid-container canvas{width:100%;height:100%;display:block}:root{--bg:#101112;--bg-soft:#151719;--panel:#1b1d20;--panel-2:#22252a;--text:#f2efea;--muted:#b9b2aa;--subtle:#76716b;--line:#f2efea24;--line-strong:#f2efea47;--accent:#d71920;--accent-soft:#d7192024;--accent-strong:#ff4b52;--shadow:0 30px 100px #0000005c;--radius:22px;--sans:"Aptos","SF Pro Display","Noto Sans SC","Microsoft YaHei",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--mono:"SFMono-Regular","Cascadia Code","IBM Plex Mono","Noto Sans Mono",ui-monospace,Menlo,monospace;--ease:cubic-bezier(.16,1,.3,1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:92px;overflow-x:hidden}body{background:radial-gradient(circle at 75% 0%, var(--accent-soft), transparent 28rem), linear-gradient(135deg, #ffffff09, transparent 30rem), var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;overflow-x:hidden}body:before{content:"";pointer-events:none;opacity:.42;z-index:-2;background-image:linear-gradient(#f2efea09 1px,#0000 1px),linear-gradient(90deg,#f2efea09 1px,#0000 1px);background-size:64px 64px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(90deg,#0000,#000 16% 72%,#0000);mask-image:linear-gradient(90deg,#0000,#000 16% 72%,#0000)}body:after{content:"";pointer-events:none;z-index:-1;background:linear-gradient(120deg,#0000 0 42%,#d7192014 42% 42.25%,#0000 42.25%),radial-gradient(circle at 18% 82%,#ffffff14,#0000 24rem);position:fixed;inset:0}a{color:inherit}button{font:inherit;color:inherit}img{max-width:100%}::selection{background:var(--accent);color:#f4f1ed}.ogl-background{z-index:0;pointer-events:none;background:var(--bg);position:fixed;inset:0;overflow:hidden}.site{z-index:1;min-height:100dvh;padding-top:72px;position:relative}.topbar{z-index:30;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 86%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);justify-content:space-between;align-items:center;gap:24px;height:72px;padding:0 clamp(18px,4vw,64px);display:flex;position:fixed;top:0;left:0;right:0}.brand{align-items:center;gap:13px;min-width:0;text-decoration:none;display:flex}.brand-mark{background:var(--accent);color:#f4f1ed;letter-spacing:-.06em;border-radius:12px;place-items:center;width:38px;height:38px;font-weight:900;display:grid;box-shadow:0 18px 42px #d719203d}.brand-text{gap:1px;display:grid}.brand-text strong{letter-spacing:.01em;font-size:15px}.brand-text span{color:var(--subtle);font-family:var(--mono);font-size:11px}.nav{color:var(--muted);font-family:var(--mono);align-items:center;gap:22px;margin-left:auto;font-size:12px;display:flex}.nav a{white-space:nowrap;text-decoration:none;transition:color .22s}.nav a:hover{color:var(--text)}.lang-toggle{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 72%, transparent);cursor:pointer;min-height:40px;transition:transform .25s var(--ease), border-color .25s ease, background .25s ease;border-radius:999px;align-items:center;gap:3px;padding:4px;display:inline-flex;position:relative}.lang-toggle:hover,.lang-toggle:focus-visible{border-color:var(--accent);outline:0;transform:translateY(-1px)}.lang-toggle span{min-width:40px;min-height:30px;color:var(--subtle);font-family:var(--mono);border-radius:999px;place-items:center;font-size:11px;font-weight:700;display:grid}.lang-toggle span.active{background:var(--accent);color:#f4f1ed}.section{padding:clamp(74px,9vw,132px) clamp(18px,4vw,64px)}.section-inner{width:min(100%,1380px);margin:0 auto}.hero{grid-template-columns:minmax(0,1.02fr) minmax(340px,.82fr);align-items:center;gap:clamp(34px,6vw,92px);min-height:calc(100dvh - 72px);padding-top:clamp(34px,5vw,72px);padding-bottom:clamp(46px,6vw,84px);display:grid}.eyebrow{color:var(--accent-strong);font-family:var(--mono);letter-spacing:.12em;margin:0 0 18px;font-size:12px;font-weight:650}.hero-title{letter-spacing:-.075em;max-width:900px;margin:0;font-size:clamp(54px,8vw,112px);font-weight:880;line-height:.9}.hero-title .line{padding-bottom:.06em;display:block;overflow:hidden}.hero-title .line>span{white-space:nowrap;display:inline-block}.hero-role{max-width:780px;color:var(--muted);letter-spacing:-.045em;margin:26px 0 0;font-size:clamp(21px,2.5vw,36px);font-weight:720;line-height:1.16}.hero-lead{max-width:650px;color:var(--muted);margin:22px 0 0;font-size:17px;line-height:1.68}.actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.btn{border:1px solid var(--line-strong);min-height:48px;color:var(--text);font-family:var(--mono);white-space:nowrap;transition:transform .24s var(--ease), border-color .24s ease, background .24s ease, color .24s ease;border-radius:999px;justify-content:center;align-items:center;padding:0 18px;font-size:12px;font-weight:650;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn:before{content:"";transition:transform .56s var(--ease);background:linear-gradient(90deg,#0000,#ffffff24,#0000);position:absolute;inset:0;transform:translate(-110%)}.btn:hover:before{transform:translate(110%)}.btn:hover{border-color:var(--accent);transform:translateY(-2px)}.btn:active{transform:translateY(0)scale(.98)}.btn.primary{border-color:var(--accent);background:var(--accent);color:#f4f1ed}.hero-media{border-radius:var(--radius);isolation:isolate;min-height:580px;position:relative}.hero-media:before{content:"";border:1px solid var(--line);border-radius:var(--radius);z-index:-1;position:absolute;inset:7% -8% 9% 12%;transform:rotate(5deg)}.hero-figure{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(145deg,var(--panel),var(--bg-soft));height:100%;min-height:580px;box-shadow:var(--shadow);margin:0;position:relative;overflow:hidden}.hero-figure img{object-fit:cover;object-position:68% center;filter:saturate(.9)contrast(1.08);width:100%;height:100%;min-height:580px;display:block;transform:scale(1.035)}.hero-figure:after{content:"";background:linear-gradient(180deg, transparent 36%, color-mix(in srgb, var(--bg) 72%, transparent)), radial-gradient(circle at var(--mx,50%) var(--my,30%), #ffffff29, transparent 16rem);pointer-events:none;position:absolute;inset:0}.hero-panel{z-index:2;background:color-mix(in srgb, var(--bg) 72%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #f2efea29;border-radius:18px;grid-template-columns:repeat(3,1fr);display:grid;position:absolute;bottom:18px;left:18px;right:18px;overflow:hidden}.hero-panel div{border-right:1px solid #f2efea21;padding:17px 16px}.hero-panel div:last-child{border-right:0}.hero-panel b{color:var(--text);font-family:var(--mono);font-size:14px;display:block}.hero-panel span{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.35;display:block}.proof-grid{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--panel) 76%, transparent);grid-template-columns:1.1fr .9fr 1fr 1fr;display:grid;overflow:hidden}.proof-item{border-right:1px solid var(--line);min-height:190px;padding:26px}.proof-item:last-child{border-right:0}.proof-item strong{color:var(--text);letter-spacing:-.07em;font-size:clamp(40px,5vw,78px);line-height:.9;display:block}.proof-item span{color:var(--muted);margin-top:18px;line-height:1.56;display:block}.section-title{letter-spacing:-.065em;max-width:860px;margin:0;font-size:clamp(42px,6.2vw,92px);font-weight:830;line-height:.95}.section-copy{max-width:660px;color:var(--muted);margin:22px 0 0;font-size:17px;line-height:1.68}.projects-shell{grid-template-columns:minmax(290px,.45fr) minmax(0,1fr);align-items:start;gap:22px;margin-top:48px;display:grid}.project-tabs{gap:12px;display:grid;position:sticky;top:96px}.project-tab{border:1px solid var(--line);border-radius:var(--radius);background:radial-gradient(circle at var(--spot-x,50%) var(--spot-y,50%), #ffffff2e, transparent 13rem), color-mix(in srgb, var(--panel) 72%, transparent);text-align:left;cursor:pointer;width:100%;min-height:142px;transition:transform .25s var(--ease), border-color .25s ease, background .25s ease;padding:16px;position:relative;overflow:hidden}.project-tab:hover,.project-tab:focus-visible{border-color:var(--accent);outline:0;transform:translateY(-3px)}.project-tab[aria-selected=true]{border-color:var(--accent);background:linear-gradient(135deg, var(--accent-soft), transparent), color-mix(in srgb, var(--panel) 80%, transparent)}.project-tab-inner{grid-template-columns:84px 1fr;align-items:center;gap:16px;display:grid}.project-tab img{object-fit:cover;background:var(--panel-2);border-radius:16px;width:84px;height:94px}.project-tab h3{color:var(--text);letter-spacing:-.035em;margin:0;font-size:18px;line-height:1.12}.project-tab p{color:var(--subtle);font-family:var(--mono);margin:9px 0 0;font-size:11px;line-height:1.4}.project-detail{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--panel) 70%, transparent);min-height:640px;box-shadow:var(--shadow);transition:opacity .26s ease, transform .26s var(--ease);overflow:hidden}.project-detail.switching{opacity:.2;transform:translateY(16px)scale(.992)}.detail-hero{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(300px,.78fr);gap:clamp(22px,4vw,56px);padding:clamp(24px,4vw,48px);display:grid}.detail-kicker{color:var(--accent-strong);font-family:var(--mono);font-size:12px;line-height:1.45}.detail-title{letter-spacing:-.062em;margin:18px 0 0;font-size:clamp(34px,4.5vw,66px);line-height:1}.detail-lead{color:var(--muted);margin:22px 0 0;font-size:18px;line-height:1.62}.tag-row{flex-wrap:wrap;gap:9px;margin-top:24px;display:flex}.tag-row span{border:1px solid var(--line);min-height:31px;color:var(--muted);font-family:var(--mono);border-radius:999px;align-items:center;padding:0 10px;font-size:11px;display:inline-flex}.detail-photo{background:var(--panel-2);border-radius:18px;min-height:360px;margin:0;overflow:hidden}.detail-photo img{object-fit:cover;object-position:center;filter:saturate(.92)contrast(1.05);width:100%;height:100%;min-height:360px;display:block}.detail-body{gap:28px;padding:clamp(24px,4vw,48px);display:grid}.split-block{grid-template-columns:minmax(220px,.34fr) minmax(0,1fr);align-items:start;gap:clamp(22px,4vw,52px);display:grid}.split-block h4,.body-block h4{color:var(--text);letter-spacing:-.052em;margin:0;font-size:clamp(25px,3.2vw,42px);line-height:1.02}.split-block p,.body-block p,.role-list li,.result-card p{color:var(--muted);margin:0;font-size:15px;line-height:1.72}.architecture-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.mini-card{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-soft) 72%, transparent);border-radius:18px;min-height:190px;padding:20px}.mini-card b{color:var(--accent-strong);font-family:var(--mono);font-size:12px;display:block}.mini-card h5{color:var(--text);letter-spacing:-.04em;margin:38px 0 12px;font-size:21px;line-height:1.08}.module-grid{grid-template-columns:repeat(5,1fr);gap:12px;display:grid}.module-card{border:1px solid var(--line);background:var(--bg-soft);min-height:330px;transition:transform .25s var(--ease), border-color .25s ease;border-radius:18px;grid-template-rows:230px 1fr;display:grid;overflow:hidden}.module-card:hover{border-color:var(--accent);transform:translateY(-4px)}.module-card img{object-fit:contain;background:radial-gradient(circle at 50% 28%, #ffffff1f, transparent 16rem), linear-gradient(145deg, color-mix(in srgb, var(--panel-2) 82%, white 18%), var(--panel-2));width:100%;height:100%;max-height:230px;padding:12px}.module-card div{padding:16px}.module-card h5{color:var(--text);letter-spacing:-.035em;margin:0;font-size:17px;line-height:1.14}.module-card p{color:var(--muted);margin:10px 0 0;font-size:13px;line-height:1.58}.highlight-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.highlight-grid .mini-card{min-height:165px}.highlight-grid .mini-card h5{margin:0 0 12px}.role-result{grid-template-columns:minmax(0,1fr) minmax(280px,.62fr);gap:18px;display:grid}.role-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.role-list li{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-soft) 68%, transparent);border-radius:16px;padding:15px 16px}.result-card{background:linear-gradient(150deg, var(--accent), #7d1117);color:#f4f1ed;border-radius:18px;padding:24px}.result-card h4{color:#f4f1ed}.result-card p{color:#f4f1edc7;margin-top:18px}.system-map{border:1px solid var(--line);background:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px), var(--bg-soft);background-size:34px 34px;border-radius:18px;min-height:340px;position:relative;overflow:hidden}.node{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--bg) 76%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);min-width:112px;color:var(--muted);font-family:var(--mono);border-radius:16px;padding:12px 13px;font-size:11px;position:absolute}.node strong{color:var(--accent-strong);letter-spacing:-.04em;margin-bottom:6px;font-size:20px;display:block}.n-core{top:48%;left:50%;transform:translate(-50%,-50%)}.n-a{top:12%;left:8%}.n-b{top:14%;right:8%}.n-c{bottom:13%;left:10%}.n-d{bottom:12%;right:9%}.skills-grid{grid-template-columns:1.2fr .8fr;gap:18px;margin-top:44px;display:grid}.skill-panel{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--panel) 72%, transparent);overflow:hidden}.skill-list{grid-template-columns:repeat(2,1fr);display:grid}.skill-item{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:190px;padding:24px}.skill-item:nth-child(2n){border-right:0}.skill-item:nth-last-child(-n+1){border-bottom:0}.skill-item b{color:var(--accent-strong);font-family:var(--mono);font-size:12px}.skill-item h3{letter-spacing:-.045em;margin:38px 0 12px;font-size:25px;line-height:1.04}.skill-item p{color:var(--muted);margin:0;font-size:14px;line-height:1.64}.stack-panel{border:1px solid var(--line);border-radius:var(--radius);background:radial-gradient(circle at 78% 18%, var(--accent-soft), transparent 15rem), color-mix(in srgb, var(--panel) 72%, transparent);padding:28px}.stack-panel h3{letter-spacing:-.056em;margin:0;font-size:clamp(30px,4vw,48px);line-height:1}.stack-cloud{flex-wrap:wrap;gap:9px;margin-top:28px;display:flex}.stack-cloud span{border:1px solid var(--line);min-height:32px;color:var(--muted);font-family:var(--mono);border-radius:999px;align-items:center;padding:0 10px;font-size:11px;display:inline-flex}.contact-wrap{grid-template-columns:minmax(0,1fr) minmax(280px,430px);align-items:end;gap:clamp(28px,5vw,72px);display:grid}.contact-title{letter-spacing:-.07em;max-width:850px;margin:0;font-size:clamp(48px,7vw,102px);line-height:.94}.contact-copy{max-width:690px;color:var(--muted);margin:24px 0 0;font-size:18px;line-height:1.66}.contact-list{gap:10px;display:grid}.contact-list a{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 70%, transparent);min-height:58px;transition:transform .24s var(--ease), border-color .24s ease;border-radius:18px;grid-template-columns:92px 1fr;align-items:center;gap:18px;padding:0 18px;text-decoration:none;display:grid}.contact-list a:hover{border-color:var(--accent);transform:translateY(-2px)}.contact-list span:first-child{color:var(--subtle);font-family:var(--mono);font-size:11px}.footer{border-top:1px solid var(--line);color:var(--subtle);font-family:var(--mono);justify-content:space-between;gap:18px;padding:26px clamp(18px,4vw,64px);font-size:11px;display:flex}.reveal{opacity:0;transition:opacity .7s var(--ease), transform .7s var(--ease);transform:translateY(26px)}.reveal.in{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}@media (width<=1080px){.hero,.projects-shell,.detail-hero,.skills-grid,.contact-wrap{grid-template-columns:1fr}.hero{min-height:auto}.hero-media,.hero-figure,.hero-figure img{min-height:480px}.project-tabs{grid-template-columns:repeat(3,1fr);position:relative;top:auto}.project-tab-inner{grid-template-columns:1fr}.project-tab img{width:100%;height:130px}.module-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=760px){html{scroll-padding-top:86px}.site{padding-top:66px}.topbar{height:66px;padding:10px 16px}.brand-text span,.nav{display:none}.section{padding:64px 16px}.hero{padding-top:38px}.hero-title{font-size:clamp(48px,16vw,76px)}.hero-role{font-size:24px}.hero-lead{font-size:16px}.hero-media,.hero-figure,.hero-figure img{min-height:390px}.hero-media:before{display:none}.hero-panel{grid-template-columns:1fr}.hero-panel div{border-bottom:1px solid #f2efea21;border-right:0}.hero-panel div:last-child{border-bottom:0}.proof-grid,.project-tabs,.architecture-grid,.highlight-grid,.role-result,.skill-list{grid-template-columns:1fr}.proof-item,.skill-item{border-right:0;border-bottom:1px solid var(--line)}.proof-item:last-child,.skill-item:last-child{border-bottom:0}.detail-hero,.detail-body{padding:20px}.split-block,.module-grid{grid-template-columns:1fr}.module-card{grid-template-rows:230px 1fr;min-height:auto}.contact-list a{grid-template-columns:1fr;gap:5px;padding:14px 16px}.footer{flex-direction:column}}
