.skill-globe-reveal{position:relative;width:100vw;margin-left:calc(50% - 50vw);overflow:hidden}.skill-globe{position:relative;width:100%;height:860px;overflow:hidden;margin-top:-20px;-webkit-user-select:none;user-select:none;touch-action:none;--skill-segments-x: 35;--skill-segments-y: 35;--skill-radius: 720px;--skill-circumference: calc(var(--skill-radius) * 3.14);--skill-rotate-x: calc((360deg / var(--skill-segments-x)) / 2);--skill-rotate-y: calc((360deg / var(--skill-segments-y)) / 2);--skill-card-width: calc(var(--skill-circumference) / var(--skill-segments-x) * 2);--skill-card-height: calc(var(--skill-circumference) / var(--skill-segments-y) * 2)}.skill-globe:before{position:absolute;top:12%;right:10%;bottom:12%;left:10%;border-radius:50%;background:radial-gradient(ellipse at center,rgba(0,0,255,.22),rgba(0,0,255,.08) 42%,transparent 72%);content:"";filter:blur(32px);pointer-events:none}.skill-globe-main{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;overflow:hidden;cursor:grab}.skill-globe-main.is-dragging{cursor:grabbing}.skill-globe-stage{display:grid;width:100%;height:100%;place-items:center;contain:layout paint size;perspective:calc(var(--skill-radius) * 2);perspective-origin:50% 50%}.skill-globe-sphere,.skill-globe-tile,.skill-globe-card,.skill-globe-face{transform-style:preserve-3d}.skill-globe-sphere{transform:translateZ(calc(var(--skill-radius) * -1));will-change:transform}.skill-globe-tile{position:absolute;top:-999px;right:-999px;bottom:-999px;left:-999px;width:var(--skill-card-width);height:var(--skill-card-height);margin:auto;backface-visibility:visible;transform:rotateY(calc(var(--skill-rotate-y) * (var(--skill-offset-x) + .5))) rotateX(calc(var(--skill-rotate-x) * (var(--skill-offset-y) - .5))) translateZ(var(--skill-radius));transform-origin:50% 50%}.skill-globe-card{position:absolute;top:12px;right:12px;bottom:12px;left:12px}.skill-globe-face{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;overflow:hidden;place-items:center;border:2px solid var(--blue);border-radius:16px;background:var(--white);color:var(--void);padding:10px;text-align:center;backface-visibility:hidden}.skill-globe-face-front{transform:translateZ(.6px)}.skill-globe-face-back{border-color:#5c5cff8f;background:#111123;transform:rotateY(180deg) translateZ(.6px)}.skill-globe-image{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background-image:url(../assets/skills/skill-card-atlas.jpg);background-position:var(--skill-image-x) var(--skill-image-y);background-repeat:no-repeat;background-size:800% 700%;pointer-events:none}.skill-globe-face-front .skill-globe-image{filter:saturate(.92) contrast(.98) brightness(1.02);opacity:.96}.skill-globe-face-back .skill-globe-image{filter:saturate(.8) contrast(1.02) brightness(.82);opacity:.9}.skill-globe-card span{display:block;position:relative;z-index:2;max-width:100%;border-radius:6px;background:#ffffffeb;font-family:var(--font-mono);font-size:clamp(13px,1.25vw,18px);font-weight:850;letter-spacing:-.035em;line-height:1.1;overflow-wrap:break-word;padding:3px 5px}.skill-globe-card.has-long-label span{font-size:clamp(11px,1vw,14px);letter-spacing:-.045em}.skill-globe-overlay,.skill-globe-overlay-blur{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;margin:auto;pointer-events:none}.skill-globe-overlay{background-image:radial-gradient(ellipse at center,rgba(13,13,13,0) 58%,rgba(13,13,13,.5) 76%,var(--void) 100%)}.skill-globe-overlay-blur{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);mask-image:radial-gradient(#0d0d0d00 69%,#000 94%);-webkit-mask-image:radial-gradient(rgba(13,13,13,0) 69%,#000 94%)}.skill-globe-edge{position:absolute;right:0;left:0;z-index:5;height:96px;background:linear-gradient(to bottom,transparent,var(--void));pointer-events:none}.skill-globe-edge-top{top:0;transform:rotate(180deg)}.skill-globe-edge-bottom{bottom:0}.skill-globe-hint{position:absolute;bottom:16px;left:50%;z-index:6;margin:0;transform:translate(-50%);color:#ffffff7a;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.1em;line-height:1;white-space:nowrap;pointer-events:none}@media (max-width: 980px){.skill-globe{height:720px;--skill-radius: 560px}.skill-globe-card{top:9px;right:9px;bottom:9px;left:9px}.skill-globe-face{border-radius:13px}.skill-globe-card span{font-size:clamp(11px,1.7vw,15px)}.skill-globe-card.has-long-label span{font-size:clamp(10px,1.35vw,12px)}}@media (max-width: 640px){.skill-globe{height:580px;margin-top:-20px;--skill-radius: 410px}.skill-globe-card{top:7px;right:7px;bottom:7px;left:7px}.skill-globe-face{border-width:1px;border-radius:10px;padding:4px}.skill-globe-card span{border-radius:4px;font-size:10px;padding:2px 3px}.skill-globe-card.has-long-label span{font-size:8px}}@media (prefers-reduced-motion: reduce){.skill-globe-sphere{will-change:auto}}:root{--blue: #0000ff;--blue-2: #4141fc;--blue-3: #8b8bfe;--lime: #7fd579;--orchid: #d896ff;--void: #0d0d0d;--panel: #161616;--lift: #252525;--steel: #3b3b3b;--white: #ffffff;--mist: #eaeaea;--charcoal: #333333;--filament: #b8ad97;--line: rgba(255, 255, 255, .12);--line-soft: rgba(255, 255, 255, .08);--line-blue: rgba(0, 0, 255, .55);--glow-blue: 0 0 0 1px rgba(0, 0, 255, .35), 0 0 24px rgba(0, 0, 255, .42), 0 0 64px rgba(0, 0, 255, .18);--font-sans: "Inter", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", "Cascadia Code", Menlo, Consolas, monospace;--container: 1200px;--r-sm: 2px;--r-md: 4px;--r-full: 1440px;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-soft: cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}html{min-width:320px;overflow-x:clip;background:var(--void);color:var(--white);scroll-behavior:smooth}body{min-height:100vh;margin:0;overflow-x:clip;background:linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(180deg,rgba(255,255,255,.05) 1px,transparent 1px),var(--void);background-size:48px 48px,48px 48px,auto;color:var(--white);font-family:var(--font-sans);font-feature-settings:"liga" 1,"kern" 1;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button,a{font:inherit}img,video{display:block;max-width:100%}:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.container{width:min(var(--container),calc(100vw - 160px));margin-inline:auto}.mono{font-family:var(--font-mono)}[data-reveal]{opacity:0;transform:translate3d(0,20px,0);transition:opacity .7s var(--ease-soft),transform .7s var(--ease-soft);transition-delay:var(--reveal-delay, 0ms);will-change:opacity,transform}[data-reveal].is-visible{opacity:1;transform:translateZ(0)}.site-header{position:fixed;left:50%;top:14px;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;width:min(var(--container),calc(100vw - 32px));transform:translate(-50%);border:1px solid var(--line);border-radius:var(--r-sm);background:#0d0d0dd1;padding:8px 10px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.nav-left,.nav-right{display:flex;align-items:center;gap:4px}.nav-left a{display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-sm);color:var(--mist);padding:9px 12px;font-size:13px;font-weight:500;letter-spacing:.02em;line-height:1;transition:color .16s var(--ease-out),background .16s var(--ease-out)}.nav-left a .dot{color:var(--blue);font-family:var(--font-mono);font-size:12px;line-height:1}.nav-left a:hover{background:var(--panel);color:var(--white)}.nav-cta{display:inline-flex;align-items:center;gap:7px;border-radius:var(--r-sm);padding:9px 13px;font-size:13px;font-weight:700;letter-spacing:.02em;line-height:1;transition:background .16s var(--ease-out),border-color .16s var(--ease-out),color .16s var(--ease-out),transform .16s var(--ease-out)}.nav-cta{background:var(--blue);color:var(--white)}.nav-cta:hover{background:var(--blue-2);transform:translateY(-1px)}.nav-cta-outline{background:transparent;border:1px solid var(--blue-3);color:var(--blue-3)}.nav-cta-outline:hover{background:#0000ff1f;color:var(--white);border-color:var(--blue-3)}.hero{position:relative;display:grid;align-items:center;min-height:100svh;overflow:hidden;border-bottom:1px solid var(--line);padding:128px 0 88px;isolation:isolate;background:var(--void)}.ascii-field{position:absolute;top:90px;left:50%;z-index:0;margin:0;transform:translate(-50%);color:var(--blue);opacity:.13;font-family:var(--font-mono);font-size:15px;line-height:1.16;letter-spacing:0;white-space:pre;pointer-events:none;-webkit-user-select:none;user-select:none;mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 78%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 78%,transparent)}.hero-glow{position:absolute;top:50%;left:50%;z-index:0;width:min(1000px,88vw);height:min(720px,78vh);transform:translate(-50%,-50%);border-radius:999px;background:radial-gradient(ellipse at center,rgba(0,0,255,.3) 0%,rgba(0,0,255,.16) 30%,rgba(0,0,255,.06) 52%,transparent 74%);filter:blur(26px);pointer-events:none}.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:24px;align-items:center}.hero-copy{min-width:0}.eyebrow{display:inline-flex;align-items:center;gap:9px;margin:0 0 22px;color:var(--blue-3);font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.04em}.eyebrow-dot{width:7px;height:7px;border-radius:var(--r-sm);background:var(--blue);box-shadow:0 0 0 4px #0000ff29}.hero h1{margin:0;color:var(--white);font-size:clamp(2.7rem,5vw,4.3rem);font-weight:700;letter-spacing:-.02em;line-height:1.04;text-wrap:balance}.hero-title{margin:18px 0 0;color:var(--blue);font-size:clamp(1.1rem,1.9vw,1.45rem);font-weight:700}.hero-lede{max-width:560px;margin:22px 0 0;color:var(--mist);font-size:15px;line-height:1.75}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;border-radius:var(--r-sm);padding:0 18px;font-size:13px;font-weight:700;letter-spacing:.02em;transition:transform .2s var(--ease-out),background .2s var(--ease-out),color .2s var(--ease-out),border-color .2s var(--ease-out)}.button:hover{transform:translateY(-2px)}.button:active{transform:scale(.98)}.button.primary{background:var(--blue);color:var(--white)}.button.primary:hover{background:var(--blue-2)}.button.ghost{border:1px solid var(--line);background:transparent;color:var(--white)}.button.ghost:hover{border-color:var(--blue-3);background:#0000ff1a}.hero-badge{position:relative;height:600px}.hero-badge .lanyard-wrapper{height:100%}.badge-fallback{width:100%;height:100%;border:1px solid var(--line);border-radius:var(--r-sm);background:radial-gradient(circle at 50% 40%,rgba(0,0,255,.1),transparent 36%),var(--void);animation:badge-pulse 1.2s var(--ease-soft) infinite alternate}.badge-hint{position:absolute;left:50%;bottom:4px;transform:translate(-50%);margin:0;color:#ffffff6b;font-family:var(--font-mono);font-size:12px;white-space:nowrap}.scroll-hint{position:absolute;left:50%;bottom:22px;z-index:2;transform:translate(-50%);display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--line);border-radius:var(--r-full);color:#ffffff80;animation:scroll-bob 2.2s var(--ease-soft) infinite;transition:color .16s var(--ease-out),border-color .16s var(--ease-out)}.scroll-hint:hover{color:var(--white);border-color:var(--blue-3)}.section{position:relative;padding:116px 0}section[id]{scroll-margin-top:96px}.section-alt{background:var(--panel);border-block:1px solid var(--line)}#projects{overflow:hidden;isolation:isolate}#projects:before{position:absolute;top:7%;right:5%;bottom:7%;left:5%;z-index:0;border-radius:50%;background:radial-gradient(ellipse at center,rgba(0,0,255,.26) 0%,rgba(0,0,255,.14) 30%,rgba(0,0,255,.05) 54%,transparent 76%);filter:blur(30px);content:"";pointer-events:none}#projects>.container{position:relative;z-index:1}.section-intro{max-width:680px;margin-bottom:56px}.section-kicker{display:flex;align-items:center;gap:9px;width:fit-content;margin:0 0 22px;color:var(--blue-3);font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.04em}.section-kicker-dot{width:7px;height:7px;flex:0 0 auto;border-radius:var(--r-sm);background:var(--blue);box-shadow:0 0 0 4px #0000ff29}.section-intro h2{margin:0;color:var(--white);font-size:clamp(2.7rem,5vw,4.3rem);font-weight:700;letter-spacing:-.02em;line-height:1.04;text-wrap:balance}.section-intro>p:not(.section-kicker){margin:20px 0 0;color:var(--mist);font-size:15px;line-height:1.7}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.project-card{position:relative;display:flex;min-height:236px;flex-direction:column;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--void);padding:24px;transition:transform .22s var(--ease-out),border-color .2s var(--ease-out),background .2s var(--ease-out),box-shadow .22s var(--ease-out)}.project-card:hover{border-color:var(--line-blue);background:var(--panel);transform:scale(1.03);box-shadow:var(--glow-blue)}.project-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.project-head h3{margin:0;color:var(--white);font-size:18px;font-weight:700}.project-year{color:#fff6;font-family:var(--font-mono);font-size:12px}.project-card>p{margin:14px 0 0;color:var(--mist);font-size:14px;line-height:1.65}.project-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto;padding-top:20px}.project-tags span{border:1px solid rgba(0,0,255,.4);border-radius:var(--r-full);color:var(--blue-3);padding:4px 10px;font-family:var(--font-mono);font-size:11px}.project-link{display:inline-flex;align-items:center;gap:7px;margin-top:18px;color:var(--white);font-size:13px;font-weight:700;transition:gap .18s var(--ease-out),color .18s var(--ease-out)}.project-card:hover .project-link{gap:11px;color:var(--blue-3)}.article-list{display:grid;gap:14px}.article-item{position:relative;display:grid;grid-template-columns:200px minmax(0,1fr) auto;align-items:center;gap:28px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);padding:22px 26px;transition:transform .22s var(--ease-out),border-color .2s var(--ease-out),background .2s var(--ease-out),box-shadow .22s var(--ease-out)}.article-item:hover{border-color:var(--line-blue);background:var(--lift);transform:scale(1.02);box-shadow:var(--glow-blue)}.article-meta{display:flex;flex-direction:column;gap:6px}.article-meta span{color:#fff6;font-family:var(--font-mono);font-size:12px}.article-meta span:last-child{color:var(--blue-3)}.article-item h3{margin:0;color:var(--white);font-size:16px;font-weight:700;line-height:1.35}.article-item p{grid-column:2;margin:-6px 0 0;color:var(--mist);font-size:14px;line-height:1.6}.article-arrow{grid-column:3;grid-row:1 / 3;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--line);border-radius:var(--r-sm);color:var(--blue-3);transition:background .18s var(--ease-out),color .18s var(--ease-out)}.article-item:hover .article-arrow,.blue-bottom{background:var(--blue);color:var(--white)}.blue-band{padding:128px 0 96px}.blue-inner{max-width:760px;margin-inline:auto;text-align:center}.blue-kicker{display:inline-flex;align-items:center;gap:8px;margin:0 0 22px;font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.08em;color:#fffc}.blue-inner h2{margin:0;color:var(--white);font-size:clamp(2.1rem,4.4vw,3.8rem);font-weight:700;letter-spacing:-.02em;line-height:1.06;text-wrap:balance}.blue-sub{max-width:560px;margin:24px auto 0;color:#ffffffd1;font-size:16px;line-height:1.7}.blue-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:38px}.button-white{display:inline-flex;align-items:center;justify-content:center;min-height:46px;border-radius:var(--r-sm);padding:0 22px;background:var(--white);color:var(--blue);font-size:13px;font-weight:700;letter-spacing:.02em;transition:transform .2s var(--ease-out),background .2s var(--ease-out)}.button-white:hover{background:#f2f2ff;transform:translateY(-2px)}.button-outline{display:inline-flex;align-items:center;justify-content:center;min-height:46px;border:1px solid rgba(255,255,255,.7);border-radius:var(--r-sm);padding:0 22px;background:transparent;color:var(--white);font-size:13px;font-weight:700;letter-spacing:.02em;transition:transform .2s var(--ease-out),background .2s var(--ease-out)}.button-outline:hover{background:#ffffff1f;transform:translateY(-2px)}.blue-links{display:flex;flex-wrap:wrap;justify-content:center;gap:22px;margin-top:40px}.blue-links a{color:#ffffffd9;font-size:14px;text-decoration:underline;text-underline-offset:4px;transition:color .16s var(--ease-out)}.blue-links a:hover{color:var(--white)}.blue-footer{border-top:1px solid rgba(255,255,255,.3);background:var(--blue-2);padding:26px 0}.blue-footer-inner{display:flex;align-items:center;justify-content:space-between;gap:16px}.blue-footer-inner p{margin:0;color:#ffffffd9;font-size:13px}.blue-footer-inner .mono{font-size:11px;letter-spacing:.08em;color:#fff9}@keyframes badge-pulse{0%{opacity:.45;transform:scale(.99)}to{opacity:.8;transform:scale(1)}}@keyframes scroll-bob{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(7px)}}@media (max-width: 980px){.container{width:min(var(--container),calc(100vw - 40px))}.hero{padding-top:120px}.hero-grid{grid-template-columns:1fr;gap:8px}.hero-copy{text-align:center}.hero-lede{margin-inline:auto}.hero-actions{justify-content:center}.hero-badge{height:480px}.project-grid{grid-template-columns:1fr}.article-item{grid-template-columns:150px minmax(0,1fr) auto}}@media (max-width: 640px){.site-header{gap:6px;padding:6px 8px}.nav-left a{padding:9px;font-size:12px}.nav-cta{padding:9px 10px}.nav-cta span{display:none}.hero-badge{height:400px}.section{padding:84px 0}.article-item{grid-template-columns:1fr;gap:12px}.article-meta{flex-direction:row;gap:14px}.article-item p{grid-column:1;margin:0}.article-arrow{position:absolute;right:20px;top:22px}.blue-footer-inner{flex-direction:column;text-align:center}}
