:root{--bg:#fff;--ink:#141414;--muted:#6b6b6b;--faint:#a0a0a0;--line:#e8e8e5;--accent:#141414;--radius:14px;--container:880px;--font-sans:"Funnel Sans", "PingFang TC", "Noto Sans TC", sans-serif;--font-mono:"JetBrains Mono", "SF Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}a:hover{opacity:.7}img{max-width:100%;display:block}.site-header{z-index:50;-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#ffffffd9;position:sticky;top:0}.header-flex{max-width:var(--container);justify-content:space-between;align-items:center;height:3.75rem;margin:0 auto;padding:0 1.5rem;display:flex}.brand{letter-spacing:-.01em;font-size:1.05rem;font-weight:600}.nav-menu{gap:1.6rem;display:flex}.nav-menu a{color:var(--muted);font-size:.9rem;transition:color .25s}.nav-menu a:hover{color:var(--ink);opacity:1}.nav-menu a.active{color:var(--ink);font-weight:500}.main{max-width:var(--container);margin:0 auto;padding:0 1.5rem}section{border-bottom:1px solid var(--line);padding:4.5rem 0}section:last-of-type{border-bottom:none}.section-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:1.4rem;font-size:.72rem}.section-title{letter-spacing:-.02em;margin-bottom:2.2rem;font-size:1.6rem;font-weight:500}.hero{border-bottom:1px solid var(--line);padding:6rem 0 4.5rem}.hero-avatar{background:var(--ink);width:84px;height:84px;color:var(--bg);border-radius:50%;justify-content:center;align-items:center;margin-bottom:1.8rem;font-size:1.9rem;font-weight:600;display:flex}.hero h1{letter-spacing:-.03em;margin-bottom:1rem;font-size:clamp(2rem,5vw,2.6rem);font-weight:500;line-height:1.15}.hero p{color:var(--muted);max-width:560px;margin-bottom:1.6rem;font-size:1.08rem}.hero a.mail{color:var(--ink);border-bottom:1px solid var(--ink);align-items:center;gap:.5rem;padding-bottom:2px;font-size:1rem;font-weight:500;transition:opacity .25s,border-color .25s;display:inline-flex}.hero a.mail:hover{opacity:.7}.projects-grid{grid-template-columns:repeat(2,1fr);gap:1.4rem;display:grid}.project-card{border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem 1.5rem;transition:border-color .3s,transform .3s,box-shadow .3s;display:block}.project-card:hover{opacity:1;border-color:#d8d8d4;transform:translateY(-3px);box-shadow:0 12px 32px #0000000f}.project-card .proj-dot{border-radius:50%;width:10px;height:10px;margin-bottom:1.1rem}.project-card h3{letter-spacing:-.02em;margin-bottom:.45rem;font-size:1.15rem;font-weight:600}.project-card p{color:var(--muted);font-size:.92rem;line-height:1.6}.project-card .proj-year{font-family:var(--font-mono);color:var(--faint);margin-top:1.1rem;font-size:.72rem}.view-all{color:var(--muted);border-bottom:1px solid var(--line);margin-top:1.8rem;padding-bottom:2px;font-size:.92rem;transition:color .25s,border-color .25s;display:inline-block}.view-all:hover{color:var(--ink);border-color:var(--ink);opacity:1}.stack-tags{flex-wrap:wrap;gap:.6rem;display:flex}.stack-tag{color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:.35rem .9rem;font-size:.85rem;transition:border-color .25s,color .25s}.stack-tag:hover{border-color:var(--ink);color:var(--ink)}.about-text p{color:var(--muted);max-width:640px;margin-bottom:1.2rem}.about-text p:last-child{margin-bottom:0}.timeline{flex-direction:column;display:flex}.timeline-item{border-bottom:1px solid var(--line);grid-template-columns:90px 1fr;gap:1.5rem;padding:1.1rem 0;display:grid}.timeline-item:last-child{border-bottom:none}.timeline-item .tl-period{font-family:var(--font-mono);color:var(--faint);padding-top:.2rem;font-size:.78rem}.timeline-item .tl-title{margin-bottom:.2rem;font-size:1rem;font-weight:600}.timeline-item .tl-desc{color:var(--muted);font-size:.88rem}.skills-list{grid-template-columns:repeat(2,1fr);gap:.7rem 2rem;display:grid}.skills-list li{color:var(--muted);padding-left:1.2rem;font-size:.92rem;list-style:none;position:relative}.skills-list li:before{content:"";background:var(--faint);border-radius:50%;width:5px;height:5px;position:absolute;top:.55em;left:0}.writing-list{flex-direction:column;display:flex}.writing-item{border-bottom:1px solid var(--line);padding:1.4rem 0;transition:padding-left .3s cubic-bezier(.22,1,.36,1);display:block}.writing-item:last-child{border-bottom:none}.writing-item:hover{opacity:1;padding-left:.6rem}.writing-item h3{margin-bottom:.3rem;font-size:1.05rem;font-weight:600}.writing-item p{color:var(--muted);margin-bottom:.5rem;font-size:.9rem}.writing-item .w-date{font-family:var(--font-mono);color:var(--faint);font-size:.72rem}.site-footer{max-width:var(--container);color:var(--faint);justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:2.5rem 1.5rem 3.5rem;font-size:.85rem;display:flex}.footer-link{color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:1px}.footer-link:hover{color:var(--ink);border-color:var(--ink);opacity:1}.page-hero{border-bottom:1px solid var(--line);padding:4.5rem 0 3rem}.page-hero h1{letter-spacing:-.03em;margin-bottom:.8rem;font-size:2.2rem;font-weight:500}.page-hero p{color:var(--muted);max-width:520px}@media (width<=640px){.projects-grid,.skills-list{grid-template-columns:1fr}.timeline-item{grid-template-columns:1fr;gap:.3rem}.site-footer{flex-direction:column;align-items:flex-start;gap:.6rem}section{padding:3.5rem 0}.hero{padding:4.5rem 0 3.5rem}}
