
    :root {
      --primary: #4ade80;
      --secondary: #3b82f6;
      --accent: #f59e0b;
    }

    body {
      font-family: 'Inter', sans-serif;
      background: #0f172a;
      color: #f8fafc;
      overflow-x: hidden;
    }

    .blinking-cursor {
      animation: blink 1s infinite;
    }

    @keyframes blink {
      0%, 100% { opacity: 1; }
      50% { opacity: 0; }
    }

    .animate-glow {
      animation: glow 2s infinite alternate;
    }

    @keyframes glow {
      0% { text-shadow: 0 0 5px var(--primary), 0 0 10px var(--primary); }
      100% { text-shadow: 0 0 20px var(--secondary), 0 0 40px var(--secondary); }
    }

    .animate-float {
      animation: float 6s ease-in-out infinite;
    }

    @keyframes float {
      0%, 100% { transform: translateY(0); }
      50% { transform: translateY(-20px); }
    }

    .card {
      background: rgba(255, 255, 255, 0.1);
      backdrop-filter: blur(10px);
      border-radius: 12px;
      border: 1px solid rgba(255, 255, 255, 0.1);
      transition: transform 0.3s ease, box-shadow 0.3s ease;
    }

    .card:hover {
      transform: translateY(-10px);
      box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
    }

    /* 3D Cube Background */
    #cube-container {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      perspective: 1000px;
      z-index: -1;
    }

    #cube {
      width: 200px;
      height: 200px;
      position: absolute;
      top: 50%;
      left: 50%;
      transform-style: preserve-3d;
      animation: rotate 10s infinite linear;
    }

    #cube div {
      position: absolute;
      width: 200px;
      height: 200px;
      background: rgba(255, 255, 255, 0.1);
      border: 1px solid rgba(255, 255, 255, 0.2);
    }

    #front  { transform: translateZ(100px); }
    #back   { transform: rotateY(180deg) translateZ(100px); }
    #right  { transform: rotateY(90deg) translateZ(100px); }
    #left   { transform: rotateY(-90deg) translateZ(100px); }
    #top    { transform: rotateX(90deg) translateZ(100px); }
    #bottom { transform: rotateX(-90deg) translateZ(100px); }

    @keyframes rotate {
      0% { transform: rotateX(0) rotateY(0); }
      100% { transform: rotateX(360deg) rotateY(360deg); }
    }

    .card {
      background: rgba(255, 255, 255, 0.1);
      backdrop-filter: blur(10px);
      border-radius: 12px;
      border: 1px solid rgba(255, 255, 255, 0.1);
      transition: transform 0.3s ease, box-shadow 0.3s ease;
    }
    
    .card:hover {
      transform: translateY(-10px);
      box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
    }

    button, .social-link {
      transition: all 0.3s ease;
    }
    
    button:hover, .social-link:hover {
      transform: scale(1.05);
    }
    @media (max-width: 768px) {
      .nav-link {
        font-size: 1.25rem;
      }
    }

    .progress-bar {
      background: rgba(227, 15, 15, 0.1);
      border-radius: 9999px;
      overflow: hidden;
    }
    
    .progress-bar-fill {
      background: linear-gradient(90deg, var(--primary), var(--secondary));
      height: 100%;
      border-radius: 9999px;
      transition: width 0.5s ease;
    }

    .social-link {
      position: relative;
      color: #bbb;
      transition: color 0.3s, text-shadow 0.3s;
    }
  
    .social-link:hover {
      color: #00ffff; /* Neon Cyan */
      text-shadow: 0 0 8px #00ffff, 0 0 16px #00ffff;
    }
  
    .social-link:nth-child(2):hover {
      color: #0a66c2; /* LinkedIn Blue */
      text-shadow: 0 0 8px #0a66c2, 0 0 16px #0a66c2;
    }
  
    .social-link:nth-child(3):hover {
      color: #1da1f2; /* Twitter Blue */
      text-shadow: 0 0 8px #1da1f2, 0 0 16px #1da1f2;
    }
  
    .social-link:nth-child(4):hover {
      color: #ff4757; /* Email Red */
      text-shadow: 0 0 8px #ff4757, 0 0 16px #ff4757;
    }
    /* GitHub - Cyan Neon */
  .social-link:nth-child(1):hover {
    color: #00ffff;
    box-shadow: 0 0 12px #00ffff, 0 0 24px #00ffff;
    border-color: #00ffff;
  }

  /* LinkedIn - Blue Neon */
  .social-link:nth-child(2):hover {
    color: #0a66c2;
    box-shadow: 0 0 12px #0a66c2, 0 0 24px #0a66c2;
    border-color: #0a66c2;
  }

  /* Twitter - Light Blue Neon */
  .social-link:nth-child(3):hover {
    color: #1da1f2;
    box-shadow: 0 0 12px #1da1f2, 0 0 24px #1da1f2;
    border-color: #1da1f2;
  }

  /* Facebook - Electric Blue Neon */
  .social-link:nth-child(4):hover {
    color: #1877f2;
    box-shadow: 0 0 12px #1877f2, 0 0 24px #1877f2;
    border-color: #1877f2;
  }

  @keyframes float {
    0%, 100% {
      transform: translateY(0);
    }
    50% {
      transform: translateY(-20px);
    }
  }
  
  @keyframes float-delay {
    0%, 100% {
      transform: translateY(0);
    }
    50% {
      transform: translateY(20px);
    }
  }
  
  .animate-float {
    animation: float 6s ease-in-out infinite;
  }
  
  .animate-float-delay {
    animation: float-delay 6s ease-in-out infinite;
  }
  
  @keyframes fade-in {
    from {
      opacity: 0;
      transform: translateY(20px);
    }
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }
  
  .animate-fade-in {
    animation: fade-in 1s ease-out forwards;
  }



  .node-connection {
    position: absolute;
    width: 100%;
    height: 100%;
  }
  
  .node {
    position: absolute;
    width: 10px;
    height: 10px;
    background: rgba(74, 222, 128, 0.8);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    box-shadow: 0 0 10px rgba(74, 222, 128, 0.5);
    animation: pulse 3s infinite alternate;
  }
  
  .connection-line {
    stroke: rgba(74, 222, 128, 0.3);
    stroke-width: 1;
    stroke-dasharray: 5;
    animation: dash 30s linear infinite;
  }
  
  @keyframes dash {
    to {
      stroke-dashoffset: 1000;
    }
  }
  
  @keyframes pulse {
    0% { transform: translate(-50%, -50%) scale(1); opacity: 0.7; }
    100% { transform: translate(-50%, -50%) scale(1.3); opacity: 1; }
  }
  
  .tech-badge {
    background: rgba(17, 24, 39, 0.8);
    border: 1px solid rgba(55, 65, 81, 0.5);
    border-radius: 9999px;
    padding: 0.5rem 1rem;
    display: flex;
    gap: 0.5rem;
    font-family: monospace;
    font-size: 0.875rem;
    backdrop-filter: blur(4px);
    transition: all 0.3s ease;
  }
  
  .tech-badge:hover {
    border-color: rgba(16, 185, 129, 0.5);
    background: rgba(17, 24, 39, 0.9);
  }
  
  .modern-cta {
    padding: 1rem 2rem;
    border-radius: 0.5rem;
    font-family: monospace;
    font-weight: 500;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    transition: all 0.3s ease;
    border-bottom-width: 2px;
  }
  
  .modern-cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3);
  }
  
  .terminal-window {
    transition: all 0.3s ease;
  }
  
  .terminal-window:hover {
    transform: translateY(-5px);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3);
  }

  .terminal-card {
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
  }
  
  .terminal-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.2);
    border-color: rgba(34, 211, 238, 0.3);
  }
  
  .node {
    position: absolute;
    width: 8px;
    height: 8px;
    background: rgba(34, 211, 238, 0.6);
    border-radius: 50%;
    animation: pulse 3s infinite alternate;
  }
  
  @keyframes pulse {
    0% { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(1.3); opacity: 1; }
  }
  
  table th {
    font-weight: 500;
  }
  
  table td {
    vertical-align: top;
  }
  
  .language-json {
    line-height: 1.6;
  }

  .skill-card {
    background: rgba(17, 24, 39, 0.5);
    border: 1px solid rgba(55, 65, 81, 0.5);
    border-radius: 0.75rem;
    padding: 1.5rem;
    transition: all 0.3s ease;
    backdrop-filter: blur(5px);
  }
  
  .skill-card:hover {
    transform: translateY(-5px);
    border-color: rgba(16, 185, 129, 0.5);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3);
  }
  
  .skill-icon {
    width: 80px;
    height: 80px;
    margin: 0 auto 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 1rem;
    position: relative;
  }
  
  .skill-progress {
    position: absolute;
    bottom: -6px;
    left: 0;
    right: 0;
    height: 3px;
    background: rgba(55, 65, 81, 0.5);
    border-radius: 3px;
    overflow: hidden;
  }
  
  .skill-progress-bar {
    height: 100%;
    transition: width 1s ease;
  }
  
  .skill-card:hover .skill-progress-bar {
    animation: pulseWidth 1.5s infinite alternate;
  }
  
  @keyframes pulseWidth {
    0% { opacity: 0.8; }
    100% { opacity: 1; }
  }
  
  .connection-line {
    stroke: rgba(34, 211, 238, 0.1);
    stroke-width: 1;
    stroke-dasharray: 5;
    animation: dash 30s linear infinite;
  }
  
  @keyframes dash {
    to {
      stroke-dashoffset: 1000;
    }
  }
  .project-card {
    background: rgba(17, 24, 39, 0.5);
    border: 1px solid rgba(55, 65, 81, 0.5);
    border-radius: 0.75rem;
    overflow: hidden;
    transition: all 0.3s ease;
    backdrop-filter: blur(5px);
  }
  
  .project-card:hover {
    transform: translateY(-5px);
    border-color: rgba(16, 185, 129, 0.5);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3);
  }
  
  .project-image-container {
    position: relative;
    overflow: hidden;
    height: 180px;
  }
  
  .project-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
  }
  
  .project-card:hover .project-image {
    transform: scale(1.05);
  }
  
  .project-tech-badges {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.75rem;
    background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);
  }
  
  .tech-badge {
    font-size: 0.65rem;
    padding: 0.25rem 0.5rem;
    border-radius: 9999px;
    font-family: monospace;
    font-weight: 500;
  }
  
  .tech-badge.react { background: rgba(97, 218, 251, 0.2); color: #61dafb; border: 1px solid rgba(97, 218, 251, 0.3); }
  .tech-badge.node { background: rgba(140, 200, 75, 0.2); color: #8cc84b; border: 1px solid rgba(140, 200, 75, 0.3); }
  .tech-badge.express { background: rgba(255, 255, 255, 0.2); color: #fff; border: 1px solid rgba(255, 255, 255, 0.3); }
  .tech-badge.mysql { background: rgba(0, 117, 143, 0.2); color: #00758f; border: 1px solid rgba(0, 117, 143, 0.3); }
  .tech-badge.html { background: rgba(227, 79, 38, 0.2); color: #e34f26; border: 1px solid rgba(227, 79, 38, 0.3); }
  .tech-badge.css { background: rgba(21, 114, 182, 0.2); color: #1572b6; border: 1px solid rgba(21, 114, 182, 0.3); }
  .tech-badge.js { background: rgba(247, 223, 30, 0.2); color: #f7df1e; border: 1px solid rgba(247, 223, 30, 0.3); }
  .tech-badge.api { background: rgba(106, 190, 205, 0.2); color: #6abecd; border: 1px solid rgba(106, 190, 205, 0.3); }
  .tech-badge.tailwind { background: rgba(6, 182, 212, 0.2); color: #06b6d4; border: 1px solid rgba(6, 182, 212, 0.3); }
  .tech-badge.bootstrap { background: rgba(121, 82, 179, 0.2); color: #7952b3; border: 1px solid rgba(121, 82, 179, 0.3); }
  
  .project-details {
    padding: 1.25rem;
  }
  
  .project-title {
    font-size: 1.25rem;
    font-weight: 600;
    color: white;
    margin-bottom: 0.5rem;
    font-family: monospace;
  }
  
  .project-description {
    color: rgba(156, 163, 175);
    font-size: 0.875rem;
    margin-bottom: 1rem;
  }
  
  .project-footer {
    border-top: 1px solid rgba(55, 65, 81, 0.5);
    padding-top: 0.75rem;
  }
  
  .project-link {
    font-size: 0.75rem;
    display: inline-block;
    transition: color 0.2s ease;
  }
  
  .project-link:hover {
    color: #06b6d4;
  }
  
  .node {
    position: absolute;
    width: 8px;
    height: 8px;
    background: rgba(34, 211, 238, 0.6);
    border-radius: 50%;
    animation: pulse 3s infinite alternate;
  }
  
  @keyframes pulse {
    0% { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(1.3); opacity: 1; }
  }

 
  .blog-card {
    background: rgba(17, 24, 39, 0.5);
    border: 1px solid rgba(55, 65, 81, 0.5);
    border-radius: 0.75rem;
    overflow: hidden;
    transition: all 0.3s ease;
    backdrop-filter: blur(5px);
  }
  
  .blog-card.featured {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
  
  @media (max-width: 768px) {
    .blog-card.featured {
      grid-template-columns: 1fr;
    }
  }
  
  .blog-card:hover {
    transform: translateY(-5px);
    border-color: rgba(16, 185, 129, 0.5);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3);
  }
  
  .blog-image-container {
    position: relative;
    overflow: hidden;
    height: 200px;
  }
  
  .blog-card.featured .blog-image-container {
    height: auto;
  }
  
  .blog-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
  }
  
  .blog-card:hover .blog-image {
    transform: scale(1.05);
  }
  
  .blog-featured-badge {
    position: absolute;
    top: 1rem;
    right: 1rem;
  }
  
  .blog-content {
    padding: 1.5rem;
  }
  
  .blog-card.featured .blog-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
  
  .blog-title {
    font-size: 1.25rem;
    font-weight: 600;
    color: white;
    margin-bottom: 0.75rem;
    font-family: monospace;
  }
  
  .blog-card.featured .blog-title {
    font-size: 1.5rem;
  }
  
  .blog-excerpt {
    color: rgba(156, 163, 175);
    font-size: 0.875rem;
    margin-bottom: 1rem;
    line-height: 1.5;
  }
  
  .blog-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1.25rem;
  }
  
  .blog-tag {
    font-size: 0.65rem;
    padding: 0.25rem 0.5rem;
    border-radius: 9999px;
    font-family: monospace;
    font-weight: 500;
  }
  
  .blog-tag.react { background: rgba(97, 218, 251, 0.2); color: #61dafb; border: 1px solid rgba(97, 218, 251, 0.3); }
  .blog-tag.javascript { background: rgba(247, 223, 30, 0.2); color: #f7df1e; border: 1px solid rgba(247, 223, 30, 0.3); }
  .blog-tag.state { background: rgba(76, 175, 80, 0.2); color: #4caf50; border: 1px solid rgba(76, 175, 80, 0.3); }
  .blog-tag.css { background: rgba(21, 114, 182, 0.2); color: #1572b6; border: 1px solid rgba(21, 114, 182, 0.3); }
  .blog-tag.webdev { background: rgba(255, 255, 255, 0.2); color: #fff; border: 1px solid rgba(255, 255, 255, 0.3); }
  .blog-tag.tailwind { background: rgba(6, 182, 212, 0.2); color: #06b6d4; border: 1px solid rgba(6, 182, 212, 0.3); }
  .blog-tag.vite { background: rgba(100, 108, 255, 0.2); color: #646cff; border: 1px solid rgba(100, 108, 255, 0.3); }
  .blog-tag.async { background: rgba(255, 152, 0, 0.2); color: #ff9800; border: 1px solid rgba(255, 152, 0, 0.3); }
  
  .blog-link {
    font-size: 0.875rem;
    display: inline-block;
    transition: color 0.2s ease;
    font-family: monospace;
  }
  
  .blog-link:hover {
    color: #06b6d4;
  }
  
  .node {
    position: absolute;
    width: 8px;
    height: 8px;
    background: rgba(34, 211, 238, 0.6);
    border-radius: 50%;
    animation: pulse 3s infinite alternate;
  }
  
  @keyframes pulse {
    0% { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(1.3); opacity: 1; }
  }


  .social-icon {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 0.5rem;
    transition: all 0.3s ease;
  }
  
  .social-icon:hover {
    transform: translateY(-3px);
  }
  
  .node {
    position: absolute;
    width: 8px;
    height: 8px;
    background: rgba(34, 211, 238, 0.6);
    border-radius: 50%;
    animation: pulse 3s infinite alternate;
  }
  
  @keyframes pulse {
    0% { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(1.3); opacity: 1; }
  }
  
  input, textarea {
    transition: all 0.2s ease;
  }
  
  input:focus, textarea:focus {
    box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.5);
  }

/* =====================================================================
   REDESIGN: intro + interactive terminal
   (everything below is new; the rules above are your original styles)
   ===================================================================== */

:root {
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  --bg: #0f172a;
  --term-bg: rgba(2, 6, 23, 0.86);
  --line: rgba(55, 65, 81, 0.8);
  --text: #e2e8f0;
  --dim: #94a3b8;
  --cyan: #22d3ee;
  --purple: #c084fc;
  --green: #4ade80;
  --yellow: #fbbf24;
  --red: #f87171;
}

html { scroll-behavior: smooth; }
section[id] { scroll-margin-top: 4.5rem; }

/* ---- accessibility ---- */
:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; }

.skip-link {
  position: absolute; left: 1rem; top: -4rem; z-index: 100;
  background: #0b1220; color: var(--cyan); padding: .6rem 1rem; border-radius: .5rem;
  border: 1px solid var(--cyan); font-family: var(--mono); transition: top .2s;
}
.skip-link:focus { top: 1rem; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; }
  #cube { animation: none; }
}

/* ---- header (Tailwind 2 can't do the bg-[#hex]/90 classes the old markup used) ---- */
.site-header {
  background: rgba(15, 23, 42, 0.9);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(34, 211, 238, 0.2);
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, .25);
}
.brand, .grad-text {
  background: linear-gradient(90deg, #22d3ee, #a855f7);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}

/* ---- hero ---- */
.hero { padding: 6.5rem 1.5rem 2.5rem; overflow: hidden; }
.hero-grid {
  max-width: 72rem; margin: 0 auto;
  display: grid; gap: 2.5rem 3rem; align-items: center;
  grid-template-columns: minmax(0, 1fr);
}
.hero-identity { display: flex; flex-direction: column; align-items: center; gap: 1.75rem; text-align: center; }
.hero-text { max-width: 36rem; }
.hero-photo { position: relative; flex: none; width: 10rem; height: 10rem; }
.hero-photo img {
  position: relative; width: 100%; height: 100%; object-fit: cover; border-radius: 9999px;
  border: 2px solid #374151; filter: grayscale(20%); transition: filter .5s, border-color .3s;
}
.hero-photo:hover img { filter: none; border-color: var(--cyan); }
.hero-photo-glow {
  position: absolute; inset: -.5rem; border-radius: 9999px; filter: blur(16px); opacity: .3;
  background: linear-gradient(90deg, #06b6d4, #9333ea); transition: opacity .5s;
}
.hero-photo:hover .hero-photo-glow { opacity: .5; }

.hero-facts { list-style: none; margin: 1.25rem 0 0; padding: 0; display: grid; gap: .45rem; text-align: left; }
.hero-facts li { display: flex; gap: .6rem; align-items: baseline; }
.hero-facts i { width: 1rem; text-align: center; flex: none; }

.hero-code {
  background: rgba(17, 24, 39, 0.8); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border: 1px solid #1f2937; border-radius: .75rem; overflow: hidden; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, .5);
  max-width: 34rem; width: 100%; margin: 0 auto;
}
.hero-code .terminal-header {
  display: flex; align-items: center; padding: .75rem 1rem;
  background: rgba(31, 41, 55, 0.9); border-bottom: 1px solid #374151;
}
.hero-actions { grid-column: 1 / -1; text-align: center; }

@media (min-width: 640px) {
  .hero-identity { flex-direction: row; text-align: left; align-items: center; }
  .hero-photo { width: 12rem; height: 12rem; }
}
@media (min-width: 1024px) {
  .hero { padding-top: 7.5rem; }
  .hero-grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); }
  .hero-identity { gap: 2rem; }
  .hero-code { margin: 0; }
}

/* the old hover-lift is great on cards, distracting on the code window */
.hero-code.terminal-window:hover { transform: none; }

/* ---- terminal section ---- */
.term-section { padding: 2rem 1rem 4.5rem; }
.term-lead { font-size: .95rem; }

.t-inline-cmd {
  font-family: var(--mono); color: var(--green); background: rgba(74, 222, 128, .1);
  border: 1px solid rgba(74, 222, 128, .3); border-radius: .35rem; padding: .05rem .45rem;
}

.term {
  font-family: var(--mono); font-size: .9rem; line-height: 1.6; color: var(--text);
  background: var(--term-bg); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  border: 1px solid var(--line); border-radius: .75rem; overflow: hidden;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, .55);
  transition: border-color .2s, box-shadow .2s;
}
.term:focus-within {
  border-color: rgba(34, 211, 238, .55);
  box-shadow: 0 0 0 1px rgba(34, 211, 238, .25), 0 25px 50px -12px rgba(0, 0, 0, .55);
}
/* undo the site-wide button/input hover + focus effects inside the terminal */
.term button:hover { transform: none; }
.term input:focus { box-shadow: none; }

.term-bar {
  display: flex; align-items: center; gap: .75rem; padding: .65rem 1rem;
  background: rgba(31, 41, 55, .92); border-bottom: 1px solid #374151;
}
.term-dots { display: flex; gap: .5rem; flex: none; }
.term-dots i { display: block; width: .75rem; height: .75rem; border-radius: 9999px; }
.term-title { flex: 1; min-width: 0; font-size: .78rem; color: var(--dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.term-tool {
  flex: none; font-size: .78rem; color: var(--dim); padding: .3rem .6rem; border-radius: .4rem;
  border: 1px solid #374151; background: rgba(15, 23, 42, .6); min-height: 2rem;
}
.term-tool:hover { color: var(--text); border-color: #4b5563; }

.term-chips {
  display: flex; flex-wrap: wrap; gap: .5rem; padding: .7rem 1rem;
  background: rgba(15, 23, 42, .65); border-bottom: 1px solid rgba(55, 65, 81, .6);
}
.t-chip {
  font-family: var(--mono); font-size: .8rem; color: var(--cyan); min-height: 2.1rem;
  padding: .25rem .8rem; border-radius: 9999px; white-space: nowrap;
  background: rgba(34, 211, 238, .07); border: 1px solid rgba(34, 211, 238, .28);
  transition: background .15s, border-color .15s;
}
.t-chip:hover { background: rgba(34, 211, 238, .16); border-color: rgba(34, 211, 238, .6); }
.t-chip:active { background: rgba(34, 211, 238, .26); }

.term-screen {
  position: relative; height: clamp(22rem, 62vh, 34rem); overflow-y: auto; padding: 1rem 1.1rem 1.25rem;
  cursor: text; scrollbar-width: thin; scrollbar-color: #374151 transparent;
}
@supports (height: 1dvh) { .term-screen { height: clamp(22rem, 62dvh, 34rem); } }
.term-screen::-webkit-scrollbar { width: 8px; }
.term-screen::-webkit-scrollbar-thumb { background: #374151; border-radius: 8px; }

.term-line { display: flex; align-items: baseline; gap: .5rem; margin-top: .35rem; }
.term-input {
  flex: 1; min-width: 0; padding: 0; margin: 0; border: 0; outline: 0; background: transparent;
  font: inherit; color: var(--text); caret-color: var(--green); caret-shape: block;
}
.term-input:focus-visible { outline: none; }

.term-suggest { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-top: .6rem; font-size: .8rem; color: var(--dim); }
.term-suggest[hidden] { display: none; }
.t-sugg {
  font-family: var(--mono); font-size: .8rem; color: var(--text); padding: .2rem .65rem; min-height: 1.9rem;
  border-radius: .4rem; background: rgba(148, 163, 184, .1); border: 1px solid rgba(148, 163, 184, .25);
}
.t-sugg:hover { border-color: var(--cyan); color: var(--cyan); }

.term-keys {
  display: flex; flex-wrap: wrap; gap: .4rem 1.25rem; margin: 0; padding: .6rem 1rem; font-size: .72rem; color: var(--dim);
  background: rgba(15, 23, 42, .65); border-top: 1px solid rgba(55, 65, 81, .6);
}
.term-keys kbd {
  font-family: var(--mono); font-size: .68rem; color: var(--text); padding: .05rem .35rem; margin-right: .15rem;
  border: 1px solid #4b5563; border-bottom-width: 2px; border-radius: .3rem; background: rgba(31, 41, 55, .8);
}

/* ---- prompt + echo ---- */
.t-prompt { white-space: nowrap; flex: none; }
.t-user { color: var(--green); } .t-at { color: var(--dim); } .t-host { color: var(--cyan); }
.t-colon { color: var(--dim); } .t-path { color: var(--purple); } .t-dollar { color: var(--dim); margin-left: .15rem; }

.t-entry { margin-bottom: .9rem; }
.t-echo { display: flex; gap: .25rem; align-items: baseline; margin-bottom: .35rem; }
.t-typed { color: var(--text); overflow-wrap: anywhere; white-space: pre-wrap; min-width: 0; }

/* ---- output vocabulary ---- */
.t-out { overflow-wrap: anywhere; }
.t-line { white-space: pre-wrap; }
.t-gap { height: .6rem; }
.t-dim { color: var(--dim); }
.t-err { color: var(--red); }
.t-ok { color: var(--green); }
.t-key { color: var(--green); }
.t-name { color: #fff; font-weight: 700; }
.t-role { color: var(--cyan); }
.t-comment { color: var(--dim); }
.t-title { color: var(--cyan); font-weight: 700; }
.t-head { margin-bottom: .55rem; }
.t-sub { color: var(--purple); margin-bottom: .2rem; }
.t-idx { color: var(--yellow); }
.t-item { margin-bottom: .85rem; }
.t-item-title { color: #fff; font-weight: 700; }
.t-org { color: var(--cyan); font-weight: 700; }
.t-role-sm { color: var(--purple); }
.t-next { margin-top: .15rem; }

.t-link { color: var(--cyan); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(34, 211, 238, .45); }
.t-link:hover { text-decoration-color: var(--cyan); }

/* clickable command inside output */
.t-cmd {
  font-family: var(--mono); font-size: inherit; color: var(--green); padding: 0 .3rem; margin: 0 -.05rem;
  border-radius: .3rem; background: rgba(74, 222, 128, .09); border: 1px solid rgba(74, 222, 128, .25);
  cursor: pointer; line-height: 1.45; text-align: left;
}
.t-cmd:hover { background: rgba(74, 222, 128, .2); border-color: rgba(74, 222, 128, .6); }
.t-copy { color: var(--dim); background: rgba(148, 163, 184, .08); border-color: rgba(148, 163, 184, .25); font-size: .78rem; }

.t-kv { display: grid; gap: .2rem; }
.t-row { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: 0 1rem; }
.t-kv-help { grid-template-columns: max-content minmax(0, 1fr); gap: .3rem 1.5rem; align-items: start; }
.t-kv-help .t-row { display: contents; }
.t-help-row > .t-cmd { justify-self: start; }

.t-list { margin: .15rem 0 0; padding: 0; list-style: none; }
.t-list li { position: relative; padding-left: 1.1rem; color: #cbd5e1; }
.t-list li::before { content: "›"; position: absolute; left: .2rem; color: var(--purple); }

.t-files { display: flex; flex-wrap: wrap; gap: .45rem .6rem; margin-bottom: .4rem; }

.t-skill { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr) 3rem; align-items: center; gap: 0 .75rem; margin-bottom: .55rem; }
.t-skill-note { grid-column: 1 / -1; font-size: .78rem; }
.t-skill-pct { text-align: right; color: var(--yellow); }
.t-bar { display: block; height: .5rem; border-radius: 9999px; background: rgba(75, 85, 99, .5); overflow: hidden; }
.t-bar i { display: block; height: 100%; border-radius: 9999px; transform-origin: left; animation: t-grow .7s ease-out both; }
@keyframes t-grow { from { transform: scaleX(0); } }

.t-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin: .35rem 0; }
.t-tags-inline { display: inline-flex; margin: 0; vertical-align: middle; }
.t-tag {
  --c: #94a3b8;
  font-size: .72rem; line-height: 1.2; padding: .18rem .55rem; border-radius: 9999px; color: var(--c);
  border: 1px solid rgba(148, 163, 184, .35); background: rgba(148, 163, 184, .1);
}
@supports (color: color-mix(in srgb, red, blue)) {
  .t-tag { border-color: color-mix(in srgb, var(--c) 40%, transparent); background: color-mix(in srgb, var(--c) 13%, transparent); }
}

.t-thumb {
  display: block; width: 100%; max-width: 26rem; height: auto; aspect-ratio: 16 / 9; object-fit: cover;
  margin: .5rem 0; border-radius: .5rem; border: 1px solid var(--line); background: rgba(31, 41, 55, .6);
}

/* ---- contact dialog ---- */
.msg-dialog {
  width: min(32rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); padding: 0; overflow: auto;
  color: var(--text); background: #111827; border: 1px solid #374151; border-radius: .75rem;
  box-shadow: 0 30px 60px -15px rgba(0, 0, 0, .7);
}
.msg-dialog::backdrop { background: rgba(0, 0, 0, .72); }
.msg-head {
  display: flex; align-items: center; justify-content: space-between; padding: .5rem .5rem .5rem 1rem;
  background: #1f2937; border-bottom: 1px solid #1f2937;
}
.msg-close { width: 2.25rem; height: 2.25rem; border-radius: .5rem; color: var(--dim); }
.msg-close:hover { color: #fff; background: rgba(75, 85, 99, .5); }
.msg-body { display: grid; gap: 1.1rem; padding: 1.5rem; }
.msg-body[hidden] { display: none; }
.msg-field {
  width: 100%; padding: .75rem 1rem; color: #d1d5db; font-family: var(--mono); font-size: 1rem;
  background: #1f2937; border: 1px solid #374151; border-radius: .5rem;
}
.msg-field:focus { outline: none; border-color: var(--cyan); }
.msg-status { min-height: 1.4em; margin: 0; color: var(--dim); }
.msg-status.is-error { color: var(--red); }
.msg-status.is-info { color: var(--cyan); }
.msg-dialog button[type="submit"]:disabled { opacity: .6; cursor: progress; }

/* ---- small screens ---- */
@media (max-width: 768px) {
  .term-section { padding: 1.5rem .5rem 3.5rem; }
  .term { font-size: .85rem; }
  .term-input { font-size: 16px; } /* 16px stops iOS Safari zooming on focus */
  .term-screen { padding: .85rem .8rem 1rem; height: clamp(24rem, 68dvh, 34rem); }
  .term-keys { display: none; }          /* keyboard hints are irrelevant on touch */
  .term-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding: .6rem .8rem;
    -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent); mask-image: linear-gradient(90deg, #000 88%, transparent); }
  .term-chips::-webkit-scrollbar { display: none; }
  .t-chip { min-height: 2.5rem; padding: .35rem .95rem; }
  .term-tool { min-height: 2.5rem; }
}
@media (max-width: 520px) {
  .t-user, .t-at, .t-host, .t-colon, .t-path { display: none; }   /* prompt shortens to "$" */
  .t-row { grid-template-columns: minmax(0, 1fr); gap: 0; margin-bottom: .35rem; }
  .t-kv-help { gap: .35rem .7rem; }
  .t-key { color: var(--green); }
  .t-skill { grid-template-columns: 5.5rem minmax(0, 1fr) 2.6rem; gap: 0 .5rem; }
  .hero { padding-left: 1rem; padding-right: 1rem; }
  .t-cmd { padding: .15rem .45rem; }
}
@media (pointer: coarse) {
  .t-cmd { padding-top: .2rem; padding-bottom: .2rem; }
}

/* land just below the fixed header when scrolled to programmatically */
.term { scroll-margin-top: 5rem; }

.msg-submit {
  width: 100%; padding: .8rem 1.5rem; color: #fff; border-radius: .5rem; min-height: 3rem;
  background: linear-gradient(90deg, #0891b2, #9333ea); transition: filter .2s;
}
.msg-submit:hover { filter: brightness(1.15); }
