.navbar{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--nav-height);display:flex;align-items:center;transition:all .4s var(--ease-out);background:transparent}.navbar--scrolled{background:#0a0a0cb8;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border-subtle)}.navbar__inner{max-width:var(--max-width);margin:0 auto;padding:0 48px;width:100%;display:flex;align-items:center;justify-content:space-between}.navbar__logo{display:flex;align-items:center;gap:4px;font-family:var(--font-display);font-weight:700;font-size:18px;letter-spacing:.02em;color:var(--text-primary);cursor:pointer}.navbar__logo-mark{display:inline-block}.navbar__logo-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent-glow);animation:pulse 2s var(--ease-in-out) infinite}.navbar__links{display:flex;gap:36px;align-items:center}.navbar__link{font-size:14px;font-weight:400;color:var(--text-secondary);transition:color .3s var(--ease-out);cursor:pointer;position:relative}.navbar__link:hover{color:var(--text-primary)}.navbar__link:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--accent);transition:width .3s var(--ease-out)}.navbar__link:hover:after{width:100%}.navbar__cta{font-size:13px;font-weight:500;color:var(--bg-primary);background:var(--accent);padding:9px 20px;border-radius:100px;transition:all .3s var(--ease-out);cursor:pointer;letter-spacing:.02em}.navbar__cta:hover{box-shadow:0 0 24px var(--accent-glow);transform:translateY(-1px)}@media (max-width: 768px){.navbar__inner{padding:0 24px}.navbar__links{display:none}}.tech-text{position:relative;width:100%;height:100%;touch-action:pan-y;-webkit-user-select:none;user-select:none}.tech-text-canvas{display:block;position:absolute;left:0;top:0;pointer-events:none}.hero{position:relative;height:100vh;min-height:760px;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:hidden}.hero__bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:radial-gradient(ellipse at 30% 30%,#1a1a22 0%,transparent 60%),radial-gradient(ellipse at 70% 70%,#0e0e14 0%,transparent 60%),var(--bg-primary)}.hero__particles{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.hero__particle{position:absolute;width:2px;height:2px;background:var(--accent);border-radius:50%;opacity:0;animation:particleFloat 8s var(--ease-in-out) infinite;box-shadow:0 0 6px var(--accent-glow)}.hero__particle:nth-child(3n){width:1px;height:1px;background:#fff9;box-shadow:0 0 4px #fff6}.hero__particle:nth-child(5n){width:3px;height:3px;background:var(--accent);opacity:.6}@keyframes particleFloat{0%{opacity:0;transform:translateY(0) translate(0)}20%{opacity:.8}80%{opacity:.6}to{opacity:0;transform:translateY(-200px) translate(20px)}}.hero__orb{position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none}.hero__orb--1{width:500px;height:500px;background:radial-gradient(circle,var(--accent) 0%,transparent 70%);top:-100px;left:-100px;opacity:.18;animation:orbFloat 14s ease-in-out infinite}.hero__orb--2{width:600px;height:600px;background:radial-gradient(circle,#2a3a8c 0%,transparent 70%);bottom:-200px;right:-100px;opacity:.25;animation:orbFloat 18s ease-in-out infinite;animation-delay:-4s}.hero__orb--3{width:400px;height:400px;background:radial-gradient(circle,var(--accent) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);opacity:.06;animation:orbFloat 22s ease-in-out infinite;animation-delay:-10s}@keyframes orbFloat{0%,to{transform:translate(0) scale(1)}33%{transform:translate(50px,-40px) scale(1.1)}66%{transform:translate(-40px,50px) scale(.9)}}.hero__overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 0%,rgba(10,10,12,.4) 80%),linear-gradient(180deg,transparent 50%,rgba(10,10,12,.6) 100%)}.hero__grid{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:80px 80px;mask-image:radial-gradient(ellipse 90% 70% at 50% 50%,#000 0%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 50%,#000 0%,transparent 100%)}.hero__noise{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.04;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E")}.hero__content{position:relative;z-index:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:0 48px;padding-top:var(--nav-height)}.hero__label{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;color:var(--text-secondary);margin-bottom:32px;opacity:0;animation:fadeInUp .8s var(--ease-out) .2s forwards}.hero__label-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent-glow);animation:pulse 2s var(--ease-in-out) infinite}.hero__title{font-family:var(--font-display);font-weight:700;line-height:1.02;letter-spacing:-.03em;margin-bottom:28px}.hero__title-canvas{width:100%;height:clamp(160px,14vw,240px);opacity:0;animation:fadeIn 1s var(--ease-out) .3s forwards;margin-left:-19px}.hero__title-line{display:block;overflow:visible}.hero__title-line--2{font-size:clamp(17.6px,2.08vw,28.8px);font-weight:400;color:var(--text-secondary);letter-spacing:.01em;opacity:0;animation:fadeInUp 1s var(--ease-out) .5s forwards;margin-top:16px}.hero__title-accent{color:var(--accent);font-weight:300;margin:0 6px}.hero__subtitle{font-size:17px;line-height:1.7;color:var(--text-secondary);max-width:580px;margin-bottom:40px;opacity:0;animation:fadeInUp 1s var(--ease-out) .7s forwards}.hero__actions{display:flex;gap:16px;opacity:0;animation:fadeInUp 1s var(--ease-out) .9s forwards}.hero__btn{font-family:var(--font-body);font-size:15px;font-weight:500;padding:14px 32px;border-radius:100px;border:none;cursor:pointer;transition:all .3s var(--ease-out);letter-spacing:.02em}.hero__btn--primary{background:var(--accent);color:var(--bg-primary)}.hero__btn--primary:hover{box-shadow:0 0 28px var(--accent-glow);transform:translateY(-2px)}.hero__btn--ghost{background:#ffffff0d;color:var(--text-primary);border:1px solid var(--border-default);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.hero__btn--ghost:hover{border-color:var(--accent);color:var(--accent);background:#c8ff3a0d}.hero__meta{position:absolute;bottom:48px;left:0;right:0;z-index:1;max-width:var(--max-width);margin:0 auto;padding:0 48px;display:flex;gap:56px;opacity:0;animation:fadeIn 1s var(--ease-out) 1.2s forwards}.hero__meta-item{display:flex;flex-direction:column;gap:4px}.hero__meta-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;color:var(--text-tertiary)}.hero__meta-value{font-size:14px;color:var(--text-secondary);font-weight:400}.hero__meta-value--accent{color:var(--accent)}.hero__scroll{position:absolute;bottom:48px;right:48px;z-index:1;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;opacity:0;animation:fadeIn 1s var(--ease-out) 1.5s forwards}.hero__scroll-text{font-family:var(--font-mono);font-size:10px;letter-spacing:.3em;color:var(--text-tertiary);writing-mode:vertical-rl;transform:rotate(180deg)}.hero__scroll-line{width:1px;height:48px;background:linear-gradient(to bottom,var(--text-tertiary),transparent);position:relative;overflow:hidden}.hero__scroll-line:after{content:"";position:absolute;top:0;left:0;width:100%;height:12px;background:var(--accent);animation:scrollHint 1.5s var(--ease-in-out) infinite}@media (max-width: 768px){.hero__content{padding:0 24px;padding-top:var(--nav-height)}.hero__meta{padding:0 24px;gap:24px;flex-wrap:wrap}.hero__scroll{display:none}}.about{position:relative;background:var(--bg-primary);padding:140px 0 120px;overflow:hidden}.about:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:1px;height:80px;background:linear-gradient(to bottom,transparent,var(--border-default))}.about__header{margin-bottom:80px}.about__section-label{display:flex;align-items:center;gap:12px;margin-bottom:24px}.about__section-num{font-family:var(--font-mono);font-size:13px;color:var(--accent);letter-spacing:.1em}.about__section-text{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);letter-spacing:.2em}.about__title{font-family:var(--font-display);font-size:clamp(36px,5vw,64px);font-weight:600;line-height:1.1;letter-spacing:-.02em;color:var(--text-primary)}.about__body{display:grid;grid-template-columns:400px 1fr;gap:80px;align-items:start}.about__left{position:sticky;top:100px}.about__portrait{margin-bottom:40px}.about__portrait-placeholder{position:relative;width:100%;aspect-ratio:4 / 5;background:linear-gradient(135deg,#1a1a22,#0e0e14);border:1px solid var(--border-default);border-radius:4px;display:flex;align-items:center;justify-content:center;overflow:hidden;transition:border-color .4s var(--ease-out)}.about__portrait-placeholder:hover{border-color:var(--accent-dim)}.about__portrait-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center top;z-index:0;filter:contrast(1.02) saturate(.95);transition:transform .6s var(--ease-out),filter .4s var(--ease-out)}.about__portrait-placeholder:hover .about__portrait-img{transform:scale(1.02);filter:contrast(1.05) saturate(1)}.about__portrait-shape{position:absolute;width:200%;height:200%;top:-50%;left:-50%;background:radial-gradient(circle at 50% 50%,var(--accent-dim) 0%,transparent 30%);opacity:.4;pointer-events:none}.about__portrait-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:24px 24px;pointer-events:none;mask-image:linear-gradient(to bottom,#000 0%,transparent 60%,transparent 50%,#000 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,transparent 60%,transparent 50%,#000 100%);mix-blend-mode:overlay}.about__portrait-inner{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:8px}.about__portrait-text{font-family:var(--font-mono);font-size:13px;letter-spacing:.3em;color:var(--text-secondary);font-weight:500}.about__portrait-sub{font-size:11px;color:var(--text-muted);letter-spacing:.1em}.about__portrait-frame{position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid var(--border-subtle);border-radius:2px;pointer-events:none;z-index:2}.about__portrait-corner{position:absolute;width:20px;height:20px;z-index:3}.about__portrait-corner:before,.about__portrait-corner:after{content:"";position:absolute;background:var(--accent)}.about__portrait-corner--tl{top:12px;left:12px}.about__portrait-corner--tl:before{top:0;left:0;width:20px;height:1px}.about__portrait-corner--tl:after{top:0;left:0;width:1px;height:20px}.about__portrait-corner--tr{top:12px;right:12px}.about__portrait-corner--tr:before{top:0;right:0;width:20px;height:1px}.about__portrait-corner--tr:after{top:0;right:0;width:1px;height:20px}.about__portrait-corner--bl{bottom:12px;left:12px}.about__portrait-corner--bl:before{bottom:0;left:0;width:20px;height:1px}.about__portrait-corner--bl:after{bottom:0;left:0;width:1px;height:20px}.about__portrait-corner--br{bottom:12px;right:12px}.about__portrait-corner--br:before{bottom:0;right:0;width:20px;height:1px}.about__portrait-corner--br:after{bottom:0;right:0;width:1px;height:20px}.about__portrait-caption{margin-top:16px;display:flex;flex-direction:column;gap:2px;padding-left:4px}.about__portrait-name{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--text-primary);letter-spacing:.02em}.about__portrait-role{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);letter-spacing:.1em}.about__contact{display:flex;flex-direction:column;gap:20px}.about__contact-item{display:flex;flex-direction:column;gap:4px;padding-bottom:20px;border-bottom:1px solid var(--border-subtle)}.about__contact-item:last-child{border-bottom:none;padding-bottom:0}.about__contact-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;color:var(--text-tertiary)}.about__contact-value{font-size:15px;color:var(--text-secondary);font-weight:400}.about__right{display:flex;flex-direction:column;gap:56px}.about__intro{display:flex;flex-direction:column;gap:20px}.about__intro-text{font-size:18px;line-height:1.8;color:var(--text-secondary);font-weight:400}.about__intro-ai{font-size:16px;line-height:1.8;color:var(--text-tertiary);padding-left:24px;border-left:2px solid var(--accent)}.about__stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);padding:32px 0}.about__stat{display:flex;flex-direction:column;gap:8px;padding:0 16px;border-right:1px solid var(--border-subtle)}.about__stat:last-child{border-right:none}.about__stat-number{display:flex;align-items:baseline;gap:4px}.about__stat-value{font-family:var(--font-display);font-size:48px;font-weight:700;color:var(--text-primary);line-height:1;letter-spacing:-.02em}.about__stat-unit{font-size:16px;color:var(--text-tertiary)}.about__stat-label{font-size:13px;color:var(--text-tertiary);letter-spacing:.05em}.about__timeline{display:flex;flex-direction:column;gap:0}.about__timeline-header{display:flex;align-items:center;gap:16px;margin-bottom:32px}.about__timeline-title{font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--text-primary)}.about__timeline-line{flex:1;height:1px;background:var(--border-subtle)}.about__job{display:grid;grid-template-columns:180px 1fr;gap:32px;padding:28px 0;border-top:1px solid var(--border-subtle);transition:background .3s var(--ease-out)}.about__job:last-child{border-bottom:1px solid var(--border-subtle)}.about__job:hover{background:#ffffff03}.about__job-period{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);letter-spacing:.05em;padding-top:2px}.about__job-company{font-family:var(--font-display);font-size:17px;font-weight:600;color:var(--text-primary);margin-bottom:2px}.about__job-role{font-size:14px;color:var(--accent);margin-bottom:10px;font-weight:500}.about__job-desc{font-size:14px;line-height:1.7;color:var(--text-secondary)}@media (max-width: 1024px){.about__body{grid-template-columns:1fr;gap:56px}.about__left{position:static}.about__portrait{max-width:320px}.about__stats{grid-template-columns:repeat(2,1fr)}.about__stat{border-right:none;border-bottom:1px solid var(--border-subtle);padding:16px}}@media (max-width: 768px){.about{padding:80px 0}.about__job{grid-template-columns:1fr;gap:12px}}.folder-float{--ff-w: 200px;--ff-h: 148px;--ff-r: 14px;--ff-tab: 14px;--ff-back: #3f3f46;--ff-front: #52525b;--ff-paper: #f5f5f5;--ff-item: #f5f5f5;--ff-item-ink: #18181b;--ff-label: #f5f5f5;--ff-spread: 180px;--ff-lift: 26px;--ff-angle: 34deg;--ff-rest: 16deg;--ff-open: .52s;--ff-close: 312ms;--ff-stagger: 45ms;--ff-n: 6;--ff-spring: cubic-bezier(.34, 1.57, .64, 1);--ff-ease-out: cubic-bezier(.23, 1, .32, 1);position:relative;display:inline-block;width:var(--ff-w);padding-top:var(--ff-tab);font-family:inherit;font-size:13px;font-weight:500;line-height:1}.folder-float__folder{position:relative;width:var(--ff-w);height:var(--ff-h)}.folder-float__back{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border-radius:var(--ff-r);background:var(--ff-back);transform:perspective(600px) rotateX(8deg);transform-origin:50% 100%}.folder-float__back:before{content:"";position:absolute;top:calc(-1 * var(--ff-tab));left:0;width:42%;height:calc(var(--ff-tab) + var(--ff-r));border-radius:var(--ff-r) var(--ff-r) 0 0;background:inherit}.folder-float__paper{position:absolute;top:10%;z-index:1;right:8%;left:8%;height:50%;border-radius:6px;background:var(--ff-paper);opacity:0;transform:translateY(10px);transition:transform var(--ff-close) var(--ff-ease-out),opacity var(--ff-close) ease}.folder-float__front{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;gap:5px;height:76%;padding:14px 16px;box-sizing:border-box;border-radius:var(--ff-r);background:linear-gradient(180deg,color-mix(in srgb,var(--ff-front) 92%,#fff),var(--ff-front) 60%);color:var(--ff-label);box-shadow:0 -10px 24px #00000047;transform:perspective(600px) rotateX(calc(-1 * var(--ff-rest)));transform-origin:50% 100%;transition:transform var(--ff-open) var(--ff-ease-out)}.folder-float__label{font-size:13px;font-weight:500}.folder-float__sub{font-size:11px;opacity:.55}.folder-float__trigger{position:absolute;right:0;bottom:0;left:0;z-index:3;height:76%;margin:0;padding:0;border:0;border-radius:var(--ff-r);background:transparent;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent}.folder-float[data-open] .folder-float__front{transform:perspective(600px) rotateX(calc(-1 * var(--ff-angle)))}.folder-float[data-open] .folder-float__paper{opacity:1;transform:translateY(0);transition:transform var(--ff-open) var(--ff-ease-out),opacity .2s ease}.folder-float__items{position:absolute;top:var(--ff-tab);left:50%;z-index:1;width:0;height:0}.folder-float[data-open] .folder-float__items:before{content:"";position:absolute;top:calc(-1 * (var(--ff-lift) + 120px));left:calc(-1 * (var(--ff-spread) + 100px));width:calc(2 * var(--ff-spread) + 200px);height:calc(var(--ff-lift) + 120px)}.folder-float__item{position:absolute;top:0;left:50%;margin:0;padding:0 14px;height:34px;border:0;border-radius:17px;background:var(--ff-item);color:var(--ff-item-ink);font:inherit;white-space:nowrap;box-shadow:0 4px 12px #00000024;cursor:pointer;outline:none;opacity:0;transform:translate(-50%,44px) scale(.6);transform-origin:50% 50%;pointer-events:none;-webkit-tap-highlight-color:transparent;transition:transform var(--ff-close) var(--ff-ease-out) calc((var(--ff-n) - 1 - var(--i)) * var(--ff-stagger) * .5),opacity .16s ease calc((var(--ff-n) - 1 - var(--i)) * var(--ff-stagger) * .5 + var(--ff-close) * .45),scale .16s var(--ff-ease-out)}.folder-float[data-open] .folder-float__item{opacity:1;transform:translate(calc(-50% + var(--x)),var(--y)) rotate(var(--r)) scale(1);pointer-events:auto;transition:transform var(--ff-open) var(--ff-spring) calc(var(--i) * var(--ff-stagger)),opacity .16s ease calc(var(--i) * var(--ff-stagger)),scale .16s var(--ff-ease-out)}.folder-float[data-live] .folder-float__item{cursor:grab;transition:scale .16s var(--ff-ease-out)}.folder-float__item[data-drag]{cursor:grabbing}@media (hover: hover) and (pointer: fine){.folder-float[data-open] .folder-float__item:hover{scale:1.05}}.folder-float[data-open] .folder-float__item:active{scale:.97}.folder-float__item[data-pop]{animation:folder-float-pop .32s var(--ff-ease-out)}.folder-float__drift{display:block;animation:folder-float-drift 3.2s ease-in-out infinite;animation-delay:calc(var(--i) * -.7s);animation-play-state:paused}.folder-float[data-open] .folder-float__drift{animation-play-state:running}.folder-float[data-physics] .folder-float__drift,.folder-float[data-live] .folder-float__drift{animation:none}@keyframes folder-float-drift{0%,to{translate:0 0}50%{translate:0 -3px}}@keyframes folder-float-pop{30%{scale:1.1}to{scale:1}}@media (prefers-reduced-motion: reduce){.folder-float__front,.folder-float__paper{transition:opacity .2s ease}.folder-float[data-open] .folder-float__front{transform:perspective(600px) rotateX(calc(-1 * var(--ff-rest)))}.folder-float__paper{transform:none!important}.folder-float__item{transition:opacity .2s ease}.folder-float[data-open] .folder-float__item{transition:opacity .2s ease calc(var(--i) * var(--ff-stagger))}.folder-float__drift{animation:none}}.projects{position:relative;background:var(--bg-primary);color:var(--text-primary);padding:140px 0 120px;overflow:hidden}.projects__header{margin-bottom:80px}.projects__section-label{display:flex;align-items:center;gap:12px;margin-bottom:24px}.projects__section-num{font-family:var(--font-mono);font-size:13px;color:var(--accent);letter-spacing:.1em}.projects__section-text{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);letter-spacing:.2em}.projects__chapter-tag{font-family:var(--font-mono);font-size:12px;letter-spacing:.3em;color:var(--text-tertiary);margin-bottom:32px;text-transform:uppercase}.projects__chapter-title{font-family:var(--font-display);font-size:clamp(36px,5vw,64px);font-weight:600;line-height:1.1;letter-spacing:-.02em;color:var(--text-primary);margin-bottom:24px}.projects__chapter-desc{font-family:var(--font-mono);font-size:12px;letter-spacing:.15em;color:var(--text-tertiary);text-transform:uppercase}.projects__body{display:grid;grid-template-columns:400px 1fr;gap:80px;align-items:center}.projects__left{position:relative;display:flex;align-items:center;justify-content:center}.projects__right{position:relative;display:flex;flex-direction:column;align-items:flex-end}.projects__folder-wrap{position:relative;width:100%;max-width:480px;aspect-ratio:4 / 3;border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:visible;cursor:pointer;transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out)}.projects__folder-wrap:hover{transform:translateY(-4px)}.projects__folder-float{position:relative;z-index:2}.projects__chapter-placeholder{position:relative;width:100%;max-width:380px;aspect-ratio:4 / 3;margin-top:56px;border:1px solid var(--border-subtle);border-radius:4px;display:flex;align-items:center;justify-content:center;overflow:hidden}.projects__chapter-placeholder:before{content:"WORK ARCHIVE";font-family:var(--font-mono);font-size:11px;letter-spacing:.3em;color:var(--text-muted);position:relative;z-index:2}.projects__chapter-placeholder:after{content:"";position:absolute;top:10%;left:-20%;width:140%;height:1px;background:var(--border-subtle);transform:rotate(28deg)}.projects__chapter-placeholder-line{display:none}.projects__related-tag{display:block;width:100%;font-family:var(--font-mono);font-size:12px;letter-spacing:.3em;color:var(--text-tertiary);margin-bottom:32px;text-transform:uppercase}.projects__related-list{list-style:none;margin:0;padding:0;width:100%}.projects__related-item{border-top:1px solid var(--border-subtle);padding:28px 0;cursor:pointer;display:flex;align-items:baseline;justify-content:space-between;gap:24px;transition:transform .4s var(--ease-out)}.projects__related-link{display:flex;align-items:baseline;justify-content:space-between;gap:24px;width:100%;color:inherit;text-decoration:none}.projects__related-item:last-child{border-bottom:1px solid var(--border-subtle)}.projects__related-item.is-active,.projects__related-item:hover{transform:translate(16px)}.projects__related-name{font-family:var(--font-display);font-size:clamp(36px,4.5vw,60px);font-weight:500;line-height:1.05;letter-spacing:-.02em;color:var(--text-primary);transition:color .3s var(--ease-out)}.projects__related-item:hover .projects__related-name,.projects__related-item.is-active .projects__related-name{color:var(--accent)}.projects__related-sub{font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;color:var(--text-tertiary);text-transform:uppercase;white-space:nowrap}.projects__related-item.is-active .projects__related-sub,.projects__related-item:hover .projects__related-sub{color:var(--text-secondary)}.projects__detail{margin-top:56px;padding-top:40px;border-top:1px solid var(--border-default);animation:fadeIn .4s var(--ease-out) forwards}.projects__detail-header{margin-bottom:32px}.projects__detail-tag{display:inline-block;font-family:var(--font-mono);font-size:10px;letter-spacing:.25em;color:var(--bg-primary);padding:4px 12px;border-radius:100px;background:var(--accent);margin-bottom:16px;text-transform:uppercase;font-weight:600}.projects__detail-title{font-family:var(--font-display);font-size:clamp(28px,3.5vw,36px);font-weight:600;color:var(--text-primary);letter-spacing:-.02em;margin-bottom:8px;line-height:1.1}.projects__detail-sub{font-family:var(--font-mono);font-size:12px;letter-spacing:.15em;color:var(--text-tertiary);text-transform:uppercase}.projects__detail-list{display:flex;flex-direction:column;gap:20px}.projects__detail-row{padding:24px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:8px;transition:all .4s var(--ease-out)}.projects__detail-row:hover{border-color:var(--border-default);transform:translate(4px);background:var(--bg-card-hover)}.projects__detail-year{display:inline-block;font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;color:var(--text-tertiary);margin-bottom:10px}.projects__detail-name{font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--text-primary);margin-bottom:10px;letter-spacing:-.01em}.projects__detail-desc{font-size:13px;line-height:1.7;color:var(--text-secondary);margin-bottom:14px}.projects__detail-tags{display:flex;flex-wrap:wrap;gap:6px}.projects__detail-chip{font-size:11px;color:var(--text-secondary);padding:4px 10px;border:1px solid var(--border-subtle);border-radius:100px;background:#ffffff05;letter-spacing:.02em}@media (max-width: 1024px){.projects__body{grid-template-columns:1fr;gap:56px}.projects__folder-wrap{max-width:400px}}@media (max-width: 768px){.projects{padding:80px 0}.projects__related-item{flex-direction:column;align-items:flex-start;gap:6px}.projects__detail-row{padding:18px}}.strengths{position:relative;background:var(--bg-primary);padding:140px 0 120px;overflow:hidden}.strengths__header{margin-bottom:72px;display:flex;flex-direction:column;gap:20px}.strengths__section-label{display:flex;align-items:center;gap:12px}.strengths__section-num{font-family:var(--font-mono);font-size:13px;color:var(--accent);letter-spacing:.1em}.strengths__section-text{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);letter-spacing:.2em}.strengths__title{font-family:var(--font-display);font-size:clamp(36px,5vw,64px);font-weight:600;line-height:1.1;letter-spacing:-.02em;color:var(--text-primary)}.strengths__subtitle{font-size:16px;color:var(--text-secondary);max-width:500px}.strengths__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border-subtle);border:1px solid var(--border-subtle);border-radius:8px;overflow:hidden}.strength-card{position:relative;background:var(--bg-card);padding:40px 36px;transition:all .4s var(--ease-out);cursor:default;display:flex;flex-direction:column;gap:16px;min-height:280px}.strength-card:hover{background:var(--bg-card-hover)}.strength-card__index{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);letter-spacing:.1em}.strength-card__tag{position:absolute;top:40px;right:36px;font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;color:var(--text-tertiary);padding:4px 10px;border:1px solid var(--border-subtle);border-radius:100px}.strength-card__title{font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--text-primary);line-height:1.3;letter-spacing:-.01em;margin-top:4px}.strength-card__desc{font-size:14px;line-height:1.7;color:var(--text-secondary);flex:1}.strength-card__line{width:32px;height:2px;background:var(--accent);border-radius:1px;transition:width .4s var(--ease-out)}.strength-card:hover .strength-card__line{width:64px}@media (max-width: 1024px){.strengths__grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.strengths{padding:80px 0}.strengths__grid{grid-template-columns:1fr}.strength-card{padding:32px 24px;min-height:auto}.strength-card__tag{top:32px;right:24px}}.lanyard{position:relative;width:100%;height:100%;overflow:hidden}.lanyard-canvas{display:block;width:100%;height:100%}.contact{position:relative;min-height:100vh;display:flex;align-items:center;background:var(--bg-secondary);overflow:hidden;padding:80px 0}.contact__bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.contact__grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px);background-size:60px 60px;mask-image:radial-gradient(ellipse 70% 70% at 50% 50%,#000 0%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse 70% 70% at 50% 50%,#000 0%,transparent 80%)}.contact__glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:800px;height:800px;background:radial-gradient(circle,var(--accent-dim) 0%,transparent 60%);opacity:.5;filter:blur(40px)}.contact__lanyard{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:auto}.contact__inner{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;text-align:center}.contact__label{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;color:var(--text-secondary);margin-bottom:32px}.contact__label-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent-glow);animation:pulse 2s var(--ease-in-out) infinite}.contact__title{font-family:var(--font-display);font-size:clamp(40px,6vw,80px);font-weight:700;line-height:1.05;letter-spacing:-.03em;color:var(--text-primary);margin-bottom:28px}.contact__title-accent{color:var(--accent);font-weight:600}.contact__subtitle{font-size:17px;line-height:1.7;color:var(--text-secondary);max-width:480px;margin-bottom:56px}.contact__methods{display:grid;grid-template-columns:repeat(4,1fr);gap:0;width:100%;max-width:900px;margin-bottom:56px;border:1px solid var(--border-subtle);border-radius:8px;overflow:hidden}.contact__method{display:flex;flex-direction:column;gap:8px;padding:24px 20px;border-right:1px solid var(--border-subtle);transition:all .3s var(--ease-out);cursor:pointer}.contact__method:last-child{border-right:none}.contact__method:hover{background:#ffffff05}.contact__method-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;color:var(--text-tertiary)}.contact__method-value{font-size:15px;color:var(--text-secondary);font-weight:400;transition:color .3s var(--ease-out)}.contact__method:hover .contact__method-value{color:var(--text-primary)}.contact__cta{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-display);font-size:17px;font-weight:600;color:var(--bg-primary);background:var(--accent);padding:16px 40px;border-radius:100px;transition:all .3s var(--ease-out);cursor:pointer;letter-spacing:.02em;margin-bottom:80px}.contact__cta:hover{box-shadow:0 0 32px var(--accent-glow);transform:translateY(-2px)}.contact__cta-arrow{font-size:20px;transition:transform .3s var(--ease-out)}.contact__cta:hover .contact__cta-arrow{transform:translate(4px)}.contact__footer{display:flex;justify-content:space-between;width:100%;max-width:var(--max-width);padding-top:40px;border-top:1px solid var(--border-subtle)}.contact__footer-left,.contact__footer-right{display:flex;flex-direction:column;gap:4px}.contact__footer-right{text-align:right}.contact__footer-name{font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--text-secondary)}.contact__footer-role{font-size:12px;color:var(--text-tertiary)}.contact__footer-copy{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;color:var(--text-tertiary)}.contact__footer-loc{font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;color:var(--text-tertiary)}@media (max-width: 768px){.contact{padding:60px 0}.contact__methods{grid-template-columns:repeat(2,1fr)}.contact__method{border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle)}.contact__method:nth-child(2){border-right:none}.contact__method:nth-child(3),.contact__method:nth-child(4){border-bottom:none}.contact__method:nth-child(3){border-right:1px solid var(--border-subtle)}.contact__method:nth-child(4){border-right:none}.contact__footer{flex-direction:column;gap:16px}.contact__footer-right{text-align:left}}.project-detail{position:relative;background:var(--bg-primary);color:var(--text-primary);min-height:100vh;padding-top:120px}.project-detail__sidebar{position:fixed;top:100px;left:64px;z-index:300;display:flex;flex-direction:column;gap:28px;max-width:220px}.project-detail__back{display:inline-flex;align-items:center;gap:8px;background:none;border:none;color:var(--text-tertiary);font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;padding:8px 0;transition:color .3s var(--ease-out)}.project-detail__back:hover{color:var(--accent)}.project-detail__back-arrow{font-size:16px;transition:transform .3s var(--ease-out)}.project-detail__back:hover .project-detail__back-arrow{transform:translate(-4px)}.project-detail__cats{display:flex;flex-direction:column;gap:12px}.project-detail__cats-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.25em;color:var(--text-tertiary);text-transform:uppercase;opacity:.6}.project-detail__cats-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.project-detail__cats-item{display:flex;align-items:baseline;gap:10px;width:100%;text-align:left;background:none;border:none;border-left:1px solid var(--border-subtle);padding:8px 0 8px 14px;cursor:pointer;transition:border-color .3s var(--ease-out),opacity .3s var(--ease-out);opacity:.5}.project-detail__cats-item:hover,.project-detail__cats-item.is-active{opacity:1;border-left-color:var(--accent)}.project-detail__cats-num{font-family:var(--font-mono);font-size:10px;color:var(--accent);letter-spacing:.1em;flex-shrink:0}.project-detail__cats-name{font-size:13px;color:var(--text-secondary);line-height:1.3;transition:color .3s var(--ease-out)}.project-detail__cats-item:hover .project-detail__cats-name,.project-detail__cats-item.is-active .project-detail__cats-name{color:var(--text-primary)}.project-detail__hero{padding:80px 0 120px}.project-detail__inner{max-width:var(--max-width);margin:0 auto;padding:0 48px;display:grid;grid-template-columns:1fr 1.1fr;gap:80px;align-items:start}.project-detail__intro{position:sticky;top:160px;display:flex;flex-direction:column}.project-detail__eyebrow{display:flex;align-items:center;gap:12px;margin-bottom:24px}.project-detail__eyebrow-num{font-family:var(--font-mono);font-size:13px;color:var(--accent);letter-spacing:.1em}.project-detail__eyebrow-text{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);letter-spacing:.2em}.project-detail__title{font-family:var(--font-display);font-size:clamp(48px,6vw,96px);font-weight:600;line-height:1;letter-spacing:-.02em;color:var(--text-primary);margin-bottom:24px}.project-detail__sub{font-family:var(--font-mono);font-size:12px;letter-spacing:.15em;color:var(--text-tertiary);text-transform:uppercase}.project-detail__showcase{position:relative}.project-detail__list{list-style:none;margin:0;padding:0}.project-detail__list-item{border-top:1px solid var(--border-subtle);cursor:pointer;transition:border-color .3s var(--ease-out),opacity .3s var(--ease-out)}.project-detail__list-item:last-child{border-bottom:1px solid var(--border-subtle)}.project-detail__list-item.is-dim{opacity:.4}.project-detail__list-cover{display:grid;grid-template-rows:0fr;transition:grid-template-rows .55s var(--ease-out)}.project-detail__list-item.is-hovered .project-detail__list-cover{grid-template-rows:1fr}.project-detail__list-cover-inner{overflow:hidden;min-height:0}.project-detail__list-cover-inner img{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;object-position:top;border-radius:12px;border:1px solid var(--border-subtle)}.project-detail__list-head{display:grid;grid-template-columns:56px 1fr auto;align-items:center;gap:24px;padding:24px 0}.project-detail__list-num{font-family:var(--font-mono);font-size:12px;color:var(--text-tertiary);letter-spacing:.1em;transition:color .3s var(--ease-out)}.project-detail__list-name{font-family:var(--font-display);font-size:clamp(22px,2.6vw,32px);font-weight:500;letter-spacing:-.01em;color:var(--text-primary);line-height:1.1;transition:color .3s var(--ease-out)}.project-detail__list-tags{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.project-detail__list-tag{font-family:var(--font-mono);font-size:10px;letter-spacing:.15em;color:var(--text-tertiary);padding:4px 10px;border:1px solid var(--border-subtle);border-radius:100px;background:#ffffff05;text-transform:uppercase;transition:all .3s var(--ease-out)}.project-detail__list-item.is-hovered .project-detail__list-num,.project-detail__list-item.is-hovered .project-detail__list-name{color:var(--accent)}.project-detail__list-item.is-hovered .project-detail__list-tag{border-color:var(--border-default);color:var(--text-secondary)}.project-detail__cover-meta{position:absolute;left:20px;bottom:20px;display:inline-flex;align-items:center;gap:12px;padding:6px 14px;background:#0a0a0c99;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-default);border-radius:100px;font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--text-secondary);z-index:1}.project-detail__list-cover-inner{position:relative}.project-detail__cover-index{color:var(--accent);font-weight:600}.project-detail--empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;min-height:100vh}@media (max-width: 1024px){.project-detail__inner{gap:56px}.project-detail__intro{position:static}}@media (max-width: 768px){.project-detail{padding-top:80px}.project-detail__sidebar{display:none}.project-detail__hero{padding:40px 0 80px}.project-detail__inner{grid-template-columns:1fr;gap:40px;padding:0 24px}.project-detail__list-head{grid-template-columns:32px 1fr;grid-template-rows:auto auto;gap:8px 16px}.project-detail__list-tags{grid-column:2 / -1;justify-content:flex-start}}.work-detail{position:relative;background:var(--bg-primary);color:var(--text-primary);min-height:100vh;padding-top:120px}.work-detail__back{position:fixed;top:100px;left:64px;z-index:200;display:inline-flex;align-items:center;gap:8px;background:none;border:none;color:var(--text-tertiary);font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;padding:8px 0;transition:color .3s var(--ease-out)}.work-detail__back:hover{color:var(--accent)}.work-detail__back-arrow{font-size:16px;transition:transform .3s var(--ease-out)}.work-detail__back:hover .work-detail__back-arrow{transform:translate(-4px)}.work-detail__hero{padding:80px 0 120px}.work-detail__inner{max-width:1440px;margin:0 auto;padding:0 48px}.work-detail__intro{margin-bottom:80px}.work-detail__eyebrow{display:flex;align-items:center;gap:12px;margin-bottom:24px}.work-detail__eyebrow-num{font-family:var(--font-mono);font-size:13px;color:var(--accent);letter-spacing:.1em}.work-detail__eyebrow-text{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);letter-spacing:.2em}.work-detail__title{font-family:var(--font-display);font-size:clamp(36px,5vw,64px);font-weight:600;line-height:1.1;letter-spacing:-.02em;color:var(--text-primary);margin-bottom:16px}.work-detail__year{font-family:var(--font-mono);font-size:12px;letter-spacing:.15em;color:var(--text-tertiary);text-transform:uppercase;margin-bottom:24px}.work-detail__desc{font-size:14px;line-height:1.7;color:var(--text-secondary);max-width:720px;margin-bottom:24px}.work-detail__tags{display:flex;gap:8px;flex-wrap:wrap}.work-detail__tag{font-family:var(--font-mono);font-size:10px;letter-spacing:.15em;color:var(--text-tertiary);padding:4px 10px;border:1px solid var(--border-subtle);border-radius:100px;background:#ffffff05;text-transform:uppercase}.work-detail__pages{display:flex;flex-direction:column;gap:0}.work-detail__page{margin:0;position:relative}.work-detail__page img{display:block;width:100%}.work-detail__no-pages{padding:80px 0;text-align:center;color:var(--text-tertiary);font-family:var(--font-mono);font-size:12px;letter-spacing:.15em;text-transform:uppercase}.work-detail--empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;min-height:100vh}@media (max-width: 768px){.work-detail{padding-top:80px}.work-detail__back{top:88px;left:24px}.work-detail__hero{padding:40px 0 80px}.work-detail__inner{padding:0 24px}.work-detail__intro{margin-bottom:40px}.work-detail__pages{gap:0}}.app{width:100%;min-height:100vh;background:var(--bg-primary);position:relative}main{position:relative;z-index:1}body{background:var(--bg-primary)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #0a0a0c;--bg-secondary: #111114;--bg-tertiary: #16161b;--bg-card: #1a1a20;--bg-card-hover: #1f1f26;--border-subtle: rgba(255, 255, 255, .06);--border-default: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .18);--text-primary: #f0f0f2;--text-secondary: #a0a0a8;--text-tertiary: #62626c;--text-muted: #42424a;--accent: #c8ff3a;--accent-dim: rgba(200, 255, 58, .12);--accent-glow: rgba(200, 255, 58, .3);--font-display: "Space Grotesk", "Noto Sans SC", sans-serif;--font-body: "Noto Sans SC", "Space Grotesk", sans-serif;--font-mono: "SF Mono", "Fira Code", monospace;--max-width: 1700px;--nav-height: 72px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1)}html{scroll-behavior:smooth;background:var(--bg-primary)}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}a{color:inherit;text-decoration:none}.container{max-width:var(--max-width);margin:0 auto;padding:0 48px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}::selection{background:var(--accent);color:var(--bg-primary)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes scrollHint{0%{transform:translateY(0);opacity:1}to{transform:translateY(12px);opacity:0}}.fade-in-up{animation:fadeInUp .8s var(--ease-out) forwards}.fade-in{animation:fadeIn 1s var(--ease-out) forwards}.text-gradient{background:linear-gradient(135deg,var(--text-primary) 0%,var(--text-secondary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}@media (max-width: 768px){.container{padding:0 24px}}
