@keyframes techRotate{from{transform:rotateX(0) rotateY(0)}to{transform:rotateX(0) rotateY(360deg)}}@keyframes techBlink{0%,49%{opacity:1}100%,50%{opacity:0}}.reveal-text .word{display:inline-block;opacity:0;filter:blur(10px);transform:translateY(30px);transition:opacity .5s ease-out,filter .5s ease-out,transform .5s ease-out}.reveal-text .word.in{opacity:1;filter:blur(0px);transform:translateY(0)}.matrix-char{opacity:0;color:#d9f5e4;display:inline-block;font-family:'IBM Plex Mono',monospace}.matrix-char.in{opacity:1}.highlight{background:0 0;color:#d9f5e4;font-weight:700;padding:0 2px;transition:background .35s ease-out,color .35s ease-out}.highlight.active{background:#4fe08a;color:#04140a}.highlight .matrix-char{color:inherit}@keyframes curtainUp{0%{transform:translateY(0)}100%{transform:translateY(-100%)}}@keyframes glowPulse{0%,100%{transform:scale(1);opacity:.55}50%{transform:scale(1.15);opacity:.85}}@keyframes ringPulse{0%,100%{transform:scale(1);opacity:.35}50%{transform:scale(1.06);opacity:.7}}@keyframes particleFloat{0%{transform:translateY(0);opacity:0}10%{opacity:.8}90%{opacity:.4}100%{transform:translateY(-160px);opacity:0}}@keyframes logoPop{0%{transform:scale(.3) rotate(-12deg);opacity:0}70%{transform:scale(1.1) rotate(3deg);opacity:1}100%{transform:scale(1) rotate(0);opacity:1}}@keyframes logoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes sparkleBlink{0%,100%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1)}}@keyframes slideFromLeft{0%{opacity:0;transform:translateX(-24px)}100%{opacity:1;transform:translateX(0)}}@keyframes revealUp{0%{clip-path:inset(100% 0 0 0);transform:translateY(14px)}100%{clip-path:inset(0% 0 0 0);transform:translateY(0)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}100%{opacity:1;transform:translateY(0)}}@keyframes ctaIn{0%{opacity:0;transform:translateY(14px) scale(.94)}100%{opacity:1;transform:translateY(0) scale(1)}}@keyframes highlightPulse{0%,100%{box-shadow:0 0 6px rgba(79,224,138,.5)}50%{box-shadow:0 0 20px rgba(79,224,138,.95)}}@keyframes popupPop{0%{opacity:0;transform:scale(.82)}100%{opacity:1;transform:scale(1)}}.project-popup-anim{animation:.3s cubic-bezier(.22,1,.36,1) both popupPop}@keyframes folderContentIn{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}.folder-content-anim{animation:.4s ease-out both folderContentIn}.page-shell{background:#161310;min-height:100vh;color:#ece7dc;font-family:'Space Grotesk',sans-serif}.site-header{display:flex;align-items:center;justify-content:space-between;padding:28px 64px;position:relative;z-index:2}.site-brand{display:flex;align-items:center;gap:10px;font-family:'IBM Plex Mono',monospace;font-size:16px;letter-spacing:.14em;color:#d9cdae}.site-brand-logo{width:28px;height:28px;object-fit:contain}.site-est{font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.1em;color:#7a7364}#scrollHero{height:150vh;position:relative;margin-top:-80px}.hero-sticky{position:sticky;top:0;height:100vh;overflow:hidden;background:#0d0b09;z-index:10}#crtCanvas{position:absolute;inset:0;width:100%;height:100%;display:block}#lockOverlay{position:absolute;inset:0;opacity:0;pointer-events:auto}#screenBoot{position:absolute;inset:0;background:#04120a;display:flex;align-items:center;justify-content:center;image-rendering:pixelated;pointer-events:none}.boot-body{width:100%;max-width:820px;padding:48px 64px;font-family:'IBM Plex Mono',monospace;font-size:15px;line-height:2.1;color:#4fe08a;text-shadow:0 0 6px #4fe08a}.boot-pct{display:inline-block;min-width:4ch;text-align:right}.boot-crt-label{position:absolute;left:24px;bottom:16px;font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.1em;color:#4fe08a;opacity:.6}.boot-led{position:absolute;right:24px;bottom:16px;width:8px;height:8px;border-radius:50%;background:#4fe08a;opacity:.6}#screenFiles{position:absolute;inset:0;background:#0a0e08;opacity:0;display:flex;flex-direction:column;image-rendering:pixelated}.files-topbar{display:flex;align-items:center;gap:14px;padding:14px 22px;background:#132612;border-bottom:2px solid #4fe08a;font-family:'IBM Plex Mono',monospace}.files-topbar-brand{font-weight:600;font-size:13px;letter-spacing:.08em;color:#4fe08a}.files-breadcrumb{font-size:12px;color:#7fcf9a}.search-box{position:relative;margin-left:auto;font-family:'IBM Plex Mono',monospace}.search-field{display:flex;align-items:center;gap:8px;min-width:250px;padding:5px 10px;background:#0a1f12;border:1px solid #2fae66;transition:border-color .2s,box-shadow .2s}.search-field:focus-within{border-color:#4fe08a;box-shadow:0 0 10px rgba(79,224,138,.35)}.search-icon{position:relative;flex-shrink:0;width:10px;height:10px;border:1.5px solid #4fe08a;border-radius:50%}.search-icon::after{content:'';position:absolute;right:-4px;bottom:-3px;width:5px;height:1.5px;background:#4fe08a;transform:rotate(45deg)}.search-input{flex:1;min-width:0;padding:0;background:0 0;border:0;outline:0;color:#c9f0d8;font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.04em}.search-input::placeholder{color:#4a6b57}.search-results{position:absolute;top:calc(100% + 7px);right:0;z-index:20;width:340px;max-height:270px;overflow-y:auto;background:#04120a;border:1px solid #4fe08a;box-shadow:0 0 0 3px #04120a,0 0 22px rgba(79,224,138,.35)}.search-results-head{padding:8px 12px;border-bottom:1px solid #1e3a24;font-size:10px;letter-spacing:.12em;color:#4a6b57}.search-result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid #0e2413;cursor:pointer;transition:background .15s}.search-result:hover{background:rgba(79,224,138,.12)}.search-result-word{font-size:13px;font-weight:600;color:#d9f5e4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-section{flex-shrink:0;font-size:10px;letter-spacing:.06em;color:#4fe08a;white-space:nowrap}.search-hit{position:relative;display:inline-block}.search-hit::after{content:'';position:absolute;left:0;right:0;bottom:-2px;height:2px;background:#4fe08a;box-shadow:0 0 8px rgba(79,224,138,.9);pointer-events:none;animation:2s linear forwards searchHitBlink}@keyframes searchHitBlink{0%,16%{opacity:1}24%,8%{opacity:.15}32%{opacity:.95}40%,56%{opacity:.1}48%{opacity:.85}64%{opacity:.7}72%{opacity:.08}80%{opacity:.5}88%{opacity:.05}94%{opacity:.25}100%{opacity:0}}.root-panel{position:relative;flex:1;min-height:0}.root-bg{position:absolute;inset:0;background-image:linear-gradient(rgba(6,14,8,.55),rgba(6,14,8,.55)),url('../uploads/2djlogov2.gif');background-size:auto,520px;background-position:center,center;background-repeat:no-repeat,no-repeat;image-rendering:pixelated;pointer-events:none}.folder-grid{position:relative;display:flex;gap:44px;flex-wrap:wrap;padding:48px 40px}.folder-item{display:flex;flex-direction:column;align-items:center;gap:12px;width:120px;cursor:pointer}.folder-icon{image-rendering:pixelated;shape-rendering:crispEdges;pointer-events:none}.folder-name{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.02em;color:#c9f0d8;text-align:center;pointer-events:none}.popup-overlay{position:absolute;inset:0;background:rgba(3,8,5,.72);display:flex;align-items:center;justify-content:center;z-index:5;padding:26px}.popup-panel{position:relative;width:100%;max-width:940px;aspect-ratio:940/582;max-height:100%;background:#04120a;border:2px solid #4fe08a;box-shadow:0 0 0 4px #04120a,0 0 32px rgba(79,224,138,.4);display:flex;flex-direction:column;overflow:hidden}.popup-close{position:absolute;top:10px;right:12px;z-index:8;cursor:pointer;color:#4fe08a;font-family:'IBM Plex Mono',monospace;font-size:16px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid #4fe08a;background:#04120a}.panel-breadcrumb{padding:14px 22px;font-family:'IBM Plex Mono',monospace;font-size:12px;color:#7fcf9a}.projects-breadcrumb{display:flex;align-items:center;gap:8px}.subpanel{display:flex;flex-direction:column;flex:1;min-height:0}.projects-panel{display:flex;flex-direction:column}.file-grid{display:flex;gap:44px;flex-wrap:wrap;padding:8px 40px 48px}.file-icon{image-rendering:pixelated;shape-rendering:crispEdges}.file-name{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.02em;color:#c9f0d8;text-align:center}.contact-panel{position:relative;width:100%;height:100%;background:#04120a;overflow:hidden;display:flex;align-items:center;justify-content:center}.contact-glow{position:absolute;inset:0;background:radial-gradient(ellipse 420px 320px at center,rgba(79,224,138,.35),transparent 70%);animation:4s ease-in-out infinite glowPulse;pointer-events:none;image-rendering:pixelated}.contact-ring{position:absolute;top:50%;left:50%;pointer-events:none}.contact-ring-1{width:180px;height:180px;margin:-90px 0 0 -90px;border:2px solid rgba(79,224,138,.35);animation:3.2s ease-in-out infinite ringPulse}.contact-ring-2{width:260px;height:260px;margin:-130px 0 0 -130px;border:2px solid rgba(79,224,138,.25);animation:3.2s ease-in-out .4s infinite ringPulse}.contact-ring-3{width:340px;height:340px;margin:-170px 0 0 -170px;border:2px solid rgba(79,224,138,.16);animation:3.2s ease-in-out .8s infinite ringPulse}.contact-ring-4{width:420px;height:420px;margin:-210px 0 0 -210px;border:2px solid rgba(79,224,138,.1);animation:3.2s ease-in-out 1.2s infinite ringPulse}.contact-particle{position:absolute;bottom:0;background:#4fe08a;pointer-events:none}.contact-particle-1{left:18%;width:4px;height:4px;animation:6s linear .5s infinite particleFloat}.contact-particle-2{left:32%;width:3px;height:3px;animation:7.5s linear 1.5s infinite particleFloat}.contact-particle-3{left:52%;width:4px;height:4px;animation:5.5s linear .2s infinite particleFloat}.contact-particle-4{left:68%;width:3px;height:3px;animation:8s linear 2.2s infinite particleFloat}.contact-particle-5{left:80%;width:4px;height:4px;animation:6.8s linear 1s infinite particleFloat}.contact-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;padding:0 40px}.contact-logo-wrap{position:relative;width:72px;height:72px;animation:.7s cubic-bezier(.34,1.56,.64,1) both logoPop;image-rendering:pixelated}.contact-logo-img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 10px rgba(79,224,138,.7));animation:3.4s ease-in-out infinite logoFloat}.contact-sparkle{position:absolute;background:#4fe08a}.contact-sparkle-1{top:-6px;right:2px;width:5px;height:5px;animation:2.2s ease-in-out infinite sparkleBlink}.contact-sparkle-2{bottom:2px;left:-8px;width:4px;height:4px;animation:2.6s ease-in-out .6s infinite sparkleBlink}.contact-sparkle-3{top:10px;left:-10px;width:3px;height:3px;animation:1.9s ease-in-out 1.1s infinite sparkleBlink}.contact-kicker{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.28em;color:#4fe08a;animation:.6s ease-out .15s both slideFromLeft}.contact-title{font-family:'IBM Plex Mono',monospace;font-size:34px;font-weight:700;line-height:1.15;color:#c9f0d8;text-shadow:0 0 14px rgba(79,224,138,.6);animation:.7s cubic-bezier(.22,1,.36,1) .3s both revealUp}.contact-desc{font-family:'IBM Plex Mono',monospace;font-size:13px;color:#8fbfa2;max-width:380px;line-height:1.6;animation:.6s ease-out .55s both fadeUp}.contact-actions{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:10px}.contact-cta-primary{padding:12px 30px;background:#4fe08a;color:#04120a;font-family:'IBM Plex Mono',monospace;font-size:13px;font-weight:700;letter-spacing:.04em;box-shadow:0 0 20px rgba(79,224,138,.5);cursor:pointer;animation:.5s ease-out .7s both ctaIn;transition:transform .25s,box-shadow .25s}.contact-cta-primary:hover{transform:translateY(-3px);box-shadow:0 0 30px rgba(79,224,138,.75)}.contact-links{display:flex;gap:10px}.contact-link{padding:9px 18px;background:rgba(79,224,138,.08);border:2px solid rgba(79,224,138,.35);color:#c9f0d8;font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.04em;cursor:pointer;transition:transform .25s,background .25s;text-decoration:none}.contact-link:hover{transform:translateY(-3px);background:rgba(79,224,138,.18)}.contact-links .contact-link:first-child{animation:.5s ease-out .82s both ctaIn}.contact-links .contact-link:nth-child(2){animation:.5s ease-out .98s both ctaIn}.contact-links .contact-link:nth-child(3){animation:.5s ease-out 1.06s both ctaIn}.contact-curtain{position:absolute;inset:0;background:#04120a;z-index:9;animation:.9s cubic-bezier(.76,0,.24,1) both curtainUp;transform-origin:top;pointer-events:none}.about-stage{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;background:#070d08}.about-item{width:100%;max-width:620px;margin:0 auto;font-family:'IBM Plex Mono',monospace;position:relative;padding:8px 0;will-change:transform,opacity}.about-item-kicker{font-size:15px;letter-spacing:.24em;color:#4fe08a;margin-bottom:16px;will-change:transform}.about-item-body{font-size:26px;line-height:1.5;color:#d9f5e4;font-weight:500;will-change:transform}.about-scroll-hint{position:absolute;right:16px;bottom:14px;font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.1em;color:#4fe08a;opacity:.8;pointer-events:none}#aboutViewport{position:relative;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}#aboutTrack{display:flex;flex-direction:column;gap:52px;padding:44px 56px 72px;overflow:hidden}.services-scroll{display:flex;flex-direction:column;flex:1;min-height:0;overflow-y:auto;background:#04120a}.services-list{display:flex;flex-direction:column;padding:0 32px 24px}.service-row{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:26px 0;border-top:1px solid #1e3a24}.service-main{display:flex;gap:20px;align-items:flex-start;min-width:0}.service-num{font-family:'IBM Plex Mono',monospace;font-size:11px;color:#4a6b57;padding-top:8px;flex-shrink:0}.service-body{min-width:0}.service-head{display:flex;align-items:center;gap:10px}.service-title{font-family:'Space Grotesk',sans-serif;font-size:26px;font-weight:700;color:#f4fff8}.service-badge{background:#f4fff8;color:#04120a;font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.06em;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap}.service-desc{font-family:'IBM Plex Mono',monospace;font-size:13px;color:#8fbfa2;line-height:1.6;margin-top:8px;max-width:440px}.service-meta{display:flex;flex-direction:column;align-items:flex-end;gap:10px;flex-shrink:0}.service-tag{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.08em;color:#4a6b57}.service-cta{border:1px solid #4fe08a;color:#4fe08a;font-family:'IBM Plex Mono',monospace;font-size:11px;padding:7px 14px}.services-divider{border-top:1px solid #1e3a24}.tech-stage{position:relative;flex:1;min-height:0;overflow:hidden;perspective:2400px;background:#04120a;touch-action:none}.tech-carousel{width:100%;height:100%;position:relative;transform-style:preserve-3d;animation:30s linear infinite techRotate}.tech-card{position:absolute;inset:0;margin:auto;width:140px;height:172px;background:rgba(9,38,23,.45);border:1px solid #4fe08a;border-radius:2px;box-shadow:0 0 16px rgba(79,224,138,.5),inset 0 0 20px rgba(79,224,138,.15);backdrop-filter:blur(2px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;font-family:'IBM Plex Mono',monospace;color:#c9f0d8;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.tech-card-0{transform:rotateY(0) translateZ(clamp(170px,28vw,420px))}.tech-card-1{transform:rotateY(36deg) translateZ(clamp(170px,28vw,420px))}.tech-card-2{transform:rotateY(72deg) translateZ(clamp(170px,28vw,420px))}.tech-card-3{transform:rotateY(108deg) translateZ(clamp(170px,28vw,420px))}.tech-card-4{transform:rotateY(144deg) translateZ(clamp(170px,28vw,420px))}.tech-card-5{transform:rotateY(180deg) translateZ(clamp(170px,28vw,420px))}.tech-card-6{transform:rotateY(216deg) translateZ(clamp(170px,28vw,420px))}.tech-card-7{transform:rotateY(252deg) translateZ(clamp(170px,28vw,420px))}.tech-card-8{transform:rotateY(288deg) translateZ(clamp(170px,28vw,420px))}.tech-card-9{transform:rotateY(324deg) translateZ(clamp(170px,28vw,420px))}.tech-card-img{width:100%;height:100%;object-fit:contain;padding:14px;box-sizing:border-box;filter:drop-shadow(0 0 6px rgba(79,224,138,.5))}.tech-carousel.is-driven{animation:none}@keyframes techCardHold{from{box-shadow:0 0 16px rgba(79,224,138,.5),inset 0 0 20px rgba(79,224,138,.15)}to{box-shadow:0 0 32px #4fe08a,inset 0 0 26px rgba(79,224,138,.6)}}.tech-card.is-holding{animation:.3s ease-in forwards techCardHold}.tech-card img{-webkit-user-drag:none;user-select:none;-webkit-touch-callout:none;pointer-events:none}.tech-drag-layer{position:fixed;z-index:60;pointer-events:none;will-change:transform;perspective:900px}.tech-drag-card{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:rgba(9,38,23,.8);border:1px solid #4fe08a;border-radius:2px;backdrop-filter:blur(2px);box-shadow:0 0 6px rgba(79,224,138,.5);scale:1;transition:scale .26s cubic-bezier(.34,1.56,.64,1),box-shadow .26s}@keyframes techCardSpin{from{transform:rotateY(0)}to{transform:rotateY(360deg)}}.tech-drag-card.is-spinning{animation:.6s cubic-bezier(.22,1,.36,1) techCardSpin}.tech-drag-card.is-lifted{scale:1.15;box-shadow:0 0 20px rgba(79,224,138,.95),0 0 48px rgba(79,224,138,.5),inset 0 0 24px rgba(79,224,138,.3)}.tech-drag-layer.is-pinned{pointer-events:auto;touch-action:none}.tech-drag-layer.is-pinned .tech-drag-card{cursor:grab;box-shadow:0 0 14px rgba(79,224,138,.75),inset 0 0 18px rgba(79,224,138,.22)}@keyframes techCardBob{0%,100%{translate:0 0}25%{translate:0 -9px}75%{translate:0 9px}}@keyframes techCardDrift{0%,100%{transform:translateX(0)}25%{transform:translateX(6px)}75%{transform:translateX(-6px)}}@keyframes techCardSway{0%,100%{rotate:0deg}25%{rotate:1.8deg}75%{rotate:-1.8deg}}.tech-drag-layer.is-pinned .tech-drag-card:not(.is-spinning){animation:3.9s ease-in-out infinite techCardBob,5.7s ease-in-out infinite techCardDrift,4.6s ease-in-out infinite techCardSway}.tech-info{position:absolute;top:calc(100% + 16px);left:50%;width:min(250px,76vw);transform:translateX(-50%) translateY(8px);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;background:#04120a;border:1px solid #4fe08a;box-shadow:0 0 0 3px #04120a,0 0 24px rgba(79,224,138,.4);padding:12px 14px;font-family:'IBM Plex Mono',monospace;text-align:left}.tech-drag-layer.info-above .tech-info{top:auto;bottom:calc(100% + 16px)}.tech-drag-layer.is-out .tech-info{opacity:1;transform:translateX(-50%) translateY(0)}.tech-drag-layer.is-pinned .tech-info{pointer-events:auto}.tech-info-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}.tech-info-name{font-size:15px;font-weight:700;letter-spacing:.04em;color:#d9f5e4}.tech-info-kind{flex-shrink:0;font-size:9px;letter-spacing:.1em;color:#4fe08a;white-space:nowrap}.tech-info-desc{margin:0;font-size:11.5px;line-height:1.6;color:#8fbfa2}.tech-info-back{margin-top:11px;width:100%;padding:6px 10px;background:rgba(79,224,138,.1);border:1px solid rgba(79,224,138,.45);color:#c9f0d8;font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.08em;cursor:pointer;transition:background .2s}.tech-info-back:hover{background:rgba(79,224,138,.25)}.tech-drag-card img{width:100%;height:100%;object-fit:contain;padding:14px;box-sizing:border-box;filter:drop-shadow(0 0 8px rgba(79,224,138,.85))}.tech-fade{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(10,14,8,0) 0,rgba(10,14,8,.95) 92%);pointer-events:none}.tech-copy{position:relative;z-index:3;padding:0 28px 20px;font-family:'IBM Plex Mono',monospace}.tech-kicker{font-size:16px;letter-spacing:.18em;color:#4fe08a;margin-bottom:10px;font-weight:600}.tech-typed{font-size:30px;color:#c9f0d8;min-height:38px;font-weight:600}.tech-cursor{animation:1s step-end infinite techBlink;color:#4fe08a}.tech-sub{font-size:13px;color:#6f9d82;margin-top:10px;max-width:70%}.dock-bar{position:absolute;left:0;right:0;bottom:0;height:40px;background:#0e1a10;border-top:2px solid #4fe08a}.project-popup-overlay{position:absolute;inset:0;background:rgba(4,8,5,.72);display:flex;align-items:center;justify-content:center;z-index:5}.project-window{width:520px;max-width:88%;background:#0f1a10;border:2px solid #4fe08a;box-shadow:0 0 0 4px #04120a,0 0 30px rgba(79,224,138,.35);font-family:'IBM Plex Mono',monospace}.project-window.is-fullscreen{width:100%;height:100%;max-width:none;border:none;box-shadow:none}.project-popup-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#132612;border-bottom:2px solid #4fe08a}.project-popup-title{font-size:12px;letter-spacing:.08em;color:#4fe08a}.project-popup-actions{display:flex;gap:12px;align-items:center}.project-popup-icon-btn{cursor:pointer;color:#4fe08a;padding:0 4px}.project-popup-btn{font-size:13px}.project-popup-close{font-size:14px}.project-preview-box{height:280px;display:flex;align-items:center;justify-content:center;color:#4a6b57;font-size:13px;letter-spacing:.04em}.project-preview-box.is-fullscreen{height:calc(100% - 84px);font-size:15px}.project-preview-iframe{width:100%;height:100%;border:0;background:#04120a}.project-popup-footer{padding:12px 16px;border-top:1px solid #1e3a24;color:#7fcf9a;font-size:12px;display:flex;justify-content:space-between;align-items:center;gap:12px}.project-popup-link{color:#4fe08a}#heroText{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:0 64px;pointer-events:none}.hero-scrim{display:none;position:absolute;left:0;right:0;top:0;height:62%;background:linear-gradient(to bottom,rgba(13,11,9,.92) 0,rgba(13,11,9,.82) 42%,rgba(13,11,9,.45) 74%,rgba(13,11,9,0) 100%);pointer-events:none;z-index:0}.hero-kicker{position:relative;z-index:1;font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.16em;color:#4fe08a;margin-bottom:18px}.hero-title{position:relative;z-index:1;font-size:56px;line-height:1.05;font-weight:600;margin:0 0 22px;color:#f4f0e6;max-width:600px}.hero-para{position:relative;z-index:1;font-size:18px;line-height:1.6;color:#b8b1a1;max-width:440px;margin:0 0 28px}.hero-rule{display:none;position:relative;z-index:1;width:44px;height:1px;background:rgba(233,224,205,.28);margin:0 0 14px}.hero-hint{position:relative;z-index:1;font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.1em;color:#7a7364}@media (max-width:760px){.site-header{padding:14px 18px!important}#scrollHero{height:200vh!important;background:#0d0b09!important}.hero-sticky{height:100svh!important}#heroText{justify-content:flex-start!important;padding:74px 24px 0!important}.hero-scrim{display:block!important}.hero-kicker{font-size:10px!important;letter-spacing:.24em!important;margin-bottom:16px!important}.hero-title{font-size:32px!important;line-height:.98!important;letter-spacing:-.02em!important;margin:0 0 16px!important}.hero-para{font-size:12.5px!important;line-height:1.75!important;max-width:262px!important;margin:0 0 20px!important}.hero-rule{display:block!important}.hero-hint{font-size:9.5px!important;letter-spacing:.16em!important;opacity:.8!important}.boot-body{padding:26px 22px!important;font-size:11px!important;line-height:1.95!important}.root-bg{background-size:auto,300px!important}.popup-panel{aspect-ratio:auto!important;width:94vw!important;height:82svh!important;max-width:94vw!important}.popup-overlay{padding:12px!important}.folder-grid{gap:18px 14px!important;padding:24px 16px!important}.folder-grid>div{width:88px!important}.folder-grid svg{width:40px!important;height:32px!important}.file-grid{gap:18px 14px!important;padding:8px 16px 28px!important}.file-grid>div{width:88px!important}.file-grid svg{width:32px!important;height:38px!important}#aboutViewport{-webkit-overflow-scrolling:touch;scroll-snap-type:y proximity}#aboutTrack{gap:0!important;padding:0 20px 40px!important}.about-item{max-width:100%!important;display:flex;flex-direction:column;justify-content:center;padding:0!important;scroll-snap-align:center}.about-item>div:first-child{font-size:11px!important;margin-bottom:10px!important}.about-item>div:last-child{font-size:14px!important;line-height:1.62!important;text-align:left!important;-webkit-hyphens:none;hyphens:none;word-spacing:normal!important}.services-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.services-list{padding:0 18px 24px!important}.service-row{flex-direction:column!important;align-items:stretch!important;gap:14px!important;padding:18px 0!important}.service-main{gap:12px!important;width:100%!important;min-width:0!important}.service-body{min-width:0!important;flex:1 1 auto!important}.service-head{flex-wrap:wrap!important;gap:8px!important}.service-title{font-size:19px!important;line-height:1.15!important}.service-desc{font-size:12px!important;line-height:1.55!important;max-width:100%!important;margin-top:6px!important}.service-meta{flex-direction:row!important;align-items:center!important;justify-content:center!important;width:100%!important;padding:2px 4px 0!important;gap:14px!important}.service-tag{font-size:9px!important;letter-spacing:.06em!important}.service-cta{font-size:10px!important;padding:7px 16px!important;white-space:nowrap!important}.tech-card{width:104px!important;height:132px!important}.tech-card svg{width:28px!important;height:28px!important}.tech-copy{padding:0 20px 16px!important}.tech-copy .tech-kicker{font-size:11px!important}.tech-copy .tech-typed{font-size:20px!important;min-height:28px!important}.tech-copy .tech-sub{font-size:11px!important;max-width:100%!important}.search-box{flex:1;min-width:0}.search-field{min-width:0!important;padding:4px 8px!important}.search-input{font-size:11px!important}.search-results{width:min(320px,86vw)!important;max-height:210px!important}.contact-title{font-size:24px!important}}@media (max-width:760px) and (orientation:landscape){#heroText{padding-top:54px!important}.hero-title{font-size:24px!important}.hero-para{display:none!important}}body{margin:0;background:#161310}::selection{background:#4fe08a;color:#0b0a08}