:root{
  --ink:#17142f;
  --paper:#f7f3ea;
  --card:#fffdf7;
  --muted:#5b6272;
  --violet:#7a35ff;
  --cyan:#00a7bd;
  --gold:#f6c85f;
  --line:#17142f;
  --soft:rgba(23,20,47,.09);
  --shadow:9px 9px 0 var(--ink);
  --shadow-sm:5px 5px 0 var(--ink);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{
  margin:0;
  color:var(--ink);
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;
  line-height:1.6;
  overflow-x:hidden;
  background:
    radial-gradient(circle at 78% 12%,rgba(122,53,255,.22),transparent 28rem),
    radial-gradient(circle at 12% 38%,rgba(0,167,189,.18),transparent 26rem),
    linear-gradient(var(--soft) 1px,transparent 1px),
    linear-gradient(90deg,var(--soft) 1px,transparent 1px),
    var(--paper);
  background-size:auto,auto,32px 32px,32px 32px,auto;
}
body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background:linear-gradient(120deg,transparent 0 52%,rgba(23,20,47,.055) 52% 72%,transparent 72%);
}
a{color:inherit}
.noise{display:none}
.skip-link{position:absolute;left:-999px}.skip-link:focus{left:16px;top:16px;background:#fff;border:2px solid var(--line);padding:8px 12px;z-index:20}
.site-header{position:sticky;top:0;z-index:10;background:rgba(247,243,234,.84);backdrop-filter:blur(14px);border-bottom:2px solid var(--line)}
.nav{max-width:1180px;margin:auto;padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:18px}
.brand{font:800 14px/1 "JetBrains Mono",monospace;text-decoration:none;letter-spacing:.08em;background:var(--ink);color:white;padding:12px 14px;box-shadow:var(--shadow-sm);position:relative}.brand::after{content:"";position:absolute;right:-7px;top:7px;width:7px;height:100%;background:var(--violet);border-right:2px solid var(--line);border-bottom:2px solid var(--line)}
.nav-links{display:flex;gap:8px}.nav-links a{font:700 13px/1 "JetBrains Mono",monospace;text-decoration:none;border:2px solid var(--line);background:rgba(255,253,247,.9);padding:10px 12px;transition:transform .16s ease,background .16s ease,box-shadow .16s ease}.nav-links a:hover,.nav-links a.active{background:var(--gold);transform:translate(-3px,-3px);box-shadow:var(--shadow-sm)}
.menu-btn{display:none;border:2px solid var(--line);background:var(--card);color:var(--ink);font:800 13px "JetBrains Mono",monospace;padding:10px 12px}
main{max-width:1180px;margin:auto;padding:0 20px}.section-pad{padding:90px 0}.hero{padding:68px 0 56px;display:grid;grid-template-columns:minmax(0,572px) 559px;align-items:center;gap:48px}
.kicker,.label,.project-meta,.work-list time,.skill-board span,.award-marquee span{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.kicker,.label{color:var(--cyan)}
.hero-copy{position:relative}
.hero h1{margin:0;font-size:clamp(68px,9vw,112px);line-height:.98;letter-spacing:-.055em;font-weight:900}.hero h1 span{display:block;margin-top:.06em;font-size:.78em;letter-spacing:-.045em;color:transparent;-webkit-text-stroke:1.6px var(--ink);text-shadow:4px 4px 0 rgba(122,53,255,.16)}
.intro-text{max-width:640px;margin:28px 0 0;background:var(--card);border:2px solid var(--line);padding:20px 22px;font-size:17px;line-height:1.75;letter-spacing:.01em;color:#3f4658;box-shadow:var(--shadow-sm)}
.hero-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.btn{display:inline-flex;min-height:44px;align-items:center;justify-content:center;text-decoration:none;border:2px solid var(--line);background:var(--card);padding:10px 14px;font-weight:900;box-shadow:var(--shadow-sm);transition:transform .16s ease,box-shadow .16s ease}.btn:hover{transform:translate(-4px,-4px);box-shadow:9px 9px 0 var(--ink)}.btn.dark{background:var(--ink);color:white}
.avatar-card{min-height:988px;display:grid;align-content:center;justify-items:center;position:relative;overflow:visible}.avatar-card::before{content:"";position:absolute;inset:18% 0 4%;z-index:-1;background:radial-gradient(circle,rgba(122,53,255,.16),transparent 66%)}#liveAvatar{width:min(559px,100%);height:988px;display:block;cursor:pointer}
.section-title{display:grid;grid-template-columns:140px 1fr;gap:24px;align-items:end;margin-bottom:28px}.section-title p{margin:0;font:800 13px "JetBrains Mono",monospace;color:var(--cyan)}.section-title h2{margin:0;font-size:clamp(42px,6vw,76px);line-height:.92;letter-spacing:-.07em}.section-title h2::after{content:"";display:block;width:86px;height:10px;margin-top:14px;background:var(--gold);border:2px solid var(--line);box-shadow:var(--shadow-sm)}
.bento,.project-grid,.skill-board,.award-marquee{display:grid;gap:18px}.bento.two{grid-template-columns:1fr 1fr}.tile,.project-card,.work-list article,.skill-board div,.award-marquee p,.cert-list,.contact-panel{border:2px solid var(--line);background:var(--card);box-shadow:var(--shadow-sm)}
.tile{padding:28px;min-height:220px}.tile span{font:800 12px "JetBrains Mono",monospace;color:var(--cyan);text-transform:uppercase}.tile h3{margin:12px 0 10px;font-size:32px;line-height:1;letter-spacing:-.04em}.tile p{color:var(--muted);font-size:17px}.tile.accent{background:var(--ink);color:white}.tile.accent span,.tile.accent p{color:#d9f7ff}
.project-grid{grid-template-columns:1fr;align-items:start}.project-card{grid-column:1;padding:26px;min-height:auto;transition:transform .16s ease,box-shadow .16s ease}.project-card:hover{transform:translate(-5px,-5px);box-shadow:15px 15px 0 var(--ink)}.project-card.primary{background:var(--ink);color:white}.project-card:nth-child(2){background:#fff1c7}.project-card:nth-child(3){background:#efe8ff}.project-card:nth-child(4){background:#e0f7ff}.project-card:nth-child(5){background:#dff7ef}.project-card.primary li{color:#edf2ff}.project-card.primary .project-meta{display:flex}.project-card a{font-weight:800;text-decoration-thickness:2px;text-underline-offset:3px}.project-meta{display:flex;justify-content:space-between;gap:16px;color:var(--cyan);margin-bottom:16px}.project-card h3{margin:0 0 14px;font-size:clamp(27px,4vw,46px);line-height:1.08;letter-spacing:-.04em}.project-card p,.project-card li{color:var(--muted)}.project-card ul{margin:0;padding-left:1.15rem;max-width:780px}.project-card li{margin:8px 0;line-height:1.7}.project-card.compact{background:#dff7ef}
.work-list{display:grid;gap:18px}.work-list article{border:2px solid var(--line);background:var(--card);box-shadow:var(--shadow-sm);padding:26px}.work-list article:nth-child(1){background:var(--ink);color:white}.work-list article:nth-child(2){background:#fff1c7}.work-list article:nth-child(3){background:#e0f7ff}.work-list article:nth-child(1) time{color:#7de7f3}.work-list article:nth-child(1) h3{color:white}.work-list time{display:block;margin-bottom:16px;color:var(--cyan);font:800 12px "JetBrains Mono",monospace;letter-spacing:.08em;text-transform:uppercase}.work-list h3{margin:0;font-size:clamp(27px,4vw,46px);line-height:1.08;letter-spacing:-.04em}.work-list p{max-width:780px;margin:14px 0 0;color:var(--muted);line-height:1.7}
.skill-board{grid-template-columns:repeat(5,1fr)}.skill-board div{min-height:235px;padding:18px;background:linear-gradient(180deg,var(--card),#fff1c7)}.skill-board span{color:var(--violet)}.skill-board p{margin:22px 0 0;color:var(--muted)}
.award-marquee{grid-template-columns:repeat(4,1fr)}.award-marquee p{margin:0;min-height:120px;padding:16px;font-weight:900;background:var(--card)}.award-marquee span{display:block;color:var(--cyan);margin-bottom:12px}.cert-list{margin-top:18px;padding:20px;display:grid;grid-template-columns:repeat(2,1fr);gap:10px;background:var(--ink);color:white}.cert-list p{margin:0;border:1px solid rgba(255,255,255,.24);padding:12px}
.contact-panel{padding:26px;display:flex;flex-wrap:wrap;gap:12px;background:linear-gradient(135deg,var(--violet),var(--cyan))}.contact-panel a{background:var(--card);color:var(--ink);border:2px solid var(--line);padding:12px 14px;text-decoration:none;font-weight:900;box-shadow:var(--shadow-sm)}
.reveal{opacity:0;transform:translateY(18px);transition:opacity .5s ease,transform .5s ease}.reveal.in{opacity:1;transform:none}:focus-visible{outline:4px solid var(--cyan);outline-offset:3px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}.avatar-card{transform:none}}
@media (max-width:980px){.hero{min-height:auto;grid-template-columns:1fr;gap:28px}.avatar-card{max-width:100%;min-height:680px;transform:none}#liveAvatar{width:min(420px,100%);height:680px}.project-card.primary{grid-template-columns:1fr}.skill-board{grid-template-columns:repeat(2,1fr)}.award-marquee{grid-template-columns:repeat(2,1fr)}}
@media (max-width:760px){html{scroll-padding-top:72px}.nav{padding:12px 14px}.menu-btn{display:block}.nav-links{display:none;position:absolute;left:10px;right:10px;top:62px;background:var(--paper);border:2px solid var(--line);padding:10px;box-shadow:var(--shadow-sm);flex-direction:column}.nav-links.open{display:flex}.nav-links a{width:100%}main{padding:0 14px}.section-pad{padding:64px 0}.hero{min-height:auto;padding:54px 0 44px;gap:10px}.hero h1{font-size:58px;letter-spacing:-.04em}.hero h1 span{font-size:.8em}.hero-links{margin-top:20px}.avatar-card{min-height:460px;margin-top:14px}#liveAvatar{width:min(330px,100%);height:460px}.intro-text{font-size:16px}.section-title{grid-template-columns:1fr;gap:8px}.section-title h2{font-size:46px}.bento.two,.project-grid,.skill-board,.award-marquee,.cert-list{grid-template-columns:1fr}.project-meta{flex-direction:column;gap:6px}.project-card.primary{grid-column:auto}.work-list article{grid-template-columns:1fr}.contact-panel a{width:100%;overflow-wrap:anywhere}}
