.navbar{position:fixed;top:0;left:0;right:0;z-index:500;display:flex;align-items:center;justify-content:space-between;padding:22px var(--px);transition:padding .4s ease,background .4s ease,border-color .4s ease;border-bottom:1px solid transparent}.navbar.scrolled{padding:14px var(--px);background:var(--overlay);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-color:var(--border)}.nav-logo{display:flex;align-items:center}.nav-logo-img{height:26px;width:auto;transition:opacity .2s ease}[data-theme=dark] .nav-logo-img{filter:invert(1) hue-rotate(180deg) brightness(.88) sepia(.25)}.nav-logo:hover .nav-logo-img{opacity:.65}.nav-links{display:flex;list-style:none;gap:40px;margin:0;padding:0}.nav-links a{font-family:var(--font-body);font-size:.92rem;color:var(--text-muted);letter-spacing:.02em;position:relative;transition:color var(--t-fast)}.nav-links a:after{content:"";position:absolute;bottom:-3px;left:0;width:0;height:1.5px;background:var(--primary);transition:width .28s ease}.nav-links a:hover{color:var(--primary)}.nav-links a:hover:after{width:100%}.nav-links a.nav-active{color:var(--primary)}.nav-links a.nav-active:after{width:100%}.nav-right{display:flex;align-items:center;gap:10px}.theme-toggle{background:none;border:none;cursor:none;padding:7px;color:var(--text-muted);display:flex;align-items:center;justify-content:center;border-radius:50%;transition:color var(--t-fast),background var(--t-fast)}.theme-toggle:hover{color:var(--primary);background:var(--tag-bg)}.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:none;padding:5px}.hamburger span{display:block;width:22px;height:1.5px;border-radius:2px;transition:transform .3s ease,opacity .3s ease,background .3s ease;transform-origin:center}.hamburger span{background:var(--text)}.navbar.menu-is-open .hamburger span{background:#fff}.hamburger.open span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0;transform:scaleX(0)}.hamburger.open span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}.mobile-nav-overlay{display:none}@media (max-width: 860px){.hamburger{display:flex}.nav-links{display:none}.mobile-nav-overlay{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;background:#120d08;flex-direction:column;align-items:center;justify-content:center;z-index:99999;opacity:0;pointer-events:none;transition:opacity .35s ease}.mobile-nav-overlay.open{opacity:1;pointer-events:all}.mobile-nav-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:center;gap:36px}.mobile-nav-links a{font-family:var(--font-body);font-size:2rem;letter-spacing:.04em;color:#ffffff8c;transition:color var(--t-fast)}.mobile-nav-links a:hover,.mobile-nav-links a.nav-active{color:var(--primary-light)}.menu-close-btn{position:absolute;top:24px;right:24px;background:none;border:none;cursor:pointer;color:#fff9;font-size:2rem;line-height:1;padding:4px 8px;transition:color .2s ease}.menu-close-btn:hover{color:#fff}}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;background-color:var(--bg);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:50px 50px;animation:bg-scrolling 3s linear infinite;--grid-line: rgba(156, 119, 92, .1)}[data-theme=dark] .hero{--grid-line: rgba(196, 168, 130, .07)}.hero-layout{max-width:var(--max-w);width:100%;margin:0 auto;padding:120px var(--px) 80px;display:flex;align-items:center;gap:64px;position:relative;z-index:1}.hero-greeting{font-family:var(--font-body);letter-spacing:.01em;color:var(--text-muted)}.hero--greet .hero-greeting{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:clamp(1rem,2.2vw,1.3rem);opacity:1;z-index:20;margin:0;white-space:nowrap;transition:none;visibility:hidden}.hero-greeting,.hero--expand .hero-greeting{visibility:hidden}.hero--content .hero-greeting,.hero--face .hero-greeting,.hero-greeting-inline{display:none}.hero-greeting-pinned{position:fixed;font-family:var(--font-body);letter-spacing:.01em;white-space:nowrap;z-index:20;pointer-events:none;transition:top 1s cubic-bezier(.16,1,.3,1),left 1s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1),font-size .85s cubic-bezier(.16,1,.3,1),color .6s cubic-bezier(.16,1,.3,1),letter-spacing .85s cubic-bezier(.16,1,.3,1),opacity .5s ease}.hero--greet .hero-greeting-pinned{opacity:1;top:50%;left:50%;transform:translate(-50%,-50%);font-size:clamp(1rem,2.2vw,1.3rem);font-family:var(--font-body);color:var(--text-muted);letter-spacing:.01em;pointer-events:none;transition:none}.hero--expand .hero-greeting-pinned{opacity:1;top:calc(50% - 80px);left:50%;transform:translate(-50%,-50%);font-size:clamp(3rem,8vw,7rem);font-family:var(--font-display);color:var(--text);letter-spacing:-.02em;pointer-events:none}.hero--shrink .hero-greeting-pinned{opacity:1;top:calc(50svh - 162px);left:calc(max((100vw - var(--max-w, 1200px)) / 2,0px) + var(--px, 24px) + 294px);transform:none;font-size:1.05rem;font-family:var(--font-body);color:var(--text-muted);letter-spacing:.01em}.hero--content .hero-greeting-pinned,.hero--face .hero-greeting-pinned{position:absolute;opacity:1;top:calc(50% - 162px);left:calc(max((100% - var(--max-w, 1200px)) / 2,0px) + var(--px, 24px) + 294px);transform:none;font-size:1.05rem;font-family:var(--font-body);color:var(--text-muted);letter-spacing:.01em;transition:none}.hero-headline{font-family:var(--font-display);font-size:clamp(32px,4.2vw,54px);line-height:1.18;color:var(--text);letter-spacing:-.01em;margin-bottom:40px;margin-top:28px;opacity:0;transform:translateY(36px);transition:opacity .65s var(--ease),transform .65s var(--ease)}.hero--content .hero-headline,.hero--face .hero-headline{opacity:1;transform:translateY(0)}.highlight{color:var(--primary);display:inline}.hero-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;opacity:0;transform:translateY(20px);transition:opacity .55s var(--ease) .18s,transform .55s var(--ease) .18s}.hero--content .hero-actions,.hero--face .hero-actions{opacity:1;transform:translateY(0)}.hero-face{flex-shrink:0;width:230px;opacity:0;transform:translate(-48px);transition:opacity .65s var(--ease),transform .65s var(--ease)}.hero--face .hero-face{opacity:1;transform:translate(0)}.face-wrap{position:relative;width:230px;height:266px;animation:float 5s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.face-base{width:100%;height:100%;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;transition:filter .5s ease}[data-theme=dark] .face-base{filter:invert(1) hue-rotate(180deg) brightness(.88)}.eyes-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.eye-socket{position:absolute;width:38px;height:33px;border-radius:50%;background:#fff!important;overflow:hidden}.eye-socket:nth-child(1){left:calc(30% - 19px);top:calc(32% - 16.5px)}.eye-socket:nth-child(2){left:calc(63% - 19px);top:calc(30% - 16.5px)}.pupil{position:absolute;top:50%;left:50%;width:17px;height:17px;border-radius:50%;background:#1a1208!important;transform:translate(-50%,-50%);will-change:transform;transition:transform .07s ease-out}.pupil:after{content:"";position:absolute;top:2px;left:3px;width:5px;height:5px;background:#ffffffbf!important;border-radius:50%}.btn-view-projects{display:inline-flex;align-items:center;padding:13px 30px;background:var(--primary);color:#fff;font-family:var(--font-body);font-size:.93rem;letter-spacing:.02em;border-radius:var(--radius-sm);border:2px solid var(--primary);position:relative;overflow:hidden;white-space:nowrap;transition:box-shadow var(--t-fast),transform var(--t-fast)}.btn-view-projects:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--primary-dark);transform:scaleX(0);transform-origin:right;transition:transform .38s var(--ease)}.btn-view-projects:hover:before{transform:scaleX(1);transform-origin:left}.btn-view-projects span{position:relative;z-index:1}.btn-view-projects:hover{box-shadow:0 6px 22px var(--shadow-md);transform:translateY(-1px)}.social-circles{display:flex;align-items:center;gap:10px}.social-circle{width:46px;height:46px;border-radius:50%;overflow:hidden;flex-shrink:0;transition:transform var(--t-fast),box-shadow var(--t-fast)}.social-circle img{width:100%;height:100%}.social-circle:hover{transform:translateY(-3px) scale(1.07);box-shadow:0 8px 20px var(--shadow-md)}[data-theme=dark] .social-circle img{filter:brightness(.82) contrast(1.1)}.hero-divider{position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--border);z-index:1}@media (max-width: 860px){.hero-layout{flex-direction:column;align-items:center;text-align:center;gap:0;padding-top:110px;padding-bottom:72px}.hero-face{order:-1;margin-bottom:20px}.hero-actions{justify-content:center}.hero-headline{font-size:clamp(28px,6vw,44px);margin-top:10px}.hero--greet .hero-greeting-pinned{top:50%;left:50%;transform:translate(-50%,-50%)}.hero--expand .hero-greeting-pinned{top:calc(50% - 60px);left:50%;transform:translate(-50%,-50%);font-size:clamp(2.2rem,7vw,5rem)}.hero--shrink .hero-greeting-pinned{top:calc(50svh - 120px);left:50%;transform:translate(-50%);font-size:.95rem}.hero--content .hero-greeting-pinned,.hero--face .hero-greeting-pinned{display:none}.hero-greeting-inline{display:block;font-family:var(--font-body);font-size:.95rem;letter-spacing:.01em;color:var(--text-muted);text-align:center;opacity:0;transition:opacity .5s var(--ease)}.hero--content .hero-greeting-inline,.hero--face .hero-greeting-inline{opacity:1}.hero--greet .hero-greeting{left:50%}.hero--expand .hero-greeting{left:50%;font-size:clamp(2.2rem,7vw,5rem)}}@media (max-width: 480px){.hero-face{width:180px}.face-wrap{width:180px;height:208px}.eye-socket{width:30px;height:26px}.eye-socket:nth-child(1){left:calc(39% - 15px);top:calc(38% - 13px)}.eye-socket:nth-child(2){left:calc(59% - 15px);top:calc(38% - 13px)}.pupil{width:13px;height:13px}.hero-headline{font-size:28px;margin-bottom:32px}.hero--expand .hero-greeting{font-size:clamp(1.8rem,8vw,3rem)}.btn-view-projects{padding:12px 24px;font-size:.88rem}.social-circle{width:40px;height:40px}}.about{padding:120px 0 0;position:relative;background-color:var(--bg);background-image:linear-gradient(var(--about-grid) 1px,transparent 1px),linear-gradient(90deg,var(--about-grid) 1px,transparent 1px);background-size:50px 50px;animation:bg-scrolling 3s linear infinite;--about-grid: rgba(156, 119, 92, .07)}[data-theme=dark] .about{--about-grid: rgba(196, 168, 130, .05)}@keyframes bg-scrolling{0%{background-position:50px 50px}to{background-position:0 0}}.about-inner{max-width:var(--max-w);margin:0 auto 100px;padding:0 var(--px);display:grid;grid-template-columns:1fr 1.65fr;gap:72px;align-items:start}.about-anchor{position:sticky;top:96px;align-self:start;display:flex;flex-direction:column;gap:28px}.about-photo{width:100%;aspect-ratio:4 / 3;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);background:var(--bg-card)}.about-photo-img{width:100%;height:100%;object-fit:cover;display:block}.about-info{display:flex;flex-direction:column;gap:16px;padding-top:4px}.info-item{display:flex;flex-direction:column;gap:4px}.info-label{font-size:.67rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-light)}.info-value{font-size:.95rem;color:var(--text)}.info-available{color:var(--primary)!important}.btn-resume{display:inline-flex;align-items:center;gap:10px;padding:13px 28px;background:transparent;color:var(--primary);font-family:var(--font-body);font-size:.92rem;letter-spacing:.03em;border:1.5px solid var(--primary);border-radius:var(--radius-sm);position:relative;overflow:hidden;transition:color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast);width:fit-content}.btn-resume:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--primary);transform:scaleX(0);transform-origin:right;transition:transform .38s var(--ease);z-index:0}.btn-resume:hover:before{transform:scaleX(1);transform-origin:left}.btn-resume:hover{color:#fff;box-shadow:0 6px 20px var(--shadow-md);transform:translateY(-1px)}.btn-resume svg{width:17px;height:17px;position:relative;z-index:1;flex-shrink:0}.btn-resume span{position:relative;z-index:1}.about-body{display:flex;flex-direction:column;gap:0;padding-top:56px}.about-line{font-family:var(--font-display);font-size:clamp(1.55rem,2.8vw,2.4rem);line-height:1.4;color:var(--text);margin-bottom:48px;text-align:left;opacity:0;transform:translateY(36px);transition:opacity .7s var(--ease),transform .7s var(--ease)}.about-line:last-child{margin-bottom:0}.stagger-line--visible{opacity:1;transform:translateY(0)}.about-line em{color:var(--primary);font-style:normal}.marquee-wrapper{overflow:hidden;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:17px 0;white-space:nowrap}.marquee-track{display:inline-flex;animation:marquee 22s linear infinite}.marquee-item{display:inline-flex;align-items:center;gap:16px;padding:0 28px;font-family:var(--font-display);font-size:.78rem;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}.marquee-dot{color:var(--primary);font-size:.5rem}@media (max-width: 900px){.about-inner{grid-template-columns:1fr;gap:48px;margin-bottom:64px}.about-anchor{position:static;align-items:center;text-align:center}.about-anchor .section-label{justify-content:center}.about-photo{max-width:320px;width:100%}.about-info{align-items:center}.btn-resume{align-self:center}.about-body{padding-top:0}.about-line{font-size:clamp(1.3rem,4vw,1.8rem)}}@media (max-width: 480px){.about{padding:80px 0 0}.about-line{font-size:1.25rem;margin-bottom:32px}.btn-resume{width:100%;justify-content:center}.about-info{gap:12px}}@keyframes bg-scrolling-reverse{to{background-position:50px 50px}}.skills{padding:120px 0 80px;position:relative;overflow:hidden;background-color:var(--bg);background-image:linear-gradient(var(--skills-grid) 1px,transparent 1px),linear-gradient(90deg,var(--skills-grid) 1px,transparent 1px);background-size:50px 50px;animation:bg-scrolling-reverse 3s linear infinite;--skills-grid: rgba(156, 119, 92, .07)}[data-theme=dark] .skills{--skills-grid: rgba(196, 168, 130, .05)}.skills-inner{max-width:var(--max-w);margin:0 auto;padding:0 var(--px);position:relative;z-index:1}.skills-header{margin-bottom:32px}.skills-heading{font-size:clamp(36px,4.2vw,56px);line-height:1.05;letter-spacing:-.02em;color:var(--text);margin-top:14px;margin-bottom:10px}.skills-heading .accent{color:var(--primary)}.skills-hint{font-size:.8rem;color:var(--text-light);letter-spacing:.08em;display:flex;align-items:center;gap:6px;margin-top:6px}.hint-icon{font-size:1rem;color:var(--primary);animation:spin-hint 3s ease-in-out infinite;display:inline-block}@keyframes spin-hint{0%,to{transform:rotate(0)}50%{transform:rotate(180deg)}}.table-scene{width:100%;height:480px;border-radius:var(--radius-lg);overflow:hidden;background:transparent;cursor:grab;position:relative;margin-bottom:36px}.table-scene:active{cursor:grabbing}.three-canvas{width:100%;height:100%}.three-canvas canvas{width:100%!important;height:100%!important;display:block}.skills-legend{display:flex;flex-wrap:wrap;gap:8px}.legend-pill{display:inline-flex;align-items:center;gap:7px;padding:6px 14px 6px 10px;background:var(--bg-card);border:1px solid var(--border);border-radius:100px;font-family:var(--font-body);font-size:.8rem;color:var(--text-muted);transition:border-color var(--t-fast),color var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast);cursor:default}.legend-pill:hover,.legend-pill--active{border-color:var(--primary);color:var(--primary);transform:translateY(-2px);box-shadow:0 4px 12px var(--shadow);background:color-mix(in srgb,var(--primary) 8%,var(--bg-card))}.legend-logo{width:18px;height:18px;object-fit:contain;border-radius:2px}[data-theme=dark] .legend-logo[alt=GitHub],[data-theme=dark] .legend-logo[alt=Express]{filter:invert(1)}.legend-icon{font-size:.75rem;color:var(--primary)}@media (max-width: 860px){.skills{padding:96px 0 60px}.table-scene{height:360px}}@media (max-width: 480px){.skills-heading{font-size:34px}.table-scene{height:280px}.legend-pill{font-size:.74rem;padding:5px 11px 5px 8px}}@keyframes bg-scrolling-projects{0%{background-position:50px 50px}to{background-position:0px 0px}}.projects{padding:120px 0 0;position:relative;background-color:var(--bg);background-image:linear-gradient(var(--proj-grid) 1px,transparent 1px),linear-gradient(90deg,var(--proj-grid) 1px,transparent 1px);background-size:50px 50px;animation:bg-scrolling-projects 3s linear infinite;--proj-grid: rgba(156, 119, 92, .08)}[data-theme=dark] .projects{--proj-grid: rgba(196, 168, 130, .06)}.projects-header{max-width:var(--max-w);margin:0 auto 56px;padding:0 var(--px)}.projects-heading{font-size:clamp(36px,4.2vw,56px);line-height:1.05;letter-spacing:-.02em;color:var(--text);margin-top:14px}.projects-heading .accent{color:var(--primary)}.projects-stack{position:relative}.project-sticky-wrapper{position:sticky;top:60px;height:110vh;display:flex;align-items:center}.project-card{width:100%;max-width:var(--max-w);margin:0 auto;padding:0 var(--px)}.project-card-inner{width:100%;background:var(--bg-card);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);border:1.5px solid var(--border-strong);border-radius:var(--radius-lg);padding:52px 56px;position:relative;overflow:hidden;box-shadow:0 4px 48px var(--shadow);transition:background var(--t),border-color var(--t)}.project-card-inner:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(to right,var(--card-accent, var(--primary)),transparent)}.project-card-inner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--card-bg, transparent);pointer-events:none}.project-header{display:flex;align-items:flex-start;justify-content:space-between;gap:32px;margin-bottom:28px;position:relative;z-index:1}.project-num-title{display:flex;align-items:flex-start;gap:20px;min-width:0}.project-number{font-family:var(--font-display);font-size:3rem;color:var(--text);line-height:1;flex-shrink:0}.project-title{font-family:var(--font-display);font-size:clamp(1.4rem,2.5vw,2.1rem);color:var(--primary);margin-bottom:12px;letter-spacing:.01em;word-break:break-word}.project-tags{display:flex;flex-wrap:wrap;gap:6px}.project-tag{font-size:.7rem;letter-spacing:.06em;color:var(--text-muted);padding:3px 10px;border:1px solid var(--border);border-radius:100px;background:var(--tag-bg);white-space:nowrap;transition:color var(--t-fast),border-color var(--t-fast)}.project-tag:hover{color:var(--primary);border-color:var(--primary)}.project-meta-right{display:flex;flex-direction:column;align-items:flex-end;gap:16px;flex-shrink:0;max-width:320px}.project-desc{font-size:.95rem;line-height:1.7;color:var(--text-muted);text-align:right}.project-github{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--border-strong);border-radius:50%;color:var(--primary);flex-shrink:0;transition:background var(--t-fast),transform var(--t-fast)}.project-github:hover{background:var(--primary);color:#fff;transform:scale(1.1)}.project-links{display:flex;align-items:center;gap:10px;justify-content:flex-end}.project-live{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;font-family:var(--font-body);font-size:.78rem;letter-spacing:.04em;color:var(--primary);border:1px solid var(--primary);border-radius:100px;transition:background var(--t-fast),color var(--t-fast),transform var(--t-fast);white-space:nowrap}.project-live:hover{background:var(--primary);color:#fff;transform:translateY(-1px)}.project-screenshots{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;position:relative;z-index:1;margin-bottom:28px}.project-screenshot{aspect-ratio:16 / 10;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);background:var(--bg-card);display:flex;align-items:center;justify-content:center;transition:transform var(--t),box-shadow var(--t)}.project-screenshot:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 12px 30px var(--shadow)}.screenshot-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--t)}.project-screenshot:hover .screenshot-img{transform:scale(1.03)}.project-footer{display:flex;justify-content:space-between;align-items:center;position:relative;z-index:1;padding-top:18px;border-top:1px solid var(--border)}.project-role{font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-light)}.project-year{font-family:var(--font-display);font-size:.82rem;color:var(--primary);letter-spacing:.05em}.projects-spacer{height:180px}.project-screenshot--clickable{cursor:pointer;position:relative}.project-screenshot--clickable:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.screenshot-zoom{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000059;opacity:0;transition:opacity var(--t-fast);border-radius:var(--radius);color:#fff}.project-screenshot--clickable:hover .screenshot-zoom{opacity:1}@keyframes modal-in{0%{opacity:0}to{opacity:1}}@keyframes modal-img-in{0%{opacity:0;transform:scale(.92) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#000000d1;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;padding:24px;animation:modal-in .25s ease forwards}.modal-img-wrap{max-width:90vw;max-height:88vh;border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 32px 80px #0009;animation:modal-img-in .35s cubic-bezier(.16,1,.3,1) forwards}.modal-img{display:block;max-width:90vw;max-height:88vh;width:auto;height:auto;object-fit:contain}.modal-close{position:fixed;top:72px;right:24px;width:44px;height:44px;border-radius:50%;border:1.5px solid rgba(255,255,255,.6);background:#fff3;color:#fff;display:flex;align-items:center;justify-content:center;cursor:none;transition:background var(--t-fast),transform var(--t-fast);z-index:1001;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 2px 12px #0006}.modal-close:hover{background:#ffffff59;transform:scale(1.1)}.modal-close svg{width:18px;height:18px}@media (max-width: 860px){.projects{padding:96px 0 0}.projects-header{margin-bottom:40px}.project-sticky-wrapper{position:relative;top:auto;height:auto;margin-bottom:20px}.project-card{padding:0 var(--px)}.project-card-inner{padding:32px 28px}.project-header{flex-direction:column;gap:16px}.project-meta-right{align-items:flex-start;max-width:100%}.project-desc{text-align:left}.project-screenshots{grid-template-columns:repeat(2,1fr);gap:10px}.projects-spacer{height:60px}}@media (max-width: 480px){.project-card-inner{padding:24px 18px}.project-number{font-size:2rem}.project-num-title{gap:14px}.project-screenshots{grid-template-columns:1fr;gap:10px}.project-footer{flex-direction:column;align-items:flex-start;gap:6px}}.contact{padding:120px 0 0;position:relative;overflow:hidden;background-color:var(--bg)}.contact-lines{position:absolute;top:0;left:0;right:0;height:100%;margin:auto;width:90vw;pointer-events:none;z-index:0}.contact-line{position:absolute;width:1px;height:100%;top:0;left:50%;background:#9c775c1f;overflow:hidden}[data-theme=dark] .contact-line{background:#c4a88214}.contact-line:after{content:"";display:block;position:absolute;height:15vh;width:100%;top:-50%;left:0;background:linear-gradient(to bottom,#9c775c00,#9c775ce6 75%,#9c775c);animation:line-drop 7s 0s infinite;animation-fill-mode:forwards;animation-timing-function:cubic-bezier(.4,.26,0,.97)}[data-theme=dark] .contact-line:after{background:linear-gradient(to bottom,#c4a88200,#c4a882cc 75%,#c4a882)}@keyframes line-drop{0%{top:-50%}to{top:110%}}.contact-line:nth-child(1){margin-left:-25%}.contact-line:nth-child(1):after{animation-delay:2s}.contact-line:nth-child(3){margin-left:25%}.contact-line:nth-child(3):after{animation-delay:2.5s}.contact-top{max-width:var(--max-w);margin:0 auto 40px;padding:0 var(--px);position:relative;z-index:1;text-align:center}.contact-top .section-label{justify-content:center}.contact-heading{font-size:clamp(36px,5.5vw,72px);line-height:1.08;letter-spacing:-.02em;color:var(--text);margin-top:14px;margin-bottom:14px;overflow:hidden}.together-wrap{display:inline-flex;align-items:baseline;gap:0;color:var(--primary);overflow:hidden;line-height:1.1}.toge,.ther{display:inline-block;font-family:var(--font-display);letter-spacing:-.02em;animation-fill-mode:forwards}.toge{transform:translate(-120%);opacity:0}.ther{transform:translate(120%);opacity:0}@keyframes slide-in-left{0%{transform:translate(-120%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-in-right{0%{transform:translate(120%);opacity:0}to{transform:translate(0);opacity:1}}.together-wrap.animate .toge{animation:slide-in-left .7s cubic-bezier(.16,1,.3,1) .1s forwards}.together-wrap.animate .ther{animation:slide-in-right .7s cubic-bezier(.16,1,.3,1) .1s forwards}.contact-sub{font-size:1rem;color:var(--text-muted);line-height:1.6}.contact-arena{position:relative;width:100%;height:380px;overflow:hidden;z-index:2}.phys-pill{position:absolute;display:inline-flex;align-items:center;justify-content:center;padding:22px 40px;border-radius:100px;font-family:var(--font-display);font-size:clamp(1.1rem,2vw,1.4rem);letter-spacing:.01em;white-space:nowrap;box-shadow:0 8px 24px #0000002e,inset 0 1px #ffffff4d,inset 0 -2px #0000001f;cursor:grab;will-change:left,top,transform;transition:box-shadow .2s ease}.phys-pill:active{cursor:grabbing}.phys-pill:hover{box-shadow:0 14px 36px #0000003d,inset 0 1px #ffffff59,inset 0 -2px #00000026}.phys-pill--icon{padding:0;width:80px;height:80px;border-radius:50%;font-size:0}.snackbar{position:fixed;bottom:32px;left:50%;transform:translate(-50%) translateY(80px);background:#c0392b;color:#fff;font-family:var(--font-body);font-size:.9rem;padding:12px 28px;border-radius:100px;box-shadow:0 8px 24px #00000040;z-index:2000;opacity:0;transition:transform .35s var(--ease),opacity .35s ease;white-space:nowrap;pointer-events:none}.snackbar--show{transform:translate(-50%) translateY(0);opacity:1}.footer{border-top:1px solid var(--border);padding:28px 0;position:relative;z-index:1}.footer-inner{max-width:var(--max-w);margin:0 auto;padding:0 var(--px);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}.footer-name{font-family:var(--font-display);font-size:.88rem;color:var(--text);letter-spacing:.05em}.footer-copy{font-size:.78rem;color:var(--text-light)}.footer-built{font-size:.78rem;color:var(--primary)}@media (max-width: 860px){.contact{padding:96px 0 0}.contact-heading{font-size:clamp(30px,7vw,52px)}.contact-arena{height:440px}.phys-pill{padding:18px 30px;font-size:1rem}.phys-pill--icon{width:68px;height:68px}}@media (max-width: 480px){.contact-heading{font-size:28px}.contact-arena{height:500px}.phys-pill{padding:16px 24px;font-size:.95rem}.phys-pill--icon{width:58px;height:58px}.footer-inner{flex-direction:column;align-items:flex-start;gap:6px}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #FFF8EE;--bg-card: #F5EDE0;--bg-card-hover: #EDE0CF;--primary: #9C775C;--primary-light: #C4A882;--primary-dark: #6B4F38;--text: #1A1208;--text-muted: #7A6555;--text-light: #B09880;--border: rgba(156, 119, 92, .18);--border-strong: rgba(156, 119, 92, .45);--shadow: rgba(156, 119, 92, .13);--shadow-md: rgba(156, 119, 92, .22);--tag-bg: rgba(156, 119, 92, .1);--overlay: rgba(255, 248, 238, .9);--font-display: "Dela Gothic One", sans-serif;--font-body: "Della Respira", serif;--ease: cubic-bezier(.16, 1, .3, 1);--t: .4s cubic-bezier(.16, 1, .3, 1);--t-fast: .2s cubic-bezier(.16, 1, .3, 1);--radius-sm: 8px;--radius: 14px;--radius-lg: 20px;--max-w: 1100px;--px: 64px}[data-theme=dark]{--bg: #150F0A;--bg-card: #1F1610;--bg-card-hover: #2A1E15;--primary: #C4A882;--primary-light: #DEC8A8;--primary-dark: #9C775C;--text: #F5EDE0;--text-muted: #A8917A;--text-light: #6B5545;--border: rgba(196, 168, 130, .14);--border-strong: rgba(196, 168, 130, .38);--shadow: rgba(0, 0, 0, .35);--shadow-md: rgba(0, 0, 0, .55);--tag-bg: rgba(196, 168, 130, .09);--overlay: rgba(21, 15, 10, .92)}html{scroll-behavior:smooth}body{font-family:var(--font-body);background-color:var(--bg);color:var(--text);overflow-x:hidden;-webkit-font-smoothing:antialiased;transition:background-color .5s ease,color .5s ease}@media (hover: none){.cursor{display:none}}a{color:inherit;text-decoration:none}h1,h2,h3{font-family:var(--font-display);line-height:1.1}img{display:block;max-width:100%}.cursor{display:none}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--primary);border-radius:2px}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2000;opacity:.022;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fade-up{opacity:0;animation:fadeUp .75s var(--ease) forwards}.fade-in{opacity:0;animation:fadeIn .9s ease forwards}.reveal{opacity:0;transform:translateY(36px);transition:opacity .85s var(--ease),transform .85s var(--ease)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}.reveal-delay-4{transition-delay:.4s}.section-inner{max-width:var(--max-w);margin:0 auto;padding:0 var(--px)}.section-label{display:flex;align-items:center;gap:12px;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--primary);margin-bottom:18px}.section-label:before{content:"";display:inline-block;width:22px;height:1px;background:var(--primary);flex-shrink:0}.btn-primary{display:inline-flex;align-items:center;gap:9px;padding:13px 30px;background:var(--primary);color:#fff;font-family:var(--font-body);font-size:.9rem;letter-spacing:.03em;border-radius:var(--radius-sm);border:2px solid var(--primary);position:relative;overflow:hidden;transition:box-shadow var(--t-fast),transform var(--t-fast)}.btn-primary:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--primary-dark);transform:scaleX(0);transform-origin:right;transition:transform .38s var(--ease);z-index:0}.btn-primary:hover:before{transform:scaleX(1);transform-origin:left}.btn-primary>*{position:relative;z-index:1}.btn-primary:hover{box-shadow:0 6px 22px var(--shadow-md);transform:translateY(-1px)}@media (max-width: 860px){:root{--px: 32px}}@media (max-width: 480px){:root{--px: 20px}}
