/* GENERATED by build/build-pages.js from index.html — do not edit.
   These are the homepage's own hand-written rules, shared with the static
   content pages so the inherited header and footer are styled identically. */

@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/spacegrotesk-var.woff2?v=1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/manrope-var.woff2?v=1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Material Symbols Outlined';font-style:normal;font-weight:100 700;font-display:block;src:url(/fonts/material-symbols-subset.woff2?v=1) format('woff2');}
.material-symbols-outlined{font-family:'Material Symbols Outlined';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 24;}


*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: 80px; -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; overflow-x: hidden; width: 100%; }
body { font-family: 'Manrope', sans-serif; background-color: #060e20; color: #e0e7ff; overflow-x: hidden; width: 100%; max-width: 100vw; cursor: none; touch-action: manipulation; -webkit-font-smoothing: antialiased; }
.material-symbols-outlined { font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; user-select: none; }
.glowing-shift-text, .gradient-text { will-change: background-position, filter; }

/* ===== MOBILE OPTIMIZATION ===== */
@media (max-width: 768px) {
  html, body { scroll-padding-top: 70px; cursor: auto !important; overflow-x: hidden !important; width: 100% !important; }
  .cursor-dot, .cursor-ring { display: none !important; }

  /* Fix all sections to stay within viewport */
  #root, main, section, header, footer { max-width: 100% !important; }
  section, main { padding-left: 1rem !important; padding-right: 1rem !important; overflow-x: hidden !important; }

  /* Hero */
  .hero-section { min-height: auto !important; padding: 5rem 1rem 2rem !important; text-align: center !important; }
  .hero-section > * { width: 100% !important; }
  .hero-section .max-w-4xl { max-width: 100% !important; padding: 0 !important; }
  .hero-badge { font-size: 0.68rem !important; padding: 0.35rem 0.75rem !important; white-space: nowrap; }
  .hero-title { font-size: 1.6rem !important; line-height: 1.15 !important; }
  .hero-desc { font-size: 0.82rem !important; padding: 0 !important; max-width: 100% !important; }
  .hero-btns { padding: 0 !important; flex-direction: column !important; align-items: center !important; gap: 0.6rem !important; }
  .hero-btn { padding: 0.75rem 2rem !important; font-size: 0.7rem !important; width: 100% !important; max-width: 280px !important; justify-content: center !important; }
  .hero-glow { display: none !important; }

  /* Robot */
  .robot-container { width: 160px !important; height: 130px !important; margin: 1rem auto !important; }
  .robot-svg { width: 100% !important; height: 100% !important; }

  /* Disable heavy effects */
  .gradient-mesh, #particles-canvas, .floating-icon { display: none !important; }

  /* Header */
  header { padding: 0.5rem 0.75rem !important; }
  header > div { padding: 0 !important; }
  .header-logo { font-size: 0.95rem !important; }
  .header-logo svg { width: 20px !important; height: 20px !important; }
  .header-btn { padding: 0.4rem 0.75rem !important; font-size: 0.6rem !important; }
  .contact-glow-btn { padding: 0.4rem 0.75rem !important; font-size: 0.65rem !important; }

  /* Typography */
  h1 { font-size: 1.6rem !important; line-height: 1.1 !important; }
  h2 { font-size: 1.5rem !important; }
  p { font-size: 0.85rem !important; }

  /* Slider */
  .hero-slider { width: 100% !important; margin: 0 0 16px !important; }
  .slide { padding: 12px 14px !important; gap: 10px !important; }
  .slide-icon { width: 32px !important; height: 32px !important; font-size: 1.1rem !important; flex-shrink: 0 !important; }
  .slide-content h4 { font-size: 0.8rem !important; }
  .slide-content p { font-size: 0.72rem !important; }
  .slider-track { width: 100% !important; }

  /* Value slider */
  .value-slider { margin-bottom: 1.5rem !important; width: 100% !important; }
  .value-title { font-size: 1rem !important; }

  /* Portfolio */
  .portfolio-grid { height: auto !important; display: flex !important; flex-direction: column !important; gap: 1rem !important; }
  .portfolio-grid > div { grid-column: span 12 !important; min-height: 240px !important; height: auto !important; }
  .portfolio-card { padding: 0 !important; }
  .portfolio-card .absolute { padding: 1rem !important; }
  .portfolio-title { font-size: 1.1rem !important; line-height: 1.3 !important; }
  .portfolio-desc { font-size: 0.78rem !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; }
  .portfolio-card img { height: 240px !important; object-fit: cover !important; }

  /* Pricing */
  .netflix-card { min-height: auto !important; padding: 14px !important; }
  .netflix-price-amount { font-size: 1.3rem !important; }
  .pricing-section-toggle.active { grid-template-columns: 1fr !important; gap: 10px !important; }
  .netflix-card.featured { order: -1 !important; transform: none !important; }
  .pricing-tabs { gap: 4px !important; flex-wrap: wrap !important; }
  .pricing-tab { padding: 5px 8px !important; font-size: 0.68rem !important; }

  /* Modal */
  .modal-overlay { padding: 8px 6px !important; align-items: flex-start !important; padding-top: 60px !important; }
  .modal-content { width: 100% !important; max-width: 100% !important; border-radius: 1rem !important; margin: 0 auto !important; }
  .modal-body { padding: 10px 10px !important; overflow-y: auto !important; -webkit-overflow-scrolling: touch !important; max-height: 72vh !important; }
  .modal-header { padding: 10px 14px !important; position: sticky !important; top: 0 !important; background: #0f1930 !important; z-index: 1 !important; }
  .modal-close-btn { width: 44px !important; height: 44px !important; font-size: 1.5rem !important; border-width: 2px !important; }
  .skills-modal-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 6px !important; }

  /* Touch targets */
  button, a { touch-action: manipulation !important; }
}

@media (max-width: 480px) {
  .px-8 { padding-left: 0.75rem !important; padding-right: 0.75rem !important; }
  h1 { font-size: 1.6rem !important; }
  .hero-title { font-size: 1.5rem !important; }
  .netflix-card { padding: 14px !important; }
  .netflix-price-amount { font-size: 1.25rem !important; }
  .slider-track { transition-duration: 0.8s !important; }
  .robot-container { width: 150px !important; height: 130px !important; }
}

/* ===== TABLET OPTIMIZATION (769px - 1024px) ===== */
@media (min-width: 769px) and (max-width: 1024px) {
  .robot-container { width: 220px !important; height: 175px !important; }
  .hero-title { font-size: 2.5rem !important; }
  .skills-modal-grid { grid-template-columns: repeat(3, 1fr) !important; }
  .modal-content { max-width: 90vw !important; }
  .netflix-price-amount { font-size: 1.5rem !important; }
  .portfolio-grid { height: auto !important; }
}

.cursor-dot { position: fixed; width: 8px; height: 8px; border-radius: 50%; background: #6366f1; pointer-events: none; z-index: 9999; transform: translate(-50%, -50%); transition: width 0.2s, height 0.2s, background 0.3s; mix-blend-mode: difference; contain: strict; }
.cursor-ring { position: fixed; width: 40px; height: 40px; border: 2px solid rgba(99,102,241,0.5); border-radius: 50%; pointer-events: none; z-index: 9998; transform: translate(-50%, -50%); transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s, width 0.3s, height 0.3s; contain: strict; }
body.hovering .cursor-dot { width: 16px; height: 16px; background: #00f5d4; }
body.hovering .cursor-ring { width: 55px; height: 55px; border-color: rgba(0,245,212,0.6); }

.gradient-mesh { position: fixed; inset: 0; z-index: -2; pointer-events: none; background: radial-gradient(ellipse at 30% 20%, rgba(99,102,241,0.08) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(0,245,212,0.06) 0%, transparent 50%), radial-gradient(ellipse at 50% 50%, rgba(34,197,94,0.04) 0%, transparent 60%); animation: meshFloat 30s ease-in-out infinite; }
@keyframes meshFloat { '0%, 100%': { transform: translate(0, 0) scale(1); } '33%': { transform: translate(1%, -1%) scale(1.01); } '66%': { transform: translate(-0.5%, 0.5%) scale(0.99); } }
#particles-canvas { position: fixed; inset: 0; z-index: -1; pointer-events: none; }

.glass { background: rgba(9, 19, 40, 0.88); border: 1px solid rgba(64, 72, 93, 0.2); }
.glass-strong { background: rgba(9, 19, 40, 0.94); border: 1px solid rgba(99,102,241,0.15); }

.gradient-text { background: linear-gradient(135deg, #6366f1 0%, #00f5d4 50%, #22c55e 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; background-size: 300% 300%; animation: gradientShift 8s ease infinite; }
.glowing-shift-text { background: linear-gradient(135deg, #22c55e 0%, #00f5d4 50%, #22c55e 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; background-size: 200% 200%; animation: glowColorShift 4s ease-in-out infinite, gradientShift 6s ease infinite; filter: drop-shadow(0 0 8px rgba(34,197,94,0.3)); transition: filter 0.3s ease; }
.glowing-shift-text:hover { filter: drop-shadow(0 0 15px rgba(0,245,212,0.5)) drop-shadow(0 0 30px rgba(34,197,94,0.4)); }

.hero-gradient { background: radial-gradient(circle at 50% -20%, rgba(99,102,241,0.1) 0%, rgba(6,14,32,0) 70%); }

/* Mobile hero centrepiece.
   hero3d.js deliberately refuses to run the WebGL "Kinetic Ether" scene on
   phones (see the comment at hero3d.js:190) — the rAF loop was worth 69,920 ms
   of Lighthouse mobile TBT and ~730 KB of three.js. That gate stays, but it left
   the phone hero with no centrepiece while desktop got the orb.
   So phones get a single baked frame of the same scene instead: one ~50 KB WebP,
   no JavaScript, no animation loop. Built by build/build-hero-poster.js.
   The image is opaque (an alpha channel tripled its weight), so it is composited
   with mix-blend-mode:screen — black contributes nothing, leaving just the orb
   over the gradient above. */
@media (max-width: 1024px) {
  .hero-gradient::before {
    content: "";
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 118%;
    max-width: 560px;
    aspect-ratio: 550 / 713;
    background: url('/img/hero-poster.webp') center/contain no-repeat;
    mix-blend-mode: screen;
    opacity: 0.85;
    pointer-events: none;
    z-index: 0;
    /* The desktop scene drifts and breathes, so a frozen poster reads as a
       broken image rather than a deliberate one. This restores that motion
       WITHOUT the rAF loop: transform and opacity are the only two properties a
       browser can animate entirely on the compositor, so there is no layout, no
       repaint and no main-thread work per frame — which is precisely what made
       the WebGL version unaffordable here. */
    animation: heroOrbDrift 48s ease-in-out infinite;
    will-change: transform;
  }
  /* Keep the copy above the orb — the hero children are not all positioned. */
  .hero-gradient > * { position: relative; z-index: 1; }
}
/* The translate must be repeated in every keyframe: `transform` is one property,
   so a keyframe that omits it would snap the orb back to the top-left corner. */
@keyframes heroOrbDrift {
  0%   { transform: translate(-50%, -50%) rotate(0deg)   scale(1);    opacity: 0.85; }
  25%  { transform: translate(-50%, -50%) rotate(90deg)  scale(1.05); opacity: 0.92; }
  50%  { transform: translate(-50%, -50%) rotate(180deg) scale(1);    opacity: 0.82; }
  75%  { transform: translate(-50%, -50%) rotate(270deg) scale(1.05); opacity: 0.92; }
  100% { transform: translate(-50%, -50%) rotate(360deg) scale(1);    opacity: 0.85; }
}
/* Honour the same opt-out hero3d.js already respects: hold a still frame. */
@media (max-width: 1024px) and (prefers-reduced-motion: reduce) {
  .hero-gradient::before { animation: none; opacity: 0.55; }
}

/* The pre-rendered loop of the real scene (hero-video.js attaches its sources on
   phones only). It sits over the CSS poster and takes over once actual frames are
   painting — .hero-video-live is added on the video's `playing` event, never
   before, so a blocked autoplay leaves the poster in place rather than a gap. */
#hero-loop {
  display: none;
  object-fit: contain;
  mix-blend-mode: screen;
  opacity: 0;
  transition: opacity .6s ease;
}
@media (max-width: 1024px) {
  #hero-loop { display: block; }
  .hero-gradient.hero-video-live #hero-loop { opacity: 0.9; }
  /* Cross-dissolve: the poster only leaves once the video has visibly arrived. */
  .hero-gradient.hero-video-live::before { opacity: 0; animation: none; }
  .hero-gradient::before { transition: opacity .6s ease; }
}
/* Desktop runs the live canvas; the element exists but must never paint. */
@media (min-width: 1025px) { #hero-loop { display: none !important; } }

.reveal { opacity: 0; transform: translateY(20px); transition: opacity 0.45s cubic-bezier(0.22, 1, 0.36, 1), transform 0.45s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal.active { opacity: 1; transform: translateY(0); }
.reveal.stagger-1 { transition-delay: 0.08s; }
.reveal.stagger-2 { transition-delay: 0.16s; }
.reveal.stagger-3 { transition-delay: 0.24s; }
.reveal.stagger-4 { transition-delay: 0.32s; }

.tilt-card { transform-style: preserve-3d; perspective: 1000px; will-change: transform; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); }
.tilt-card:hover { transform: translateY(-4px); }
.btn-magnetic { transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1) !important; touch-action: manipulation; }

.modal-overlay { position: fixed; inset: 0; z-index: 1000; background: rgba(0,0,0,0.94); display: flex; align-items: flex-start; justify-content: center; opacity: 0; pointer-events: none; transition: opacity 0.25s ease; padding: 12px; padding-top: max(12px, env(safe-area-inset-top, 12px)); overflow-y: auto; -webkit-overflow-scrolling: touch; }
.modal-overlay.active { opacity: 1; pointer-events: auto; }
.modal-content { background: #0f1930; border: 1px solid rgba(99,102,241,0.2); border-radius: 1.25rem; width: 100%; max-width: 960px; overflow: hidden; box-shadow: 0 20px 60px -10px rgba(0,0,0,0.8); transform: translateY(12px); transition: transform 0.25s ease, opacity 0.25s ease; display: flex; flex-direction: column; margin: auto; }
.modal-overlay.active .modal-content { transform: translateY(0); }
.modal-header { padding: 12px 20px; border-bottom: 1px solid rgba(64,72,93,0.3); display: flex; justify-content: space-between; align-items: center; flex-shrink: 0; gap: 12px; }
.modal-close-btn { width: 40px; height: 40px; min-width: 40px; border-radius: 50%; border: 2px solid rgba(99,102,241,0.5); background: rgba(99,102,241,0.15); color: #e0e7ff; font-size: 1.4rem; display: grid; place-items: center; cursor: pointer; transition: background 0.15s ease, transform 0.15s ease; touch-action: manipulation; flex-shrink: 0; -webkit-tap-highlight-color: transparent; user-select: none; }
.modal-close-btn:hover, .modal-close-btn:active { background: #6366f1; color: #060e20; transform: rotate(90deg); }
.modal-body { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 14px 16px; position: relative; max-height: calc(85vh - 60px); }

.skills-modal-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 12px; }
@media (max-width: 640px) { .skills-modal-grid { grid-template-columns: repeat(2, 1fr); gap: 6px; } }
.skill-modal-card { background: rgba(15, 25, 48, 0.6); border: 1px solid rgba(64, 72, 93, 0.3); border-radius: 10px; padding: 10px 12px; display: flex; align-items: center; gap: 10px; transition: all 0.25s ease; }
.skill-modal-card:hover { border-color: rgba(99, 102, 241, 0.5); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(0,0,0,0.3); }
.skill-modal-icon { width: 36px; height: 36px; border-radius: 8px; display: grid; place-items: center; flex-shrink: 0; font-size: 1.1rem; }
.skill-modal-content h4 { font-size: 0.78rem; font-weight: 700; margin-bottom: 2px; font-family: 'Space Grotesk', sans-serif; line-height: 1.2; }
.skill-modal-content p { font-size: 0.68rem; color: #a3aac4; line-height: 1.3; }

.hero-slider { position: relative; width: 100%; max-width: 100%; margin: 0 auto 20px; overflow: hidden; border-radius: 1.1rem; border: 1px solid rgba(99,102,241,0.2); background: linear-gradient(135deg,rgba(15,25,48,0.95),rgba(9,19,40,0.98)); }
.hero-slider::before { content:''; position:absolute; inset:0; border-radius:1.1rem; background: linear-gradient(135deg,rgba(99,102,241,0.04),rgba(0,245,212,0.03)); pointer-events:none; z-index:1; }
.slider-track { display: flex; transition: transform 0.30s cubic-bezier(0.4, 0, 0.2, 1); will-change: transform; transform: translateZ(0); backface-visibility: hidden; }
.slide { min-width: 100%; padding: 16px 20px; display: flex; align-items: center; gap: 14px; position: relative; z-index:2; }
.slide-icon { width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; font-size: 1.6rem; flex-shrink: 0; position:relative; }
.slide-icon::after { content:''; position:absolute; inset:-1px; border-radius:15px; background: linear-gradient(135deg,rgba(99,102,241,0.4),rgba(0,245,212,0.2)); z-index:-1; }
.slide-content { flex:1; min-width:0; }
.slide-content h4 { font-size: 0.98rem; font-weight: 800; margin-bottom: 3px; letter-spacing:-0.01em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.slide-content p { font-size: 0.78rem; color: #a3aac4; line-height:1.4; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
/* Progress bar replaces dots */
.slider-progress-bar { height: 2px; background: rgba(64,72,93,0.3); position:relative; overflow:hidden; }
.slider-progress-fill { height: 100%; background: linear-gradient(90deg,#6366f1,#00f5d4); width: 0%; transition: width 0.1s linear; }
/* Keep dots hidden but functional for accessibility */
.slider-dots { display:none; }
.slider-dot { width:0; height:0; overflow:hidden; position:absolute; }

.robot-container { position: relative; width: 260px; height: 200px; margin: 0 auto; animation: robotFloat 4s ease-in-out infinite; will-change: transform; }
@keyframes robotFloat { 0%, 100% { transform: translate3d(0,0px,0); } 50% { transform: translate3d(0,-12px,0); } }
.robot-svg { width: 100%; height: 100%; }
.robot-arm { transform-origin: 70px 140px; animation: robotArm 2.5s ease-in-out infinite; }
.robot-screen { transform-origin: center; animation: screenGlow 3s ease-in-out infinite; }
.robot-eye { animation: blink 4s ease-in-out infinite; }
.robot-antenna { animation: antennaPulse 2s ease-in-out infinite; }
@keyframes antennaPulse { 0%, 100% { opacity: 1; r: 3; } 50% { opacity: 0.4; r: 4.5; } }

.floating-icon { position: absolute; opacity: 0.5; animation: float 6s ease-in-out infinite; pointer-events: none; }
.floating-icon:nth-child(2) { animation-delay: -2s; left: 10%; top: 20%; }
.floating-icon:nth-child(3) { animation-delay: -4s; right: 15%; top: 30%; }
.floating-icon:nth-child(4) { animation-delay: -1s; left: 20%; bottom: 25%; }
.floating-icon:nth-child(5) { animation-delay: -3s; right: 25%; bottom: 15%; }

.bento-item { transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); }
.bento-item:hover { background-color: #141f38 !important; }
.bento-item img { transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1); }
.bento-item:hover img { transform: scale(1.08); opacity: 0.65 !important; }
.portfolio-card .absolute { word-break: break-word; overflow-wrap: break-word; }
.portfolio-card p, .portfolio-card h3, .portfolio-card span { overflow-wrap: break-word; word-break: break-word; hyphens: auto; }

#pricing, #contact { content-visibility: auto; contain-intrinsic-size: 0 600px; }
.netflix-card { background: linear-gradient(145deg, rgba(15,25,48,0.95), rgba(9,19,40,0.95)); border: 1px solid rgba(64,72,93,0.3); border-radius: 1rem; padding: 20px; display: flex; flex-direction: column; transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); position: relative; overflow: hidden; min-height: 400px; }
.netflix-card::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 30% 20%, rgba(99,102,241,0.06), transparent 50%); opacity: 0; transition: opacity 0.3s ease; pointer-events: none; }
.netflix-card:hover { border-color: rgba(99,102,241,0.4); transform: translateY(-3px); box-shadow: 0 15px 30px rgba(0,0,0,0.35), 0 0 25px rgba(99,102,241,0.08); }
.netflix-card:hover::before { opacity: 1; }
.netflix-card.featured { border: 2px solid #6366f1; background: linear-gradient(145deg, rgba(25,37,64,0.98), rgba(15,25,48,0.98)); box-shadow: 0 0 30px rgba(99,102,241,0.12), 0 15px 40px rgba(0,0,0,0.4); }
.netflix-card.featured::after { content: 'MOST POPULAR'; position: absolute; top: 10px; right: -28px; background: linear-gradient(135deg, #6366f1, #00f5d4); color: #060e20; font-size: 8px; font-weight: 800; font-family: 'Space Grotesk', sans-serif; padding: 3px 35px; transform: rotate(45deg); letter-spacing: 0.4px; text-transform: uppercase; }
.netflix-card-header { margin-bottom: 16px; padding-bottom: 14px; border-bottom: 1px solid rgba(64,72,93,0.2); }
.netflix-card-title { font-size: 1.05rem; font-weight: 700; font-family: 'Space Grotesk', sans-serif; letter-spacing: 0.4px; margin-bottom: 6px; }
.netflix-card-desc { font-size: 0.82rem; color: #a3aac4; line-height: 1.4; }
.netflix-card-price { margin: 14px 0; }
.netflix-price-amount { font-size: 1.8rem; font-weight: 800; font-family: 'Space Grotesk', sans-serif; background: linear-gradient(135deg, #e0e7ff, #a3aac4); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.netflix-price-note { font-size: 0.75rem; color: #6d758c; margin-left: 4px; }
.netflix-features { flex-grow: 1; margin: 14px 0; }
.netflix-feature { display: flex; align-items: flex-start; gap: 8px; padding: 5px 0; font-size: 0.82rem; color: #e0e7ff; }
.netflix-feature.highlighted { color: #00f5d4; font-weight: 500; }
.netflix-feature-icon { font-size: 1rem; margin-top: 2px; flex-shrink: 0; }
.netflix-feature-icon.highlighted { color: #00f5d4; }
.netflix-cta { width: 100%; padding: 11px; border-radius: 0.75rem; font-weight: 700; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.4px; font-family: 'Space Grotesk', sans-serif; transition: background 0.2s ease, transform 0.15s ease; cursor: pointer; touch-action: manipulation; text-decoration: none; display: block; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
.netflix-cta.primary { background: linear-gradient(135deg, #6366f1, #4f46e5); color: #060e20; border: none; }
.netflix-cta.primary:hover { background: linear-gradient(135deg, #4f46e5, #6366f1); box-shadow: 0 0 20px rgba(99,102,241,0.35); transform: scale(1.015); }
.netflix-cta.secondary { background: rgba(15,25,48,0.6); border: 1px solid rgba(64,72,93,0.4); color: #e0e7ff; }
.netflix-cta.secondary:hover { background: rgba(25,37,64,0.75); border-color: #6366f1; transform: scale(1.015); }

.pricing-tabs { display: flex; gap: 6px; justify-content: center; margin-bottom: 20px; flex-wrap: wrap; padding: 0 0.5rem; }
.pricing-tab { padding: 9px 14px; border-radius: 9999px; font-size: 0.78rem; font-weight: 600; font-family: 'Space Grotesk', sans-serif; background: rgba(15, 25, 48, 0.6); border: 1px solid rgba(64, 72, 93, 0.3); color: #a3aac4; cursor: pointer; transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease; touch-action: manipulation; white-space: nowrap; -webkit-tap-highlight-color: transparent; }
.pricing-tab.active, .pricing-tab:hover { background: linear-gradient(135deg, rgba(99,102,241,0.18), rgba(0,245,212,0.18)); border-color: #6366f1; color: #e0e7ff; box-shadow: 0 0 15px rgba(99,102,241,0.08); }
.pricing-tab.active { border-width: 2px; }
.pricing-section-toggle { display: none; animation: cardPop 0.35s cubic-bezier(0.16, 1, 0.3, 1); }
.pricing-section-toggle.active { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; }

.terms-box { background: linear-gradient(145deg, rgba(25,37,64,0.5), rgba(15,25,48,0.5)); border: 1px solid rgba(99,102,241,0.2); border-radius: 1rem; padding: 24px; margin-top: 40px; position: relative; overflow: hidden; }
.terms-title { font-size: 1.1rem; font-weight: 700; font-family: 'Space Grotesk', sans-serif; color: #e0e7ff; margin-bottom: 16px; display: flex; align-items: center; gap: 8px; }
.terms-list { display: grid; gap: 10px; }
.terms-item { display: flex; align-items: flex-start; gap: 10px; padding: 8px 12px; background: rgba(15,25,48,0.4); border-radius: 8px; border-left: 3px solid #6366f1; font-size: 0.85rem; color: #a3aac4; line-height: 1.4; }
.terms-item-icon { color: #6366f1; font-size: 1.1rem; flex-shrink: 0; margin-top: 1px; }
.terms-trust { margin-top: 16px; padding: 12px 16px; background: rgba(34,197,94,0.1); border: 1px solid rgba(34,197,94,0.2); border-radius: 8px; text-align: center; font-size: 0.85rem; color: #22c55e; font-weight: 600; }

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .cursor-dot, .cursor-ring, .floating-icon { display: none !important; } body { cursor: auto; } .reveal { transition: none !important; opacity: 1 !important; transform: none !important; } .gradient-mesh, #particles-canvas { display: none !important; } }
:focus-visible { outline: 2px solid #6366f1; outline-offset: 3px; border-radius: 8px; }
::selection { background: #6366f1; color: #060e20; }
img { max-width: 100%; height: auto; display: block; loading: lazy; decoding: async; }
section, main, #root { position: relative; max-width: 100vw; overflow-x: hidden; width: 100%; }
.container, .max-w-screen-2xl { margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; max-width: 100%; }

.contact-glow-btn { background: linear-gradient(135deg, #00f5d4, #22c55e); box-shadow: 0 0 24px rgba(0,245,212,0.35); }

/* ===== DECORATIVE SVG ICONS ===== */
.deco-icon { display: inline-flex; align-items: center; flex-shrink: 0; }
.deco-icon svg { overflow: visible; }
@keyframes spinOrbit { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
@keyframes orbitDot { from { transform: rotate(0deg) translateX(10px); } to { transform: rotate(360deg) translateX(10px); } }
@keyframes hexPulse { 0%,100% { opacity:0.7; transform: scale(1); } 50% { opacity:1; transform: scale(1.08); } }
@keyframes circuitFlow { 0% { stroke-dashoffset: 40; } 100% { stroke-dashoffset: 0; } }
@keyframes eyeScan { 0%,100% { transform: translateX(0); } 25% { transform: translateX(3px); } 75% { transform: translateX(-3px); } }
@keyframes dataStream { 0% { opacity:0; transform: translateY(-6px); } 50% { opacity:1; } 100% { opacity:0; transform: translateY(6px); } }
@keyframes waveform { 0%,100% { d: path("M0,8 Q4,2 8,8 Q12,14 16,8 Q20,2 24,8"); } 50% { d: path("M0,8 Q4,14 8,8 Q12,2 16,8 Q20,14 24,8"); } }
@keyframes ringExpand { 0% { r: 6; opacity: 1; } 100% { r: 14; opacity: 0; } }
@keyframes codeBlink { 0%,100% { opacity:1; } 50% { opacity:0.2; } }
@keyframes shieldGlow { 0%,100% { filter: drop-shadow(0 0 3px rgba(34,197,94,0.4)); } 50% { filter: drop-shadow(0 0 10px rgba(34,197,94,0.9)); } }
@keyframes rocketBoost { 0%,100% { transform: translateY(0) rotate(-30deg); } 50% { transform: translateY(-4px) rotate(-30deg); } }
@keyframes nodeConnect { 0% { stroke-dashoffset: 20; opacity:0.3; } 100% { stroke-dashoffset: 0; opacity:1; } }

.deco-orbit { animation: spinOrbit 6s linear infinite; transform-origin: center; }
.deco-hex { animation: hexPulse 2.5s ease-in-out infinite; }
.deco-circuit line { stroke-dasharray: 8; animation: circuitFlow 1.5s linear infinite; }
.deco-eye-pupil { animation: eyeScan 3s ease-in-out infinite; }
.deco-ring { animation: ringExpand 2s ease-out infinite; }
.deco-shield { animation: shieldGlow 2s ease-in-out infinite; }
.deco-rocket { animation: rocketBoost 2s ease-in-out infinite; }

 blocks above.
     The Play CDN injected its generated stylesheet at runtime, so it always
     landed last and utilities won ties against the component CSS. Elements were
     authored on that assumption: e.g. the slider card is
     class="slide flex-col items-center text-center p-6", where Tailwind's p-6
     (24px) is meant to beat `.slide { padding: 16px 20px }`. Both selectors are
     single-class specificity, so source order alone decides.
     Loading this earlier flips that and silently reshapes those elements —
     measured as a 16px height change on the portfolio slider. If you ever move
     it, re-check anything that sets a utility and a component class together. -->
<!-- Scroll-reveal depends on JS: the prerendered markup ships `.reveal` at
     opacity:0 and an IntersectionObserver adds `.active`. Verified working on a
     normal scroll, but if JS is blocked or fails nothing would ever reveal, so
     make them unconditionally visible in that case. (Text crawlers are
     unaffected either way — they read markup, not computed opacity.) -->
<noscript><style>.reveal{opacity:1!important;transform:none!important}