:root{--accent:#2563eb;--accent-hover:#1d4ed8;--accent-soft:#93c5fd;--bg:#f8fafc;--surface:#ffffff;--panel:#f1f5f9;--text:#0f172a;--text-strong:#1e293b;--muted:#475569;--border:#e2e8f0;--tooltip-bg:#0f172a;--tooltip-fg:#f8fafc;--shadow:0 10px 30px -12px rgba(15,23,42,0.18);--radius:14px;--font:var(--font-sans,system-ui),system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}[data-theme=dark]{--accent:#3b82f6;--accent-hover:#60a5fa;--accent-soft:#1e3a8a;--bg:#0f172a;--surface:#111c33;--panel:#16223d;--text:#f8fafc;--text-strong:#e2e8f0;--muted:#94a3b8;--border:#1e293b;--tooltip-bg:#f8fafc;--tooltip-fg:#0f172a;--shadow:0 10px 30px -12px rgba(0,0,0,0.6)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .25s,color .25s}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:#fff}.skip-link{position:absolute;left:-9999px;top:8px;z-index:100;padding:10px 18px;border-radius:var(--radius);background:var(--accent);color:var(--bg);font-size:14px;font-weight:500}.skip-link:focus{left:16px;outline:3px solid var(--accent-soft);outline-offset:2px}main:focus{outline:none}.container{width:100%;max-width:1120px;margin:0 auto;padding:0 24px}.header{display:flex;gap:40px;height:80px}.header,.logo{align-items:center}.logo{font-weight:900;font-size:22px;letter-spacing:1px;display:inline-flex;gap:2px}.logo-bracket{color:var(--accent)}.logo-dash{width:10px;height:3px;background:var(--accent);margin-left:3px;border-radius:2px}.twin-pill{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 16px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font:inherit;font-size:14px;font-weight:500;color:var(--text-strong);cursor:pointer;transition:color .2s,border-color .2s}.twin-pill:hover{color:var(--accent);border-color:var(--accent)}.btn:focus-visible,.talk-btn:focus-visible,.twin-pill:focus-visible,.work:focus-visible{outline:3px solid var(--accent-soft);outline-offset:3px}.icon-btn{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text-strong);cursor:pointer;transition:color .2s,border-color .2s,transform .2s}.icon-btn:hover{color:var(--accent);border-color:var(--accent);transform:rotate(20deg)}.nav{margin-left:auto;display:flex;gap:28px}.nav a{display:inline-flex;align-items:center;gap:6px;font-size:15px;color:var(--text-strong);position:relative}.nav a:after{content:"";position:absolute;left:0;bottom:-4px;width:0;height:2px;background:var(--accent);transition:width .25s}.nav a:hover{color:var(--accent)}.nav a:hover:after{width:100%}.socials{position:fixed;left:28px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:20px;z-index:10}.socials:after{content:"";width:1px;height:70px;background:var(--border);margin:4px auto 0}.socials a{color:var(--text-strong);transition:color .2s,transform .2s}.socials a:hover{color:var(--accent);transform:translateY(-3px)}.hero{display:grid;grid-template-columns:1fr 1.1fr;align-items:center;grid-gap:32px;gap:32px;min-height:calc(100vh - 160px);padding-top:32px}.hero-text{position:relative;min-width:0;animation:rise .7s ease both}.tooltip{display:inline-block;position:relative;background:var(--tooltip-bg);color:var(--tooltip-fg);font-size:14px;padding:8px 14px;border-radius:4px;margin-bottom:18px}.tooltip:after{content:"";position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);border:6px solid transparent;border-top:6px solid var(--tooltip-bg);border-bottom:0}.hero-name{font-size:clamp(30px,5.6vw,68px);overflow-wrap:anywhere;font-weight:900;line-height:1.02;letter-spacing:-1.5px;color:var(--text-strong)}.hero-role{margin-top:22px;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.6px}.hero-role a{border-bottom:2px solid var(--accent);color:var(--accent)}.hero-bio{margin-top:28px;max-width:340px;font-size:15px;color:var(--muted)}.talk-btn{margin:44px 0 0 44px;display:grid;place-items:center;width:96px;height:96px;border-radius:50%;background:var(--accent);color:#fff;border:0;cursor:pointer;font:inherit;font-size:17px;line-height:1.1;text-align:center;box-shadow:0 0 0 10px color-mix(in srgb,var(--accent) 28%,transparent);animation:pulse 2.4s ease-in-out infinite;transition:background .2s,transform .2s}.talk-btn span{transform:rotate(-12deg);display:block}.talk-btn:hover{background:var(--accent-hover);transform:scale(1.06)}.hero-art{display:flex;justify-content:center;animation:rise .9s ease .1s both}.portrait{position:relative;width:100%;max-width:440px;aspect-ratio:1;filter:drop-shadow(0 30px 40px rgba(15,23,42,.18))}.portrait:after,.portrait:before{content:"";position:absolute;border-radius:50%}.portrait:before{inset:0;background:color-mix(in srgb,var(--accent) 12%,transparent)}.portrait:after{inset:10%;border:2px dashed color-mix(in srgb,var(--accent) 60%,transparent)}.portrait img{position:absolute;inset:15%;width:70%;height:70%;border-radius:50%;object-fit:cover;object-position:center top;z-index:1}.stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin-top:24px}.stat{border-top:1px solid var(--border);padding-top:18px;display:flex;flex-direction:column}.stats[data-count="4"]{grid-template-columns:repeat(4,1fr)}.stat strong{font-size:34px;font-weight:900;color:var(--accent);line-height:1}.stat span{margin-top:6px;color:var(--muted);font-size:14px}.section{padding-top:110px}.section-title h2{font-size:clamp(30px,4vw,40px);font-weight:700;color:var(--text-strong)}.section-title p{margin-top:4px;font-size:17px;color:var(--muted)}.underline{display:block;position:relative;width:96px;height:2px;background:var(--accent);margin-top:12px}.underline:before{content:"";position:absolute;left:-2px;top:-2px;width:6px;height:6px;border-radius:50%;background:var(--accent)}.panel{margin-top:40px;background:var(--panel);border-radius:var(--radius);padding:40px}.services{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:24px;gap:24px}.service{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px;transition:transform .25s,box-shadow .25s,border-color .25s}.service:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--accent)}.service-icon{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.service h3{margin-top:18px;font-size:19px;color:var(--text-strong)}.service p{margin-top:8px;color:var(--muted);font-size:15px}.works{margin-top:40px;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:24px;gap:24px}.work{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface);display:block;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;transition:transform .25s,box-shadow .25s}.work:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.work-thumb{display:block;height:200px;position:relative;background-size:22px 22px}.work-thumb.t0{background-color:#2563eb;background-image:radial-gradient(rgba(255,255,255,.22) 1.5px,transparent 0)}.work-thumb.t1{background-color:#0f172a;background-image:radial-gradient(rgba(59,130,246,.55) 1.5px,transparent 0)}.work-thumb.t2{background:linear-gradient(135deg,#1d4ed8,#60a5fa)}.work-thumb.t3{background:linear-gradient(135deg,#1e293b,#334155)}.work-tag{position:absolute;left:16px;bottom:16px;background:rgba(248,250,252,.95);color:#0f172a;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}.work-body{display:flex;justify-content:space-between;gap:16px;padding:22px 24px}.work-title{display:block;font-size:18px;font-weight:700;line-height:1.3;color:var(--text-strong)}.work-desc{display:block;margin-top:4px}.work-desc,.work-meta{color:var(--muted);font-size:14px}.work-meta{align-items:flex-start;white-space:nowrap;flex-direction:column;align-items:flex-end}.work-ask,.work-meta{display:inline-flex;gap:4px}.work-ask{align-items:center;opacity:0;transform:translateY(2px);transition:opacity .2s,transform .2s}.work:focus-visible .work-meta,.work:hover .work-meta{color:var(--accent)}.work:focus-visible .work-ask,.work:hover .work-ask{opacity:1;transform:none}@media (hover:none){.work-ask{opacity:1;transform:none}}.cta{display:flex;align-items:center;justify-content:space-between;gap:24px;background:#0f172a;color:#f8fafc;border-radius:20px;padding:48px;background-image:radial-gradient(circle at 100% 0,rgba(37,99,235,.45),transparent 50%);border:1px solid var(--border)}.cta h2{font-size:clamp(24px,3vw,32px)}.cta p{margin-top:6px;color:#cbd5e1}.btn{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;background:var(--accent);color:#fff;font-weight:500;border:0;cursor:pointer;font-size:16px;padding:14px 24px;border-radius:999px;transition:background .2s,transform .2s}.btn:hover{background:#1d4ed8;transform:translateY(-2px)}.footer a:hover{color:var(--accent)}.footer{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:40px;padding-bottom:40px;margin-top:80px;border-top:1px solid var(--border);color:var(--muted);font-size:14px}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{box-shadow:0 0 0 10px color-mix(in srgb,var(--accent) 28%,transparent)}50%{box-shadow:0 0 0 16px color-mix(in srgb,var(--accent) 14%,transparent)}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media (max-width:1240px){.socials{left:12px}}@media (max-width:900px){.header{gap:16px}.nav{gap:18px}.hero{grid-template-columns:1fr;text-align:left;min-height:auto}.hero-art{order:-1}.portrait{max-width:320px}.hero-name{font-size:clamp(30px,11.5vw,68px)}.services,.works{grid-template-columns:1fr}.socials{position:static;transform:none;flex-direction:row;justify-content:center;margin:48px 0 0}.socials:after{display:none}.cta{flex-direction:column;align-items:flex-start;padding:32px}}@media (max-width:640px){.twin-pill{width:36px;padding:0;justify-content:center}.twin-pill span{display:none}}@media (max-width:560px){.container{padding:0 16px}.nav a span{display:none}.panel{padding:20px}.talk-btn{margin-left:16px}.stats,.stats[data-count="4"]{grid-template-columns:1fr 1fr}.stat strong{font-size:26px}.footer{flex-direction:column;gap:6px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;transition:transform .25s,box-shadow .25s,border-color .25s}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--accent)}.card h3{font-size:18px;color:var(--text-strong)}.chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.chip{background:var(--surface);border:1px solid var(--border);color:var(--text-strong);font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}.card .chip{background:var(--panel)}.text-btn{background:none;border:0;padding:4px 0;margin-top:12px;cursor:pointer;font:inherit;font-size:14px;font-weight:500;color:var(--accent-hover);text-decoration:underline;text-underline-offset:3px}.text-btn:hover{color:var(--text-strong)}.earlier summary:focus-visible,.text-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.ask-more{display:block;margin-top:28px}.timeline{list-style:none;position:relative;margin-left:8px;padding-left:28px;border-left:2px solid var(--border)}.tl-item{position:relative;padding-bottom:32px}.tl-item:last-child{padding-bottom:0}.tl-dot{position:absolute;left:-37px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--panel)}.tl-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.tl-head h3{font-size:19px}.pill,.tl-head h3{color:var(--text-strong)}.pill{font-size:12px;font-weight:700;padding:2px 10px;border-radius:999px;border:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.tl-meta{margin-top:2px;color:var(--text-strong);font-size:15px}.tl-range{color:var(--muted);font-size:14px}.tl-bullets{margin-top:10px;padding-left:18px;color:var(--muted);font-size:15px}.tl-bullets li+li{margin-top:6px}.earlier{margin-top:32px;border-top:1px solid var(--border);padding-top:20px}.earlier summary{cursor:pointer;font-weight:700;color:var(--text-strong);margin-bottom:20px}.skills{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:24px;gap:24px}.cert-group+.cert-group{margin-top:28px}.cert-group h3{font-size:16px;color:var(--text-strong);margin-bottom:12px}.certs{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:16px;gap:16px}.cert{display:flex;gap:14px;align-items:flex-start;padding:16px}.cert strong{display:block;font-size:15px;color:var(--text-strong)}.cert-issuer{display:block;margin-top:2px;font-size:14px;color:var(--muted)}.badge{flex:none;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;font-weight:700;color:var(--text-strong);background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid var(--border)}.recognition{margin-top:40px;grid-template-columns:2fr 1fr;align-items:start}.awards,.recognition{display:grid;grid-gap:24px;gap:24px}.award-highlight{background:#0f172a;color:#f8fafc;border-radius:20px;padding:28px;background-image:radial-gradient(circle at 100% 0,rgba(37,99,235,.45),transparent 50%);border:1px solid var(--border)}.award-highlight h3{margin-top:10px;font-size:clamp(20px,2.4vw,24px)}.award-highlight p{margin-top:4px;color:#cbd5e1}.award-issuer,.edu-meta{margin-top:2px;color:var(--muted);font-size:14px}.edu-degree{margin-top:8px;color:var(--text-strong);font-weight:500}.prose{max-width:720px;padding-top:60px}.prose h1{font-size:clamp(30px,4vw,40px)}.prose h1,.prose h2{color:var(--text-strong)}.prose h2{margin-top:32px;font-size:20px}.prose li,.prose p{margin-top:8px;color:var(--muted)}.prose ul{padding-left:20px}.prose a:not(.btn){color:var(--accent-hover)}.prose .btn{margin-top:24px}@media (max-width:900px){.certs,.recognition,.skills{grid-template-columns:1fr}}[data-theme=dark] .btn,[data-theme=dark] .talk-btn{background:#2563eb}[data-theme=dark] .btn:hover,[data-theme=dark] .talk-btn:hover{background:#1d4ed8}.twin-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.twin-launcher-wrap{position:fixed;z-index:40;right:max(20px,env(safe-area-inset-right,0px));bottom:max(20px,env(safe-area-inset-bottom,0px))}.twin-launcher{position:relative;display:block;width:56px;height:56px;padding:0;border-radius:50%;border:0;cursor:pointer;background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 28%,transparent),var(--shadow);transition:background .2s,transform .2s}.twin-launcher img{width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:center top;border:2px solid var(--accent)}.twin-launcher:hover{background:var(--accent-hover);transform:scale(1.06)}.twin-launcher:focus-visible{outline:3px solid var(--accent-soft);outline-offset:4px}.twin-launcher-badge{position:absolute;right:-4px;top:-4px;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;border:2px solid var(--bg)}.twin-launcher-tip{position:absolute;right:0;bottom:calc(100% + 14px);margin:0;white-space:nowrap;opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .2s,transform .2s}.twin-launcher-tip:after{left:auto;right:22px;transform:none}.twin-launcher-wrap:hover .twin-launcher-tip,.twin-launcher:focus-visible+.twin-launcher-tip{opacity:1;transform:none}.twin-panel{position:fixed;z-index:50;right:max(20px,env(safe-area-inset-right,0px));bottom:max(20px,env(safe-area-inset-bottom,0px));width:400px;height:min(600px,calc(100dvh - 40px));display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);animation:rise .25s ease both}.twin-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.twin-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;object-position:center top;border:2px solid var(--accent);flex:none}.twin-head-text{flex:1 1;min-width:0}.twin-head-text h2{font-size:16px;font-weight:700;color:var(--text-strong);line-height:1.2}.twin-head-text p{font-size:12px;color:var(--muted)}.twin-head .icon-btn{width:32px;height:32px;flex:none}.twin-chip:focus-visible,.twin-composer textarea:focus-visible,.twin-head .icon-btn:focus-visible,.twin-messages:focus-visible,.twin-note a:focus-visible,.twin-send:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px}.twin-messages{flex:1 1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}.twin-greeting{color:var(--text-strong);font-size:15px}.twin-starters{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.twin-chip{background:var(--panel);color:var(--text-strong);border:1px solid var(--border);font:inherit;font-size:13px;font-weight:500;padding:6px 12px;border-radius:999px;cursor:pointer;text-align:left;transition:color .2s,border-color .2s}.twin-chip:hover{color:var(--accent);border-color:var(--accent)}.twin-msg{display:flex}.twin-msg-user{justify-content:flex-end}.twin-bubble{max-width:88%;padding:10px 14px;border-radius:var(--radius);font-size:14px;line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap}.twin-msg-user .twin-bubble{background:#2563eb;color:#fff;border-bottom-right-radius:4px}.twin-msg-assistant .twin-bubble{background:var(--panel);color:var(--text-strong);border-bottom-left-radius:4px;white-space:normal}.twin-bubble ol,.twin-bubble p+p,.twin-bubble ul{margin-top:8px}.twin-bubble ol,.twin-bubble ul{padding-left:20px}.twin-bubble a{color:var(--accent-hover);text-decoration:underline;text-underline-offset:2px}[data-theme=dark] .twin-bubble a{color:var(--accent)}.twin-bubble code{font-size:13px;background:var(--surface);padding:1px 5px;border-radius:4px}.twin-typing{display:inline-flex;gap:4px;align-items:center}.twin-typing i{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:twin-blink 1.2s ease-in-out infinite}.twin-typing i:nth-of-type(2){animation-delay:.15s}.twin-typing i:nth-of-type(3){animation-delay:.3s}@keyframes twin-blink{0%,80%,to{opacity:.3}40%{opacity:1}}.twin-error{margin-top:8px;font-size:13px;color:var(--muted)}.twin-error a,[data-theme=dark] .twin-bubble .twin-error a{color:var(--accent-hover);text-decoration:underline;text-underline-offset:2px}.twin-composer{padding:10px 16px 0;border-top:1px solid var(--border)}.twin-retry{display:block;margin:0 0 8px}.twin-input-row{display:flex;gap:8px;align-items:flex-end}.twin-composer textarea{flex:1 1;resize:none;font:inherit;font-size:14px;color:var(--text-strong);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}.twin-send{display:grid;place-items:center;width:40px;height:40px;flex:none;border-radius:50%;border:0;cursor:pointer;background:#2563eb;color:#fff;transition:background .2s}.twin-send:hover:not(:disabled){background:#1d4ed8}.twin-send:disabled{opacity:.5;cursor:not-allowed}.twin-counter{margin-top:4px;text-align:right;font-size:12px;color:var(--muted)}.twin-counter.is-over{color:#b91c1c;font-weight:700}[data-theme=dark] .twin-counter.is-over{color:#fca5a5}.twin-note{padding:6px 16px 12px;text-align:center;font-size:12px;color:var(--muted)}.twin-note a{text-decoration:underline;text-underline-offset:2px}.twin-note a:hover{color:var(--accent)}@media (max-width:640px){.twin-panel{inset:0;width:100%;height:100dvh;border-radius:0;border:0;padding-bottom:env(safe-area-inset-bottom,0)}.twin-launcher-tip{display:none}}