    :root { --cyan:#22d3ee; --blue:#60a5fa; --purple:#c084fc; --glass:rgba(12,31,71,.34); --line:rgba(125,211,252,.27); }
    * { box-sizing:border-box; }
    html,body { margin:0; min-height:100%; }
    body { overflow-x:hidden; color:white; font-family:Nunito,sans-serif; background:#071235 url('../images/mountain-night-background.jpg') center/cover fixed no-repeat; }
    body::before { content:""; position:fixed; inset:0; z-index:-2; background:radial-gradient(circle at 62% 42%,rgba(57,34,147,.24),transparent 38%),linear-gradient(180deg,rgba(2,8,38,.22),rgba(7,8,36,.3) 58%,rgba(0,5,20,.85)); }
    a { color:inherit; text-decoration:none; }
    button { font:inherit; }
    #particleCanvas { position:fixed; inset:0; z-index:0; pointer-events:none; }
    .site { position:relative; z-index:1; min-height:100vh; display:flex; flex-direction:column; align-items:center; }
    site-navbar { display:contents; }

    .nav { width:min(1088px,85vw); height:72px; margin-top:32px; padding:0 34px; display:flex; align-items:center; justify-content:space-around; gap:20px; border-radius:22px; position:relative; z-index:30; animation:entrance-scale 1s cubic-bezier(.34,1.56,.64,1) both; transition:background .5s,box-shadow .5s,border-radius .5s; }
    .nav:hover { background:rgba(255,255,255,.08); box-shadow:0 0 7px 1px aqua; backdrop-filter:blur(9px); }
    .logo { width:160px; margin-right:auto; font-size:26px; font-weight:900; font-style:italic; letter-spacing:-2px; transform:skew(-7deg); color:#67e8f9; text-shadow:2px 2px 0 #0369a1,0 0 14px rgba(34,211,238,.85); }
    .logo span { color:white; }
    .links { display:flex; align-items:center; justify-content:center; gap:34px; }
    .links a { position:relative; display:flex; align-items:center; gap:8px; font-size:16px; font-weight:800; text-shadow:0 2px 6px #020617; transition:.25s; }
    .links a::after { content:""; position:absolute; left:50%; right:50%; bottom:-8px; height:2px; border-radius:2px; background:linear-gradient(90deg,var(--cyan),var(--purple)); transition:.25s; }
    .links a:hover { color:#67e8f9; transform:translateY(-2px); }
    .links a:hover::after { left:0; right:0; }
    .login { margin-left:auto; border:1px solid rgba(34,211,238,.46); color:#67e8f9; background:rgba(8,72,116,.38); padding:8px 19px; border-radius:11px; font-weight:800; cursor:pointer; box-shadow:inset 0 0 12px rgba(34,211,238,.08); transition:.25s; }
    .login:hover { color:#071235; background:#67e8f9; box-shadow:0 0 22px rgba(34,211,238,.58); }
    .menu-btn { display:none; border:0; color:white; background:transparent; font-size:25px; }

    .hero { flex:1; width:min(920px,calc(100% - 40px)); min-height:calc(100vh - 104px); display:grid; grid-template-columns:minmax(0,1fr) 380px; gap:70px; align-items:center; padding:68px 0 84px; perspective:1000px; }
    .intro { position:relative; z-index:5; display:flex; flex-direction:column; align-items:flex-start; gap:25px; animation:enterLeft .7s ease-out .6s both; }
    .welcome { padding:7px 18px; border:1px solid rgba(196,181,253,.25); border-radius:999px; color:#67e8f9; background:rgba(76,29,149,.15); box-shadow:inset 0 0 18px rgba(167,139,250,.09); font-weight:700; }
    .hello { display:flex; align-items:center; gap:32px; animation:enterLeft .7s ease-out .8s both; }
    .hello strong { display:inline-block; font-size:clamp(66px,7.2vw,96px); line-height:.9; letter-spacing:-3px; cursor:pointer; transition:transform .5s,color .5s,text-shadow .5s; }
    .hello strong:hover { color:#67e8f9; transform:scale(1.1); text-shadow:0 0 24px rgba(34,211,238,.35); }
    .wave { font-size:88px; transform-origin:75% 75%; animation:wave 1.8s ease-in-out infinite,bounce 1.2s ease-in-out infinite; filter:drop-shadow(0 6px 4px rgba(0,0,0,.35)); cursor:pointer; transition:.4s; }
    .wave:hover { scale:1.1; }
    .identity { display:flex; align-items:baseline; gap:17px; animation:enterLeft .7s ease-out 1s both; }
    .identity span { display:inline-block; font-size:46px; cursor:pointer; transition:transform .5s; }
    .identity span:hover { transform:scale(1.05); }
    .identity b { display:inline-block; font-size:55px; line-height:1; background:linear-gradient(90deg,var(--cyan),var(--blue),var(--purple),var(--cyan)); background-size:250% 100%; -webkit-background-clip:text; background-clip:text; color:transparent; animation:gradient 5s linear infinite; cursor:pointer; transition:transform .5s,filter .5s; }
    .identity b:hover { transform:scale(1.35); filter:brightness(1.3) drop-shadow(0 0 13px rgba(34,211,238,.32)); animation-play-state:paused; background-image:linear-gradient(90deg,#67e8f9,#93c5fd); }
    .meet { display:flex; gap:21px; font:700 31px/1.2 Space Mono,monospace; letter-spacing:-2px; animation:enterLeft .7s ease-out 1.2s both; }
    .meet span { display:inline-block; cursor:pointer; transition:transform .5s,color .5s,text-shadow .5s; }
    .meet span:hover { color:#67e8f9; transform:scale(1.1); text-shadow:0 0 18px rgba(34,211,238,.35); }
    .roles { display:flex; flex-wrap:wrap; gap:12px; animation:enterLeft .7s ease-out 1.4s both; }
    .role { padding:8px 17px; border:1px solid rgba(255,255,255,.2); border-radius:999px; color:#dbeafe; background:rgba(255,255,255,.08); backdrop-filter:blur(7px); box-shadow:inset 0 0 12px rgba(255,255,255,.04); transition:.3s; }
    .role:hover { color:#67e8f9; transform:scale(1.05); background:rgba(255,255,255,.2); border-color:rgba(34,211,238,.5); box-shadow:0 0 16px rgba(34,211,238,.15); }
    .clock { display:flex; align-items:center; font:700 20px Space Mono,monospace; border:1px solid rgba(255,255,255,.12); border-radius:14px; background:rgba(2,12,42,.44); backdrop-filter:blur(10px); overflow:hidden; animation:enterLeft .7s ease-out 1.6s both; }
    .clock span { padding:13px 16px; }
    .clock .date { color:#22d3ee; border-left:1px solid rgba(255,255,255,.12); }

    .portrait-area { position:relative; z-index:5; height:440px; display:flex; flex-direction:column; justify-content:center; align-items:center; animation:enterRight .8s cubic-bezier(.34,1.56,.64,1) .3s both; }
    .portrait { position:relative; width:410px; height:410px; display:grid; place-items:center; cursor:pointer; }
    .portrait:focus { outline:none; }
    .portrait:focus-visible .portrait-core { outline:2px solid var(--cyan); outline-offset:8px; }
    .portrait-core { position:relative; width:320px; height:320px; display:grid; place-items:center; border-radius:50%; transition:transform .5s cubic-bezier(.4,0,.2,1),filter .5s; }
    .portrait.open .portrait-core { transform:scale(.65); filter:saturate(.8) brightness(.84); }
    .ring { position:absolute; inset:0; border-radius:50%; background:conic-gradient(from 0deg,var(--cyan),var(--blue),var(--purple),#f0abfc,var(--cyan)); animation:spin 8s linear infinite; box-shadow:0 0 34px rgba(34,211,238,.28); }
    .avatar { position:relative; z-index:3; width:calc(100% - 8px); height:calc(100% - 8px); object-fit:cover; border-radius:50%; transition:.55s cubic-bezier(.34,1.56,.64,1); }
    .portrait:hover .avatar { transform:scale(1.035); }
    .portrait.open .avatar { transform:scale(1); }
    .social-orbit { position:absolute; inset:50%; z-index:5; }
    .social-bubble { --angle:0deg; --delay:0s; position:absolute; left:-23px; top:-23px; width:46px; height:46px; border:none; border-radius:50%; display:grid; place-items:center; font-weight:900; opacity:0; pointer-events:none; transform:rotate(var(--angle)) translateX(0) rotate(calc(-1 * var(--angle))) scale(.2); background:transparent; box-shadow:none; transition:transform .52s cubic-bezier(.34,1.56,.64,1) var(--delay),opacity .25s var(--delay); }
    .portrait.open .social-bubble { opacity:1; pointer-events:auto; transform:rotate(var(--angle)) translateX(200px) rotate(calc(-1 * var(--angle))) scale(1); }
    .social-bubble img { --icon-filter:none; display:block; width:100%; height:100%; object-fit:contain; filter:var(--icon-filter); transition:transform .3s ease,filter .3s ease; }
    .social-bubble[aria-label="GitHub"] img { --icon-filter:invert(1); }
    .social-bubble[aria-label="Xiaohongshu"] img { --icon-filter:invert(18%) sepia(99%) saturate(6465%) hue-rotate(348deg) brightness(104%) contrast(106%); }
    .social-bubble[aria-label="Bilibili"] img { --icon-filter:invert(52%) sepia(99%) saturate(2193%) hue-rotate(151deg) brightness(100%) contrast(101%); }
    .social-bubble[aria-label="Steam"] img { --icon-filter:invert(1); }
    .social-bubble[aria-label="WeChat"] img { --icon-filter:invert(64%) sepia(82%) saturate(2820%) hue-rotate(82deg) brightness(101%) contrast(106%); }
    .social-bubble[aria-label="NetEase Cloud Music"] img { --icon-filter:invert(17%) sepia(96%) saturate(6943%) hue-rotate(357deg) brightness(103%) contrast(118%); }
    .social-bubble[aria-label="Discord"] img { --icon-filter:invert(46%) sepia(98%) saturate(1678%) hue-rotate(213deg) brightness(99%) contrast(94%); }
    .social-bubble[aria-label="X"] img { --icon-filter:invert(1); }
    .social-bubble:hover img { transform:scale(1.25); filter:var(--icon-filter) brightness(1.15) drop-shadow(0 0 8px rgba(34,211,238,.55)); }
    .portrait-caption { display:flex; flex-direction:column; align-items:center; min-height:72px; opacity:1; transform:translateY(0); transition:opacity .3s ease,transform .4s ease,visibility 0s linear 0s; }
    .portrait.open ~ .portrait-caption { opacity:0; visibility:hidden; transform:translateY(-12px) scale(.96); transition:opacity .25s ease,transform .4s ease,visibility 0s linear .4s; }
    .portrait-note { margin:20px 0 7px; color:#e0e7ff; font-size:15px; }
    .note-line { width:86px; height:4px; border-radius:4px; background:linear-gradient(90deg,var(--cyan),var(--purple)); box-shadow:0 0 13px rgba(34,211,238,.55); }
    .quote { margin:10px 0 0; color:#c7d2fe; font-size:12px; opacity:.85; }

    .music-drawer { position:fixed; z-index:25; right:-315px; top:50%; translate:0 -50%; width:315px; max-height:66vh; border:1px solid var(--line); border-radius:18px 0 0 18px; background:rgba(5,19,55,.88); backdrop-filter:blur(16px); box-shadow:-8px 0 35px rgba(0,0,0,.3); transition:right .55s cubic-bezier(.34,1.56,.64,1); }
    .music-drawer.open { right:0; }
    .drawer-toggle { position:absolute; left:-34px; top:50%; translate:0 -50%; width:34px; height:96px; border:1px solid var(--line); border-right:0; border-radius:14px 0 0 14px; color:#67e8f9; background:rgba(6,33,82,.9); cursor:pointer; }
    .music-head { padding:18px 20px; border-bottom:1px solid var(--line); font-weight:800; }
    .playlist { margin:0; padding:8px; list-style:none; max-height:50vh; overflow:auto; }
    .track { display:grid; grid-template-columns:1fr 32px; align-items:center; gap:8px; padding:11px 12px; border-radius:9px; color:#cbd5e1; font-size:12px; transition:.2s; }
    .track:hover,.track.active { color:white; background:rgba(34,211,238,.12); }
    .track button { border:0; color:#67e8f9; background:transparent; cursor:pointer; }

    .modal { position:fixed; inset:0; z-index:50; display:none; place-items:center; background:rgba(2,6,23,.66); backdrop-filter:blur(10px); }
    .modal.open { display:grid; }
    .modal-card { width:min(400px,calc(100% - 30px)); padding:32px; border:1px solid var(--line); border-radius:22px; text-align:center; background:rgba(6,25,69,.92); box-shadow:0 0 55px rgba(34,211,238,.18); animation:enterModal .35s ease-out; }
    .modal-card h2 { margin:0 0 10px; }
    .modal-card p { color:#a5b4fc; }
    .modal-card button { margin-top:12px; border:1px solid #22d3ee; border-radius:10px; padding:10px 20px; color:#67e8f9; background:rgba(34,211,238,.1); cursor:pointer; }

    /* Resume page */
    .resume-page { min-height:100vh; padding-bottom:72px; }
    .resume-page .nav { flex:0 0 auto; }
    .links a[aria-current="page"] { color:#67e8f9; }
    .links a[aria-current="page"]::after { left:0; right:0; }
    .resume-shell { width:min(1088px,85vw); margin:64px auto 0; display:grid; grid-template-columns:300px minmax(0,1fr); gap:26px; align-items:start; animation:enterLeft .65s ease-out .25s both; }
    .resume-sidebar,.resume-content { border:1px solid var(--line); background:rgba(5,19,55,.68); backdrop-filter:blur(18px); box-shadow:0 20px 55px rgba(0,0,0,.28),inset 0 0 24px rgba(125,211,252,.035); }
    .resume-sidebar { position:sticky; top:24px; padding:28px; border-radius:24px; }
    .resume-name { margin:0; font-size:40px; line-height:.95; letter-spacing:-2px; background:linear-gradient(90deg,var(--cyan),var(--blue),var(--purple)); -webkit-background-clip:text; background-clip:text; color:transparent; }
    .resume-role { margin:10px 0 24px; color:#dbeafe; font:700 13px/1.5 Space Mono,monospace; text-transform:uppercase; letter-spacing:1.5px; }
    .resume-contact { display:grid; gap:10px; margin:0 0 26px; font-size:14px; }
    .resume-contact a { display:flex; gap:10px; align-items:center; color:#c7d2fe; overflow-wrap:anywhere; transition:.2s; }
    .resume-contact a:hover { color:#67e8f9; transform:translateX(3px); }
    .resume-mini-title { margin:25px 0 12px; color:#67e8f9; font:700 12px Space Mono,monospace; letter-spacing:1.5px; text-transform:uppercase; }
    .resume-tags { display:flex; flex-wrap:wrap; gap:8px; }
    .resume-tag { padding:6px 10px; border:1px solid rgba(255,255,255,.15); border-radius:999px; color:#dbeafe; background:rgba(255,255,255,.06); font-size:12px; }
    .resume-content { padding:38px 42px 44px; border-radius:24px; }
    .resume-header { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; padding-bottom:25px; border-bottom:1px solid var(--line); }
    .resume-eyebrow { margin:0 0 7px; color:#67e8f9; font:700 12px Space Mono,monospace; letter-spacing:1.8px; text-transform:uppercase; }
    .resume-header h1 { margin:0; font-size:clamp(35px,4vw,54px); line-height:1; letter-spacing:-2px; }
    .resume-summary { max-width:570px; margin:15px 0 0; color:#cbd5e1; line-height:1.7; }
    .resume-print { flex:0 0 auto; border:1px solid rgba(34,211,238,.46); border-radius:11px; padding:9px 15px; color:#67e8f9; background:rgba(8,72,116,.38); font-weight:800; cursor:pointer; transition:.25s; }
    .resume-print:hover { color:#071235; background:#67e8f9; box-shadow:0 0 22px rgba(34,211,238,.45); }
    .resume-section { padding-top:31px; }
    .resume-section-title { display:flex; align-items:center; gap:14px; margin:0 0 22px; color:#f8fafc; font:700 18px Space Mono,monospace; text-transform:uppercase; letter-spacing:1px; }
    .resume-section-title::after { content:""; height:1px; flex:1; background:linear-gradient(90deg,var(--line),transparent); }
    .resume-item { position:relative; padding:0 0 28px 25px; border-left:1px solid rgba(125,211,252,.25); }
    .resume-item:last-child { padding-bottom:0; }
    .resume-item::before { content:""; position:absolute; left:-5px; top:5px; width:9px; height:9px; border-radius:50%; background:var(--cyan); box-shadow:0 0 12px var(--cyan); }
    .resume-item-head { display:flex; justify-content:space-between; gap:20px; align-items:baseline; }
    .resume-item h3 { margin:0; color:#eef2ff; font-size:17px; }
    .resume-item .date-range { flex:0 0 auto; color:#67e8f9; font:700 12px Space Mono,monospace; }
    .resume-item h4 { margin:6px 0 10px; color:#a5b4fc; font-size:14px; font-weight:700; }
    .resume-item p,.resume-item li { color:#cbd5e1; line-height:1.65; font-size:14px; }
    .resume-item ul { margin:10px 0 0; padding-left:18px; }
    .resume-item li + li { margin-top:6px; }
    .resume-note { color:#94a3b8!important; font-size:12px!important; }

    @keyframes entrance-scale { 0%{opacity:0;filter:blur(20px);transform:translateY(-150%) scale(.8)}60%{opacity:1;filter:blur(10px);transform:translateY(0) scale(1.3)}80%{filter:blur(7px);transform:scale(.95)}100%{opacity:1;filter:blur(0);transform:scale(1)} }
    @keyframes enterLeft { 0%{opacity:0;filter:blur(8px);transform:translateX(-160px) translateY(10px)}100%{opacity:1;filter:blur(0);transform:translate(0)} }
    @keyframes enterRight { 0%{opacity:0;filter:blur(12px);transform:translateX(280px)}100%{opacity:1;filter:blur(0);transform:translateX(0)} }
    @keyframes enterModal { from{opacity:0;transform:scale(.85) translateY(20px)}to{opacity:1;transform:scale(1)} }
    @keyframes spin { to{transform:rotate(360deg)} }
    @keyframes bounce { 0%,100%{transform:translateY(-12%)}50%{transform:translateY(8%)} }
    @keyframes wave { 0%,55%,100%{rotate:0deg}10%{rotate:18deg}20%{rotate:-11deg}30%{rotate:17deg}40%{rotate:-5deg} }
    @keyframes gradient { to{background-position:250% 0} }
    @media (prefers-reduced-motion:reduce) { *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important} }

    @media(max-width:900px){
      .nav{width:100%;height:60px;margin:0;border-radius:0;background:rgba(8,47,73,.9);padding:0 18px;position:fixed;top:0}.logo{font-size:21px}.links{position:absolute;top:60px;left:10px;right:10px;display:none;grid-template-columns:1fr 1fr;gap:0;padding:12px;border:1px solid var(--line);border-radius:15px;background:rgba(5,19,55,.96);backdrop-filter:blur(16px)}.links.open{display:grid}.links a{padding:12px}.login{display:none}.menu-btn{display:block}.hero{grid-template-columns:1fr;gap:22px;padding:110px 0 55px;text-align:center}.intro{align-items:center}.portrait-area{height:440px;order:-1}.portrait{width:310px;height:310px}.portrait-core{width:250px;height:250px}.portrait.open .social-bubble{transform:rotate(var(--angle)) translateX(145px) rotate(calc(-1 * var(--angle))) scale(1)}.hello strong{font-size:64px}.wave{font-size:66px}.identity span{font-size:35px}.identity b{font-size:44px}.meet{font-size:23px}.clock{font-size:15px}}
    @media(max-width:900px){.resume-page{padding-top:60px}.resume-shell{width:min(680px,calc(100% - 28px));margin-top:34px;grid-template-columns:1fr}.resume-sidebar{position:static}.resume-content{padding:30px}.resume-header{align-items:flex-start}.resume-item-head{display:block}.resume-item .date-range{display:block;margin-top:6px}}
    @media(max-width:520px){.portrait-area{height:380px}.portrait{width:260px;height:260px}.portrait-core{width:220px;height:220px}.portrait.open .social-bubble{transform:rotate(var(--angle)) translateX(119px) rotate(calc(-1 * var(--angle))) scale(.85)}.social-bubble{width:40px;height:40px;left:-20px;top:-20px}.hello{gap:18px}.hello strong{font-size:55px}.wave{font-size:57px}.identity span{font-size:29px}.identity b{font-size:38px}.meet{font-size:18px;gap:10px}.roles{justify-content:center}.clock{font-size:12px}.clock span{padding:10px}.welcome{font-size:13px}.music-drawer{width:280px;right:-280px}}
    @media(max-width:520px){.resume-sidebar,.resume-content{padding:23px;border-radius:18px}.resume-name{font-size:34px}.resume-header{display:block}.resume-print{margin-top:20px}.resume-item{padding-left:18px}.resume-header h1{font-size:37px}}
    @media print{body{color:#0f172a;background:white!important}body::before,#particleCanvas,.nav,.resume-print{display:none!important}.resume-page{padding:0}.resume-shell{display:block;width:100%;margin:0;animation:none}.resume-sidebar,.resume-content{border:0;background:white;box-shadow:none;backdrop-filter:none}.resume-sidebar{position:static;padding:0 0 20px}.resume-content{padding:0}.resume-name{color:#0f172a;background:none}.resume-role,.resume-contact a,.resume-summary,.resume-item p,.resume-item li{color:#334155}.resume-tag{color:#334155;border-color:#cbd5e1}.resume-section{break-inside:avoid}.resume-content{border-top:1px solid #cbd5e1}.resume-header{padding-top:24px}.resume-item h3,.resume-section-title,.resume-header h1{color:#0f172a}.resume-item h4{color:#475569}}
