.home-tech{--fg: #f4f2f0;--muted: #8c8c93;--muted-2: #57575e;--line: rgba(255, 255, 255, .1);--line-2: rgba(255, 255, 255, .055);--panel: rgba(255, 255, 255, .018);--accent: #ff6a1a;--green: #39d98a;--disp: "Space Grotesk", system-ui, sans-serif;--code: "JetBrains Mono", ui-monospace, monospace;--sans: "Inter", system-ui, sans-serif;position:relative;min-height:100vh;overflow:hidden;background:#09090b;color:var(--fg);font-family:var(--sans)}.home-tech ::-moz-selection{background:var(--accent);color:#09090b}.home-tech ::selection{background:var(--accent);color:#09090b}.home-tech .grid-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:76px 76px;-webkit-mask-image:radial-gradient(ellipse 110% 85% at 28% 40%,#000 38%,transparent 92%);mask-image:radial-gradient(ellipse 110% 85% at 28% 40%,#000 38%,transparent 92%)}.home-tech .glow{position:absolute;z-index:0;pointer-events:none;width:620px;height:620px;top:-120px;left:-180px;background:radial-gradient(circle,rgba(255,106,26,.09),transparent 66%)}.home-tech .target{position:absolute;z-index:0;pointer-events:none;right:-160px;top:30%;width:520px;height:520px;opacity:.5}.home-tech .target span{position:absolute;inset:0;margin:auto;border:1px solid var(--line-2);border-radius:50%}.home-tech .target .r1{width:520px;height:520px}.home-tech .target .r2{width:360px;height:360px}.home-tech .target .r3{width:200px;height:200px}.home-tech .target .ch{position:absolute;top:50%;left:0;right:0;height:1px;background:var(--line-2);border:0;border-radius:0}.home-tech .target .cv{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line-2);border:0;border-radius:0}.home-tech .wrap{position:relative;z-index:2;max-width:1200px;margin:0 auto;padding:0 40px}.home-tech .content{padding-top:78px}.home-tech .spine{position:fixed;left:16px;top:96px;bottom:20px;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:space-between;pointer-events:none}.home-tech .spine .sq{width:9px;height:9px;background:var(--accent)}.home-tech .spine .vline{width:1px;flex:1;background:var(--line);margin:16px 0}.home-tech .spine .vtext{writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--code);font-size:.68rem;letter-spacing:.28em;color:var(--muted-2);text-transform:uppercase}.home-tech .statusbar{display:flex;align-items:center;justify-content:space-between;font-family:var(--code);font-size:.68rem;letter-spacing:.14em;color:var(--muted-2);text-transform:uppercase;padding:14px 0;border-bottom:1px solid var(--line-2)}.home-tech .statusbar .on{color:var(--green)}.home-tech .hero{position:relative;display:grid;grid-template-columns:1.35fr 1fr;gap:60px;align-items:center;min-height:calc(100vh - 150px);padding:40px 0 60px}.home-tech .hero:before,.home-tech .hero:after{content:"";position:absolute;width:16px;height:16px;pointer-events:none}.home-tech .hero:before{top:8px;left:-14px;border-left:1px solid var(--accent);border-top:1px solid var(--accent)}.home-tech .hero:after{bottom:40px;right:-14px;border-right:1px solid var(--accent);border-bottom:1px solid var(--accent)}.home-tech .kicker{display:flex;align-items:center;gap:16px;font-family:var(--code);font-size:.78rem;letter-spacing:.15em;color:var(--muted);text-transform:uppercase}.home-tech .kicker .idx{color:var(--accent);font-weight:600}.home-tech .kicker .rule{flex:none;width:46px;height:1px;background:var(--line)}.home-tech h1{font-family:var(--disp);font-weight:700;font-size:clamp(3.2rem,8vw,6.6rem);line-height:.9;letter-spacing:-.025em;margin-top:26px}.home-tech h1 .fill{display:block;color:var(--fg)}.home-tech h1 .out{display:block;width:-moz-max-content;width:max-content;color:transparent;-webkit-text-stroke:1.6px rgba(244,242,240,.82)}.home-tech h1 .out .dot{-webkit-text-stroke:0;color:var(--accent)}.home-tech .lede{margin-top:28px;max-width:470px;font-size:1.05rem;color:#c9c7c4}.home-tech .lede b{color:var(--fg);font-weight:600}.home-tech .actions{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap}.home-tech .btn{font-family:var(--code);font-size:.82rem;letter-spacing:.07em;text-transform:uppercase;padding:15px 24px;text-decoration:none;display:inline-flex;align-items:center;gap:10px;cursor:pointer;border:1px solid transparent;transition:all .18s ease}.home-tech .btn-solid{background:var(--accent);color:#09090b;font-weight:600}.home-tech .btn-solid:hover{background:#ff7d38;transform:translateY(-1px)}.home-tech .btn-line{border-color:var(--line);color:var(--fg)}.home-tech .btn-line:hover{border-color:var(--accent);color:var(--accent)}.home-tech .meta{margin-top:50px;display:flex;gap:30px;flex-wrap:wrap;align-items:center;font-family:var(--code);font-size:.74rem;letter-spacing:.07em;color:var(--muted-2);text-transform:uppercase}.home-tech .meta b{color:var(--muted);font-weight:400}.home-tech .meta .on{color:var(--green);display:flex;align-items:center;gap:7px}.home-tech .meta .on i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green)}.home-tech .spec{position:relative;border:1px solid var(--line);background:var(--panel);padding:30px 28px}.home-tech .spec .cnr{position:absolute;width:13px;height:13px;border:1px solid var(--accent)}.home-tech .spec .cnr.tl{top:-1px;left:-1px;border-right:0;border-bottom:0}.home-tech .spec .cnr.tr{top:-1px;right:-1px;border-left:0;border-bottom:0}.home-tech .spec .cnr.bl{bottom:-1px;left:-1px;border-right:0;border-top:0}.home-tech .spec .cnr.br{bottom:-1px;right:-1px;border-left:0;border-top:0}.home-tech .spec h2{display:flex;justify-content:space-between;align-items:center;font-family:var(--code);font-size:.76rem;letter-spacing:.1em;color:var(--muted);text-transform:uppercase;padding-bottom:16px;margin-bottom:6px;border-bottom:1px solid var(--line)}.home-tech .spec h2 .l span{color:var(--accent)}.home-tech .spec h2 .ver{color:var(--muted-2);font-size:.68rem}.home-tech .row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:13px 0;border-bottom:1px dashed var(--line-2)}.home-tech .row .k{font-family:var(--code);font-size:.72rem;letter-spacing:.08em;color:var(--muted-2);text-transform:uppercase}.home-tech .row .val{font-family:var(--disp);font-weight:500;font-size:.98rem;text-align:right}.home-tech .row .val small{font-family:var(--code);font-weight:400;font-size:.78rem;color:var(--muted)}.home-tech .row .val .tick{color:var(--green);margin-right:6px}.home-tech .cap{padding-top:18px;margin-top:8px}.home-tech .cap .lab{display:flex;justify-content:space-between;font-family:var(--code);font-size:.7rem;letter-spacing:.08em;color:var(--muted-2);text-transform:uppercase;margin-bottom:0}.home-tech .cap .lab b{color:var(--accent);font-weight:500}.home-tech .cap .segs{display:flex;gap:5px}.home-tech .cap .segs i{flex:1;height:6px;background:#ffffff12}.home-tech .cap .segs i.on{background:var(--accent)}.home-tech .strip{position:relative;z-index:2;border-top:1px solid var(--line);background:#09090b99}.home-tech .strip-in{max-width:1200px;margin:0 auto;padding:15px 40px;display:flex;gap:24px;flex-wrap:wrap;align-items:center;font-family:var(--code);font-size:.74rem;letter-spacing:.09em;color:var(--muted-2);text-transform:uppercase}.home-tech .strip-in .lead{color:var(--accent)}.home-tech .strip-in span{color:var(--muted)}@media(max-width:900px){.home-tech .spine,.home-tech .statusbar .mid{display:none}.home-tech .hero{grid-template-columns:1fr;gap:40px;min-height:auto;padding-top:20px}.home-tech .hero:before,.home-tech .hero:after{display:none}.home-tech .target{display:none}}.projects-tech{--fg: #f4f2f0;--muted: #8c8c93;--muted-2: #57575e;--line: rgba(255, 255, 255, .1);--line-2: rgba(255, 255, 255, .06);--panel: rgba(255, 255, 255, .02);--panel-h: rgba(255, 255, 255, .04);--accent: #ff6a1a;--green: #39d98a;--disp: "Space Grotesk", system-ui, sans-serif;--code: "JetBrains Mono", ui-monospace, monospace;--sans: "Inter", system-ui, sans-serif;position:relative;min-height:100vh;overflow:hidden;background:#09090b;color:var(--fg);font-family:var(--sans)}.projects-tech ::-moz-selection{background:var(--accent);color:#09090b}.projects-tech ::selection{background:var(--accent);color:#09090b}.projects-tech .grid-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:76px 76px;-webkit-mask-image:radial-gradient(ellipse 120% 60% at 50% 0%,#000 42%,transparent 86%);mask-image:radial-gradient(ellipse 120% 60% at 50% 0%,#000 42%,transparent 86%)}.projects-tech .wrap{position:relative;z-index:2;max-width:1200px;margin:0 auto;padding:0 40px 70px}.projects-tech .phead{padding:120px 0 32px;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;border-bottom:1px solid var(--line)}.projects-tech .kicker{display:flex;align-items:center;gap:14px;font-family:var(--code);font-size:.76rem;letter-spacing:.15em;color:var(--muted);text-transform:uppercase}.projects-tech .kicker .idx{color:var(--accent);font-weight:600}.projects-tech .kicker .rule{width:40px;height:1px;background:var(--line)}.projects-tech .phead h1{font-family:var(--disp);font-weight:700;font-size:clamp(2.4rem,5vw,3.6rem);letter-spacing:-.02em;margin-top:16px;line-height:1}.projects-tech .phead .sub{margin-top:12px;color:var(--muted);max-width:440px;font-size:.98rem}.projects-tech .count{font-family:var(--code);font-size:.78rem;letter-spacing:.12em;color:var(--muted-2);text-transform:uppercase;border:1px solid var(--line);padding:9px 14px;white-space:nowrap}.projects-tech .count b{color:var(--accent);font-weight:500}.projects-tech .sectlabel{margin:44px 0 18px;display:flex;align-items:center;gap:14px;font-family:var(--code);font-size:.72rem;letter-spacing:.16em;color:var(--muted-2);text-transform:uppercase}.projects-tech .sectlabel:after{content:"";flex:1;height:1px;background:var(--line-2)}.projects-tech .sectlabel b{color:var(--accent);font-weight:500}.projects-tech .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.projects-tech .card{position:relative;overflow:hidden;border:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;transition:border-color .22s,background .22s,transform .22s}.projects-tech .card:hover{border-color:#ff6a1a8c;background:var(--panel-h);transform:translateY(-4px)}.projects-tech .thumb{border-bottom:1px solid var(--line);background:#0d0d10}.projects-tech .bbar{height:30px;display:flex;align-items:center;gap:8px;padding:0 11px;background:#141418;border-bottom:1px solid var(--line)}.projects-tech .bbar .dots{display:flex;gap:5px}.projects-tech .bbar .dots i{width:8px;height:8px;border-radius:50%}.projects-tech .bbar .dots .r{background:#ff5f57}.projects-tech .bbar .dots .y{background:#febc2e}.projects-tech .bbar .dots .g{background:#28c840}.projects-tech .bbar .url{flex:1;height:18px;background:#0d0d10;border:1px solid var(--line);border-radius:5px;display:flex;align-items:center;gap:6px;padding:0 8px;font-family:var(--code);font-size:.62rem;color:var(--muted)}.projects-tech .bbar .url svg{width:9px;height:9px;stroke:var(--green)}.projects-tech .bbar .st{font-family:var(--code);font-size:.6rem;letter-spacing:.06em;color:var(--green);display:flex;align-items:center;gap:5px;text-transform:uppercase}.projects-tech .bbar .st i{width:6px;height:6px;border-radius:50%;background:var(--green)}.projects-tech .shot{display:block;position:relative;width:100%;aspect-ratio:16 / 9.4;overflow:hidden}.projects-tech .shot img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:top;object-position:top;filter:grayscale(.12) brightness(.92);transition:filter .3s,transform .45s}.projects-tech .card:hover .shot img{filter:none;transform:scale(1.05)}.projects-tech .shot .ovl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#09090bb8;opacity:0;transition:opacity .25s}.projects-tech .shot .ovl .ovl-btn{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--accent);background:#ff6a1a24;color:var(--fg);font-family:var(--code);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;padding:10px 18px;transform:translateY(6px);transition:transform .25s}.projects-tech .shot .ovl .ovl-btn b{color:var(--accent);font-weight:600}.projects-tech .card:hover .shot .ovl{opacity:1}.projects-tech .card:hover .shot .ovl .ovl-btn{transform:translateY(0)}.projects-tech .thumb.icon{position:relative;aspect-ratio:16 / 9.4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:radial-gradient(circle at 50% 42%,rgba(255,106,26,.09),transparent 60%),#0d0d10}.projects-tech .thumb.icon:before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:26px 26px;opacity:.6}.projects-tech .thumb.icon svg{position:relative;width:46px;height:46px;stroke:var(--accent);fill:none;stroke-width:1.5}.projects-tech .thumb.icon .handle{position:relative;font-family:var(--code);font-size:.7rem;color:var(--muted);letter-spacing:.04em}.projects-tech .thumb.icon .st{position:absolute;top:10px;right:10px;font-family:var(--code);font-size:.62rem;letter-spacing:.06em;color:var(--green);display:flex;align-items:center;gap:5px;text-transform:uppercase}.projects-tech .thumb.icon .st i{width:6px;height:6px;border-radius:50%;background:var(--green)}.projects-tech .thumb.icon .st.int{color:var(--muted)}.projects-tech .thumb.icon .st.int i{background:var(--muted-2)}.projects-tech .body{padding:18px 20px;display:flex;flex-direction:column;flex:1}.projects-tech .body .cat{font-family:var(--code);font-size:.66rem;letter-spacing:.1em;color:var(--muted-2);text-transform:uppercase;display:flex;gap:8px}.projects-tech .body .cat b{color:var(--accent);font-weight:500}.projects-tech .body h3{font-family:var(--disp);font-weight:600;font-size:1.24rem;letter-spacing:-.01em;line-height:1.15;margin-top:8px}.projects-tech .body p{margin-top:9px;color:var(--muted);font-size:.88rem;line-height:1.55;flex:1}.projects-tech .tags{margin-top:15px;display:flex;flex-wrap:wrap;gap:6px}.projects-tech .tag{font-family:var(--code);font-size:.67rem;color:var(--muted);border:1px solid var(--line);padding:4px 8px}.projects-tech .foot{margin-top:16px;padding-top:13px;border-top:1px dashed var(--line-2);display:flex;justify-content:space-between;align-items:center}.projects-tech .foot a{font-family:var(--code);font-size:.72rem;letter-spacing:.06em;color:var(--fg);text-decoration:none;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px;transition:color .2s,gap .2s}.projects-tech .foot a:hover{color:var(--accent)}.projects-tech .card:hover .foot a{gap:12px}.projects-tech .foot .src{color:var(--muted-2);font-family:var(--code);font-size:.66rem;text-transform:uppercase}@media(max-width:980px){.projects-tech .grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.projects-tech .grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.projects-tech .card,.projects-tech .shot img{transition:none!important}}.about-tech{--fg: #f4f2f0;--muted: #8c8c93;--muted-2: #57575e;--line: rgba(255, 255, 255, .1);--line-2: rgba(255, 255, 255, .06);--panel: rgba(255, 255, 255, .02);--accent: #ff6a1a;--disp: "Space Grotesk", system-ui, sans-serif;--code: "JetBrains Mono", ui-monospace, monospace;--sans: "Inter", system-ui, sans-serif;position:relative;min-height:100vh;overflow:hidden;background:#09090b;color:var(--fg);font-family:var(--sans)}.about-tech ::-moz-selection{background:var(--accent);color:#09090b}.about-tech ::selection{background:var(--accent);color:#09090b}.about-tech .grid-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:76px 76px;-webkit-mask-image:radial-gradient(ellipse 120% 55% at 50% 0%,#000 42%,transparent 86%);mask-image:radial-gradient(ellipse 120% 55% at 50% 0%,#000 42%,transparent 86%)}.about-tech .wrap{position:relative;z-index:2;max-width:1200px;margin:0 auto;padding:0 40px 70px}.about-tech .phead{padding:120px 0 30px;border-bottom:1px solid var(--line)}.about-tech .kicker{display:flex;align-items:center;gap:14px;font-family:var(--code);font-size:.76rem;letter-spacing:.15em;color:var(--muted);text-transform:uppercase}.about-tech .kicker .idx{color:var(--accent);font-weight:600}.about-tech .kicker .rule{width:40px;height:1px;background:var(--line)}.about-tech .phead h1{font-family:var(--disp);font-weight:700;font-size:clamp(2.4rem,5vw,3.6rem);letter-spacing:-.02em;margin-top:16px;line-height:1}.about-tech .top{margin-top:34px;display:grid;grid-template-columns:1.35fr 1fr;gap:20px;align-items:stretch}.about-tech .bio{display:flex;flex-direction:column;justify-content:center}.about-tech .bio .lead{font-family:var(--disp);font-weight:600;font-size:2rem;line-height:1.25;letter-spacing:-.015em}.about-tech .bio .lead b{color:var(--accent);font-weight:600}.about-tech .bio .sub{margin-top:20px;color:var(--muted);font-size:1.02rem;line-height:1.65;max-width:520px}.about-tech .bio .sub b{color:var(--fg);font-weight:600}.about-tech .spec{position:relative;border:1px solid var(--line);background:var(--panel);padding:24px}.about-tech .spec .cnr{position:absolute;width:12px;height:12px;border:1px solid var(--accent)}.about-tech .spec .cnr.tl{top:-1px;left:-1px;border-right:0;border-bottom:0}.about-tech .spec .cnr.br{bottom:-1px;right:-1px;border-left:0;border-top:0}.about-tech .spec h2{font-family:var(--code);font-size:.72rem;letter-spacing:.1em;color:var(--muted);text-transform:uppercase;padding-bottom:12px;margin-bottom:4px;border-bottom:1px solid var(--line)}.about-tech .spec h2 span{color:var(--accent)}.about-tech .srow{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:11px 0;border-bottom:1px dashed var(--line-2)}.about-tech .srow:last-child{border-bottom:0;padding-bottom:0}.about-tech .srow .k{font-family:var(--code);font-size:.66rem;letter-spacing:.08em;color:var(--muted-2);text-transform:uppercase}.about-tech .srow .v{font-family:var(--disp);font-weight:500;font-size:.94rem;text-align:right}.about-tech .sectlabel{margin:50px 0 18px;display:flex;align-items:center;gap:14px;font-family:var(--code);font-size:.72rem;letter-spacing:.16em;color:var(--muted-2);text-transform:uppercase}.about-tech .sectlabel:after{content:"";flex:1;height:1px;background:var(--line-2)}.about-tech .sectlabel b{color:var(--accent);font-weight:500}.about-tech .exp{border:1px solid var(--line);background:var(--panel);padding:24px 26px}.about-tech .exp .ehead{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}.about-tech .exp .ehead .role{font-family:var(--disp);font-weight:600;font-size:1.2rem}.about-tech .exp .ehead .role small{color:var(--muted);font-weight:400;font-size:.9rem;margin-left:8px}.about-tech .exp .ehead .period{font-family:var(--code);font-size:.76rem;letter-spacing:.06em;color:var(--accent);border:1px solid rgba(255,106,26,.35);padding:6px 12px;white-space:nowrap}.about-tech .cols{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:16px;margin-top:16px}.about-tech .mod{border:1px solid var(--line);background:var(--panel);padding:22px}.about-tech .mod h3{font-family:var(--code);font-size:.72rem;letter-spacing:.08em;color:var(--muted);text-transform:uppercase;padding-bottom:12px;margin-bottom:14px;border-bottom:1px solid var(--line)}.about-tech .mod h3 b{color:var(--accent)}.about-tech .chips{display:flex;flex-wrap:wrap;gap:7px}.about-tech .chip{font-family:var(--code);font-size:.72rem;color:var(--muted);border:1px solid var(--line);padding:6px 11px}.about-tech .lang{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px dashed var(--line-2)}.about-tech .lang:last-child{border-bottom:0}.about-tech .lang .n{font-size:.95rem}.about-tech .lang .t{font-family:var(--code);font-size:.68rem;color:var(--accent);text-transform:uppercase}.about-tech .lang .t.mut{color:var(--muted-2)}.about-tech .edu .e{padding:9px 0;border-bottom:1px dashed var(--line-2)}.about-tech .edu .e:last-child{border-bottom:0}.about-tech .edu .e .d{font-family:var(--disp);font-weight:500;font-size:.96rem}.about-tech .edu .e .m{font-family:var(--code);font-size:.66rem;color:var(--muted-2);text-transform:uppercase;margin-top:3px;letter-spacing:.04em}@media(max-width:900px){.about-tech .top,.about-tech .cols{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.about-tech *{animation:none!important}}.skills-tech{--fg: #f4f2f0;--muted: #8c8c93;--muted-2: #57575e;--line: rgba(255, 255, 255, .1);--line-2: rgba(255, 255, 255, .06);--panel: rgba(255, 255, 255, .02);--accent: #ff6a1a;--disp: "Space Grotesk", system-ui, sans-serif;--code: "JetBrains Mono", ui-monospace, monospace;--sans: "Inter", system-ui, sans-serif;position:relative;min-height:100vh;overflow:hidden;background:#09090b;color:var(--fg);font-family:var(--sans)}.skills-tech ::-moz-selection{background:var(--accent);color:#09090b}.skills-tech ::selection{background:var(--accent);color:#09090b}.skills-tech .grid-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:76px 76px;-webkit-mask-image:radial-gradient(ellipse 120% 55% at 50% 0%,#000 42%,transparent 86%);mask-image:radial-gradient(ellipse 120% 55% at 50% 0%,#000 42%,transparent 86%)}.skills-tech .wrap{position:relative;z-index:2;max-width:1200px;margin:0 auto;padding:0 40px 70px}.skills-tech .phead{padding:120px 0 30px;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;border-bottom:1px solid var(--line)}.skills-tech .kicker{display:flex;align-items:center;gap:14px;font-family:var(--code);font-size:.76rem;letter-spacing:.15em;color:var(--muted);text-transform:uppercase}.skills-tech .kicker .idx{color:var(--accent);font-weight:600}.skills-tech .kicker .rule{width:40px;height:1px;background:var(--line)}.skills-tech .phead h1{font-family:var(--disp);font-weight:700;font-size:clamp(2.4rem,5vw,3.6rem);letter-spacing:-.02em;margin-top:16px;line-height:1}.skills-tech .phead .sub{margin-top:12px;color:var(--muted);max-width:440px;font-size:.98rem}.skills-tech .legend{font-family:var(--code);font-size:.7rem;letter-spacing:.06em;color:var(--muted-2);text-transform:uppercase;text-align:right;line-height:2}.skills-tech .legend .lg{display:inline-flex;gap:3px;margin-right:8px;vertical-align:-1px}.skills-tech .legend .lg i{width:7px;height:7px;background:var(--accent)}.skills-tech .legend .lg i.off{background:transparent;border:1px solid var(--line)}.skills-tech .grid{margin-top:26px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.skills-tech .mod{border:1px solid var(--line);background:var(--panel);padding:22px 22px 18px}.skills-tech .mod .mhead{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;margin-bottom:10px;border-bottom:1px solid var(--line)}.skills-tech .mod .mhead .t{font-family:var(--code);font-size:.76rem;letter-spacing:.08em;color:var(--fg);text-transform:uppercase}.skills-tech .mod .mhead .t b{color:var(--accent)}.skills-tech .mod .mhead .c{font-family:var(--code);font-size:.66rem;color:var(--muted-2)}.skills-tech .skill{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0}.skills-tech .skill .n{font-size:.94rem;color:var(--fg)}.skills-tech .lvl{display:flex;gap:4px;flex:none}.skills-tech .lvl i{width:9px;height:9px;background:var(--accent)}.skills-tech .lvl i.off{background:transparent;border:1px solid var(--line)}@media(max-width:900px){.skills-tech .grid{grid-template-columns:repeat(2,1fr)}.skills-tech .legend{text-align:left}}@media(max-width:600px){.skills-tech .grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.skills-tech *{animation:none!important}}.contact-tech{--fg: #f4f2f0;--muted: #8c8c93;--muted-2: #57575e;--line: rgba(255, 255, 255, .1);--line-2: rgba(255, 255, 255, .06);--panel: rgba(255, 255, 255, .02);--panel-h: rgba(255, 255, 255, .04);--accent: #ff6a1a;--green: #39d98a;--disp: "Space Grotesk", system-ui, sans-serif;--code: "JetBrains Mono", ui-monospace, monospace;--sans: "Inter", system-ui, sans-serif;position:relative;min-height:100vh;overflow:hidden;background:#09090b;color:var(--fg);font-family:var(--sans)}.contact-tech ::-moz-selection{background:var(--accent);color:#09090b}.contact-tech ::selection{background:var(--accent);color:#09090b}.contact-tech .grid-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:76px 76px;-webkit-mask-image:radial-gradient(ellipse 120% 55% at 50% 0%,#000 42%,transparent 86%);mask-image:radial-gradient(ellipse 120% 55% at 50% 0%,#000 42%,transparent 86%)}.contact-tech .wrap{position:relative;z-index:2;max-width:1200px;margin:0 auto;padding:0 40px 70px}.contact-tech .phead{padding:120px 0 30px;border-bottom:1px solid var(--line)}.contact-tech .kicker{display:flex;align-items:center;gap:14px;font-family:var(--code);font-size:.76rem;letter-spacing:.15em;color:var(--muted);text-transform:uppercase}.contact-tech .kicker .idx{color:var(--accent);font-weight:600}.contact-tech .kicker .rule{width:40px;height:1px;background:var(--line)}.contact-tech .phead h1{font-family:var(--disp);font-weight:700;font-size:clamp(2.4rem,5vw,3.6rem);letter-spacing:-.02em;margin-top:16px;line-height:1}.contact-tech .top{margin-top:34px;display:grid;grid-template-columns:1.15fr 1fr;gap:20px;align-items:stretch}.contact-tech .intro{display:flex;flex-direction:column;justify-content:center}.contact-tech .badge{display:inline-flex;align-items:center;gap:8px;font-family:var(--code);font-size:.72rem;letter-spacing:.06em;color:var(--green);text-transform:uppercase;border:1px solid rgba(57,217,138,.25);padding:6px 12px;width:-moz-max-content;width:max-content}.contact-tech .badge i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green)}.contact-tech .intro .lead{margin-top:18px;font-family:var(--disp);font-weight:600;font-size:1.9rem;line-height:1.25;letter-spacing:-.015em}.contact-tech .intro .lead b{color:var(--accent)}.contact-tech .intro .sub{margin-top:16px;color:var(--muted);font-size:1rem;line-height:1.6;max-width:460px}.contact-tech .wa{position:relative;border:1px solid rgba(255,106,26,.4);background:#ff6a1a0f;padding:26px;display:flex;flex-direction:column;justify-content:center}.contact-tech .wa .cnr{position:absolute;width:12px;height:12px;border:1px solid var(--accent)}.contact-tech .wa .cnr.tr{top:-1px;right:-1px;border-left:0;border-bottom:0}.contact-tech .wa .cnr.bl{bottom:-1px;left:-1px;border-right:0;border-top:0}.contact-tech .wa .ic{width:46px;height:46px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);background:#ffffff08}.contact-tech .wa .ic svg{width:24px;height:24px;stroke:var(--accent);fill:none;stroke-width:1.7}.contact-tech .wa h3{font-family:var(--disp);font-weight:600;font-size:1.35rem;margin-top:16px}.contact-tech .wa p{color:var(--muted);font-size:.92rem;margin-top:5px}.contact-tech .wa .btn{margin-top:18px;align-self:flex-start;font-family:var(--code);font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;background:var(--accent);color:#09090b;font-weight:600;padding:13px 22px;text-decoration:none;display:inline-flex;align-items:center;gap:9px;transition:.18s}.contact-tech .wa .btn:hover{background:#ff7d38;transform:translateY(-1px)}.contact-tech .sectlabel{margin:50px 0 18px;display:flex;align-items:center;gap:14px;font-family:var(--code);font-size:.72rem;letter-spacing:.16em;color:var(--muted-2);text-transform:uppercase}.contact-tech .sectlabel:after{content:"";flex:1;height:1px;background:var(--line-2)}.contact-tech .sectlabel b{color:var(--accent);font-weight:500}.contact-tech .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.contact-tech .chan{display:flex;align-items:center;gap:15px;border:1px solid var(--line);background:var(--panel);padding:20px;text-decoration:none;transition:border-color .2s,background .2s,transform .2s}.contact-tech .chan:hover{border-color:#ff6a1a80;background:var(--panel-h);transform:translateY(-3px)}.contact-tech .chan .ic{width:42px;height:42px;flex:none;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);background:#ff6a1a0d}.contact-tech .chan .ic svg{width:20px;height:20px;stroke:var(--accent);fill:none;stroke-width:1.7}.contact-tech .chan .info{min-width:0;display:flex;flex-direction:column}.contact-tech .chan .info .l{font-family:var(--code);font-size:.66rem;letter-spacing:.1em;color:var(--muted-2);text-transform:uppercase}.contact-tech .chan .info .v{font-family:var(--disp);font-weight:500;font-size:1rem;color:var(--fg);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contact-tech .chan .ar{margin-left:auto;font-family:var(--code);color:var(--muted-2);transition:color .2s,transform .2s}.contact-tech .chan:hover .ar{color:var(--accent);transform:translate(2px,-2px)}@media(max-width:900px){.contact-tech .top{grid-template-columns:1fr}.contact-tech .grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.contact-tech .grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.contact-tech *{animation:none!important;transition:none!important}}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-inset-1{inset:-.25rem}.-bottom-1{bottom:-.25rem}.left-0{left:0}.top-0{top:0}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.ml-2{margin-left:.5rem}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\[1px\]{height:1px}.h-\[2px\]{height:2px}.max-h-0{max-height:0px}.max-h-96{max-height:24rem}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-full{width:100%}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.flex-grow{flex-grow:1}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-10{gap:2.5rem}.gap-6{gap:1.5rem}.overflow-hidden{overflow:hidden}.rounded-lg{border-radius:.5rem}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-white\/10{border-color:#ffffff1a}.bg-black\/30{background-color:#0000004d}.bg-black\/50{background-color:#00000080}.bg-black\/70{background-color:#000000b3}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-white\/5{background-color:#ffffff0d}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-orange-400{--tw-gradient-from: #fb923c var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 146 60 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-orange-500\/40{--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(249 115 22 / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-red-500{--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #ef4444 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-orange-400{--tw-gradient-to: #fb923c var(--tw-gradient-to-position)}.to-red-500{--tw-gradient-to: #ef4444 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-2{padding:.5rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-bold{font-weight:700}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.blur-lg{--tw-blur: blur(16px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-lg{--tw-backdrop-blur: blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}html,body,#root{height:100%}body{margin:0;background:#020617;font-family:system-ui,-apple-system,sans-serif}.gradient-bg{background:radial-gradient(circle at 20% 30%,rgba(255,120,0,.35),transparent 40%),radial-gradient(circle at 80% 70%,rgba(255,60,0,.3),transparent 45%),radial-gradient(circle at 50% 80%,rgba(255,150,0,.2),transparent 60%),linear-gradient(180deg,#020617,#020617);background-size:200% 200%;animation:auroraShift 10s ease-in-out infinite}@keyframes auroraShift{0%{filter:brightness(.7) saturate(1)}50%{filter:brightness(1.3) saturate(1.4)}to{filter:brightness(.7) saturate(1)}}.glass{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:#ffffff0d;border:1px solid rgba(255,255,255,.1)}.hover\:bg-orange-500\/20:hover{background-color:#f9731633}.hover\:text-orange-400:hover{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:w-full{width:100%}.group:hover .group-hover\:text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-40{opacity:.4}@media(min-width:768px){.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}
