* { box-sizing: border-box; } body {margin: 0;}:root{--gjs-t-color-primary:#e5e7eb;--gjs-t-color-secondary:#9ca3af;--gjs-t-color-accent:#60a5fa;--gjs-t-color-success:#34d399;--gjs-t-color-warning:#fbbf24;--gjs-t-color-error:#f87171;}html{scroll-behavior:smooth;}.gjs-t-body{background-color:#121212;color:#e5e7eb;font-size:16px;line-height:1.6;}.gjs-t-h1{color:#f9fafb;font-size:64px;line-height:1;}.gjs-t-h2{color:#f3f4f6;font-size:28px;line-height:1.2;}.gjs-t-button{background-color:#1f2937;color:#f9fafb;border-radius:16px;}.gjs-t-link{color:#d1d5db;text-decoration:none;}.gjs-t-border{border-radius:16px;border-color:#2a2a2a;}*, ::before, ::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb;}html, :host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-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]){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:-0.25em;}sup{top:-0.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::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]{display:none;}.cls-p2ju05{min-height:100vh;font-family:'Inter',sans-serif;}.cls-p2ju05 *::selection{background-color:rgb(255 255 255 / 0.1);color:rgb(255 255 255 / 1);}.cls-p2ju05::selection{background-color:rgb(255 255 255 / 0.1);color:rgb(255 255 255 / 1);}.page-wrapper{min-height:100vh;background-color:rgb(18 18 18 / 1);color:rgb(229 231 235 / 1);}.main-content{margin-left:auto;margin-right:auto;max-width:80rem;padding-left:2rem;padding-right:2rem;padding-top:2rem;padding-bottom:2rem;}.portfolio-grid{display:grid;grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.25rem;}.hero-card{grid-column:span 7 / span 7;border-radius:1rem;border-width:1px;background-color:rgb(30 30 30 / 1);padding:2rem;box-shadow:0 0 #0000, 0 0 #0000, 0 0 0 1px rgba(255, 255, 255, 0.01);}.hero-inner{display:flex;height:100%;flex-direction:column;justify-content:space-between;gap:2.5rem;}.hero-top{display:flex;flex-direction:column;gap:1.25rem;}.eyebrow-row{display:flex;align-items:center;gap:0.75rem;font-size:0.875rem;line-height:1.25rem;color:rgb(156 163 175 / 1);}.status-dot{height:0.625rem;width:0.625rem;border-radius:9999px;background-color:rgb(52 211 153 / 1);}.status-text{text-transform:uppercase;letter-spacing:0.18em;}.hero-heading-group{display:flex;flex-direction:column;gap:1rem;}.main-title{font-size:4.5rem;line-height:1;font-weight:600;letter-spacing:-0.05em;color:rgb(255 255 255 / 1);font-family:'Space+Grotesk',sans-serif;}.hero-description{max-width:42rem;font-size:1.125rem;line-height:2rem;color:rgb(209 213 219 / 1);}.hero-bottom{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:1rem;}.metric-card{border-radius:1rem;border-width:1px;background-color:rgb(255 255 255 / 0.02);padding:1rem;}.metric-label{font-size:0.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:0.18em;color:rgb(107 114 128 / 1);}.metric-value{margin-top:0.5rem;font-size:1rem;line-height:1.5rem;font-weight:500;color:rgb(243 244 246 / 1);}.signal-card{grid-column:span 5 / span 5;border-radius:1rem;border-width:1px;background-color:rgb(30 30 30 / 1);padding:2rem;}.signal-inner{display:flex;height:100%;flex-direction:column;gap:2rem;}.signal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;}.signal-title-group{display:flex;flex-direction:column;gap:0.5rem;}.section-label{font-size:0.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:0.18em;color:rgb(107 114 128 / 1);}.section-title{font-size:1.875rem;line-height:2.25rem;font-weight:600;letter-spacing:-0.03em;color:rgb(255 255 255 / 1);font-family:'Space+Grotesk',sans-serif;}.icon-badge{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:1rem;border-width:1px;background-color:rgb(255 255 255 / 0.03);}.profile-icon{height:1.5rem;width:1.5rem;}.signal-panel{border-radius:1rem;border-width:1px;background-image:linear-gradient(to bottom right, rgb(255 255 255 / 0.04), rgb(255 255 255 / 0.01));padding:1.25rem;}.signal-text{font-size:1rem;line-height:1.75rem;color:rgb(209 213 219 / 1);}.signal-stats{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:1rem;}.stat-item{border-radius:1rem;border-width:1px;padding:1rem;}.stat-number{font-size:1.5rem;line-height:2rem;font-weight:600;letter-spacing:-0.04em;color:rgb(255 255 255 / 1);}.stat-label{margin-top:0.25rem;font-size:0.875rem;line-height:1.25rem;color:rgb(156 163 175 / 1);}.tech-stack-card{grid-column:span 4 / span 4;border-radius:1rem;border-width:1px;background-color:rgb(30 30 30 / 1);padding:2rem;}.tech-stack-inner{display:flex;height:100%;flex-direction:column;gap:1.5rem;}.section-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;}.section-heading-group{display:flex;flex-direction:column;gap:0.5rem;}.stack-icon{height:1.5rem;width:1.5rem;}.tag-list{display:flex;flex-wrap:wrap;gap:0.75rem;}.tech-tag{border-radius:9999px;border-width:1px;border-color:rgb(255 255 255 / 0.1);background-color:rgb(255 255 255 / 0.03);padding-left:1rem;padding-right:1rem;padding-top:0.5rem;padding-bottom:0.5rem;font-size:0.875rem;line-height:1.25rem;color:rgb(229 231 235 / 1);transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}.tech-tag:hover{border-color:rgb(96 165 250 / 0.4);color:rgb(255 255 255 / 1);}.tech-stack-note{border-radius:1rem;border-width:1px;background-color:rgb(255 255 255 / 0.02);padding:1.25rem;}.note-text{font-size:0.875rem;line-height:1.75rem;color:rgb(156 163 175 / 1);}.experience-card{grid-column:span 5 / span 5;border-radius:1rem;border-width:1px;background-color:rgb(30 30 30 / 1);padding:2rem;}.experience-inner{display:flex;height:100%;flex-direction:column;gap:1.5rem;}.experience-icon{height:1.5rem;width:1.5rem;}.experience-description{font-size:1rem;line-height:2rem;color:rgb(209 213 219 / 1);}.experience-highlights{display:grid;grid-template-columns:repeat(1, minmax(0, 1fr));gap:0.75rem;}.highlight-item{display:flex;align-items:flex-start;gap:0.75rem;border-radius:1rem;border-width:1px;background-color:rgb(255 255 255 / 0.02);padding:1rem;}.highlight-dot{margin-top:0.5rem;height:0.5rem;width:0.5rem;border-radius:9999px;background-color:rgb(52 211 153 / 1);}.highlight-text{font-size:0.875rem;line-height:1.75rem;color:rgb(156 163 175 / 1);}.accent-card{grid-column:span 3 / span 3;border-radius:1rem;border-width:1px;background-color:rgb(30 30 30 / 1);padding:2rem;}.accent-inner{display:flex;height:100%;flex-direction:column;justify-content:space-between;gap:2rem;}.accent-header{display:flex;flex-direction:column;gap:0.5rem;}.accent-title{font-size:1.5rem;line-height:2rem;font-weight:600;letter-spacing:-0.03em;color:rgb(255 255 255 / 1);font-family:'Space+Grotesk',sans-serif;}.accent-visual{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:0.75rem;}.visual-cell{height:4rem;border-radius:1rem;border-width:1px;background-color:rgb(52 211 153 / 0.1);}.accent-text{font-size:0.875rem;line-height:1.75rem;color:rgb(156 163 175 / 1);}.contact-card{grid-column:span 12 / span 12;border-radius:1rem;border-width:1px;background-color:rgb(30 30 30 / 1);padding:2rem;}.footer-inner{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;}.footer-content{display:flex;flex-direction:column;gap:0.75rem;}.footer-title{font-size:1.875rem;line-height:2.25rem;font-weight:600;letter-spacing:-0.03em;color:rgb(255 255 255 / 1);font-family:'Space+Grotesk',sans-serif;}.footer-description{max-width:42rem;font-size:1rem;line-height:1.75rem;color:rgb(156 163 175 / 1);}.contact-link{border-radius:1rem;border-width:1px;border-color:rgb(255 255 255 / 0.1);background-color:rgb(255 255 255 / 0.03);padding-left:1.5rem;padding-right:1.5rem;padding-top:1rem;padding-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500;color:rgb(255 255 255 / 1);transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}.contact-link:hover{border-color:rgb(96 165 250 / 0.4);background-color:rgb(255 255 255 / 0.05);outline-style:solid;outline-width:1px;outline-color:rgb(96 165 250 / 0.2);}#i56q52{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:1.25rem;padding:0;border-bottom:none;flex-wrap:nowrap;}#izosb8{width:52px;height:52px;object-fit:cover;border-radius:0.9rem;border:1px solid rgba(255,255,255,0.1);background-color:rgba(255,255,255,0.02);padding:0.15rem;flex:0 0 auto;}#i8nr2e{font-size:0.72rem;line-height:1;text-transform:uppercase;letter-spacing:0.18em;color:#6b7280;}#iozugo{font-family:'Space Grotesk',sans-serif;font-size:1.15rem;line-height:1.2;font-weight:600;letter-spacing:-0.03em;color:#f3f4f6;white-space:nowrap;}#i0b1z4{display:flex;flex-direction:column;gap:0.2rem;min-width:0;}#ifstfq{display:flex;align-items:center;gap:0.9rem;min-width:0;}#i3373k{padding:0.75rem 1rem;border-radius:0.95rem;border:1px solid transparent;color:#d1d5db;background-color:transparent;}#i590nd{padding:0.75rem 1rem;border-radius:0.95rem;border:1px solid transparent;color:#d1d5db;background-color:transparent;}#ih5up8{display:flex;align-items:center;gap:0.35rem;flex-wrap:wrap;}#itxbup{padding:0.85rem 1.25rem;font-size:0.95rem;line-height:1.2;}#izh0i1{display:flex;align-items:center;justify-content:flex-end;gap:0.75rem;flex-wrap:wrap;}#i5qpzl{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1rem 1.25rem;margin-bottom:1.5rem;border:1px solid rgba(255,255,255,0.08);border-radius:1.25rem;background:linear-gradient(180deg,rgba(255,255,255,0.03),rgba(255,255,255,0.015));box-shadow:0 0 0 1px rgba(255,255,255,0.02) inset;flex-wrap:wrap;}#iyoj0q{width:100%;height:auto;display:block;object-fit:contain;border-radius:0.9rem;}#i7gbbo{width:100%;max-width:31rem;border:1px solid rgba(255,255,255,0.08);border-radius:1.25rem;background:linear-gradient(180deg,rgba(255,255,255,0.03),rgba(255,255,255,0.015));padding:1rem;box-shadow:0 0 0 1px rgba(255,255,255,0.02) inset;}#i6qm63{margin:0;font-family:'Space Grotesk',sans-serif;font-size:1.65rem;line-height:1.2;font-weight:600;letter-spacing:-0.03em;color:#f3f4f6;}#i5kaxw{margin:0;font-size:0.92rem;line-height:1.8;color:#9ca3af;}#iv09qk{display:flex;flex-direction:column;gap:0.5rem;max-width:36rem;}#icyqk4{display:flex;flex-direction:column;gap:1.25rem;padding-right:1.5rem;border-right:1px solid rgba(255,255,255,0.08);}#ibx6lj{width:100%;padding:0.25rem 0 1.25rem 0;border-bottom:1px solid rgba(255,255,255,0.08);}#i4t8bg{padding:0.5rem 0.75rem;border-radius:0.8rem;border:1px solid rgba(255,255,255,0.08);background-color:rgba(255,255,255,0.02);color:#d1d5db;}#igxy0w{padding:0.5rem 0.75rem;border-radius:0.8rem;border:1px solid rgba(255,255,255,0.08);background-color:rgba(255,255,255,0.02);color:#d1d5db;}#ix7wbf{padding:0.5rem 0.75rem;border-radius:0.8rem;border:1px solid rgba(96,165,250,0.2);background-color:rgba(96,165,250,0.08);color:#f3f4f6;}#i7nn52{display:flex;align-items:center;gap:0.75rem;flex-wrap:wrap;padding-top:0.25rem;}#ijapvy{display:flex;flex-direction:column;gap:0.85rem;width:100%;}#iavzdk{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:1.5rem;min-height:100%;}#ix56f3{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(18rem,0.85fr);gap:2rem;align-items:stretch;}@media (max-width: 992px){.main-content{padding-left:1.25rem;padding-right:1.25rem;padding-top:1.25rem;padding-bottom:1.25rem;}.portfolio-grid{grid-template-columns:repeat(1, minmax(0, 1fr));}.hero-card{grid-column:span 1 / span 1;padding:1.5rem;}.main-title{font-size:3.75rem;line-height:1;}.hero-description{font-size:1rem;line-height:1.75rem;}.hero-bottom{grid-template-columns:repeat(1, minmax(0, 1fr));}.signal-card{grid-column:span 1 / span 1;padding:1.5rem;}.tech-stack-card{grid-column:span 1 / span 1;padding:1.5rem;}.experience-card{grid-column:span 1 / span 1;padding:1.5rem;}.accent-card{grid-column:span 1 / span 1;padding:1.5rem;}.contact-card{grid-column:span 1 / span 1;padding:1.5rem;}.footer-inner{flex-direction:column;align-items:flex-start;}}@media (max-width: 480px){.main-content{padding-left:1rem;padding-right:1rem;padding-top:1rem;padding-bottom:1rem;}.portfolio-grid{gap:1rem;}.hero-card{padding:1.25rem;}.main-title{font-size:3rem;line-height:1;}.signal-card{padding:1.25rem;}.section-title{font-size:1.5rem;line-height:2rem;}.signal-stats{grid-template-columns:repeat(1, minmax(0, 1fr));}.tech-stack-card{padding:1.25rem;}.experience-card{padding:1.25rem;}.accent-card{padding:1.25rem;}.contact-card{padding:1.25rem;}.footer-title{font-size:1.5rem;line-height:2rem;}}

/* ============ Mobile burger menu (default state) ============ */
.nav-toggle{display:none;}

/* ============================================================
   Mobile optimization — max-width: 768px
   Native-app feel: no scroll animations, single column, burger
   nav, no hover/glow on tap, tighter spacing.
   ============================================================ */
@media (max-width: 768px){
  /* 1. Keep the fade-in, but make it featherweight: opacity + a tiny
     12px lift and a quick transition. Combined with the generous
     rootMargin in JS (below), blocks are pre-triggered well before
     they reach the viewport, so fast finger-scrolling never shows
     an empty/half-transparent section. */
  .reveal{
    transform:translateY(20px);
  }
  .reveal.is-visible{
    transform:translateY(0);
  }

  /* 2. Everything that sits in a row stacks to a single full-width column */
  .portfolio-grid{
    display:flex;
    flex-direction:column;
    gap:1rem;
  }
  .hero-card, .signal-card, .tech-stack-card, .experience-card, .accent-card, .contact-card{
    grid-column:auto;
    width:100%;
    padding:1.1rem;
  }
  .hero-bottom, .signal-stats{
    grid-template-columns:1fr;
  }
  .accent-visual{
    grid-template-columns:repeat(3, minmax(0, 1fr));
  }
  #ix56f3{
    grid-template-columns:1fr;
    gap:1.5rem;
  }
  #icyqk4{
    padding-right:0;
    border-right:none;
    border-bottom:1px solid rgba(255,255,255,0.08);
    padding-bottom:1.25rem;
  }
  #i56q52{
    flex-direction:row;
    align-items:center;
  }
  #i7gbbo{
    max-width:6rem;
  }
  #iavzdk{
    align-items:stretch;
  }
  #i7nn52{
    width:100%;
  }
  #i7nn52 a{
    flex:1 1 auto;
    text-align:center;
  }

  /* 3. Header: collapse nav behind a burger button */
  #i5qpzl{
    position:relative;
    padding:0.85rem 1rem;
  }
  #iozugo{
    font-size:1rem;
  }
  #izh0i1{
    display:none;
    flex-direction:column;
    align-items:stretch;
    width:100%;
    gap:0.5rem;
    margin-top:0.85rem;
    order:3;
  }
  #izh0i1.nav-open{
    display:flex;
  }
  #ih5up8{
    flex-direction:column;
    align-items:stretch;
    gap:0.4rem;
    width:100%;
  }
  #i3373k, #i590nd{
    width:100%;
    padding:0.85rem 1rem;
    background-color:rgba(255,255,255,0.02);
    border:1px solid rgba(255,255,255,0.06);
  }
  #itxbup{
    width:100%;
    text-align:center;
  }
  .nav-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:2.75rem;
    height:2.75rem;
    border-radius:0.9rem;
    border:1px solid rgba(255,255,255,0.08);
    background-color:rgba(255,255,255,0.03);
    margin-left:auto;
    flex:0 0 auto;
  }
  .nav-toggle span,
  .nav-toggle span::before,
  .nav-toggle span::after{
    content:"";
    display:block;
    width:1.15rem;
    height:2px;
    background-color:#e5e7eb;
    border-radius:2px;
  }
  .nav-toggle span{
    position:relative;
  }
  .nav-toggle span::before{
    position:absolute;
    top:-6px;
  }
  .nav-toggle span::after{
    position:absolute;
    top:6px;
  }

  /* 5. Tighter padding/margins throughout */
  .main-content{
    padding:1rem;
  }
  .main-title{
    font-size:2.5rem;
  }
  .hero-description{
    font-size:0.95rem;
    line-height:1.6rem;
  }
  .section-title{
    font-size:1.35rem;
    line-height:1.7rem;
  }
  .signal-panel, .tech-stack-note{
    padding:1rem;
  }
  .metric-card, .stat-item, .highlight-item{
    padding:0.85rem;
  }
  .tag-list{
    gap:0.5rem;
  }
  .tech-tag{
    padding:0.4rem 0.85rem;
    font-size:0.8rem;
  }
  .footer-title{
    font-size:1.4rem;
    line-height:1.7rem;
  }
  .contact-link{
    padding:0.85rem 1.1rem;
    font-size:1rem;
    width:100%;
    text-align:center;
    display:block;
  }
}

