:root{--bg:#050507;--bg-2:#0b1114;--surface:#0e161b;--ink:#f7fbfc;--ink-dim:#f7fbfc9e;--ink-faint:#f7fbfc61;--accent:#c9ff1a;--accent-soft:#c9ff1a1f;--accent-line:#c9ff1a73;--line:#ffffff1a;--line-strong:#ffffff2e;--font-display:"Bahnschrift", "Bahnschrift SemiCondensed", "DIN Alternate", "DIN Condensed", "Roboto Condensed", "Arial Narrow", "PingFang SC", "Microsoft YaHei", sans-serif;--font-sans:"PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--header-h:72px;--container:1240px;--radius:20px;--ease-out:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.7;overflow-x:hidden}body.is-locked{overflow:hidden}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}::selection{background:var(--accent);color:#0a110d}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{border:2px solid var(--bg);background:#1d2730;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#2a3844}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:clamp(20px,5vw,64px)}.section{padding-block:clamp(80px,11vw,150px);position:relative}.section--dim,.career,.skills{background:var(--bg-2)}.section-head{margin-bottom:clamp(40px,6vw,72px)}.section-kicker{font-family:var(--font-display);letter-spacing:.28em;color:var(--accent);align-items:center;gap:12px;margin-bottom:14px;font-size:12px;font-weight:600;display:flex}.section-kicker span{border:1px solid var(--accent-line);letter-spacing:.1em;border-radius:99px;place-items:center;min-width:34px;height:22px;font-size:10px;display:inline-grid}.section-title{font-family:var(--font-display);letter-spacing:-.01em;font-size:clamp(34px,5.2vw,64px);font-weight:300;line-height:1.05}.section-title i{color:var(--accent);transition:transform .35s var(--ease-out);margin-left:10px;font-size:.55em;font-style:normal}.section-head:hover .section-title i{transform:translate(4px,-4px)}.btn{letter-spacing:.02em;white-space:nowrap;transition:transform .3s var(--ease-out), background .3s, color .3s, border-color .3s, box-shadow .3s;border-radius:999px;align-items:center;gap:10px;padding:14px 28px;font-size:15px;font-weight:600;display:inline-flex}.btn span{transition:transform .3s var(--ease-out)}.btn:hover{transform:translateY(-2px)}.btn:hover span{transform:translate(3px,-3px)}.btn--accent{background:var(--accent);color:#0a110d;box-shadow:0 10px 30px #c9ff1a2e}.btn--accent:hover{box-shadow:0 16px 40px #c9ff1a52}.btn--ghost{border:1px solid var(--line-strong);color:var(--ink)}.btn--ghost:hover{border-color:var(--accent);color:var(--accent)}.btn .icon{fill:currentColor;width:17px;height:17px}.btn .icon--gh{transition:transform .3s var(--ease-out)}.btn:hover .icon--gh{transform:translateY(-1px)rotate(-6deg)}.tag-list{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.tag-list li{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink-dim);border:1px solid var(--line);border-radius:999px;padding:6px 13px;font-size:12px;transition:color .25s,border-color .25s,background .25s}.tag-list li:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.chip-list{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.chip-list li{color:var(--ink-dim);border:1px solid var(--line);transition:all .3s var(--ease-out);border-radius:999px;padding:8px 18px;font-size:13px}.chip-list li:before{content:"✦ ";color:var(--accent);font-size:10px}.chip-list li:hover{color:var(--ink);border-color:var(--accent-line);transform:translateY(-2px)}#fx-canvas{z-index:0;pointer-events:none;position:fixed;inset:0}main,.site-footer{z-index:1;position:relative}.scroll-progress{background:var(--accent);transform-origin:0;z-index:200;width:100%;height:3px;position:fixed;top:0;left:0;transform:scaleX(0)}.site-header{z-index:100;border-bottom:1px solid #0000;transition:background .35s,border-color .35s,-webkit-backdrop-filter .35s,backdrop-filter .35s;position:fixed;inset:0 0 auto}.site-header.is-scrolled{-webkit-backdrop-filter:blur(18px);border-bottom-color:var(--line);background:#050507b8}.header-inner{max-width:var(--container);height:var(--header-h);justify-content:space-between;align-items:center;gap:24px;margin-inline:auto;padding-inline:clamp(20px,5vw,64px);display:flex}.brand{align-items:center;gap:11px;display:inline-flex}.brand-monogram{background:var(--accent);color:#0a110d;width:38px;height:38px;font-family:var(--font-display);letter-spacing:.02em;border-radius:11px;place-items:center;font-size:15px;font-weight:700;display:grid;box-shadow:0 0 22px #c9ff1a40}.brand-name{font-family:var(--font-display);letter-spacing:.06em;font-size:17px;font-weight:600}.brand-name em{color:var(--accent);vertical-align:super;font-size:.7em;font-style:normal}.site-nav{gap:6px;display:flex}.nav-link{color:var(--ink-dim);padding:8px 14px;font-size:14px;transition:color .25s;position:relative}.nav-link span{font-family:var(--font-mono);color:var(--ink-faint);margin-right:5px;font-size:10px;transition:color .25s}.nav-link:after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform .3s var(--ease-out);position:absolute;bottom:2px;left:14px;right:14px;transform:scaleX(0)}.nav-link:hover,.nav-link.is-active{color:var(--ink)}.nav-link:hover span,.nav-link.is-active span{color:var(--accent)}.nav-link:hover:after,.nav-link.is-active:after{transform:scaleX(1)}.header-actions{align-items:center;gap:14px;display:flex}.header-cta{padding:10px 22px;font-size:14px}.nav-toggle{border:1px solid var(--line-strong);border-radius:50%;width:42px;height:42px;display:none;position:relative}.nav-toggle span{background:var(--ink);width:18px;height:2px;transition:transform .35s var(--ease-out), top .35s var(--ease-out), opacity .2s;position:absolute;left:11px}.nav-toggle span:first-child{top:15px}.nav-toggle span:nth-child(2){top:24px}.nav-toggle.is-open span:first-child{top:20px;transform:rotate(45deg)}.nav-toggle.is-open span:nth-child(2){top:20px;transform:rotate(-45deg)}.mobile-menu{z-index:90;-webkit-backdrop-filter:blur(24px);opacity:0;visibility:hidden;transition:opacity .4s var(--ease-out), visibility .4s;background:#050507f5;flex-direction:column;justify-content:center;gap:8px;padding:40px clamp(28px,8vw,64px);display:flex;position:fixed;inset:0}.mobile-menu.is-open{opacity:1;visibility:visible}.mobile-nav-link{font-family:var(--font-display);color:var(--ink-dim);border-bottom:1px solid var(--line);transition:color .3s, transform .45s var(--ease-out);align-items:baseline;gap:14px;padding:10px 0;font-size:clamp(30px,9vw,46px);font-weight:300;display:flex;transform:translateY(24px)}.mobile-menu.is-open .mobile-nav-link{transform:translateY(0)}.mobile-nav-link span{font-family:var(--font-mono);color:var(--accent);font-size:13px}.mobile-nav-link:hover{color:var(--accent)}.mobile-menu.is-open .mobile-nav-link:first-child{transition-delay:60ms}.mobile-menu.is-open .mobile-nav-link:nth-child(2){transition-delay:.11s}.mobile-menu.is-open .mobile-nav-link:nth-child(3){transition-delay:.16s}.mobile-menu.is-open .mobile-nav-link:nth-child(4){transition-delay:.21s}.mobile-menu.is-open .mobile-nav-link:nth-child(5){transition-delay:.26s}.mobile-menu-foot{color:var(--ink-faint);margin-top:40px;font-size:14px}.mobile-menu-foot a{color:var(--accent)}.hero{min-height:100svh;padding:calc(var(--header-h) + 40px) 0 0;flex-direction:column;justify-content:center;display:flex;position:relative;overflow:hidden}.hero-bg{z-index:0;pointer-events:none;position:absolute;inset:0}.hero-grid{background-image:linear-gradient(#ffffff09 1px,#0000 1px),linear-gradient(90deg,#ffffff09 1px,#0000 1px);background-size:56px 56px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(90% 75% at 50% 38%,#000 30%,#0000 78%);mask-image:radial-gradient(90% 75% at 50% 38%,#000 30%,#0000 78%)}.hero-glow{filter:blur(90px);opacity:.16;border-radius:50%;width:55vw;max-width:720px;height:55vw;max-height:720px;position:absolute}.hero-glow--a{background:var(--accent);top:-18%;right:-10%}.hero-glow--b{opacity:.12;background:#2b6cff;bottom:-25%;left:-14%}.hero-inner{z-index:1;width:100%;max-width:var(--container);padding-inline:clamp(20px,5vw,64px);grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);grid-template-areas:"copy badge""tail badge";align-items:center;column-gap:clamp(36px,5vw,72px);margin-inline:auto;padding-bottom:clamp(120px,18vh,190px);display:grid;position:relative}.hero-copy{grid-area:copy;min-width:0}.hero-copy--tail{grid-area:tail;min-width:0}.hero-badge{grid-area:badge;min-width:0}.hero-kicker{font-family:var(--font-mono);letter-spacing:.22em;color:var(--ink-dim);border:1px solid var(--line);border-radius:999px;align-items:center;gap:10px;margin-bottom:clamp(24px,4vw,40px);padding:8px 16px;font-size:12px;display:inline-flex}.hero-dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 12px var(--accent);border-radius:50%;animation:2.2s ease-in-out infinite blink}.hero-title{margin-bottom:clamp(22px,3vw,34px)}.hero-line{font-family:var(--font-display);letter-spacing:-.015em;text-transform:uppercase;font-size:clamp(54px,7.6vw,108px);font-weight:700;line-height:.96;display:block;overflow:hidden}.hero-line span{display:block}.hero-line--outline span{color:#0000;-webkit-text-stroke:1.5px #f7fbfc8c}.hero-sub{max-width:560px;color:var(--ink-dim);font-size:clamp(16px,1.5vw,19px);line-height:1.8}.hero-sub em{color:var(--ink-faint);font-size:.88em;font-style:normal}.hero-actions{flex-wrap:wrap;gap:14px;margin-top:clamp(28px,4vw,44px);display:flex}.hero-meta{font-family:var(--font-mono);color:var(--ink-faint);flex-wrap:wrap;gap:10px 26px;margin-top:clamp(30px,4vw,46px);font-size:12.5px;display:flex}.hero-meta li:before{content:"—  ";color:var(--accent)}.hero [data-hero-line] span,.hero [data-hero-line]{will-change:transform, opacity}.hero [data-hero-line]{opacity:0;transform:translateY(34px)}.hero .hero-line span{transform:translateY(110%)}.is-ready .hero [data-hero-line]{opacity:1;transition:opacity .9s var(--ease-out), transform .9s var(--ease-out);transition-delay:var(--d,0s);transform:translateY(0)}.is-ready .hero .hero-line span{transition:transform 1s var(--ease-out);transition-delay:var(--d,0s);transform:translateY(0)}.marquee{z-index:1;border-block:1px solid var(--line);background:#ffffff04;padding-block:16px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.marquee__track{align-items:center;width:max-content;animation:36s linear infinite marquee;display:flex}.marquee:hover .marquee__track{animation-play-state:paused}.marquee span{font-family:var(--font-display);letter-spacing:.14em;color:var(--ink-faint);white-space:nowrap;font-size:clamp(15px,1.6vw,20px);font-weight:600;transition:color .3s}.marquee i{color:var(--accent);margin-inline:clamp(16px,2.2vw,34px);font-size:11px;font-style:normal}.scroll-hint{z-index:1;right:clamp(20px,5vw,64px);top:calc(var(--header-h) + 12px);font-family:var(--font-mono);letter-spacing:.3em;color:var(--ink-faint);writing-mode:vertical-rl;flex-direction:column;align-items:center;gap:10px;font-size:10px;display:flex;position:absolute}.scroll-hint__line{background:var(--line-strong);width:1px;height:52px;position:relative;overflow:hidden}.scroll-hint__line:after{content:"";background:var(--accent);width:100%;height:50%;animation:scrollLine 2s var(--ease-out) infinite;position:absolute;top:-50%;left:0}.about-grid{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start;gap:clamp(36px,5vw,80px);display:grid}.about-portrait{top:calc(var(--header-h) + 32px);position:sticky}.portrait-frame{border-radius:var(--radius);border:1px solid var(--line);aspect-ratio:1;background:var(--surface);position:relative;overflow:hidden}.portrait-frame:after{content:"";border:1px solid var(--accent-line);border-radius:var(--radius);z-index:-1;transition:inset .4s var(--ease-out);position:absolute;inset:14px -14px -14px 14px}.about-portrait:hover .portrait-frame:after{inset:8px -8px -8px 8px}.portrait-frame img{object-fit:cover;width:100%;height:100%;transition:transform .8s var(--ease-out)}.about-portrait:hover .portrait-frame img{transform:scale(1.04)}.portrait-badge{-webkit-backdrop-filter:blur(10px);border:1px solid var(--accent-line);font-family:var(--font-mono);letter-spacing:.12em;background:#050507bf;border-radius:999px;align-items:center;gap:9px;padding:9px 16px;font-size:11px;display:inline-flex;position:absolute;bottom:16px;left:16px}.pulse-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;box-shadow:0 0 #c9ff1a99}.portrait-caption{border-left:2px solid var(--accent);color:var(--ink-faint);margin-top:22px;padding-left:18px;font-size:14px}.about-greeting{font-family:var(--font-display);margin-bottom:20px;font-size:clamp(28px,3vw,40px);font-weight:300}.about-greeting strong{color:var(--accent);font-weight:600}.about-text{color:var(--ink-dim);max-width:620px;margin-bottom:16px}.about-text strong{color:var(--ink);font-weight:600}.fact-list{border-top:1px solid var(--line);margin-top:34px}.fact-row{border-bottom:1px solid var(--line);grid-template-columns:110px 1fr;align-items:baseline;gap:18px;padding:15px 4px;transition:background .3s,padding-left .3s;display:grid}.fact-row:hover{background:var(--accent-soft);padding-left:12px}.fact-row dt{font-family:var(--font-mono);letter-spacing:.14em;color:var(--ink-faint);font-size:11px}.fact-row dd{color:var(--ink);font-size:15px}.stats{background:var(--line);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:repeat(4,1fr);gap:1px;margin-top:38px;display:grid;overflow:hidden}.stat{background:var(--bg);padding:26px 20px;transition:background .35s}.stat:hover{background:var(--surface)}.stat__num{font-family:var(--font-display);color:var(--accent);font-variant-numeric:tabular-nums;font-size:clamp(30px,3.4vw,46px);font-weight:700;line-height:1}.stat__label{color:var(--ink-faint);margin-top:10px;font-size:12.5px;line-height:1.5}.timeline{margin-left:8px;padding-left:clamp(26px,4vw,44px);position:relative}.timeline:before{content:"";background:linear-gradient(var(--accent-line), var(--line) 18%, var(--line));width:1px;position:absolute;top:8px;bottom:8px;left:7px}.timeline-item{padding-bottom:34px;position:relative}.timeline-item:last-child{padding-bottom:0}.timeline-marker{background:var(--bg-2);border:1px solid var(--accent-line);width:15px;height:15px;transition:background .3s,box-shadow .3s;position:absolute;top:26px;left:clamp(-26px,-4vw,-44px);transform:rotate(45deg);box-shadow:0 0 16px #c9ff1a40}.timeline-item:hover .timeline-marker{background:var(--accent);box-shadow:0 0 24px #c9ff1a8c}.timeline-card{border:1px solid var(--line);border-radius:var(--radius);transition:transform .4s var(--ease-out), border-color .4s, background .4s;background:#ffffff04;padding:clamp(24px,3.2vw,38px)}.timeline-card:hover{background:var(--surface);border-color:#c9ff1a59;transform:translate(8px)}.timeline-card__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.timeline-card time{font-family:var(--font-mono);color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:.05em;font-size:13px}.tag-role{font-family:var(--font-mono);letter-spacing:.16em;color:var(--accent);border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:999px;padding:4px 12px;font-size:10px}.timeline-card h3{margin-bottom:14px;font-size:20px;font-weight:600}.timeline-card h3 small{color:var(--ink-faint);margin-top:4px;font-size:14px;font-weight:400;display:block}.timeline-points li{color:var(--ink-dim);margin-bottom:9px;padding-left:20px;font-size:14.5px;position:relative}.timeline-points li:before{content:"→";color:var(--accent);position:absolute;left:0}.timeline-points strong{color:var(--ink);font-weight:600}.works{cursor:auto}.works-list{flex-direction:column;gap:clamp(56px,7vw,100px);display:flex}.work-card{cursor:pointer;outline:none;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:clamp(28px,4vw,60px);display:grid}.work-card:nth-child(2n){direction:rtl}.work-card:nth-child(2n)>*{direction:ltr}.work-card__media{aspect-ratio:16/9;border:1px solid var(--line);background:var(--surface);border-radius:22px;position:relative;overflow:hidden}.work-card__media img{object-fit:cover;width:100%;height:100%;transition:transform .8s var(--ease-out), filter .6s}.work-card:hover .work-card__media img,.work-card:focus-visible .work-card__media img{transform:scale(1.06)}.work-card__media:after{content:"";pointer-events:none;background:linear-gradient(#0000 55%,#0505078c);position:absolute;inset:0}.work-card__index{z-index:1;font-family:var(--font-display);color:#0000;-webkit-text-stroke:1.5px #f7fbfcb3;font-size:clamp(64px,8vw,120px);font-weight:700;line-height:1;transition:color .4s,-webkit-text-stroke-color .4s;position:absolute;bottom:8px;right:18px}.work-card:hover .work-card__index,.work-card:focus-visible .work-card__index{color:#c9ff1a29;-webkit-text-stroke-color:var(--accent)}.work-card__kicker{font-family:var(--font-mono);letter-spacing:.22em;color:var(--accent);margin-bottom:12px;font-size:11px}.work-card__title{font-family:var(--font-display);margin-bottom:14px;font-size:clamp(26px,3vw,38px);font-weight:400;line-height:1.15}.work-card__title i{color:var(--accent);transition:transform .35s var(--ease-out);font-size:.6em;font-style:normal}.work-card:hover .work-card__title i,.work-card:focus-visible .work-card__title i{display:inline-block;transform:translate(5px,-5px)}.work-card__desc{color:var(--ink-dim);max-width:460px;font-size:15px}.work-cursor{z-index:150;background:var(--accent);color:#0a110d;width:88px;height:88px;font-family:var(--font-mono);letter-spacing:.14em;pointer-events:none;transition:transform .35s var(--ease-out);mix-blend-mode:normal;border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid;position:fixed;top:0;left:0;transform:translate(-50%,-50%)scale(0)}.work-cursor.is-active{transform:translate(-50%,-50%)scale(1)}.modal{z-index:300;visibility:hidden;place-items:center;padding:clamp(16px,4vw,48px);display:grid;position:fixed;inset:0}.modal.is-open{visibility:visible}.modal__backdrop{-webkit-backdrop-filter:blur(14px);opacity:0;background:#030506b3;transition:opacity .35s;position:absolute;inset:0}.modal.is-open .modal__backdrop{opacity:1}.modal__panel{background:var(--surface);border:1px solid var(--line-strong);opacity:0;width:min(880px,100%);max-height:88vh;transition:transform .45s var(--ease-out), opacity .35s;border-radius:24px;position:relative;overflow-y:auto;transform:translateY(40px)scale(.96)}.modal.is-open .modal__panel{opacity:1;transform:translateY(0)scale(1)}.modal__media{aspect-ratio:16/8;background:var(--bg-2);overflow:hidden}.modal__media img{object-fit:cover;width:100%;height:100%}.modal__content{padding:clamp(24px,4vw,44px)}.modal__kicker{font-family:var(--font-mono);letter-spacing:.22em;color:var(--accent);margin-bottom:10px;font-size:11px}.modal__title{font-family:var(--font-display);margin-bottom:14px;font-size:clamp(26px,4vw,38px);font-weight:400}.modal__desc{color:var(--ink-dim)}.modal__points{margin:18px 0 0}.modal__points li{color:var(--ink-dim);margin-bottom:8px;padding-left:22px;font-size:14.5px;position:relative}.modal__points li:before{content:"✦";color:var(--accent);font-size:11px;position:absolute;top:4px;left:0}.modal__actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.modal__close{z-index:2;border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#05050799;border-radius:50%;width:42px;height:42px;position:absolute;top:16px;right:16px}.modal__close span{background:var(--ink);width:17px;height:2px;position:absolute;top:20px;left:12px}.modal__close span:first-child{transform:rotate(45deg)}.modal__close span:nth-child(2){transform:rotate(-45deg)}.modal__close:hover{border-color:var(--accent)}.modal__close:hover span{background:var(--accent)}.skills-grid{background:var(--line);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:repeat(2,1fr);gap:1px;display:grid;overflow:hidden}.skill-block{background:var(--bg-2);padding:clamp(26px,3.4vw,42px);transition:background .4s}.skill-block:hover{background:var(--surface)}.skill-block__top{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.skill-block__no{font-family:var(--font-display);color:#0000;-webkit-text-stroke:1px #c9ff1a8c;font-size:34px;font-weight:700}.skill-block__en{font-family:var(--font-mono);letter-spacing:.2em;color:var(--ink-faint);font-size:10px}.skill-block h3{margin-bottom:10px;font-size:21px;font-weight:600}.skill-block p{color:var(--ink-dim);font-size:14px}.skill-bar{background:#ffffff14;border-radius:99px;height:4px;margin-top:22px;overflow:hidden}.skill-bar span{background:linear-gradient(90deg, var(--accent), #eaffa3);width:0;height:100%;transition:width 1.2s var(--ease-out) .15s;border-radius:99px;display:block;box-shadow:0 0 12px #c9ff1a73}.certs{margin-top:56px}.certs__label{font-family:var(--font-mono);letter-spacing:.22em;color:var(--ink-faint);margin-bottom:6px;font-size:11px}.contact-title{font-size:clamp(40px,8vw,110px);line-height:1}.contact-lead{font-family:var(--font-display);max-width:760px;margin-bottom:clamp(40px,6vw,70px);font-size:clamp(22px,3vw,34px);font-weight:300;line-height:1.5}.contact-lead strong{color:var(--accent);font-weight:600}.contact-list{border-top:1px solid var(--line)}.contact-row{border-bottom:1px solid var(--line);grid-template-columns:56px 1fr auto;align-items:center;gap:18px;padding:clamp(20px,3vw,30px) 8px;transition:background .35s,padding-left .35s;display:grid}a.contact-row:hover{background:var(--accent-soft);padding-left:20px}.contact-row__icon{border:1px solid var(--line);width:46px;height:46px;color:var(--ink-dim);border-radius:14px;place-items:center;transition:color .3s,border-color .3s;display:grid}.contact-row__icon svg{fill:currentColor;width:20px;height:20px}a.contact-row:hover .contact-row__icon{color:var(--accent);border-color:var(--accent-line)}.contact-row__meta{flex-direction:column;gap:3px;display:flex}.contact-row__meta small{font-family:var(--font-mono);letter-spacing:.18em;color:var(--ink-faint);font-size:10.5px}.contact-row__meta strong{font-size:clamp(17px,2vw,22px);font-weight:500}a.contact-row:hover .contact-row__meta strong{color:var(--accent)}.contact-row__arrow{color:var(--ink-faint);transition:transform .35s var(--ease-out), color .3s;font-size:22px}a.contact-row:hover .contact-row__arrow{color:var(--accent);transform:translate(4px,-4px)}.copy-btn{border:1px solid var(--line);width:46px;height:46px;color:var(--ink-dim);border-radius:14px;place-items:center;transition:color .3s,border-color .3s;display:grid;position:relative}.copy-btn svg{fill:currentColor;width:19px;height:19px}.copy-btn:hover{color:var(--accent);border-color:var(--accent-line)}.copy-btn__tip{background:var(--accent);color:#0a110d;opacity:0;pointer-events:none;transition:opacity .25s, transform .25s var(--ease-out);white-space:nowrap;border-radius:8px;padding:4px 12px;font-size:12px;font-weight:600;position:absolute;top:-34px;left:50%;transform:translate(-50%)translateY(6px)}.copy-btn.is-copied .copy-btn__tip{opacity:1;transform:translate(-50%)translateY(0)}.site-footer{border-top:1px solid var(--line);background:var(--bg);padding-block:36px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;display:flex}.brand--footer .brand-monogram{border-radius:9px;width:32px;height:32px;font-size:13px}.footer-copy{color:var(--ink-faint);font-size:13px}.footer-copy i{color:var(--accent);font-style:normal;font-family:var(--font-mono);font-size:11px}.back-top{color:var(--ink-dim);align-items:center;gap:8px;font-size:14px;transition:color .3s;display:inline-flex}.back-top span{border:1px solid var(--line-strong);width:34px;height:34px;transition:transform .3s var(--ease-out), border-color .3s, color .3s;border-radius:50%;place-items:center;display:grid}.back-top:hover{color:var(--accent)}.back-top:hover span{border-color:var(--accent-line);transform:translateY(-3px)}[data-reveal]{opacity:0;transition:opacity .9s var(--ease-out), transform .9s var(--ease-out);transform:translateY(36px)}[data-reveal].is-in{opacity:1;transform:translateY(0)}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.25}}@keyframes pulse{0%{box-shadow:0 0 #c9ff1a8c}70%{box-shadow:0 0 0 12px #c9ff1a00}to{box-shadow:0 0 #c9ff1a00}}@keyframes scrollLine{0%{transform:translateY(0)}to{transform:translateY(300%)}}@media (width<=1023px){.site-nav,.header-cta{display:none}.nav-toggle{display:block}.hero-inner{grid-template-columns:1fr;grid-template-areas:"copy""badge""tail";row-gap:clamp(32px,6vw,48px)}.about-grid{grid-template-columns:1fr;gap:48px}.about-portrait{max-width:420px;position:static}.stats{grid-template-columns:repeat(2,1fr)}.work-card{grid-template-columns:1fr;gap:22px}.work-card:nth-child(2n){direction:ltr}.work-cursor,.scroll-hint{display:none}}@media (width<=640px){:root{--header-h:62px}.section{padding-block:72px}.hero-inner{padding-bottom:150px}.hero-actions .btn{justify-content:center;width:100%}.hero-meta{gap:8px 18px}.fact-row{grid-template-columns:1fr;gap:4px}.stat{padding:20px 16px}.skills-grid{grid-template-columns:1fr}.timeline{margin-left:0;padding-left:28px}.timeline-marker{left:-28px}.timeline-card:hover{transform:none}.contact-row{grid-template-columns:44px 1fr;gap:12px}.contact-row__arrow{display:none}.copy-btn{border-radius:999px;grid-column:2;justify-self:start;align-items:center;gap:8px;width:auto;padding:8px 16px;display:inline-flex}.footer-inner{flex-direction:column;align-items:flex-start}.work-card__index{font-size:56px}.marquee{padding-block:12px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}[data-reveal],.hero [data-hero-line]{opacity:1;transform:none}.hero .hero-line span{transform:none}}.hero-badge{flex-direction:column;gap:18px;width:100%;display:flex;position:relative}.badge-stage{aspect-ratio:1;background:radial-gradient(circle at 50% 46%, #c8102e29, transparent 62%), radial-gradient(circle at 68% 26%, #c9ff1a12, transparent 55%), var(--surface,#0e161b);border:1px solid var(--line);border-radius:28px;width:100%;max-width:460px;margin-inline:auto;position:relative;overflow:hidden}.badge-stage:before{content:"";pointer-events:none;background-image:linear-gradient(#ffffff08 1px,#0000 1px),linear-gradient(90deg,#ffffff08 1px,#0000 1px);background-size:40px 40px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle,#000 30%,#0000 78%);mask-image:radial-gradient(circle,#000 30%,#0000 78%)}#badgeCanvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}#badgeCanvas.is-dragging,#badgeCanvas:active{cursor:grabbing}.badge-stage__state{z-index:3;border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);font-family:var(--font-mono);letter-spacing:.14em;color:var(--ink-dim);pointer-events:none;background:#0505079e;border-radius:999px;align-items:center;gap:7px;padding:6px 12px;font-size:10.5px;display:inline-flex;position:absolute;top:14px;left:14px}.badge-stage__state i{background:var(--accent);width:6px;height:6px;box-shadow:0 0 8px var(--accent);border-radius:50%}.badge-stage[data-rotate-state=dragging] .badge-stage__state i{background:#ffb347;animation:1s ease-in-out infinite badgeBlink;box-shadow:0 0 8px #ffb347}.badge-loading{z-index:2;font-family:var(--font-mono);letter-spacing:.18em;color:var(--ink-faint);background:var(--surface);transition:opacity .5s var(--ease-out), visibility .5s;place-content:center;justify-items:center;gap:14px;font-size:12px;display:grid;position:absolute;inset:0}.badge-loading.is-hidden{opacity:0;visibility:hidden}.badge-loading__spinner{border:2px solid #ffffff1f;border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;animation:.9s linear infinite badgeSpin}.badge-fallback{z-index:2;background:var(--surface);text-align:center;place-content:center;justify-items:center;gap:10px;padding:6% 8%;display:none;position:absolute;inset:0}.badge-fallback.is-active{display:grid}.badge-fallback svg{filter:drop-shadow(0 12px 30px #c8102e40);width:min(100%,300px);height:auto}.badge-fallback__note{color:var(--ink-faint);font-size:12px}.badge-panel{flex-direction:column;gap:12px;width:100%;max-width:460px;margin-inline:auto;display:flex}.badge-panel__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.badge-title{font-family:var(--font-display);letter-spacing:.04em;color:var(--ink);align-items:baseline;gap:10px;font-size:19px;font-weight:600;display:flex}.badge-title span{font-family:var(--font-mono);letter-spacing:.22em;color:var(--ink-faint);font-size:10px}.badge-status{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-dim);border:1px solid var(--line);border-radius:999px;align-items:center;gap:7px;padding:5px 12px;font-size:11px;display:inline-flex}.badge-status i{background:var(--accent);width:6px;height:6px;box-shadow:0 0 8px var(--accent);border-radius:50%;transition:background .3s,box-shadow .3s}.badge-stage[data-rotate-state=dragging]~.badge-panel .badge-status i,.badge-stage[data-rotate-state=paused]~.badge-panel .badge-status i{background:#ffb347;box-shadow:0 0 8px #ffb347}.badge-stage[data-rotate-state=off]~.badge-panel .badge-status i{background:var(--ink-faint);box-shadow:none}.badge-controls{flex-wrap:wrap;gap:10px;display:flex}.badge-btn{border:1px solid var(--line-strong);font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-dim);transition:color .25s, border-color .25s, background .25s, transform .25s var(--ease-out);border-radius:999px;align-items:center;gap:8px;padding:8px 16px;font-size:12px;display:inline-flex}.badge-btn:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft);transform:translateY(-1px)}.badge-btn:active{transform:translateY(0)}.badge-btn svg{fill:currentColor;width:13px;height:13px}.badge-tip{color:var(--ink-faint);font-size:12.5px;line-height:1.6}.badge-tip b{color:var(--ink-dim);font-weight:600}@keyframes badgeSpin{to{transform:rotate(360deg)}}@keyframes badgeBlink{0%,to{opacity:1}50%{opacity:.3}}@media (width<=1023px){.badge-stage{max-width:400px}}@media (width<=640px){.badge-stage{border-radius:22px;max-width:320px}.badge-panel{max-width:320px}.badge-title{font-size:17px}.badge-tip{font-size:12px}}@media (prefers-reduced-motion:reduce){.badge-loading__spinner{animation:none}}
