:root{--color-bg:#f9f8f5;--color-surface:#fff;--color-text:#2d2b28;--color-text-muted:#6b6560;--color-border:#e8e4dc;--color-accent:#c17d4f;--color-accent-text:#7d4a28;--color-accent-soft:#ead9cc;--color-identity-accent:#7a9e7e;--color-identity-accent-text:#4a6b4e;--color-identity-accent-soft:#dce8dd;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.25rem;--font-size-xl:1.75rem;--font-size-2xl:2.5rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--line-height-relaxed:1.7;--line-height-heading:1.15;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--space-4xl:6rem;--page-width:42rem;--page-padding:var(--space-lg);--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 12px #00000014;--shadow-card-hover:0 6px 20px #0000001a;--transition-fast:.15s ease;--transition-base:.25s ease;--dot-opacity:.35;--dot-color:rgba(180, 175, 165, var(--dot-opacity));--dot-size:1.5px;--dot-spacing:22px}*,:before,:after{box-sizing:border-box;margin:0}html{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background-image:radial-gradient(circle, var(--dot-color) var(--dot-size), transparent var(--dot-size));background-size:var(--dot-spacing) var(--dot-spacing);min-height:100dvh}img{max-width:100%;display:block}a{color:var(--color-accent-text);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer;color:inherit}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.hero h1,.section-heading{font-weight:var(--font-weight-medium)}:lang(zh) .hero h1,:lang(zh) .section-heading{font-weight:var(--font-weight-bold)}.container{max-width:var(--page-width);padding:0 var(--page-padding);margin:0 auto}.section{padding:var(--space-3xl) 0}.section-heading{font-size:var(--font-size-xl);line-height:var(--line-height-heading);margin-bottom:var(--space-lg);color:var(--color-text)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);transition:transform var(--transition-fast), box-shadow var(--transition-fast)}.card+.card{margin-top:var(--space-md)}@media (hover:hover){.project-card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}}.site-header{padding:var(--space-lg) 0}.site-header .container{justify-content:space-between;align-items:center;display:flex}.site-header-left{align-items:center;gap:var(--space-xl);display:flex}.brand-mark{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-identity-accent-text);white-space:nowrap}.site-nav{gap:var(--space-md);padding:0;list-style:none;display:flex}.site-nav a{font-size:var(--font-size-sm);color:var(--color-text-muted);transition:color var(--transition-fast)}.site-nav a:hover{color:var(--color-accent-text);text-decoration:none}.hero{padding:var(--space-2xl) 0 var(--space-3xl)}.hero-mark{vertical-align:middle;margin-right:var(--space-sm);color:var(--color-identity-accent);display:inline-block}.hero h1{font-size:var(--font-size-2xl);line-height:var(--line-height-heading);margin-bottom:var(--space-md);align-items:center;gap:var(--space-sm);display:flex}.hero p{font-size:var(--font-size-lg);color:var(--color-text-muted);max-width:34rem}.hero p+p{margin-top:var(--space-sm)}.hero-rule{border:none;border-top:1px solid var(--color-border);margin:0}.project-card .card-top{justify-content:space-between;align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-sm);display:flex}.project-card h3{font-size:var(--font-size-base);font-weight:var(--font-weight-bold)}.project-card .card-desc{font-size:var(--font-size-sm);color:var(--color-text-muted)}.status-badge{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-sm);white-space:nowrap;flex-shrink:0;padding:.15em .6em}.status-badge--shipped{background:var(--color-identity-accent-soft);color:var(--color-identity-accent-text)}.status-badge--exploring{border:1px dashed var(--color-text-muted);color:var(--color-text-muted);background:0 0}.status-badge--building{background:var(--color-accent-soft);color:var(--color-accent-text)}.status-badge--paused{border:1px solid var(--color-text-muted);color:var(--color-text-muted);background:0 0}.note-card h3{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);margin-bottom:var(--space-xs)}.note-card .note-body{font-size:var(--font-size-sm);color:var(--color-text-muted)}.note-card .note-date{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--space-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.about p{max-width:36rem}.about p+p{margin-top:var(--space-md)}.skip-link{top:-100%;left:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-accent);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);z-index:1000;text-decoration:none;position:absolute}.skip-link:focus{top:var(--space-md)}.personal-corner{padding:var(--space-3xl) 0;border-top:1px dashed var(--color-border)}.personal-text{font-size:var(--font-size-sm);color:var(--color-text-muted);max-width:36rem}.contact-list{gap:var(--space-lg);margin-bottom:var(--space-sm);padding:0;list-style:none;display:flex}.contact-link{font-weight:var(--font-weight-medium)}.contact-note{font-size:var(--font-size-sm);color:var(--color-text-muted)}.site-footer{padding:var(--space-2xl) 0;color:var(--color-text-muted);font-size:var(--font-size-sm)}.lang-switch{border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-accent-text);transition:background var(--transition-fast), border-color var(--transition-fast);background:0 0;padding:.25em .75em}.lang-switch:hover{background:var(--color-accent-soft);border-color:var(--color-accent)}@media (width<=640px){:root{--page-padding:var(--space-md)}.section{padding:var(--space-2xl) 0}.hero{padding:var(--space-lg) 0 var(--space-2xl)}.hero h1{font-size:var(--font-size-xl)}.hero p{font-size:var(--font-size-base)}.site-nav{gap:var(--space-sm)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}
