:root{--ink:#17212b;--muted:#657380;--line:rgba(23,33,43,.15);--paper:#f8fafc;--accent:#087e70;--sans:"Microsoft YaHei UI","Yu Gothic UI",Arial,sans-serif;--mono:Consolas,"Courier New",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.6}.grid{position:fixed;inset:0;z-index:-1;opacity:.7;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:clamp(58px,8vw,110px) clamp(58px,8vw,110px);mask-image:linear-gradient(to bottom,black,transparent 87%)}.site-header{height:76px;max-width:1280px;padding:0 36px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font:500 1.35rem var(--mono);color:var(--ink);text-decoration:none;letter-spacing:-.1em}.brand span,em{color:var(--accent)}nav{display:flex;gap:28px}nav a{font-size:.82rem;color:var(--muted);text-decoration:none;transition:.2s}nav a:hover{color:var(--accent)}.languages{display:flex;gap:4px}.languages button{border:0;border-radius:50%;width:28px;height:28px;padding:0;background:transparent;color:var(--muted);font:.68rem var(--mono);cursor:pointer}.languages button.active{background:var(--accent);color:#fff}.section{max-width:1280px;margin:auto;padding:clamp(88px,13vw,170px) 36px;border-bottom:1px solid var(--line)}.hero{min-height:calc(100vh - 76px);display:flex;flex-direction:column;justify-content:center;position:relative}.eyebrow,.section-label{font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}.status-dot{display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 16px rgba(8,126,112,.45)}h1{max-width:900px;margin:18px 0 22px;font-size:clamp(3.2rem,9vw,8.7rem);line-height:1.03;letter-spacing:-.07em;font-weight:500}em{font-style:normal}.hero-copy{max-width:530px;color:var(--muted);font-size:clamp(1rem,1.5vw,1.2rem)}.hero-actions{display:flex;gap:12px;margin-top:28px}.button{display:inline-flex;align-items:center;gap:22px;padding:13px 18px;border:1px solid var(--line);font-size:.87rem;text-decoration:none;cursor:pointer;font-family:var(--sans);transition:.2s}.primary{background:var(--accent);border-color:var(--accent);color:#fff}.primary:hover{background:#065f56}.ghost{color:var(--ink)}.ghost:hover{border-color:var(--accent);color:var(--accent)}.hero-index{position:absolute;bottom:35px;display:flex;gap:12px;color:var(--muted);font:.68rem var(--mono)}.split{display:grid;grid-template-columns:1fr 2fr;gap:7vw}.split h2,.contact h2{margin:0 0 28px;font-weight:500;font-size:clamp(2rem,4vw,3.7rem);line-height:1.18;letter-spacing:-.05em}.body-copy{max-width:650px;color:var(--muted);font-size:1.04rem}.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:50px 0 0}.facts div{border-top:1px solid var(--line);padding-top:12px}.facts dt{font:.68rem var(--mono);color:var(--muted);margin-bottom:8px}.facts dd{margin:0;font-size:.88rem}.section-heading{margin:10px 0 40px;font-size:clamp(2rem,4vw,3.7rem);font-weight:500;letter-spacing:-.05em}.skill-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:rgba(255,255,255,.46)}.skill-grid article{min-height:260px;padding:25px;border-right:1px solid var(--line)}.skill-grid article:last-child{border:0}.skill-grid span{font:500 .7rem var(--mono);color:var(--accent)}.skill-grid h3{margin:54px 0 10px;font-weight:500;font-size:1.3rem}.skill-grid p{margin:0;color:var(--muted);font-size:.83rem;line-height:1.8}.experience-empty{min-height:350px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;border:1px solid var(--line);background:rgba(255,255,255,.46);overflow:hidden;position:relative}.experience-empty h2{position:relative;margin:0;font-size:clamp(1.8rem,3.6vw,3.4rem);font-weight:500;letter-spacing:-.05em}.experience-empty p{position:relative;color:var(--muted)}.orb{position:absolute;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#d8fff3,#85cfc2 30%,#d4e6f8 65%,transparent 70%);opacity:.75;animation:float 8s ease-in-out infinite}@keyframes float{50%{transform:translate(25px,-18px) scale(1.08)}}.contact{display:grid;grid-template-columns:1fr 1fr;gap:6vw}.contact .section-label{grid-column:1/-1;margin:0}.contact-intro h2{font-size:clamp(2.4rem,5vw,4.8rem)}.email-link{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:4px;font:clamp(.85rem,1.3vw,1rem) var(--mono)}form{display:flex;flex-direction:column;gap:20px}label{display:flex;flex-direction:column;gap:8px;color:var(--muted);font:.75rem var(--mono)}input,textarea{border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:9px 0;color:var(--ink);font:1rem var(--sans);outline:0;resize:vertical}input:focus,textarea:focus{border-color:var(--accent)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}.honeypot{position:absolute;left:-9999px}#form-status{min-height:24px;margin:0;font-size:.85rem;color:var(--accent)}footer{max-width:1280px;margin:auto;padding:24px 36px;display:flex;justify-content:space-between;color:var(--muted);font:.68rem var(--mono)}footer a{color:var(--ink);text-decoration:none}@media(max-width:720px){.site-header,.section,footer{padding-left:20px;padding-right:20px}.site-header nav{display:none}.split,.contact{grid-template-columns:1fr;gap:35px}.facts,.skill-grid{grid-template-columns:1fr}.skill-grid article{min-height:0;border-right:0;border-bottom:1px solid var(--line)}.skill-grid article:last-child{border-bottom:0}.skill-grid h3{margin-top:28px}.form-row{grid-template-columns:1fr}.hero{min-height:calc(100svh - 76px)}}

/* Original Foxian Diling pet: seven idle frames from the supplied atlas. */
.hero-pet{display:flex;align-items:center;gap:20px;margin:28px 0 32px;align-self:flex-start}
.pet-sprite{flex:0 0 144px;width:144px;height:156px;background:url('foxian-diling.webp') 0 0 / 1152px 1716px no-repeat;animation:pet-idle 1.4s steps(7) infinite}
.hero-pet figcaption{font-size:.95rem;color:var(--ink)}
.hero-pet figcaption span{display:block;margin-top:4px;color:var(--muted);font:.7rem var(--mono)}
@keyframes pet-idle{to{background-position:-1008px 0}}
@media(prefers-reduced-motion:reduce){.pet-sprite{animation:none}}