/* ============ Scroll reveal ============ */
.reveal{opacity:0;transform:translateY(40px);transition:all 0.6s cubic-bezier(0.16, 1, 0.3, 1);will-change:opacity, transform;}
.reveal.is-visible{opacity:1;transform:translateY(0);}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1;transform:none;transition:none;}
}

/* ============ Ambient status pulse ============ */
.status-dot{box-shadow:0 0 0 0 rgba(52,211,153,0.55);animation:statusPulse 2.4s ease-out infinite;}
@keyframes statusPulse{
  0%{box-shadow:0 0 0 0 rgba(52,211,153,0.45);}
  70%{box-shadow:0 0 0 9px rgba(52,211,153,0);}
  100%{box-shadow:0 0 0 0 rgba(52,211,153,0);}
}
@media (prefers-reduced-motion: reduce){
  .status-dot{animation:none;}
}

/* ============ Neon / glow hover states ============ */
/* Wrapped in (hover: hover) and (pointer: fine) so touchscreens never
   match these rules at all — no glow, no lift, and nothing can "stick"
   after a tap, since :hover is simply never engaged on touch. */
.icon-badge, .stat-item, .metric-card, .highlight-item, .visual-cell{
  transition:border-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease, background-color 0.3s ease;
}
.visual-cell{transition:background-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;}
.hero-card, .signal-card, .tech-stack-card, .experience-card, .accent-card, .contact-card{
  transition:box-shadow 0.4s ease, border-color 0.4s ease;
}
.tech-tag, .contact-link{position:relative;}

