:root{--ink:#ece7e0;--ink-soft:#a2988a;--bg:#030307;--card:#0e0b14;--card-border:#ffffff12;--accent:#c9a26b;--hero-bg:#161024;--glow:#c9a26b29;--radius:16px;--shadow:0 1px 2px #0006, 0 10px 30px #00000059;--font:"Segoe UI", system-ui, -apple-system, sans-serif;--font-display:Georgia, "Times New Roman", serif;--sky-1:#080515;--sky-2:#120b28;--sky-3:#020106;--moon-glow:#e4dec840;font-family:var(--font);color:var(--ink);background:var(--bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}.page{max-width:880px;margin:0 auto;padding:56px 24px 72px;position:relative;overflow-x:hidden}.scene{z-index:-2;pointer-events:none;background:linear-gradient(to bottom, var(--sky-1) 0%, var(--sky-2) 55%, var(--sky-3) 100%);position:fixed;inset:0;overflow:hidden}.scene-moon{width:120px;height:120px;box-shadow:0 0 70px 18px var(--moon-glow);background:radial-gradient(circle at 32% 30%,#6e64504d 0 7%,#0000 8%),radial-gradient(circle at 65% 55%,#6e645038 0 9%,#0000 10%),radial-gradient(circle at 45% 72%,#6e645033 0 6%,#0000 7%),radial-gradient(circle at 40% 35%,#f5f1e6 0%,#d9d3c2 55%,#b3ab97 100%);border-radius:50%;animation:8s ease-in-out infinite moon-glow;position:absolute;top:13%;right:11%}@keyframes moon-glow{0%,to{box-shadow:0 0 70px 18px var(--moon-glow)}50%{box-shadow:0 0 90px 28px var(--moon-glow)}}.stars{position:absolute;inset:0}.star{background:#fff;border-radius:50%;animation-name:twinkle;animation-timing-function:ease-in-out;animation-iteration-count:infinite;position:absolute}@keyframes twinkle{0%,to{opacity:.15;transform:scale(.8)}50%{opacity:.9;transform:scale(1.15)}}.rain{z-index:45;pointer-events:none;position:fixed;inset:-25%;overflow:hidden;transform:rotate(12deg)}.rain-layer{position:absolute;inset:0}.rain-far .drop{background:#c8d7f066;width:1px}.rain-near .drop{background:linear-gradient(#0000,#d2e1fa99 30% 80%,#0000);width:1.5px}.drop{border-radius:2px;animation-name:drop-fall;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;top:-60px}@keyframes drop-fall{to{transform:translateY(135vh)}}@media (pointer:fine){*{cursor:none!important}}.cursor-arrow{pointer-events:none;z-index:100;opacity:0;filter:drop-shadow(0 0 6px #c9a26b73);transition:opacity .3s;position:fixed;top:0;left:0}.cursor-arrow svg{transform-origin:6px 4px;transition:transform .2s;display:block}.cursor-arrow.cursor-hover svg{transform:scale(1.2)rotate(-8deg)}.cursor-glow{background:radial-gradient(circle, var(--glow), transparent 65%);pointer-events:none;z-index:-1;mix-blend-mode:screen;will-change:transform;border-radius:50%;width:500px;height:500px;position:fixed;top:0;left:0}.controls{z-index:60;align-items:center;gap:10px;display:flex;position:fixed;top:20px;right:24px}.lang-toggle{background:var(--card);border:1px solid var(--card-border);border-radius:999px;gap:2px;padding:3px;display:flex}.lang-btn{color:var(--ink-soft);font:inherit;letter-spacing:.08em;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 13px;font-size:.72rem;font-weight:700;transition:all .2s}.lang-btn:hover{color:var(--ink)}.lang-btn.active{background:var(--ink);color:var(--bg)}.reveal{opacity:0;transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1);transform:translateY(26px)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}}.hero{background:var(--hero-bg);border-radius:var(--radius);border:1px solid var(--card-border);box-shadow:var(--shadow);transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--lift,0px));transform-style:preserve-3d;align-items:center;gap:36px;margin-bottom:56px;padding:44px 48px;transition:transform .18s ease-out,box-shadow .35s,border-color .35s;display:flex;position:relative;overflow:hidden}.hero:before{content:"";background:radial-gradient(500px circle at var(--mx,50%) var(--my,30%), var(--glow), transparent 65%);opacity:0;pointer-events:none;transition:opacity .4s;position:absolute;inset:0}.hero:hover{--lift:-5px;border-color:#c9a26b4d;box-shadow:0 2px 4px #0000004d,0 24px 60px #00000073}.hero:hover:before{opacity:1}.avatar{background:linear-gradient(135deg,#1d152c,#171021);border:1px solid #c9a26b59;border-radius:50%;flex-shrink:0;place-items:center;width:120px;height:120px;font-size:48px;transition:transform .45s cubic-bezier(.22,1,.36,1);display:grid;overflow:hidden}.hero:hover .avatar{transform:rotate(-7deg)scale(1.05)}.avatar img{object-fit:cover;width:100%;height:100%}.hero-text h1{font-family:var(--font-display);letter-spacing:.01em;margin:0 0 8px;font-size:2.3rem;font-weight:400}.role{color:var(--accent);letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid #c9a26b4d;margin:0 0 16px;padding-bottom:10px;font-size:.82rem;font-weight:600;display:inline-block}.tagline{font-family:var(--font-display);color:var(--ink);margin:0 0 12px;font-size:1.2rem;font-style:italic}.bio{color:var(--ink-soft);max-width:52ch;margin:0 0 16px;line-height:1.65}.location{color:var(--ink-soft);align-items:center;gap:6px;margin:0;font-size:.85rem;display:flex}.location svg{color:var(--accent)}.section{margin-bottom:52px}.section-title{border-bottom:1px solid var(--card-border);align-items:center;gap:14px;margin-bottom:22px;padding-bottom:14px;display:flex}.section-icon{color:var(--accent)}.section-title h2{font-family:var(--font-display);letter-spacing:.02em;margin:0;font-size:1.5rem;font-weight:400}.section-title p{color:var(--ink-soft);margin:3px 0 0;font-size:.88rem}.link-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;display:grid}.link-card{background:var(--card);color:var(--ink);border:1px solid var(--card-border);border-radius:12px;align-items:center;gap:14px;padding:16px 18px;text-decoration:none;transition:border-color .2s,transform .2s;display:flex}.link-card:hover{border-color:#c9a26b73;transform:translateY(-2px)}.link-icon{color:var(--accent);flex-shrink:0}.link-label{font-size:.95rem;font-weight:500}.link-arrow{color:var(--ink-soft);margin-left:auto;transition:transform .2s,color .2s}.link-card:hover .link-arrow{color:var(--accent);transform:translate(2px,-2px)}.tabs{gap:8px;margin-bottom:22px;display:flex}.tab{border:1px solid var(--card-border);color:var(--ink-soft);font:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:8px 22px;font-size:.88rem;font-weight:500;transition:all .2s}.tab:hover{color:var(--ink);border-color:#ffffff26}.tab.active{background:var(--ink);border-color:var(--ink);color:#14110f}.project-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;display:grid}.project-card{background:var(--card-bg);border-radius:var(--radius);border:1px solid var(--card-border);flex-direction:column;gap:12px;padding:26px;transition:transform .2s,border-color .2s;display:flex}.project-card:hover{border-color:color-mix(in srgb, var(--card-accent) 40%, transparent);transform:translateY(-3px)}.project-top{justify-content:flex-end;align-items:center;min-height:24px;display:flex}.project-year{color:var(--card-accent);letter-spacing:.08em;font-size:.82rem;font-weight:600}.project-status{color:var(--card-accent);letter-spacing:.06em;text-transform:uppercase;background:#ffffff14;border-radius:999px;padding:4px 12px;font-size:.7rem;font-weight:600}.project-card h3{font-family:var(--font-display);letter-spacing:.01em;margin:0;font-size:1.25rem;font-weight:400}.project-card h3 a{color:inherit;border-bottom:1px solid #0000;text-decoration:none;transition:border-color .2s}.project-card h3 a:hover{border-bottom-color:var(--card-accent)}.project-desc{color:#c9c2b6;flex-grow:1;margin:0;font-size:.92rem;line-height:1.6}.project-meta{color:var(--ink-soft);flex-direction:column;gap:10px;font-size:.85rem;display:flex}.meta-row{align-items:center;gap:8px;display:flex}.meta-row svg{color:var(--card-accent)}.tech-tags{flex-wrap:wrap;gap:6px;display:flex}.tech-tag{color:var(--card-accent);letter-spacing:.03em;background:#ffffff12;border-radius:999px;padding:4px 11px;font-size:.72rem;font-weight:500}.project-link{color:var(--card-accent);align-items:center;gap:6px;font-size:.88rem;font-weight:500;text-decoration:none;display:inline-flex}.project-link:hover{text-decoration:underline}.empty{color:var(--ink-soft);background:var(--card);border-radius:var(--radius);text-align:center;border:1px dashed #ffffff26;grid-column:1/-1;padding:28px}.hobby-grid{flex-wrap:wrap;gap:10px;display:flex}.hobby-chip{background:var(--chip-bg);color:var(--ink);border:1px solid var(--card-border);border-radius:999px;align-items:center;gap:8px;padding:9px 18px;font-size:.88rem;font-weight:500;transition:border-color .2s,transform .2s;display:inline-flex}.hobby-chip svg{color:var(--chip-accent,var(--accent))}.hobby-chip:hover{border-color:#c9a26b66;transform:translateY(-2px)}.contact-card{background:var(--card);color:var(--ink);border:1px solid var(--card-border);border-radius:12px;align-items:center;gap:14px;max-width:420px;padding:18px 22px;text-decoration:none;transition:border-color .2s,transform .2s;display:flex}.contact-card:hover{border-color:#c9a26b73;transform:translateY(-2px)}.contact-email{letter-spacing:.01em;font-size:1rem;font-weight:500}.timeline{padding-left:40px;position:relative}.timeline:before{content:"";background:var(--card-border);width:1px;position:absolute;top:8px;bottom:8px;left:15px}.tl-item{grid-template-columns:96px 1fr;gap:28px;padding-bottom:30px;display:grid;position:relative}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:"";background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 4px var(--bg);border-radius:50%;position:absolute;top:16px;left:-29px}.tl-year{color:var(--accent);letter-spacing:.04em;white-space:nowrap;grid-area:1/1;align-self:start;padding-top:12px;font-size:.8rem;font-weight:600}.tl-item .project-card{grid-area:1/2}.music-player{z-index:50;background:var(--card);border:1px solid var(--card-border);border-radius:14px;align-items:center;gap:14px;max-width:calc(100vw - 48px);padding:14px 18px;display:flex;position:fixed;bottom:24px;left:24px;box-shadow:0 8px 32px #00000073}.music-play{width:40px;height:40px;color:var(--accent);cursor:pointer;background:#c9a26b1f;border:1px solid #c9a26b73;border-radius:50%;flex-shrink:0;place-items:center;transition:background .2s,transform .2s;display:grid}.music-play:hover{background:#c9a26b38;transform:scale(1.05)}.music-eq{flex-shrink:0;align-items:flex-end;gap:3px;height:18px;display:flex}.music-eq span{background:var(--accent);transform-origin:bottom;border-radius:2px;width:3px;height:100%;transition:transform .3s;transform:scaleY(.3)}.music-eq.playing span{animation:.9s ease-in-out infinite eq-bounce}.music-eq.playing span:nth-child(2){animation-delay:.15s}.music-eq.playing span:nth-child(3){animation-delay:.3s}.music-eq.playing span:nth-child(4){animation-delay:.45s}@keyframes eq-bounce{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}.music-info{min-width:0}.music-title{white-space:nowrap;text-overflow:ellipsis;max-width:200px;font-size:.88rem;font-weight:600;overflow:hidden}.music-artist{color:var(--ink-soft);margin-top:1px;font-size:.75rem}.music-progress{cursor:pointer;background:#ffffff1a;border-radius:999px;height:4px;margin-top:8px;overflow:hidden}.music-progress-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .2s linear}.music-times{color:var(--ink-soft);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:4px;font-size:.68rem;display:flex}.music-volume{width:80px;accent-color:var(--accent);cursor:pointer}@media (width<=640px){.music-player{max-width:none;bottom:12px;left:12px;right:12px}.music-title{max-width:110px}.music-volume{display:none}}.footer{text-align:center;color:var(--ink-soft);border-top:1px solid var(--card-border);padding-top:28px;font-size:.82rem}@media (width<=640px){.hero{text-align:center;flex-direction:column;padding:36px 24px}.location{justify-content:center}.avatar{width:96px;height:96px;font-size:36px}.hero-text h1{font-size:1.9rem}.page{padding:36px 16px 56px}.controls{top:14px;right:14px}.timeline{padding-left:32px}.timeline:before{left:12px}.tl-item{grid-template-columns:64px 1fr;gap:14px}.tl-item:before{left:-24px}.tl-year{padding-top:10px;font-size:.7rem}}
