:root{--ink:#0A0A0F;--ink2:#13131B;--ink3:#1C1C28;--p1:#7B5CF0;--p2:#A78BFA;--c1:#06EFE0;--warm:#F97316;--rose:#F43F5E;--lime:#A3E635;--fg:#F0EFF8;--fg2:#9492B0;--fg3:#3D3C52;--bdr:rgba(255,255,255,.07);--bdr-a:rgba(123,92,240,.3);--h:"Syne",sans-serif;--b:"DM Sans",sans-serif;--m:"DM Mono",monospace;--expo:cubic-bezier(.16,1,.3,1)}*,:after,:before{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--ink);color:var(--fg);font-family:var(--b);line-height:1.6;overflow-x:hidden;cursor:none}body.loading{overflow:hidden}a{text-decoration:none;color:inherit}::selection{background:rgba(123,92,240,.35);color:#fff}body:before{content:"";pointer-events:none;z-index:9998;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)'/%3E%3C/svg%3E");background-size:200px}#cvs,body:before{position:fixed;inset:0}#cvs{z-index:0;opacity:.5}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--ink)}::-webkit-scrollbar-thumb{background:var(--bdr-a);border-radius:2px}#cur,#cur2{position:fixed;border-radius:50%;pointer-events:none;z-index:99999;transform:translate(-50%,-50%)}#cur{width:8px;height:8px;background:var(--c1);transition:width .25s var(--expo),height .25s var(--expo),background .3s;mix-blend-mode:difference}#cur2{width:36px;height:36px;border:1.5px solid rgba(123,92,240,.5);transition:width .35s var(--expo),height .35s var(--expo),border-color .3s,left .1s var(--expo),top .1s var(--expo)}#cur.h{width:14px;height:14px}#cur2.h{width:58px;height:58px;border-color:rgba(6,239,224,.45)}#loader{position:fixed;inset:0;z-index:100000;background:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;transition:opacity .6s var(--expo),visibility .6s}#loader.gone{opacity:0;visibility:hidden}.l-logo{font-family:var(--h);font-size:1.1rem;font-weight:700;letter-spacing:.35em;text-transform:uppercase;color:var(--fg3)}.l-logo b{color:var(--p1)}.l-pct{font-family:var(--h);font-size:5.5rem;font-weight:800;line-height:1;color:var(--fg3);font-variant-numeric:tabular-nums}.l-bar{width:160px;height:1px;background:var(--bdr);overflow:hidden}.l-bar-f{height:100%;width:0;background:linear-gradient(90deg,var(--p1),var(--c1))}#nav{position:fixed;top:1.5rem;left:50%;transform:translateX(-50%);z-index:1000;background:rgba(10,10,15,.72);backdrop-filter:blur(28px);border:1px solid var(--bdr);border-radius:100px;padding:.55rem .75rem .55rem 1.5rem;display:flex;align-items:center;gap:2rem;transition:padding .3s,box-shadow .3s}#nav.scrolled{box-shadow:0 4px 40px rgba(0,0,0,.4),0 0 0 1px rgba(123,92,240,.15)}.n-logo{font-family:var(--h);font-size:1rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap}.n-logo b{color:var(--p1)}.n-links{display:flex;gap:1.75rem;list-style:none}.n-links a{font-size:.83rem;font-weight:500;color:var(--fg2);transition:color .25s;letter-spacing:.03em}.n-links a:hover{color:var(--fg)}.n-cta{padding:.5rem 1.2rem;background:var(--p1);color:#fff;font-family:var(--b);font-size:.83rem;font-weight:600;border:none;border-radius:100px;cursor:none;transition:background .25s,box-shadow .25s}.n-cta:hover{background:var(--p2);box-shadow:0 0 24px rgba(123,92,240,.5)}.n-ham{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:none;padding:6px}.n-ham span{display:block;width:20px;height:1.5px;background:var(--fg);border-radius:1px;transition:transform .3s,opacity .3s}#mob{position:fixed;inset:0;z-index:999;background:rgba(10,10,15,.97);backdrop-filter:blur(30px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.5rem;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}#mob.open{opacity:1;visibility:visible}#mob a{font-family:var(--h);font-size:2.4rem;font-weight:700;color:var(--fg2);transition:color .25s}#mob a:hover,#mob-x{color:var(--fg)}#mob-x{position:absolute;top:1.5rem;right:5%;background:none;border:none;font-size:1.5rem;cursor:none}.marquee-wrap{position:relative;overflow:hidden;border-top:1px solid var(--bdr);border-bottom:1px solid var(--bdr);padding:.6rem 0;background:transparent}.marquee-inner{display:flex;gap:0;white-space:nowrap;animation:marq 22s linear infinite}.marquee-wrap:hover .marquee-inner{animation-play-state:paused}.marquee-item{display:inline-flex;align-items:center;gap:1.5rem;padding:0 3rem;font-family:var(--h);font-size:clamp(1.8rem,4vw,3.5rem);font-weight:800;color:transparent;-webkit-text-stroke:1px var(--fg3);letter-spacing:-.03em;text-transform:uppercase}.marquee-item .hl-word{-webkit-text-stroke:0;color:var(--p2);opacity:.85}.marquee-sep{font-size:1rem;color:var(--p1);opacity:.5;-webkit-text-stroke:0}@keyframes marq{0%{transform:translateX(0)}to{transform:translateX(-50%)}}#home{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding-top:6rem;position:relative;z-index:1}.hero-eyebrow{display:inline-flex;align-items:center;gap:.6rem;margin-bottom:1.8rem;opacity:0;animation:upIn .7s var(--expo) .5s forwards}.hero-dot{width:8px;height:8px;border-radius:50%;background:var(--lime);box-shadow:0 0 10px var(--lime);animation:gPulse 2s infinite}@keyframes gPulse{0%,to{box-shadow:0 0 10px var(--lime)}50%{box-shadow:0 0 24px var(--lime),0 0 44px var(--lime)}}.hero-eyebrow span{font-size:.8rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--fg2)}.hero-stage{display:flex;align-items:flex-start;justify-content:space-between;gap:4rem}.hero-left{flex:1;min-width:0}h1{font-family:var(--h);font-size:clamp(3rem,7vw,6rem);font-weight:800;line-height:.95;letter-spacing:-.04em;margin-bottom:2rem;opacity:0;animation:upIn .8s var(--expo) .7s forwards}h1 .acc{background:linear-gradient(120deg,var(--p1),var(--p2),var(--c1));-webkit-background-clip:text;background-clip:text}h1 .acc,h1 .rot{-webkit-text-fill-color:transparent}h1 .rot{display:inline-block;animation:hueRot 6s linear infinite;background:linear-gradient(120deg,var(--warm),var(--rose));-webkit-background-clip:text;background-clip:text}@keyframes hueRot{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(1turn)}}.tw-line{display:block;font-size:.55em;font-weight:400;color:var(--fg2);margin-top:.2em;font-family:var(--b)}#tw{border-right:2.5px solid var(--p1);padding-right:3px;animation:blk .7s step-end infinite}@keyframes blk{0%,to{border-color:var(--p1)}50%{border-color:transparent}}.hero-desc{font-size:1.05rem;color:var(--fg2);max-width:500px;line-height:1.8;margin-bottom:2.5rem;opacity:0;animation:upIn .7s var(--expo) .9s forwards}.hero-actions{display:flex;gap:1rem;flex-wrap:wrap;opacity:0;animation:upIn .7s var(--expo) 1.1s forwards}.btn-fill{display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 2rem;background:var(--p1);color:#fff;font-family:var(--b);font-size:.9rem;font-weight:600;border:none;border-radius:10px;cursor:none;transition:background .25s,box-shadow .25s,transform .25s}.btn-fill:hover{background:var(--p2);box-shadow:0 8px 32px rgba(123,92,240,.45);transform:translateY(-2px)}.btn-ghost{display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 2rem;background:transparent;color:var(--fg);font-family:var(--b);font-size:.9rem;font-weight:600;border:1px solid var(--bdr);border-radius:10px;cursor:none;transition:border-color .25s,background .25s,transform .25s}.btn-ghost:hover{border-color:var(--fg3);background:rgba(255,255,255,.04);transform:translateY(-2px)}.hero-card{flex-shrink:0;width:260px;background:var(--ink2);border:1px solid var(--bdr);border-radius:20px;padding:1.5rem;opacity:0;animation:floatIn .8s var(--expo) 1.3s forwards;position:relative}@keyframes floatIn{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.hero-card:before{content:"";position:absolute;inset:0;border-radius:20px;background:linear-gradient(135deg,rgba(123,92,240,.1),rgba(6,239,224,.05));pointer-events:none}.hc-avatar{width:56px;height:56px;border-radius:14px;overflow:hidden;margin-bottom:1rem}.hc-avatar img{width:100%;height:100%;object-fit:cover}.hc-name{font-family:var(--h);font-size:1.1rem;font-weight:700;margin-bottom:.2rem}.hc-role{font-size:.8rem;color:var(--fg2)}.hc-divider{height:1px;background:var(--bdr);margin:1rem 0}.hc-stat{display:flex;justify-content:space-between;align-items:center;margin-bottom:.65rem}.hc-stat:last-of-type{margin-bottom:0}.hc-stat-l{font-size:.75rem;color:var(--fg3)}.hc-stat-v{font-family:var(--h);font-size:1rem;font-weight:700;color:var(--c1)}.hc-avail{display:inline-flex;align-items:center;gap:.5rem;margin-top:1rem;padding:.4rem .85rem;background:rgba(163,230,53,.1);border:1px solid rgba(163,230,53,.25);border-radius:100px;font-size:.72rem;font-weight:600;color:var(--lime);letter-spacing:.05em}.hc-avail-dot{width:6px;height:6px;border-radius:50%;background:var(--lime);animation:gPulse 2s infinite}.hero-meta{display:flex;align-items:center;gap:2rem;margin-top:3.5rem;padding-top:2rem;border-top:1px solid var(--bdr);opacity:0;animation:upIn .7s var(--expo) 1.5s forwards}.hm-item{font-size:.78rem;color:var(--fg3)}.hm-item b{font-family:var(--m);color:var(--fg2);font-weight:500}.hm-sep{width:1px;height:18px;background:var(--bdr)}#bento{padding:5rem 0;position:relative;z-index:1}.bento-header{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:3rem}.bento-ttl{font-family:var(--h);font-size:clamp(2rem,3.5vw,2.8rem);font-weight:800;letter-spacing:-.04em;line-height:1.1}.bento-ttl .dim{color:var(--fg3)}.bento-sub{font-size:.85rem;color:var(--fg2);max-width:280px;text-align:right}.bento-tag{font-size:.7rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--p2);display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.bento-tag:before{content:"";display:block;width:14px;height:1px;background:var(--p2)}.bg{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:80px;gap:1rem}.tile{background:var(--ink2);border:1px solid var(--bdr);border-radius:18px;overflow:hidden;position:relative;opacity:0;transform:translateY(24px);transition:opacity .7s var(--expo),transform .7s var(--expo),border-color .25s,box-shadow .25s}.tile.vis{opacity:1;transform:translateY(0)}.tile:hover{border-color:var(--bdr-a)}.t-about{grid-column:1/6;grid-row:1/6}.t-stat1{grid-column:6/9;grid-row:1/3}.t-stat2{grid-column:9/13;grid-row:1/3}.t-stack{grid-column:6/10;grid-row:3/6}.t-avail{grid-column:10/13;grid-row:3/6}.t-quote{grid-column:4/6;grid-row:10/13}.t-proj1{grid-column:1/8;grid-row:6/10}.t-proj2{grid-column:8/13;grid-row:6/10}.t-exp{grid-column:1/4;grid-row:10/13}.t-skills{grid-column:6/10;grid-row:10/13}.t-contact{grid-column:10/13;grid-row:10/13}.t-about{transition-delay:.05s}.t-stat1{transition-delay:.12s}.t-stat2{transition-delay:.18s}.t-stack{transition-delay:.22s}.t-avail{transition-delay:.28s}.t-quote{transition-delay:.34s}.t-proj1{transition-delay:.1s}.t-proj2{transition-delay:.16s}.t-exp{transition-delay:.05s}.t-skills{transition-delay:.1s}.t-contact{transition-delay:.15s}.tile-inner{position:absolute;inset:0;padding:1.5rem;display:flex;flex-direction:column}.t-about .ti-eyebrow{font-size:.65rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--p2);margin-bottom:.8rem;display:flex;align-items:center;gap:.4rem}.t-about .ti-eyebrow:before{content:"";width:12px;height:1px;background:var(--p2)}.t-about .ti-name{font-family:var(--h);font-size:clamp(1.6rem,2.5vw,2.2rem);font-weight:800;line-height:1.1;letter-spacing:-.04em;margin-bottom:.75rem}.t-about .ti-name .hi{background:linear-gradient(120deg,var(--p1),var(--c1));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.t-about .ti-bio{font-size:.875rem;color:var(--fg2);line-height:1.75;flex:1}.t-about .ti-tags{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:auto;padding-top:.8rem}.t-about .ti-tag{font-size:.68rem;font-weight:600;padding:.22rem .7rem;border-radius:6px;background:rgba(123,92,240,.12);border:1px solid rgba(123,92,240,.22);color:var(--p2);letter-spacing:.04em}.t-about-art{position:absolute;right:-10px;bottom:-10px;width:55%;pointer-events:none;opacity:.15}.tile-stat{padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between;height:100%}.ts-n{font-family:var(--h);font-size:clamp(2.2rem,3vw,3rem);font-weight:800;line-height:1;background:linear-gradient(120deg,var(--p1),var(--c1));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.ts-l{font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--fg3)}.ts-bar{height:2px;background:var(--bdr);border-radius:1px;overflow:hidden;margin-top:.75rem}.ts-bar-f{height:100%;border-radius:1px;background:linear-gradient(90deg,var(--p1),var(--c1));width:0;transition:width 1.4s var(--expo)}.tile-stack{padding:1.4rem;height:100%;display:flex;flex-direction:column}.tsk-hd{font-size:.7rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--fg3);margin-bottom:.85rem}.tsk-pills{display:flex;flex-wrap:wrap;gap:.5rem;flex:1;align-content:flex-start}.tsk-pill{font-size:.72rem;font-weight:500;padding:.28rem .7rem;border-radius:100px;border:1px solid var(--bdr);color:var(--fg2);transition:border-color .25s,color .25s,background .25s}.tsk-pill:hover{border-color:var(--p1);color:var(--p2);background:rgba(123,92,240,.08)}.tile-avail{padding:1.4rem;height:100%;flex-direction:column;text-align:center;background:linear-gradient(135deg,rgba(163,230,53,.06),rgba(6,239,224,.04))}.ta-dot,.tile-avail{display:flex;justify-content:center;align-items:center}.ta-dot{width:36px;height:36px;border-radius:50%;background:rgba(163,230,53,.15);border:2px solid var(--lime);margin:0 auto .75rem;animation:gPulse 2s infinite}.ta-dot:after{content:"";width:12px;height:12px;border-radius:50%;background:var(--lime)}.ta-status{font-family:var(--h);font-size:.95rem;font-weight:700;color:var(--lime);margin-bottom:.35rem}.ta-note{font-size:.72rem;color:var(--fg3)}.tile-quote{padding:1.4rem;height:100%;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(135deg,rgba(6,239,224,.05),rgba(123,92,240,.04))}.tq-mark{font-family:var(--h);font-size:2rem;line-height:.8;color:var(--c1);opacity:.4;margin-bottom:.4rem;flex-shrink:0}.tq-text{font-family:var(--b);font-style:italic;font-size:.78rem;color:var(--fg2);line-height:1.6}.tq-attr{font-size:.65rem;color:var(--fg3);margin-top:.6rem;font-family:var(--m);flex-shrink:0}.tile-proj{height:100%;display:flex;flex-direction:column}.tp-art{flex:1;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center}.tp-body{padding:1.25rem 1.4rem;border-top:1px solid var(--bdr)}.tp-tags{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.5rem}.tp-tag{font-size:.62rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:.18rem .55rem;border-radius:4px;background:rgba(123,92,240,.12);border:1px solid rgba(123,92,240,.2);color:var(--p2)}.tp-name{font-family:var(--h);font-size:1.05rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.3rem}.tp-desc{font-size:.78rem;color:var(--fg2);line-height:1.6}.tp-links{position:absolute;top:.75rem;right:.75rem;display:flex;gap:.4rem;opacity:0;transition:opacity .25s}.tile:hover .tp-links{opacity:1}.tp-lbtn{width:30px;height:30px;background:rgba(10,10,15,.88);border:1px solid var(--bdr);border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--fg2);backdrop-filter:blur(10px);transition:background .2s;cursor:none}.tp-lbtn:hover{background:var(--p1);color:#fff;border-color:var(--p1)}.tile-exp{padding:1.4rem;height:100%;overflow-y:auto}.te-hd{font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--fg3);margin-bottom:1rem}.te-item{display:flex;gap:.75rem;margin-bottom:1.1rem}.te-dot{width:8px;height:8px;border-radius:50%;background:var(--p1);flex-shrink:0;margin-top:4px}.te-yr{font-family:var(--m);font-size:.68rem;color:var(--p1);margin-bottom:.18rem}.te-role{font-size:.83rem;font-weight:600;color:var(--fg);line-height:1.25}.te-co{font-size:.72rem;color:var(--fg3)}.tile-skills{padding:1.4rem;height:100%;display:flex;flex-direction:column;min-height:0}.tskl-hd{font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--fg3);margin-bottom:.9rem;flex-shrink:0}.tskl-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:.25rem;scrollbar-width:thin;scrollbar-color:var(--fg3) transparent}.tskl-scroll::-webkit-scrollbar{width:3px}.tskl-scroll::-webkit-scrollbar-track{background:transparent}.tskl-scroll::-webkit-scrollbar-thumb{background:var(--fg3);border-radius:2px}.tskl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.85rem}.sk{flex-direction:column;gap:.32rem}.sk,.sk-hd{display:flex}.sk-hd{justify-content:space-between;align-items:flex-start;gap:.4rem;flex-wrap:wrap}.sk-name{font-size:.75rem;font-weight:500;color:var(--fg);line-height:1.3}.sk-count{font-size:.58rem;font-weight:700;font-family:var(--m);color:var(--c1);background:rgba(6,239,224,.09);border:1px solid rgba(6,239,224,.18);padding:.14rem .5rem;border-radius:4px;white-space:nowrap;flex-shrink:0}.sk-libs{display:flex;gap:.28rem;flex-wrap:wrap}.sk-lib{font-size:.56rem;color:var(--fg3);padding:.12rem .42rem;border-radius:4px;border:1px solid var(--bdr);font-family:var(--m);line-height:1.6}.tile-contact{padding:1.75rem;height:100%;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(135deg,rgba(123,92,240,.08),rgba(6,239,224,.04))}.tc-ttl{font-family:var(--h);font-size:1.3rem;font-weight:800;letter-spacing:-.03em;line-height:1.15;margin-bottom:.5rem}.tc-sub{font-size:.8rem;color:var(--fg2)}.tc-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.4rem;background:var(--p1);color:#fff;font-family:var(--b);font-size:.83rem;font-weight:600;border:none;border-radius:100px;cursor:none;transition:background .25s,box-shadow .25s;margin-top:auto}.tc-btn:hover{background:var(--p2);box-shadow:0 6px 24px rgba(123,92,240,.4)}.tc-socials{display:flex;gap:.6rem;margin-top:1rem}.tc-soc{width:34px;height:34px;border-radius:9px;border:1px solid var(--bdr);background:transparent;display:flex;align-items:center;justify-content:center;color:var(--fg3);transition:color .2s,border-color .2s,background .2s;cursor:none}.tc-soc:hover{color:var(--p2);border-color:var(--p1);background:rgba(123,92,240,.09)}#more-work{padding:6rem 0;position:relative;z-index:1}.mw-hd-row{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:2.5rem;gap:2rem;flex-wrap:wrap}.mw-ttl{font-family:var(--h);font-size:clamp(2rem,3.5vw,2.8rem);font-weight:800;letter-spacing:-.04em}.mw-ttl .acc{color:var(--p2)}.mw-note{font-size:.82rem;color:var(--fg3);max-width:300px}.mw-filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:3rem}.mw-filter{font-size:.73rem;font-weight:600;letter-spacing:.06em;padding:.4rem 1rem;border-radius:100px;border:1px solid var(--bdr);background:transparent;color:var(--fg3);cursor:none;transition:all .22s;font-family:var(--b)}.mw-filter:hover{border-color:var(--fg3);color:var(--fg)}.mw-filter.active{background:var(--p1);border-color:var(--p1);color:#fff}.pw-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}@media(max-width:1000px){.pw-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.pw-grid{grid-template-columns:1fr}}.pw-card{background:var(--ink2);border:1px solid var(--bdr);border-radius:16px;overflow:hidden;cursor:none;opacity:0;transform:translateY(22px);transition:opacity .55s var(--expo),transform .55s var(--expo),border-color .25s,box-shadow .25s}.pw-card.vis{opacity:1;transform:none}.pw-card:hover{border-color:var(--bdr-a);box-shadow:0 8px 40px rgba(123,92,240,.18)}.pw-card[data-cat].hidden{display:none}.pw-art{height:160px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.pw-art img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--expo)}.pw-card:hover .pw-art img{transform:scale(1.06)}.pw-art-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,rgba(123,92,240,.08),rgba(6,239,224,.05))}.pw-art-placeholder span{font-size:.72rem;color:var(--fg3);text-align:center;padding:1.2rem;line-height:1.6;font-family:var(--b)}.pw-art-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 40%,var(--ink2));pointer-events:none}.pw-year-badge{left:.75rem;font-family:var(--m);font-size:.62rem;font-weight:500;padding:.25rem .65rem;background:rgba(10,10,15,.75);border:1px solid var(--bdr);border-radius:100px}.pw-view-btn,.pw-year-badge{position:absolute;top:.75rem;color:var(--fg3);backdrop-filter:blur(8px)}.pw-view-btn{right:.75rem;width:32px;height:32px;border-radius:50%;background:rgba(10,10,15,.8);border:1px solid var(--bdr);display:flex;align-items:center;justify-content:center;transition:background .2s,color .2s,transform .3s,opacity .2s;opacity:0}.pw-card:hover .pw-view-btn{opacity:1;transform:rotate(-45deg)}.pw-view-btn:hover{background:var(--p1);color:#fff;border-color:var(--p1)}.pw-body{padding:1.1rem 1.25rem 1.25rem}.pw-cats{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:.6rem}.pw-cat{font-size:.58rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.17rem .55rem;border-radius:4px;background:rgba(123,92,240,.12);border:1px solid rgba(123,92,240,.2);color:var(--p2)}.pw-name{font-family:var(--h);font-size:1rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.35rem;line-height:1.2}.pw-desc{font-size:.78rem;color:var(--fg2);line-height:1.65;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pw-footer{display:flex;align-items:center;justify-content:space-between;margin-top:.9rem;padding-top:.8rem;border-top:1px solid var(--bdr)}.pw-stack{display:flex;gap:.3rem;flex-wrap:wrap}.pw-stk{font-size:.6rem;padding:.15rem .45rem;border-radius:4px;border:1px solid var(--bdr)}.pw-gh,.pw-stk{color:var(--fg3)}.pw-gh{display:flex;align-items:center;gap:.3rem;font-size:.68rem;transition:color .2s}.pw-gh:hover{color:var(--p2)}.mw-load-wrap{text-align:center;margin-top:2.5rem}.btn-load{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.8rem;background:transparent;color:var(--fg2);font-family:var(--b);font-size:.85rem;font-weight:500;border:1px solid var(--bdr);border-radius:100px;cursor:none;transition:all .25s}.btn-load:hover{border-color:var(--p1);color:var(--p2);background:rgba(123,92,240,.07)}#proj-modal{position:fixed;inset:0;z-index:50000;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}#proj-modal.open{pointer-events:all}.pm-backdrop{position:absolute;inset:0;background:rgba(5,5,10,.8);backdrop-filter:blur(12px);opacity:0;transition:opacity .35s var(--expo)}#proj-modal.open .pm-backdrop{opacity:1}.pm-sheet{position:relative;width:100%;max-width:860px;max-height:90vh;background:var(--ink2);border:1px solid var(--bdr);border-radius:24px 24px 0 0;overflow-y:auto;transform:translateY(100%);transition:transform .45s var(--expo);scrollbar-width:thin;scrollbar-color:var(--bdr-a) transparent}#proj-modal.open .pm-sheet{transform:translateY(0)}.pm-handle{width:40px;height:4px;background:var(--bdr);border-radius:2px;margin:1rem auto .5rem}.pm-hero{height:240px;position:relative;overflow:hidden;background:var(--ink3);display:flex;align-items:center;justify-content:center}.pm-hero img{width:100%;height:100%;object-fit:cover}.pm-hero-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 30%,var(--ink2))}.pm-close{position:absolute;top:1rem;right:1rem;width:36px;height:36px;background:rgba(10,10,15,.8);border:1px solid var(--bdr);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--fg2);backdrop-filter:blur(8px);cursor:none;transition:background .2s,color .2s}.pm-close:hover{background:var(--rose);color:#fff;border-color:var(--rose)}.pm-body{padding:1.75rem 2rem 2.5rem}.pm-eyebrow{font-size:.68rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--p2);display:flex;align-items:center;gap:.4rem;margin-bottom:.6rem}.pm-eyebrow:before{content:"";width:12px;height:1px;background:var(--p2)}.pm-title{font-family:var(--h);font-size:clamp(1.6rem,3vw,2.2rem);font-weight:800;letter-spacing:-.04em;line-height:1.1;margin-bottom:.75rem}.pm-title .hi{background:linear-gradient(120deg,var(--p1),var(--c1));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.pm-meta{display:flex;gap:1.5rem;flex-wrap:wrap;margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid var(--bdr)}.pm-meta-item{display:flex;flex-direction:column;gap:.2rem}.pm-meta-label{font-size:.62rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--fg3)}.pm-meta-val{font-size:.82rem;color:var(--fg);font-family:var(--m)}.pm-desc{font-size:.9rem;color:var(--fg2);line-height:1.8;margin-bottom:1.5rem}.pm-section-hd{font-size:.68rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--fg3);margin-bottom:.75rem}.pm-stack{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.pm-stk{font-size:.75rem;font-weight:500;padding:.3rem .8rem;border-radius:100px;border:1px solid var(--bdr);color:var(--fg2);background:var(--ink3)}.pm-cols{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:1.75rem}@media(max-width:640px){.pm-cols{grid-template-columns:1fr}}.pm-list{list-style:none;flex-direction:column}.pm-list,.pm-list li{display:flex;gap:.6rem}.pm-list li{align-items:flex-start;font-size:.82rem;color:var(--fg2);line-height:1.6}.pm-list li:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--p1);flex-shrink:0;margin-top:.45rem}.pm-actions{display:flex;gap:.75rem;flex-wrap:wrap}.pm-btn-gh{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.75rem;background:var(--p1);color:#fff;font-family:var(--b);font-size:.88rem;font-weight:600;border-radius:10px;cursor:none;transition:background .25s,box-shadow .25s}.pm-btn-gh:hover{background:var(--p2);box-shadow:0 8px 28px rgba(123,92,240,.4)}.pm-btn-back{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.75rem;background:transparent;color:var(--fg2);font-family:var(--b);font-size:.88rem;font-weight:600;border:1px solid var(--bdr);border-radius:10px;cursor:none;transition:border-color .25s,color .25s}.pm-btn-back:hover{border-color:var(--fg3);color:var(--fg)}@media(max-width:640px){.pm-body{padding:1.25rem 1.25rem 2rem}.pm-hero{height:180px}}#contact{padding:8rem 0 6rem;position:relative;z-index:1}.ct-wrap{max-width:720px;margin:0 auto;text-align:center}.ct-ttl{font-family:var(--h);font-size:clamp(2.5rem,5vw,4rem);font-weight:800;letter-spacing:-.05em;line-height:1.05;margin-bottom:1.25rem}.ct-ttl .acc{background:linear-gradient(120deg,var(--p1),var(--c1));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.ct-sub{font-size:1rem;color:var(--fg2);line-height:1.75;margin-bottom:3rem;max-width:480px;margin-left:auto;margin-right:auto}.ct-form{text-align:left;margin-bottom:2.5rem}.cf-row,.ct-form{display:grid;gap:1rem}.cf-row{grid-template-columns:1fr 1fr}.cf-g{display:flex;flex-direction:column;gap:.4rem}.cf-l{font-size:.75rem;font-weight:500;color:var(--fg2);letter-spacing:.04em}.cf-in,.cf-ta{background:var(--ink2);border:1px solid var(--bdr);border-radius:10px;padding:.8rem 1rem;color:var(--fg);font-family:var(--b);font-size:.9rem;outline:none;transition:border-color .25s,box-shadow .25s;resize:none;width:100%}.cf-in::placeholder,.cf-ta::placeholder{color:var(--fg3)}.cf-in:focus,.cf-ta:focus{border-color:var(--p1);box-shadow:0 0 0 3px rgba(123,92,240,.1)}.cf-ta{min-height:130px}.cf-submit{display:flex;justify-content:center}.btn-send{display:inline-flex;align-items:center;gap:.6rem;padding:.9rem 2.5rem;background:linear-gradient(120deg,var(--p1),#5B21B6);color:#fff;font-family:var(--b);font-size:.95rem;font-weight:600;border:none;border-radius:10px;cursor:none;transition:box-shadow .25s,transform .25s}.btn-send:hover{box-shadow:0 10px 36px rgba(123,92,240,.5);transform:translateY(-2px)}.ct-socials{gap:.75rem}.c-soc,.ct-socials{display:flex;justify-content:center}.c-soc{width:44px;height:44px;background:var(--ink2);border:1px solid var(--bdr);border-radius:12px;align-items:center;color:var(--fg2);transition:color .25s,border-color .25s,background .25s,transform .25s;cursor:none}.c-soc:hover{background:rgba(123,92,240,.1);border-color:var(--p1);color:var(--p2);transform:translateY(-3px)}footer{border-top:1px solid var(--bdr);padding:1.75rem 0;position:relative;z-index:1}.ft{display:flex;justify-content:space-between;align-items:center}.ft span{font-size:.78rem;color:var(--fg3);font-family:var(--m)}.ft b{color:var(--p1)}.rv{opacity:0;transform:translateY(28px);transition:opacity .7s var(--expo),transform .7s var(--expo)}.rv.vis{opacity:1;transform:none}.d1{transition-delay:.08s}.d2{transition-delay:.16s}.d3{transition-delay:.24s}.d4{transition-delay:.32s}.d5{transition-delay:.4s}.wrap{max-width:1280px;margin:0 auto;padding:0 5%}@media(max-width:1100px){.bg{grid-template-columns:repeat(8,1fr)}.t-about{grid-column:1/5;grid-row:1/5}.t-stat1{grid-column:5/7;grid-row:1/3}.t-stat2{grid-column:7/9;grid-row:1/3}.t-stack{grid-column:5/9;grid-row:3/6}.t-avail{grid-column:1/3;grid-row:5/7}.t-quote{grid-column:3/5;grid-row:5/7}.t-proj1{grid-column:1/5;grid-row:7/11}.t-proj2{grid-column:5/9;grid-row:7/11}.t-exp{grid-column:1/3;grid-row:11/15}.t-skills{grid-column:3/6;grid-row:11/15}.t-contact{grid-column:6/9;grid-row:11/15}}@media(max-width:768px){.n-links{display:none}.n-ham{display:flex}.hero-card{display:none}.hero-meta{flex-wrap:wrap;gap:1rem}.bg{grid-template-columns:1fr 1fr;grid-auto-rows:auto}.t-about,.t-avail,.t-contact,.t-exp,.t-proj1,.t-proj2,.t-quote,.t-skills,.t-stack,.t-stat1,.t-stat2{grid-column:unset;grid-row:unset;min-height:180px}.t-about{grid-column:span 2;min-height:360px}.t-proj1,.t-proj2{grid-column:span 2;min-height:280px}.t-contact,.t-exp,.t-skills{grid-column:span 2;min-height:220px}.cf-row{grid-template-columns:1fr}.ft{gap:.5rem;text-align:center}.ft,.mw-hd-row{flex-direction:column}.mw-hd-row{align-items:flex-start}}@media(max-width:480px){.hero-actions{flex-direction:column}.btn-fill,.btn-ghost{justify-content:center}.bg{grid-template-columns:1fr}.t-about{grid-column:1;min-height:380px}.t-proj1,.t-proj2{min-height:240px}}@keyframes upIn{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}