@media (hover: hover) and (pointer: fine){
  .tech-tag:hover{
    border-color:rgba(96,165,250,0.55);
    color:#ffffff;
    background-color:rgba(96,165,250,0.08);
    box-shadow:0 0 0 1px rgba(96,165,250,0.25), 0 0 18px rgba(96,165,250,0.35), 0 0 36px rgba(96,165,250,0.12);
    transform:translateY(-1px);
  }
  .contact-link:hover{
    border-color:rgba(96,165,250,0.55);
    background-color:rgba(96,165,250,0.06);
    box-shadow:0 0 0 1px rgba(96,165,250,0.25), 0 0 24px rgba(96,165,250,0.4), 0 0 48px rgba(96,165,250,0.15);
    transform:translateY(-2px);
  }
  .metric-card:hover, .stat-item:hover, .highlight-item:hover{
    border-color:rgba(96,165,250,0.35);
    box-shadow:0 0 20px rgba(96,165,250,0.15);
    transform:translateY(-2px);
  }
  .icon-badge:hover{
    border-color:rgba(96,165,250,0.45);
    box-shadow:0 0 16px rgba(96,165,250,0.3);
  }
  .visual-cell:hover{
    background-color:rgba(52,211,153,0.22);
    box-shadow:0 0 16px rgba(52,211,153,0.35);
    transform:scale(1.05);
  }
  .hero-card:hover, .signal-card:hover, .tech-stack-card:hover, .experience-card:hover, .accent-card:hover{
    border-color:rgba(255,255,255,0.14);
    box-shadow:0 0 0 1px rgba(255,255,255,0.02), 0 12px 40px rgba(0,0,0,0.35);
  }
}

@media (prefers-reduced-motion: reduce){
  .tech-tag:hover, .contact-link:hover, .metric-card:hover, .stat-item:hover, .highlight-item:hover, .visual-cell:hover{
    transform:none;
  }
}

/* Explicit belt-and-braces: on touch/stylus-only devices, force off any
   lingering hover/active glow state so nothing ever appears "stuck". */
@media (hover: none){
  .tech-tag:hover, .tech-tag:active,
  .contact-link:hover, .contact-link:active,
  .metric-card:hover, .stat-item:hover, .highlight-item:hover,
  .icon-badge:hover, .visual-cell:hover, .visual-cell:active,
  .hero-card:hover, .signal-card:hover, .tech-stack-card:hover,
  .experience-card:hover, .accent-card:hover{
    box-shadow:none !important;
    transform:none !important;
  }
}