@charset "UTF-8";
:root{--page:#f4f7f4;--ink:#23352f;--muted:#687871;--line:#d8e3dc;--edge:#ffffff;--green:#34735a;--primary:#243b32;--on-primary:#fff;--shadow:0 18px 55px #3656480b;--glass:linear-gradient(135deg,#ffffffb8,#ffffff60);--surface:#ffffff70;--surface-strong:#ffffffb0;--surface-solid:#fff;--dock:#ffffffb3;--dialog:#f3f8f5f2;--tint:#e3eee8;--sage:linear-gradient(140deg,#e4e9e2,#dde8df 48%,#eae6e1);--mint:linear-gradient(130deg,#d9eee4,#e1efe9 45%,#cfe4de);--blue:linear-gradient(140deg,#e0e8f5,#ecedf9);--lavender:linear-gradient(135deg,#e5e1f0,#dce6ed);--sand:linear-gradient(135deg,#f0e5d7,#e8e3d8);--ambient:radial-gradient(ellipse at 85% 12%,#cde6dcb0,transparent 44%),radial-gradient(ellipse at 5% 50%,#dde5f198,transparent 45%),radial-gradient(ellipse at 75% 85%,#ede3d75c,transparent 48%);color-scheme:light;}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;color:var(--ink);font:16px/1.8 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:var(--page);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:3px solid #508f74;outline-offset:6px}img{display:block;max-width:100%}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.32;letter-spacing:-.04em}p{color:var(--muted)}[hidden]{display:none!important}.shell{max-width:1200px;width:calc(100% - 96px);margin-inline:auto}.glass{background:var(--glass);border:1px solid var(--edge);border-radius:28px;backdrop-filter:blur(24px);box-shadow:var(--shadow)}.ambient{position:fixed;inset:0;z-index:-1;pointer-events:none;background:var(--ambient)}.ambient:after{content:"";position:absolute;inset:0;background-image:linear-gradient(#91a99e0a 1px,transparent 1px),linear-gradient(90deg,#91a99e0a 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(#000,transparent 80%)}.site-header{height:94px;max-width:1392px;width:calc(100% - 96px);margin:auto;display:flex;align-items:center;justify-content:space-between;gap:20px;position:relative;z-index:5}.wordmark{font-size:24px;font-weight:800;letter-spacing:-1.2px}.wordmark span{color:var(--green)}.site-header nav{display:flex;gap:8px;padding:7px;background:var(--surface);border:1px solid var(--edge);border-radius:40px;backdrop-filter:blur(20px)}nav a{font-size:14px;padding:7px 22px;border-radius:30px;color:var(--muted)}nav a:hover,nav a[aria-current]{background:var(--surface-solid);color:var(--ink);box-shadow:0 3px 10px #40564908}.status-dot{display:inline-block;width:7px;height:7px;flex:none;border-radius:50%;background:#4e9976;box-shadow:0 0 0 4px #4e99760c}.eyebrow{font-size:10px;letter-spacing:2.5px;font-weight:600;color:var(--muted);display:block;margin-bottom:18px}.hero{display:grid;grid-template-columns:1.04fr 1fr;gap:20px;align-items:center;min-height:670px;padding:60px 0 65px}.hero-copy{position:relative;z-index:2}.intro-label{display:flex;align-items:center;gap:12px;font-size:13px;margin-bottom:26px}.hero h1{font-size:clamp(32px,3.4vw,49px);line-height:1.45;letter-spacing:-2px;font-weight:600}.name-mark{font-weight:800}.name-dot{color:var(--green)}.hero-bio{font-size:15px;line-height:2.05;margin-top:25px}.hero-actions{display:flex;align-items:center;gap:30px;margin-top:32px}.button{display:inline-flex;align-items:center;justify-content:center;gap:18px;border-radius:40px;padding:13px 26px;font-size:14px;font-weight:550;border:1px solid transparent;transition:transform .2s,box-shadow .2s;white-space:nowrap}.button:hover{transform:translateY(-3px);box-shadow:0 8px 20px #234b3020}.dark{background:var(--primary);color:var(--on-primary);border-color:var(--primary);box-shadow:0 8px 20px #234b3010}.light{background:var(--surface-strong);border-color:var(--edge)}.text-link{font-size:14px;color:var(--green)}.text-link:hover{text-decoration:underline;text-underline-offset:5px}.hero-footnote{display:flex;gap:16px;align-items:center;margin-top:55px;font-size:11px;color:var(--muted)}.divider{height:12px;width:1px;background:var(--line)}.hero-showcase{height:550px;position:relative;isolation:isolate}.showcase-orbit{position:absolute;width:470px;height:470px;max-width:100%;border:1px solid var(--edge);border-radius:50%;top:45px;left:4%;background:radial-gradient(circle,#b9d7c750,transparent 65%)}.showcase-orbit:before{content:"";position:absolute;inset:32px;border:1px solid var(--edge);border-radius:50%}.hero-phone{position:absolute;width:214px;border:7px solid var(--edge);border-radius:33px;overflow:hidden;box-shadow:12px 28px 45px #46665524,0 0 0 1px #d8e2dc;transition:transform .4s}.hero-phone img{width:100%;height:auto}.phone-flow{top:16px;left:12px;transform:rotate(-8deg);z-index:2}.phone-seek{top:73px;right:8px;transform:rotate(9deg);z-index:1}.hero-phone:hover{transform:rotate(0) translateY(-8px);z-index:3}.floating-label{position:absolute;z-index:4;display:flex;align-items:center;gap:12px;padding:13px 19px;border-radius:18px;font-size:12px;box-shadow:0 8px 25px #35584514}.floating-label strong{font-weight:550;font-size:12px}.floating-label small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.demo-label{left:-25px;bottom:60px}.play-mini{background:var(--tint);color:var(--green);border-radius:50%;width:33px;height:33px;display:grid;place-content:center;font-size:10px}.maker-label{right:-7px;top:20px;transform:rotate(4deg)}.tiny-spark{font-size:24px;color:var(--green)}.showcase-note{position:absolute;bottom:7px;left:70px;font-size:9px;letter-spacing:2px;color:var(--muted)}.chapter-line{display:flex;justify-content:space-between;border-top:1px solid var(--edge);padding-top:22px;font-size:11px;color:var(--muted)}.section{padding-top:90px;padding-bottom:85px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:36px}.section-heading h2,.tool-feature h2,.contact-strip h2,.about-intro h2,.story-section h2,.demo-section h2,.engineering h2{font-size:30px;font-weight:550;line-height:1.5}.section-heading p{font-size:14px;margin-top:10px}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.project-card{padding:12px;overflow:hidden;transition:transform .3s,box-shadow .3s}.project-card:hover{transform:translateY(-5px);box-shadow:0 20px 45px #36564816}.project-art{position:relative;display:block;height:370px;border-radius:20px;overflow:hidden}.sage{background:var(--sage)}.mint{background:var(--mint)}.blue{background:var(--blue)}.lavender{background:var(--lavender)}.sand{background:var(--sand)}.art-top{position:absolute;inset:20px 23px auto;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:10px;letter-spacing:2px;z-index:3}.art-top span:last-child{font-size:19px}.phone-triptych{display:flex;gap:13px;justify-content:center;align-items:flex-start;position:absolute;top:87px;width:100%;padding:0 30px;transform:rotate(-6deg)}.mini-phone{width:30%;border:4px solid var(--edge);border-radius:20px;overflow:hidden;box-shadow:0 10px 25px #486d4f19;flex:none}.mini-phone:nth-child(2){margin-top:-28px}.mini-phone img{width:100%;height:auto}.mint .phone-triptych{transform:rotate(5deg)}.project-info{padding:22px 15px 12px}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.card-heading h3{font-size:22px}.badge{font-size:10px;border-radius:30px;border:1px solid var(--edge);background:var(--surface);color:var(--muted);padding:4px 11px;white-space:nowrap;font-weight:400;letter-spacing:0;display:inline-block}.project-info>p{font-size:14px;margin-top:7px}.card-bottom{display:flex;justify-content:space-between;gap:12px;margin-top:25px;font-size:11px;color:var(--muted)}.card-bottom a{color:var(--green)}.tool-feature{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:48px;overflow:hidden;align-items:center}.tool-feature-copy p{font-size:13px;margin-top:20px}.tool-feature-copy small{display:block;font-size:10px;color:var(--muted);margin-top:12px}.tag-row{display:flex;gap:7px;margin:22px 0}.tag-row span{font-size:10px;padding:4px 9px;border-radius:5px;background:var(--tint)}.tool-feature-image{display:block;border:6px solid var(--edge);border-radius:16px;overflow:hidden;transform:rotate(-3deg);box-shadow:0 15px 40px #2e56461a}.tool-feature-image img{width:100%;height:auto}.commercial-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.commercial-card{padding:28px;display:block}.commercial-card h3{font-size:21px}.commercial-card p{font-size:13px;margin:13px 0 22px}.commercial-card .badge{background:var(--surface)}.contact-strip{display:flex;align-items:center;justify-content:space-between;padding:50px 0;border-top:1px solid var(--edge)}.contact-strip h2{font-size:27px}.contact-strip p{font-size:13px;margin-top:10px}.site-footer{padding:25px 0 40px;font-size:10px;color:var(--muted);display:flex;gap:25px;justify-content:space-between;flex-wrap:wrap}.site-footer .muted{margin-left:8px}.social-dock{position:fixed;z-index:8;right:21px;bottom:25px;display:flex;gap:4px;padding:5px;border:1px solid var(--edge);border-radius:22px;background:var(--dock);backdrop-filter:blur(20px);box-shadow:0 4px 20px #405b4c12}.social-dock a{width:34px;height:34px;display:grid;place-content:center;font-size:11px;font-weight:650;border-radius:50%}.social-dock a:hover{background:var(--tint)}.page-heading{padding-top:70px;padding-bottom:40px}.page-heading h1{font-size:44px;font-weight:550}.page-heading p{font-size:15px;margin-top:18px}.project-index{padding-top:8px}.filter-bar{display:flex;gap:9px;flex-wrap:wrap;margin:10px 0 30px}.filter-bar button{border:1px solid var(--edge);border-radius:30px;background:var(--surface);padding:8px 19px;font-size:12px}.filter-bar button[aria-pressed=true]{background:var(--primary);color:var(--on-primary)}.filter-bar span{margin-left:7px;font-size:10px;opacity:.6}.browser-preview{margin:70px 25px 0;border-radius:12px;overflow:hidden;background:white;box-shadow:0 10px 25px #34557915;transform:rotate(-4deg)}.browser-preview img{width:100%;height:auto}.browser-dots{font-size:7px;letter-spacing:3px;padding:7px 10px;color:var(--muted)}.type-art{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.type-art>span{font-size:48px;font-weight:650;letter-spacing:-2px}.type-art p{font-size:11px;margin-top:10px}.project-hero{padding:40px 0}.back-link{font-size:12px;color:var(--muted);display:inline-block;margin-bottom:40px}.project-title-row{display:flex;justify-content:space-between;align-items:center;gap:45px}.project-title-row>div:first-child{max-width:720px}.project-title-row h1{font-size:48px;display:flex;align-items:center;gap:20px}.project-title-row h2{font-size:25px;margin:20px 0 15px;font-weight:500}.project-title-row p{font-size:14px}.project-actions{display:flex;flex-direction:column;align-items:start;gap:14px;flex:none}.release-note{line-height:2}.release-note .status-dot{margin-right:10px}.release-note small{font-size:11px;color:var(--muted)}.project-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;margin-top:35px;color:var(--muted)}.project-meta span{padding:4px 12px;border:1px solid var(--edge);border-radius:30px;background:var(--surface)}.gallery-section{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px;padding:46px 65px;border-radius:32px}.gallery-section figure{margin:0;min-width:0}.screenshot-button{border:0;background:none;padding:0;display:block;border-radius:27px;box-shadow:0 14px 25px #36523c13;overflow:hidden;width:100%;transition:transform .2s}.screenshot-button:hover{transform:translateY(-5px)}.screenshot-button img{width:100%;height:auto}.gallery-section figcaption{font-size:11px;color:var(--muted);margin-top:19px;line-height:1.8}.gallery-section figcaption span{margin-right:7px;opacity:.6}.wide-gallery{display:block;padding:30px}.wide-gallery .screenshot-button{border-radius:15px}.story-section{display:grid;grid-template-columns:1fr 1fr;gap:90px;padding-top:85px;padding-bottom:85px}.story-section p{font-size:14px;line-height:2;margin-top:17px}.feature-list article{display:flex;gap:24px;padding:20px 0;border-bottom:1px solid var(--edge)}.feature-list article:first-child{padding-top:0}.feature-list article>span{font-size:11px;color:var(--muted)}.feature-list h3{font-size:17px}.feature-list p{font-size:13px;margin-top:9px}.demo-section{display:grid;grid-template-columns:1fr .7fr;align-items:center;gap:50px;padding:50px 90px;margin-bottom:85px}.demo-section p{font-size:14px;margin:22px 0}.demo-section video{display:block;width:100%;max-width:285px;max-height:600px;aspect-ratio:384/832;border-radius:22px;background:#ecf1ed;box-shadow:0 12px 35px #274c3d18;justify-self:center}.tool-list{padding-bottom:90px}.tool-row{display:grid;grid-template-columns:65px 1fr auto;align-items:center;gap:30px;padding:32px;margin:22px 0}.tool-number{font-size:35px;color:var(--muted);letter-spacing:-2px}.tool-row h2{font-size:23px;font-weight:550}.tool-row p{font-size:13px;margin-top:14px;max-width:650px}.tools-note{font-size:12px;max-width:850px;margin:27px 0 15px}.about-intro{display:grid;grid-template-columns:1fr 1fr;gap:55px;padding:50px}.about-intro p{font-size:14px;margin-bottom:20px}.timeline article{display:grid;grid-template-columns:240px 1fr;gap:25px;padding:30px 0;border-bottom:1px solid var(--edge)}.timeline article>span{font-size:12px;color:var(--muted)}.timeline h3{font-size:19px}.timeline p{font-size:14px;margin-top:14px;max-width:760px}.engineering{padding:40px;margin-bottom:70px}.engineering-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;margin-top:30px}.engineering h3{font-size:17px}.engineering p{font-size:13px;margin-top:14px}.resume-sheet{padding:50px;max-width:920px;margin-block:50px}.resume-head{display:flex;justify-content:space-between;gap:20px;align-items:center}.resume-head h1{font-size:35px}.resume-sheet h2{font-size:21px;margin:30px 0 12px;border-bottom:1px solid var(--line);padding-bottom:10px}.resume-sheet h3{font-size:16px;margin:20px 0 8px}.resume-sheet small{font-size:11px;font-weight:400;color:var(--muted);margin-left:8px}.resume-sheet p{font-size:13px}.resume-jobs p{display:flex;justify-content:space-between;gap:15px;margin:13px 0}.resume-url{margin-top:25px}dialog{border:1px solid white;border-radius:20px;background:var(--dialog);max-width:94vw;max-height:94dvh;padding:50px 20px 20px;box-shadow:0 20px 80px #0003}dialog::backdrop{background:#183328a6;backdrop-filter:blur(12px)}dialog img{max-height:75dvh;max-width:85vw;width:auto;height:auto;margin:auto}dialog p{text-align:center;font-size:12px;margin-top:15px}.viewer-close{position:absolute;right:18px;top:9px;border:0;background:none;padding:5px;font-size:13px}.skip,.sr-only{position:absolute;left:-10000px}.skip:focus{left:15px;top:15px;z-index:99;background:var(--surface-solid);padding:10px}
@media(min-width:1550px){.hero{min-height:750px}.hero-showcase{height:580px}.hero-phone{width:235px}.phone-flow{left:35px}.phone-seek{right:15px}.demo-label{bottom:50px}}
@media(max-width:1100px){.shell,.site-header{width:calc(100% - 60px)}.hero h1{font-size:36px;letter-spacing:-1px}.hero-phone{width:180px}.hero-showcase{height:480px}.phone-flow{left:0}.phone-seek{right:0}.demo-label{left:-10px;bottom:37px}.maker-label{font-size:10px}.hero{min-height:610px}.tool-feature{padding:35px;gap:25px}.project-art{height:320px}.gallery-section{padding:35px;gap:25px}.demo-section{padding:45px}.tool-row{gap:18px;grid-template-columns:45px 1fr auto}.story-section{gap:40px}.commercial-card{padding:24px}}
@media(max-width:760px){.shell,.site-header{width:calc(100% - 40px)}.site-header{height:84px;flex-wrap:wrap;gap:8px}.wordmark{font-size:22px}.site-header nav{padding:4px;gap:0}.site-header nav a{font-size:12px;padding:6px 11px}.hero{grid-template-columns:1fr;gap:30px;padding:40px 0 28px}.hero h1{font-size:37px;line-height:1.5}.intro-label{margin-bottom:20px}.hero-bio{font-size:14px;margin-top:20px}.hero-actions{margin-top:25px}.hero-footnote{margin-top:28px;font-size:10px}.hero-showcase{width:100%;max-width:440px;justify-self:center;height:495px;margin-top:15px}.hero-phone{width:190px}.phone-flow{left:15px;top:5px}.phone-seek{right:10px;top:55px}.demo-label{bottom:35px;left:0;padding:10px 13px}.maker-label{top:0;right:0;padding:9px 13px}.showcase-note{font-size:8px;left:30px;bottom:0}.section{padding:55px 0}.section-heading{align-items:start}.section-heading h2,.tool-feature h2,.story-section h2,.about-intro h2,.demo-section h2,.engineering h2{font-size:25px}.section-heading p{font-size:12px}.section-heading>.text-link{white-space:nowrap;font-size:11px}.eyebrow{font-size:9px;letter-spacing:1.8px;margin-bottom:14px}.project-grid{grid-template-columns:1fr;gap:23px}.project-art{height:340px}.phone-triptych{padding:0 25px;gap:12px}.mini-phone{border-radius:17px}.project-info{padding:18px 12px 12px}.card-heading h3{font-size:20px}.tool-feature{grid-template-columns:1fr;padding:30px;gap:35px}.tool-feature-image{margin:0 2px 12px}.commercial-grid{grid-template-columns:1fr;gap:14px}.commercial-card{padding:25px}.commercial-card p{margin-bottom:15px}.contact-strip{align-items:start;gap:25px;flex-direction:column;padding:35px 0}.contact-strip h2{font-size:24px}.site-footer{font-size:10px;gap:14px;padding-bottom:85px;justify-content:start}.social-dock{right:14px;bottom:15px}.page-heading{padding:40px 0 28px}.page-heading h1{font-size:32px}.page-heading p{font-size:14px}.project-index{padding-top:0}.filter-bar{gap:7px}.filter-bar button{padding:7px 12px;font-size:11px}.project-title-row{flex-direction:column;align-items:start;gap:20px}.project-title-row h1{font-size:39px}.project-title-row h2{font-size:22px}.project-actions{flex-direction:row;align-items:center;flex-wrap:wrap}.release-note{font-size:12px!important}.project-hero{padding:22px 0 30px}.back-link{margin-bottom:24px}.gallery-section{display:flex;overflow:auto;scroll-snap-type:x mandatory;gap:24px;padding:25px;border-radius:24px}.gallery-section figure{flex:0 0 80%;scroll-snap-align:center}.gallery-section.wide-gallery{display:block}.gallery-section figcaption{font-size:11px}.screenshot-button{border-radius:20px}.story-section{grid-template-columns:1fr;gap:30px;padding-top:45px;padding-bottom:45px}.demo-section{grid-template-columns:1fr;padding:30px;gap:25px;margin-bottom:50px}.demo-section video{max-width:245px}.tool-row{grid-template-columns:40px 1fr;padding:23px;gap:14px}.tool-row .button{grid-column:2;justify-self:start;margin-top:6px}.tool-row h2{font-size:20px}.tool-number{font-size:27px;align-self:start}.tool-row .eyebrow{font-size:8px;letter-spacing:1px}.about-intro{grid-template-columns:1fr;padding:30px;gap:25px}.timeline article{grid-template-columns:1fr;gap:12px}.engineering{padding:28px}.engineering-grid{grid-template-columns:1fr;gap:24px}.resume-sheet{padding:25px;margin-block:25px}.resume-head{flex-wrap:wrap}.resume-jobs p{flex-direction:column;gap:2px}.resume-url{overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
@media print{@page{size:A4;margin:16mm}.site-header,.social-dock,.ambient,.contact-strip,.site-footer,#print-resume,dialog,.skip{display:none!important}body{background:white;color:#111;font-size:11pt}.resume-sheet{box-shadow:none;background:white;border:0;border-radius:0;margin:0;width:100%;padding:0;max-width:none}.resume-sheet h2{break-after:avoid;margin-top:20px}.resume-sheet article,.resume-jobs p{break-inside:avoid}.resume-sheet p{color:#333;font-size:10pt}.resume-head{display:block}.resume-sheet h3{font-size:12pt}}
/* Personal identity, contact dock and lightweight motion. */
.wordmark{display:inline-flex;align-items:center;gap:11px}
.wordmark .brand-name{color:var(--ink)}
.brand-avatar{width:34px;height:34px;border-radius:11px;box-shadow:0 0 0 2px #fff9,0 4px 12px #274e4820;transition:transform .3s}
.wordmark:hover .brand-avatar{transform:rotate(-7deg)}
.hero-identity{display:flex;align-items:center;gap:16px;margin-bottom:27px}
.identity-avatar{display:block;padding:4px;border:1px solid var(--edge);background:var(--surface);border-radius:21px;box-shadow:0 5px 20px #3656480d}
.identity-avatar img{width:54px;height:54px;border-radius:16px}
.identity-handle{display:block;font-size:14px;font-weight:600;letter-spacing:.02em;margin-bottom:4px}
.hero-identity .intro-label{font-size:11px;margin:0;gap:10px}
.profile-hero{margin-block:26px 42px;overflow:hidden}
.profile-cover{height:320px;position:relative;overflow:hidden;background:#236b78}
.profile-cover>img{width:100%;height:100%;object-fit:cover;object-position:70% center}
.profile-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#163c4966,transparent 45%);pointer-events:none}
.cover-label{position:absolute;left:38px;bottom:24px;color:#ecffffd6;letter-spacing:3px;font-size:10px;z-index:1}
.profile-identity{display:flex;align-items:center;gap:25px;padding:0 38px 30px}
.profile-avatar{width:115px;height:115px;border:6px solid var(--page);border-radius:30px;margin-top:-32px;position:relative;z-index:2;box-shadow:0 10px 30px #274a4826}
.profile-name{padding-top:24px}.profile-name .eyebrow{margin-bottom:7px;font-size:8px;letter-spacing:2px}
.profile-name h1{font-size:34px;letter-spacing:-1px}.profile-name h1 span{font-size:16px;color:var(--muted);font-weight:400;margin-left:14px;letter-spacing:0}.profile-name>p:last-child{font-size:12px;margin-top:7px}
.profile-identity>.button{margin-left:auto;margin-top:20px}
.social-dock{gap:4px;padding:7px;border-radius:30px;box-shadow:0 8px 35px #304d4c1a;background:var(--dock);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}
.social-dock .dock-item{position:relative;display:grid;place-items:center;width:40px;height:40px;padding:0;border:0;border-radius:50%;color:var(--muted);background:transparent;transition:transform .25s,background .25s,color .25s;outline-offset:3px}
.social-dock .dock-item:hover,.social-dock .dock-item:focus-visible{background:var(--surface-solid);color:var(--green);transform:translateY(-4px)}
.social-dock .dock-item[data-contact=wechat]:hover{color:var(--green)}.social-dock a[aria-label=Telegram]:hover{color:var(--green)}.social-dock a[aria-label=X]:hover,.social-dock a[aria-label=GitHub]:hover{color:var(--green)}
.social-icon{display:block;width:21px;height:21px;flex:none}
.dock-item:after{content:attr(data-label);position:absolute;bottom:calc(100% + 13px);left:50%;transform:translate(-50%,5px);border:1px solid var(--edge);background:var(--dialog);color:var(--muted);padding:5px 10px;border-radius:9px;font-size:11px;font-weight:400;white-space:nowrap;box-shadow:0 5px 18px #203b3415;pointer-events:none;opacity:0;transition:opacity .2s,transform .2s}
.dock-item:hover:after,.dock-item:focus-visible:after{opacity:1;transform:translate(-50%,0)}
.motion-toggle:after{left:auto;right:0;transform:translateY(5px)}.motion-toggle:hover:after,.motion-toggle:focus-visible:after{transform:translateY(0)}
.dock-divider{align-self:center;width:1px;height:19px;background:var(--line);margin-inline:2px}.motion-play{display:none}[data-motion=off] .motion-play{display:block}[data-motion=off] .motion-pause{display:none}
.contact-dialog{width:410px;max-width:calc(100vw - 32px);padding:45px 32px 22px;background:var(--dialog);backdrop-filter:blur(24px);border-radius:28px;text-align:center;overflow:auto}
.contact-dialog h2{font-size:12px;font-weight:500;color:var(--muted);letter-spacing:1px}
.contact-dialog h3{font-size:22px;margin-bottom:13px}.contact-dialog p{font-size:13px;line-height:1.8}
.contact-emblem{width:66px;height:66px;border-radius:22px;display:grid;place-items:center;background:var(--tint);color:var(--green);margin:25px auto 22px}.contact-emblem svg{width:31px;height:31px}.wechat-emblem{background:var(--tint);color:var(--green)}
.contact-value{display:block;width:100%;border:1px solid var(--edge);border-radius:13px;background:var(--surface-strong);color:var(--ink);text-align:center;font-family:inherit;font-size:17px;line-height:1.6;padding:13px 8px;margin:22px 0 20px;user-select:all;cursor:text}
.contact-value:focus-visible{outline:2px solid #71a78c;outline-offset:3px}.contact-dialog .button{font-size:13px;padding:11px 20px}.contact-actions{display:flex;gap:10px;justify-content:center}.copy-status{min-height:24px;color:var(--green);margin-top:17px!important}.contact-fallback{font-size:12px;padding-bottom:35px}
.reveal-ready{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}.reveal-ready.is-revealed{opacity:1;transform:none}
.phone-triptych{transition:transform .7s cubic-bezier(.2,.7,.2,1)}.project-art:hover .phone-triptych,.project-art:focus-visible .phone-triptych{transform:rotate(0) translateY(-10px)}
.tool-feature-image{transition:transform .6s}.tool-feature-image:hover{transform:rotate(0) translateY(-4px)}
@keyframes device-drift{0%,100%{translate:0 0}50%{translate:0 -12px}}
@keyframes orbit-breathe{0%,100%{scale:1;opacity:.75}50%{scale:1.05;opacity:1}}
@keyframes status-breathe{0%,100%{box-shadow:0 0 0 4px #4e99760c}50%{box-shadow:0 0 0 7px #4e99761a}}
@keyframes hero-arrive{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
@keyframes light-drift{0%,100%{translate:0 0}50%{translate:-30px 40px}}
@media(prefers-reduced-motion:no-preference){
 [data-motion=on] .hero-phone{animation:device-drift 8s ease-in-out infinite}
 [data-motion=on] .phone-seek{animation-duration:10s;animation-delay:-3s}
 [data-motion=on] .showcase-orbit{animation:orbit-breathe 12s ease-in-out infinite}
 [data-motion=on] .status-dot{animation:status-breathe 5s ease-in-out infinite}
 [data-motion=on] .hero-copy{animation:hero-arrive .85s ease both}
 [data-motion=on] .ambient:before{content:"";position:absolute;right:10%;top:7%;width:45vw;height:45vw;border-radius:50%;background:radial-gradient(circle,#a2d6d322,transparent 65%);animation:light-drift 20s ease-in-out infinite;will-change:translate}
 [data-motion=on].motion-suspended *,[data-motion=on].motion-suspended .ambient:before{animation-play-state:paused!important}
}
@media(hover:hover) and (pointer:fine){[data-motion=on] .hero-showcase{transform:perspective(1000px) rotateX(var(--look-y,0deg)) rotateY(var(--look-x,0deg));transition:transform .6s ease-out;transform-style:preserve-3d}}
[data-motion=off] .reveal-ready{opacity:1;transform:none;transition:none}
[data-motion=off] .hero-showcase{transform:none}
[data-motion=off] .hero-phone,[data-motion=off] .project-card,[data-motion=off] .phone-triptych,[data-motion=off] .tool-feature-image,[data-motion=off] .dock-item{transition:none}
@media(max-width:760px){
 .wordmark{font-size:20px;gap:9px}.brand-avatar{width:29px;height:29px;border-radius:9px}.site-header{gap:10px}.site-header nav a{padding:6px 9px}
 .hero-identity{margin-bottom:24px;gap:13px}.identity-avatar img{width:46px;height:46px;border-radius:14px}.identity-avatar{border-radius:18px}
 .profile-hero{margin-block:16px 26px}.profile-cover{height:190px}.cover-label{left:22px;bottom:15px;font-size:8px;letter-spacing:2px}.profile-identity{flex-wrap:wrap;padding:0 22px 24px;gap:15px}.profile-avatar{width:76px;height:76px;border-radius:23px;border-width:4px;margin-top:-20px}.profile-name{flex:1;padding-top:18px}.profile-name h1{font-size:28px}.profile-name h1 span{font-size:12px;margin-left:9px}.profile-name .eyebrow{font-size:6px;letter-spacing:1px}.profile-name>p:last-child{font-size:10px}.profile-identity>.button{margin:6px 0 0;width:100%;font-size:12px}
 .social-dock{gap:2px;padding:6px;bottom:max(14px,env(safe-area-inset-bottom));right:14px}.social-dock .dock-item{width:36px;height:36px}.social-icon{width:20px;height:20px}.contact-dialog{padding:42px 23px 19px}.contact-dialog h3{font-size:20px}.contact-dialog .button{padding-inline:16px}.contact-value{font-size:16px}.site-footer{padding-bottom:100px}
}
@media(max-width:360px){.site-header{height:112px;padding:12px 0;justify-content:center}.site-header nav{order:2}.profile-identity{gap:12px;padding-inline:17px}.profile-name h1{font-size:25px}.profile-name h1 span{font-size:11px;margin-left:7px}}
@media(prefers-reduced-motion:reduce){.reveal-ready{opacity:1;transform:none}.hero-showcase{transform:none!important}.motion-toggle{opacity:.55}.project-art:hover .phone-triptych{transform:none}}
@media print{.reveal-ready{opacity:1!important;transform:none!important}.contact-dialog,.contact-fallback{display:none!important}}
/* Project archive: explicit media shapes and shared career content. */
.project-card.workbench-card{grid-column:1/-1;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:28px;padding:18px}
.workbench-card .project-art{height:330px}.workbench-card .project-info{padding:22px 22px 22px 0}
.workbench-card h3{font-size:29px}.workbench-description{line-height:1.9;font-size:13px!important;margin-top:17px!important}.workbench-note{display:block;font-size:10px;color:var(--muted);margin-top:12px}.workbench-card .card-bottom{margin-top:22px}
.card-heading{align-items:flex-start}.card-heading h3{min-width:0;line-height:1.4}.card-bottom{flex-wrap:wrap;row-gap:8px}
.art-posters{background:#101414}.art-posters .art-top{color:#cdf4de}
.poster-collage{display:flex;gap:13px;position:absolute;inset:72px 25px auto;align-items:flex-start;transform:rotate(-5deg);transition:transform .6s}
.poster-collage img{width:calc((100% - 26px)/3);height:auto;border:1px solid var(--edge);border-radius:13px;box-shadow:0 10px 25px #0006}.poster-collage img:nth-child(2){margin-top:-25px}
.project-art:hover .poster-collage{transform:rotate(0deg) translateY(-5px)}
.landscape-collage{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:450px;width:calc(100% - 70px);margin:62px auto 0;transform:rotate(-3deg);transition:transform .5s}
.landscape-collage img{width:100%;height:auto;border:3px solid var(--edge);border-radius:10px;box-shadow:0 8px 20px #43372d17}.landscape-collage img:first-child{grid-column:1/-1}
.project-art:hover .landscape-collage{transform:rotate(0deg)}
.home-deliveries{padding-top:0}.engineering-selection{padding-top:0}.experience-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.experience-card{padding:30px;display:flex;flex-direction:column;transition:transform .25s,box-shadow .25s}.experience-card:hover{transform:translateY(-4px);box-shadow:0 15px 35px #36564815}.experience-card h3{font-size:22px;line-height:1.45}.experience-card h3 span{color:var(--green);font-size:18px}.experience-card p{font-size:13px;line-height:1.9;margin:16px 0 20px}.experience-card small{font-size:11px;color:var(--muted);margin-top:auto}.experience-card .eyebrow{font-size:9px}.all-projects-link{display:inline-block;margin-top:27px}
.concept-visual{height:100%;padding:66px 26px 25px;text-align:center;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;isolation:isolate}
.concept-label{font-size:8px;letter-spacing:2px;color:var(--muted);margin-bottom:22px}.concept-hub{position:relative;padding:18px 28px;border:1px solid var(--edge);background:var(--surface-strong);box-shadow:0 10px 28px #35554912;border-radius:20px;max-width:100%;font-size:20px;line-height:1.5}
.concept-orbit{position:absolute;inset:-13px;border:1px solid var(--edge);border-radius:30px;z-index:-1}.concept-branches{display:flex;justify-content:center;gap:11px;position:relative;margin-top:34px;width:100%;max-width:440px}
.concept-branches:before{content:"";position:absolute;left:16%;right:16%;top:-17px;height:1px;background:#88a49a65}.concept-branches:after{content:"";position:absolute;left:50%;top:-34px;height:17px;width:1px;background:#88a49a65}
.concept-branches>span{position:relative;border:1px solid var(--edge);border-radius:12px;padding:12px 8px;font-size:11px;line-height:1.5;background:var(--surface);flex:1}
.concept-branches>span:before{content:"";position:absolute;left:50%;top:-17px;height:17px;width:1px;background:#88a49a65}
.concept-footer{font-size:10px;margin-top:20px;color:var(--muted)}.concept-disclaimer{display:block;font-size:9px;letter-spacing:.5px;color:var(--muted);margin-top:20px;border:1px solid var(--edge);padding:2px 9px;border-radius:20px;background:var(--surface)}
.concept-tv .concept-hub{border:5px solid #607c70;border-radius:12px;min-width:65%;padding:12px 15px}.concept-tv .concept-branches{gap:7px}.concept-tv .concept-branches>span{font-size:10px;padding:12px 5px}
.concept-ledger .concept-hub,.concept-match .concept-hub{border-radius:40px}.concept-distribution .concept-hub{border-radius:10px 26px 10px 26px}
.concept-detail{height:420px;overflow:hidden}.concept-detail .concept-visual{padding:35px}.concept-detail .concept-hub{font-size:28px;min-width:280px}.concept-detail .concept-branches{max-width:660px}.concept-detail .concept-branches>span{font-size:15px}.concept-detail .concept-label{font-size:10px}.concept-detail .concept-footer{font-size:13px}.concept-detail .concept-disclaimer{font-size:10px}
.material-note{font-size:12px!important;border-left:2px solid #acc4b5;padding-left:15px;color:var(--muted);margin-top:25px!important}
.project-title-row h1{display:block;overflow-wrap:anywhere;font-size:clamp(28px,3.3vw,44px);line-height:1.35}.project-title-row h1 .badge{vertical-align:middle;margin-left:9px}.project-title-row>div:first-child{min-width:0}.project-meta{gap:8px}.project-actions:empty{display:none}
.gallery-posters .screenshot-button{border-radius:16px}.gallery-landscape{grid-template-columns:1fr 1fr;padding:35px}.gallery-landscape figure:first-child{grid-column:1/-1;width:min(100%,740px);justify-self:center}.gallery-landscape .screenshot-button{border-radius:14px}
.workspace-entry{padding:38px 45px;margin-bottom:80px;display:flex;justify-content:space-between;gap:35px;align-items:center}.workspace-entry h2{font-size:25px}.workspace-entry p{font-size:12px;max-width:550px;margin-top:16px}.workspace-links{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.workspace-links .button{font-size:12px;padding:11px 18px}
.career-points{padding-left:18px;color:var(--muted);font-size:14px;line-height:1.95;margin:12px 0 0}.career-points li+li{margin-top:8px}.job-role{display:block;font-size:12px;color:var(--muted);margin-top:8px}.experience-projects{padding-top:10px}
.resume-sections{display:flex;gap:8px;flex-wrap:wrap;margin:26px 0 12px;border-bottom:1px solid var(--line);padding-bottom:20px}.resume-sections a{font-size:12px;padding:5px 12px;border:1px solid var(--edge);border-radius:20px;color:var(--green)}.resume-sheet h2{margin-top:38px}.resume-skills{margin:0}.resume-skills>div{display:grid;grid-template-columns:140px 1fr;gap:18px;margin:13px 0}.resume-skills dt{font-size:13px;font-weight:600}.resume-skills dd{margin:0;font-size:13px;color:var(--muted)}
.resume-project,.resume-job{padding:20px 0;border-bottom:1px solid var(--edge)}.resume-project:last-child,.resume-job:last-child{border:0}.resume-project-title{display:flex;align-items:baseline;justify-content:space-between;gap:14px}.resume-project-title h3{font-size:19px;margin:0;line-height:1.5}.resume-project-title>span{font-size:11px;white-space:nowrap;color:var(--muted)}.resume-project-role{font-size:11px!important;color:var(--muted);margin:6px 0 10px!important}.resume-sheet ul{padding-left:18px;font-size:13px;line-height:1.9;color:var(--muted);margin:12px 0}.resume-sheet li+li{margin-top:7px}.resume-sheet li strong{font-weight:550;color:var(--ink)}.resume-detail-link{font-size:11px;color:var(--green)}.resume-project-title h3 a:hover{text-decoration:underline;text-underline-offset:4px}
@media(min-width:761px) and (max-width:1100px){.workbench-card h3{font-size:24px}.project-card.workbench-card{gap:20px}.workbench-card .project-art{height:300px}.landscape-collage{width:calc(100% - 45px)}.concept-visual{padding-inline:18px}.concept-branches{gap:6px}.concept-branches>span{font-size:10px}}
@media(max-width:760px){
 .project-card.workbench-card{grid-template-columns:1fr;gap:0;padding:12px}.workbench-card .project-art{height:245px}.workbench-card .browser-preview{margin-top:53px}.workbench-card .project-info{padding:23px 13px 15px}.workbench-card h3{font-size:24px}.workbench-card .tag-row{flex-wrap:wrap}
 .experience-grid{grid-template-columns:1fr;gap:16px}.experience-card{padding:25px}.experience-card h3{font-size:20px}.home-deliveries,.engineering-selection{padding-top:0}
 .poster-collage{inset:75px 20px auto;gap:9px}.poster-collage img{width:calc((100% - 18px)/3);border-radius:10px}.landscape-collage{margin-top:75px;width:calc(100% - 36px);gap:8px}
 .concept-visual{padding-inline:18px}.concept-hub{font-size:18px;padding:15px 20px}.concept-branches{gap:7px}.concept-branches>span{font-size:10px;padding:11px 5px}.concept-tv .concept-branches{gap:5px}.concept-tv .concept-branches>span{font-size:9px;padding-inline:3px}.concept-label{font-size:7px}.concept-disclaimer{font-size:9px}
 .concept-detail{height:370px}.concept-detail .concept-visual{padding:25px 18px}.concept-detail .concept-hub{min-width:0;font-size:21px}.concept-detail .concept-branches>span{font-size:10px}.concept-detail .concept-footer{font-size:10px}.concept-detail .concept-label{font-size:8px}.concept-detail .concept-disclaimer{font-size:9px}
 .gallery-landscape{display:grid;grid-template-columns:1fr;padding:20px;gap:25px;overflow:visible}.gallery-landscape figure:first-child{grid-column:auto}.gallery-landscape figure{width:100%}.gallery-posters{padding:25px;gap:20px}.gallery-posters figure{flex-basis:75%}
 .workspace-entry{padding:28px;display:block;margin-bottom:50px}.workspace-entry h2{font-size:23px}.workspace-links{justify-content:start;margin-top:25px}.workspace-links .button{font-size:11px}.project-title-row h1 .badge{margin:10px 0 0;display:table}
 .career-points{font-size:13px}.resume-project-title{flex-direction:column;gap:4px}.resume-project-title h3{font-size:18px}.resume-project-title>span{font-size:11px}.resume-skills>div{grid-template-columns:1fr;gap:3px;margin:17px 0}.resume-sections{gap:7px}.resume-sections a{font-size:11px;padding:5px 9px}.resume-sheet ul{font-size:12px}.resume-sheet p,.resume-skills dd{font-size:12px}
}
@media(prefers-reduced-motion:reduce){.project-art:hover .poster-collage,.project-art:hover .landscape-collage,.experience-card:hover{transform:none}}
@media print{
 .resume-sections,.resume-detail-link{display:none!important}.resume-sheet h2{font-size:15pt;margin-top:20px}.resume-sheet h3,.resume-project-title h3{font-size:12pt;break-after:avoid}.resume-project-title{display:flex;flex-direction:row}.resume-project-title>span{font-size:9pt}.resume-project,.resume-job{padding:12px 0;break-inside:avoid}.resume-sheet p,.resume-sheet ul,.resume-skills dt,.resume-skills dd{font-size:9.5pt;line-height:1.65;color:#333}.resume-skills>div{display:grid;grid-template-columns:110px 1fr;gap:16px;break-inside:avoid;margin:9px 0}.resume-sheet li+li{margin-top:5px}.resume-project-role{font-size:9pt!important}.resume-sheet a{color:inherit}.resume-url{font-size:8pt!important;overflow-wrap:anywhere}
}

/* Color preference is applied before paint; CSS follows the system without JavaScript. */
:root[data-theme="dark"]{--page:#101916;--ink:#e7f0eb;--muted:#b1c1b8;--line:#354c42;--edge:#d7f4e324;--green:#a5d9b9;--primary:#b1dfc1;--on-primary:#13281c;--shadow:0 18px 55px #00000024;--glass:linear-gradient(135deg,#243d32bd,#1b2c26a6);--surface:#243c308c;--surface-strong:#2d4439b3;--surface-solid:#304b3d;--dock:#20362be6;--dialog:#1a2e25f5;--tint:#2b4537;--sage:linear-gradient(140deg,#2d3b32,#243b30 48%,#34372f);--mint:linear-gradient(130deg,#254a3b,#213e35 45%,#203d38);--blue:linear-gradient(140deg,#26384b,#33384c);--lavender:linear-gradient(135deg,#383547,#283c46);--sand:linear-gradient(135deg,#463d30,#383b30);--ambient:radial-gradient(ellipse at 85% 12%,#24543e80,transparent 44%),radial-gradient(ellipse at 5% 50%,#253e5666,transparent 45%),radial-gradient(ellipse at 75% 85%,#51452e40,transparent 48%);color-scheme:dark;}
@media(prefers-color-scheme:dark){:root:not([data-theme]){--page:#101916;--ink:#e7f0eb;--muted:#b1c1b8;--line:#354c42;--edge:#d7f4e324;--green:#a5d9b9;--primary:#b1dfc1;--on-primary:#13281c;--shadow:0 18px 55px #00000024;--glass:linear-gradient(135deg,#243d32bd,#1b2c26a6);--surface:#243c308c;--surface-strong:#2d4439b3;--surface-solid:#304b3d;--dock:#20362be6;--dialog:#1a2e25f5;--tint:#2b4537;--sage:linear-gradient(140deg,#2d3b32,#243b30 48%,#34372f);--mint:linear-gradient(130deg,#254a3b,#213e35 45%,#203d38);--blue:linear-gradient(140deg,#26384b,#33384c);--lavender:linear-gradient(135deg,#383547,#283c46);--sand:linear-gradient(135deg,#463d30,#383b30);--ambient:radial-gradient(ellipse at 85% 12%,#24543e80,transparent 44%),radial-gradient(ellipse at 5% 50%,#253e5666,transparent 45%),radial-gradient(ellipse at 75% 85%,#51452e40,transparent 48%);color-scheme:dark;}}
.header-actions{display:flex;align-items:center;gap:12px}
.theme-toggle{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--edge);border-radius:50%;background:var(--surface);backdrop-filter:blur(20px);color:var(--ink);flex:none;transition:background .2s,transform .2s}
.theme-toggle:hover{background:var(--surface-solid);transform:rotate(-12deg)}
.theme-toggle .social-icon{width:21px;height:21px}.theme-moon{display:none}
[data-theme="dark"] .theme-sun{display:none}[data-theme="dark"] .theme-moon{display:block}
dialog{color:var(--ink)}.contact-value{caret-color:var(--ink)}
.graphite{background:linear-gradient(135deg,#193a30,#17232d 65%,#253b32);--muted:#b9d8c8}
.graphite .mini-phone{border-color:#42554b;box-shadow:0 15px 35px #0005}.graphite .art-top{color:#b9d8c8}
.gallery-phones.graphite figcaption{color:#c3ddce}
@media(max-width:760px){.site-header{height:auto;display:grid;grid-template-columns:1fr auto;padding:18px 0;gap:16px}.header-actions{grid-column:2;grid-row:1}.site-header nav{grid-row:2;grid-column:1/-1;justify-self:center;order:0}.site-header nav a{padding:7px 22px}.theme-toggle{width:42px;height:42px}}
@media print{:root[data-theme],:root:not([data-theme]),:root{color-scheme:light;--ink:#111;--muted:#333;--green:#24533a;--line:#ccc;--edge:#ddd;--page:#fff;--glass:none}.resume-sheet{background:#fff;color:#111}.resume-sheet li strong{color:#111}.theme-toggle{display:none!important}}

/* Keep the navigation centered when the header contains only the theme control. */
@media(min-width:761px){.site-header{display:grid;grid-template-columns:1fr auto 1fr}.wordmark{justify-self:start}.header-actions{justify-self:end}}
