/* ============================================================
   João Filipe Varanda Eufrásio — Personal Website
   Stylesheet — organized by section, self-hosted fonts,
   design tokens in :root. See README.md for architecture notes.
   ============================================================ */

/* ---------- Self-hosted fonts (Outfit / Instrument Sans) ---------- */
@font-face{
  font-family:'Outfit';
  src:url('../fonts/Outfit-Regular.woff') format('woff');
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Outfit';
  src:url('../fonts/Outfit-Bold.woff') format('woff');
  font-weight:600 800;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Instrument Sans';
  src:url('../fonts/InstrumentSans-Regular.woff') format('woff');
  font-weight:400 500;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Instrument Sans';
  src:url('../fonts/InstrumentSans-Bold.woff') format('woff');
  font-weight:600 700;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Instrument Sans';
  src:url('../fonts/InstrumentSans-Italic.woff') format('woff');
  font-weight:400 700;
  font-style:italic;
  font-display:swap;
}

:root{
    /* ---------- Design tokens — do not redesign; keep as source of truth ---------- */
    --bg:#05070D;
    --bg2:#0B1220;
    --card:#111827;
    --text:#FFFFFF;
    --text2:#A8B0BD;
    --accent:#2563EB;
    --glow:#3B82F6;
    --gold:#D9A441;
    --border:rgba(255,255,255,.08);
    --display:'Outfit',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
    --body:'Instrument Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important;}
  }

  /* ---------- Accessibility utilities ---------- */
  .sr-only{
    position:absolute; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
  }
  .skip-link{
    position:absolute; top:-100px; left:16px; z-index:100;
    background:var(--accent); color:#fff; padding:12px 20px; border-radius:8px;
    font-size:14px; font-weight:600; text-decoration:none;
    transition:top .25s ease;
  }
  .skip-link:focus{ top:16px; }
  body{
    background:var(--bg);
    color:var(--text);
    font-family:var(--body);
    line-height:1.6;
    overflow-x:hidden;
    -webkit-font-smoothing:antialiased;
  }
  ::selection{background:var(--accent); color:#fff;}
  a{color:inherit; text-decoration:none;}
  img{max-width:100%; display:block;}
  ::-webkit-scrollbar{width:10px;}
  ::-webkit-scrollbar-track{background:var(--bg);}
  ::-webkit-scrollbar-thumb{background:#1c2536; border-radius:10px;}

  .wrap{max-width:1240px; margin:0 auto; padding:0 32px;}
  section{position:relative;}

  /* ---------- Background ambience ---------- */
  #bg-canvas{position:fixed; inset:0; z-index:0; pointer-events:none; opacity:.55;}
  .grain{position:fixed; inset:0; z-index:1; pointer-events:none; opacity:.025;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  }

  /* ---------- Nav ---------- */
  header{position:fixed; top:0; left:0; right:0; z-index:50; backdrop-filter:blur(16px); background:rgba(5,7,13,.55); border-bottom:1px solid transparent; transition:border-color .4s ease, background .4s ease;}
  header.scrolled{border-bottom-color:var(--border); background:rgba(5,7,13,.82);}
  nav{display:flex; align-items:center; justify-content:space-between; padding:20px 32px; max-width:1240px; margin:0 auto;}
  .brand-mark{font-family:var(--display); font-weight:700; font-size:16px; letter-spacing:.02em; display:flex; align-items:center; gap:10px;}
  .brand-mark span{color:var(--glow);}
  .nav-logo-chip{display:flex; align-items:center; background:#fff; border-radius:9px; padding:6px 12px; height:26px;}
  .nav-logo-chip img{height:100%; width:auto; display:block;}
  .nav-links{display:flex; gap:36px; font-size:14px; color:var(--text2);}
  .nav-links a{position:relative; transition:color .3s;}
  .nav-links a:hover{color:var(--text);}
  .nav-links a::after{content:'';position:absolute; left:0; bottom:-6px; width:0; height:1px; background:var(--glow); transition:width .35s ease;}
  .nav-links a:hover::after{width:100%;}
  .nav-cta{border:1px solid var(--border); padding:9px 18px; border-radius:100px; font-size:13px; transition:all .3s ease;}
  .nav-cta:hover{border-color:var(--glow); box-shadow:0 0 24px rgba(59,130,246,.25); background:rgba(59,130,246,.08);}
  .nav-toggle{display:none;}

  /* ---------- Hero ---------- */
  .hero{min-height:100vh; display:flex; align-items:center; position:relative; z-index:2; padding-top:90px;}
  .hero-grid{display:grid; grid-template-columns:1.15fr .85fr; gap:40px; align-items:center; width:100%;}
  .eyebrow{display:inline-flex; align-items:center; gap:8px; font-size:12.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--glow); border:1px solid rgba(59,130,246,.25); padding:7px 14px; border-radius:100px; background:rgba(37,99,235,.06); margin-bottom:28px;}
  .eyebrow::before{content:''; width:6px; height:6px; border-radius:50%; background:var(--glow); box-shadow:0 0 10px var(--glow); animation:pulse-dot 2s infinite;}
  @keyframes pulse-dot{0%,100%{opacity:1;} 50%{opacity:.35;}}
  h1.hero-title{font-family:var(--display); font-weight:800; font-size:clamp(40px,5.4vw,74px); line-height:1.04; letter-spacing:-.02em; margin-bottom:22px;}
  .hero-title .accent-word{background:linear-gradient(120deg,#fff 10%,var(--glow) 60%,var(--gold) 100%); -webkit-background-clip:text; background-clip:text; color:transparent;}
  .hero-role{font-size:clamp(17px,1.6vw,21px); color:var(--text2); font-weight:500; margin-bottom:10px; max-width:560px;}
  .hero-role strong{color:var(--text); font-weight:600;}
  .hero-sub{font-size:16px; color:var(--text2); max-width:540px; margin-bottom:40px; line-height:1.75;}
  .hero-buttons{display:flex; gap:16px; flex-wrap:wrap;}
  .btn{position:relative; display:inline-flex; align-items:center; gap:10px; padding:15px 28px; border-radius:100px; font-size:14.5px; font-weight:600; cursor:pointer; transition:transform .25s ease;}
  .btn-primary{background:linear-gradient(135deg,var(--accent),var(--glow)); color:#fff; box-shadow:0 8px 30px rgba(37,99,235,.35);}
  .btn-primary:hover{transform:translateY(-2px); box-shadow:0 12px 40px rgba(37,99,235,.5);}
  .btn-ghost{border:1px solid var(--border); color:var(--text); backdrop-filter:blur(8px);}
  .btn-ghost:hover{border-color:rgba(255,255,255,.28); background:rgba(255,255,255,.03); transform:translateY(-2px);}

  .hero-portrait{position:relative; display:flex; align-items:center; justify-content:flex-end; height:640px;}
  .portrait-glow{position:absolute; width:600px; height:600px; border-radius:50%; background:radial-gradient(circle, rgba(59,130,246,.4), rgba(59,130,246,.1) 45%, transparent 72%); filter:blur(26px); right:0;}
  .portrait-figure{position:relative; width:480px; max-width:100%; transform:translateX(18px);}
  .portrait-figure img{width:100%; height:auto; display:block; filter:drop-shadow(0 30px 70px rgba(0,0,0,.6)) drop-shadow(0 0 60px rgba(59,130,246,.12));}
  .portrait-ring{position:absolute; border:1px solid rgba(59,130,246,.18); border-radius:50%;}
  .r1{width:480px; height:480px; animation:spin 40s linear infinite;}
  .r2{width:560px; height:560px; border-style:dashed; animation:spin 70s linear infinite reverse;}
  @keyframes spin{to{transform:rotate(360deg);}}

  .logo-chip{display:inline-flex; align-items:center; justify-content:center; border-radius:16px; padding:16px 26px;}
  .logo-chip.light{background:#fff;}
  .logo-chip.brand-blue{background:linear-gradient(135deg,#5170FF,#3d5ce8);}
  .logo-chip img{display:block;}
  .logo-chip-sm{border-radius:10px; padding:8px 14px; display:inline-flex; align-items:center;}
  .logo-chip-sm.light{background:#fff;}
  .logo-chip-sm img{height:18px; width:auto; display:block;}

  .reveal-scale{opacity:0; transform:scale(.82); transition:opacity .85s cubic-bezier(.16,1,.3,1), transform .85s cubic-bezier(.16,1,.3,1);}
  .reveal-scale.in{opacity:1; transform:scale(1);}

  .scroll-cue{position:absolute; bottom:28px; left:50%; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:10px; font-size:11.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--text2); opacity:.8;}
  .scroll-cue .line{width:1px; height:34px; background:linear-gradient(var(--glow),transparent); animation:scroll-line 2s ease infinite;}
  @keyframes scroll-line{0%{opacity:0; transform:scaleY(0); transform-origin:top;} 40%{opacity:1; transform:scaleY(1); transform-origin:top;} 100%{opacity:0; transform:scaleY(1); transform-origin:bottom;}}

  /* ---------- Reveal ---------- */
  .reveal{opacity:0; transform:translateY(28px); transition:opacity .9s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1);}
  .reveal.in{opacity:1; transform:translateY(0);}
  .reveal-d1{transition-delay:.08s;} .reveal-d2{transition-delay:.16s;} .reveal-d3{transition-delay:.24s;} .reveal-d4{transition-delay:.32s;}

  /* ---------- Section shared ---------- */
  .section{padding:140px 0; position:relative; z-index:2;}
  .section-tight{padding:90px 0;}
  .kicker{font-size:12.5px; letter-spacing:.18em; text-transform:uppercase; color:var(--glow); font-weight:600; margin-bottom:16px; display:block;}
  h2.section-title{font-family:var(--display); font-weight:800; font-size:clamp(30px,3.6vw,46px); letter-spacing:-.02em; line-height:1.12; margin-bottom:22px;}
  .lede{font-size:17px; color:var(--text2); max-width:680px; line-height:1.85;}
  .divider{height:1px; background:linear-gradient(90deg,transparent,var(--border) 20%,var(--border) 80%,transparent);}

  /* ---------- Brand architecture ---------- */
  .arch{display:flex; flex-direction:column; align-items:center; text-align:center; gap:0;}
  .arch-node{padding:30px 44px; border:1px solid var(--border); border-radius:20px; background:linear-gradient(180deg,rgba(255,255,255,.03),transparent); backdrop-filter:blur(10px); min-width:280px;}
  .arch-node .name{font-family:var(--display); font-weight:800; font-size:22px; margin-bottom:6px;}
  .arch-node .tag{font-size:12.5px; color:var(--text2); letter-spacing:.06em; text-transform:uppercase;}
  .arch-node.gold{border-color:rgba(217,164,65,.3); box-shadow:0 0 40px rgba(217,164,65,.08);}
  .arch-node.blue{border-color:rgba(59,130,246,.3); box-shadow:0 0 50px rgba(59,130,246,.14);}
  .arch-connector{width:1px; height:0; background:linear-gradient(var(--border),var(--glow),var(--border)); position:relative; transition:height .8s cubic-bezier(.16,1,.3,1);}
  .arch-connector.in{height:91px;}
  .arch-connector::after{content:'▾'; position:absolute; bottom:-4px; left:50%; transform:translateX(-50%); color:var(--glow); font-size:12px; opacity:0; transition:opacity .5s ease .5s;}
  .arch-connector.in::after{opacity:1;}

  /* ---------- Two column text ---------- */
  .text-grid{display:grid; grid-template-columns:.7fr 1.3fr; gap:64px; align-items:start;}
  .text-grid .tags{display:flex; flex-wrap:wrap; gap:10px; margin-top:28px;}
  .pill{font-size:12.5px; padding:7px 14px; border-radius:100px; border:1px solid var(--border); color:var(--text2); background:rgba(255,255,255,.02);}
  .body-copy p{color:var(--text2); font-size:16px; line-height:1.9; margin-bottom:20px;}
  .body-copy p strong{color:var(--text); font-weight:600;}
  blockquote.pull{font-family:var(--display); font-weight:700; font-size:clamp(21px,2.2vw,28px); line-height:1.5; color:var(--text); border-left:2px solid var(--gold); padding-left:28px; margin-top:34px; letter-spacing:-.01em;}
  blockquote.pull span{color:var(--gold);}

  /* ---------- Cards grid ---------- */
  .card-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:48px;}
  .icon-card{padding:30px 26px; border:1px solid var(--border); border-radius:18px; background:var(--card); position:relative; overflow:hidden; transition:transform .25s ease, border-color .25s ease, box-shadow .25s ease;}
  .icon-card::before{content:''; position:absolute; inset:0; background:radial-gradient(400px circle at var(--mx,50%) var(--my,0%), rgba(59,130,246,.12), transparent 60%); opacity:0; transition:opacity .25s ease;}
  .icon-card:hover{transform:translateY(-6px) scale(1.02); border-color:rgba(59,130,246,.35); box-shadow:0 20px 46px rgba(37,99,235,.14);}
  .icon-card:hover::before{opacity:1;}
  .icon-card .dot{width:34px; height:34px; border-radius:10px; background:linear-gradient(135deg,var(--accent),var(--glow)); display:flex; align-items:center; justify-content:center; margin-bottom:18px; font-size:15px; font-weight:700;}
  .icon-card h3{font-family:var(--display); font-size:16.5px; font-weight:700; margin-bottom:8px;}
  .icon-card p{font-size:13.8px; color:var(--text2); line-height:1.65;}

  /* ---------- Status card ---------- */
  .status-card{margin-top:44px; border:1px solid var(--border); border-radius:22px; padding:44px; background:linear-gradient(135deg,rgba(37,99,235,.06),rgba(217,164,65,.03)); display:grid; grid-template-columns:1fr auto; gap:30px; align-items:center;}
  .status-list{display:grid; grid-template-columns:repeat(2,1fr); gap:22px; margin-top:26px;}
  .status-item{display:flex; align-items:flex-start; gap:12px;}
  .status-item .chip{width:9px; height:9px; border-radius:50%; margin-top:6px; background:var(--glow); box-shadow:0 0 10px var(--glow); flex-shrink:0;}
  .status-item span{font-size:14.5px; color:var(--text2);}
  .status-badge{border:1px solid rgba(217,164,65,.35); color:var(--gold); font-size:12px; letter-spacing:.1em; text-transform:uppercase; padding:9px 16px; border-radius:100px; white-space:nowrap;}

  /* ---------- Ecosystem (signature) ---------- */
  .ecosystem{position:relative; height:680px; margin-top:60px;}
  .eco-svg{position:absolute; inset:0; width:100%; height:100%;}
  .eco-svg path{stroke:rgba(59,130,246,.3); stroke-width:1; fill:none; stroke-dasharray:4 6; animation:dash 30s linear infinite;}
  @keyframes dash{to{stroke-dashoffset:-400;}}
  .eco-node{position:absolute; transform:translate(-50%,-50%); text-align:center; width:172px;}
  .eco-node.float-node{animation:eco-float 5s ease-in-out infinite;}
  @keyframes eco-float{0%,100%{transform:translate(-50%,-50%) translateY(0);} 50%{transform:translate(-50%,-50%) translateY(-9px);}}
  .eco-node .box{border:1px solid var(--border); border-radius:16px; padding:18px 16px; background:rgba(17,24,39,.55); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); transition:transform .25s ease, border-color .25s ease, box-shadow .25s ease;}
  .eco-node .box:hover{transform:translateY(-4px) scale(1.02); border-color:rgba(59,130,246,.45); box-shadow:0 18px 44px rgba(37,99,235,.22);}
  .eco-node h4{font-family:var(--display); font-size:14.5px; font-weight:700; margin-bottom:4px;}
  .eco-node p{font-size:11.5px; color:var(--text2);}
  .eco-center{width:220px;}
  .eco-center .box{background:linear-gradient(160deg,rgba(37,99,235,.16),rgba(217,164,65,.05)); border-color:rgba(59,130,246,.4); box-shadow:0 0 60px rgba(37,99,235,.22);}
  .eco-center h4{font-size:19px;}

  /* ---------- Timeline ---------- */
  .timeline{position:relative; margin-top:60px; padding-left:36px;}
  .timeline::before{content:''; position:absolute; left:6px; top:6px; bottom:6px; width:1px; background:linear-gradient(var(--glow),var(--border) 70%,transparent);}
  .tl-item{position:relative; padding-bottom:56px;}
  .tl-item:last-child{padding-bottom:0;}
  .tl-item::before{content:''; position:absolute; left:-36px; top:4px; width:13px; height:13px; border-radius:50%; background:var(--bg); border:2px solid var(--glow); box-shadow:0 0 12px rgba(59,130,246,.5);}
  .tl-item.future::before{border-color:var(--gold); box-shadow:0 0 12px rgba(217,164,65,.5);}
  .tl-year{font-family:var(--display); font-weight:800; font-size:26px; margin-bottom:10px;}
  .tl-item.future .tl-year{color:var(--gold);}
  .tl-body p{color:var(--text2); font-size:15px; margin-bottom:4px;}

  /* ---------- Tech grid ---------- */
  .tech-grid{display:grid; grid-template-columns:repeat(6,1fr); gap:14px; margin-top:48px;}
  .tech-chip{border:1px solid var(--border); border-radius:14px; padding:22px 14px; text-align:center; font-size:13px; color:var(--text2); background:var(--card); transition:all .3s ease;}
  .tech-chip:hover{color:var(--text); border-color:var(--glow); background:rgba(37,99,235,.06); transform:translateY(-3px);}

  /* ---------- Blog ---------- */
  .blog-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:48px;}
  .blog-card{border:1px solid var(--border); border-radius:20px; overflow:hidden; background:var(--card); transition:transform .35s ease, border-color .35s;}
  .blog-card:hover{transform:translateY(-6px); border-color:rgba(59,130,246,.3);}
  .blog-thumb{height:150px; background:linear-gradient(135deg,rgba(37,99,235,.25),rgba(217,164,65,.08)); position:relative; overflow:hidden;}
  .blog-thumb::after{content:''; position:absolute; inset:0; background:repeating-linear-gradient(120deg,transparent,transparent 18px,rgba(255,255,255,.03) 18px,rgba(255,255,255,.03) 19px);}
  .blog-body{padding:26px;}
  .blog-tag{font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--glow); margin-bottom:10px; display:block;}
  .blog-body h3{font-family:var(--display); font-size:17px; font-weight:700; line-height:1.4; margin-bottom:12px;}
  .blog-body .read{font-size:13px; color:var(--text2); display:inline-flex; align-items:center; gap:6px;}

  /* ---------- Contact ---------- */
  .contact-wrap{text-align:center; max-width:680px; margin:0 auto; position:relative;}
  .contact-wrap h2{font-family:var(--display); font-weight:800; font-size:clamp(32px,4.6vw,56px); letter-spacing:-.02em; margin-bottom:22px;}
  .contact-wrap p{color:var(--text2); font-size:16.5px; margin-bottom:40px; line-height:1.8;}

  /* ---------- Contact: glass cards ---------- */
  .contact-hero{min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:130px 0;}
  .contact-hero .lede{margin:0 auto;}
  .contact-cards{display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:60px; width:100%; max-width:1080px;}
  .glass-card{position:relative; display:block; padding:36px 30px; border-radius:22px; background:rgba(17,24,39,.42); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); border:1px solid var(--border); overflow:hidden; text-align:left; transition:transform .25s ease, border-color .25s ease, box-shadow .25s ease;}
  .glass-card::before{content:'';position:absolute; inset:0; background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%), rgba(59,130,246,.16), transparent 60%); opacity:0; transition:opacity .25s ease; pointer-events:none;}
  .glass-card:hover{transform:translateY(-8px) scale(1.02); border-color:rgba(59,130,246,.4); box-shadow:0 24px 60px rgba(37,99,235,.2);}
  .glass-card:hover::before{opacity:1;}
  .glass-card .gc-icon{width:44px; height:44px; border-radius:12px; background:linear-gradient(135deg,var(--accent),var(--glow)); display:flex; align-items:center; justify-content:center; font-size:17px; font-weight:700; margin-bottom:24px; color:#fff;}
  .glass-card .gc-label{font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--glow); font-weight:600; margin-bottom:10px; display:block;}
  .glass-card h3{font-family:var(--display); font-size:16.5px; font-weight:700; margin-bottom:8px; word-break:break-word; line-height:1.4;}
  .glass-card .gc-sub{font-size:13.5px; color:var(--text2); margin-bottom:22px; line-height:1.6;}
  .glass-card .gc-cta{display:inline-flex; align-items:center; gap:8px; font-size:13.5px; font-weight:600; color:#fff; margin-top:4px;}
  .glass-card .gc-cta svg{transition:transform .3s ease;}
  .glass-card:hover .gc-cta svg{transform:translateX(4px);}

  /* ---------- Manifesto ---------- */
  .manifesto{min-height:100vh; display:flex; align-items:center; justify-content:center; text-align:center; padding:130px 0;}
  .manifesto-inner{max-width:760px; margin:0 auto;}
  .manifesto h2{font-family:var(--display); font-weight:800; font-size:clamp(28px,4vw,48px); line-height:1.22; letter-spacing:-.02em; margin-bottom:42px;}
  .manifesto p{color:var(--text2); font-size:16.5px; line-height:1.95; margin-bottom:20px;}
  .manifesto p.final-line{color:var(--text); font-weight:600; font-size:17.5px; margin-top:16px; margin-bottom:0;}
  .divider-grow{width:0; height:1px; background:linear-gradient(90deg,transparent,var(--glow),var(--gold),transparent); margin:52px auto; transition:width 1.7s cubic-bezier(.16,1,.3,1);}
  .divider-grow.in{width:220px;}
  .manifesto-sig .name{font-family:var(--display); font-weight:800; font-size:21px; margin-bottom:8px;}
  .manifesto-sig .role{font-size:13.5px; color:var(--glow); margin-bottom:5px; letter-spacing:.02em;}
  .manifesto-sig .sub{font-size:13px; color:var(--text2);}

  /* ---------- Footer ---------- */
  footer{border-top:1px solid var(--border); padding:72px 0 32px; position:relative; z-index:2;}
  .footer-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:48px; padding-bottom:52px;}
  .footer-brand .name{font-family:var(--display); font-weight:800; font-size:19px; margin-bottom:10px;}
  .footer-brand .role{font-size:13.5px; color:var(--glow); margin-bottom:4px;}
  .footer-brand .sub{font-size:13px; color:var(--text2); max-width:320px; line-height:1.7;}
  .footer-col h4{font-size:11.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--text2); margin-bottom:20px; font-weight:600;}
  .footer-col ul{list-style:none; display:flex; flex-direction:column; gap:13px;}
  .footer-col a{font-size:14px; color:var(--text2); position:relative; width:fit-content; display:inline-block; transition:color .3s ease;}
  .footer-col a:hover{color:var(--text);}
  .footer-col a::after{content:''; position:absolute; left:0; bottom:-3px; width:0; height:1px; background:var(--glow); transition:width .35s ease;}
  .footer-col a:hover::after{width:100%;}
  .footer-bottom{border-top:1px solid var(--border); padding-top:26px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px; font-size:12.5px; color:var(--text2);}

  @media (max-width:780px){
    .contact-cards{grid-template-columns:1fr;}
    .footer-grid{grid-template-columns:1fr; gap:36px;}
    .eco-svg{display:none;}
    .ecosystem{height:auto; min-height:0; display:flex; flex-direction:column; align-items:center; gap:18px; margin-top:40px;}
    .eco-node{position:static; transform:none !important; width:100%; max-width:320px; animation:none !important;}
    .eco-node.eco-center{order:-1; margin-bottom:8px;}
  }

  @media (max-width:980px){
    .hero-grid{grid-template-columns:1fr;}
    .hero-portrait{height:340px; order:-1; justify-content:center;}
    .portrait-figure{width:230px; transform:none;}
    .portrait-glow{width:320px; height:320px; right:auto;}
    .r1{width:320px; height:320px;} .r2{width:380px; height:380px;}
    .nav-links{display:none;}
    .text-grid{grid-template-columns:1fr; gap:32px;}
    .card-grid{grid-template-columns:repeat(2,1fr);}
    .status-card{grid-template-columns:1fr;}
    .tech-grid{grid-template-columns:repeat(3,1fr);}
    .blog-grid{grid-template-columns:1fr;}
    .arch-node{min-width:0; width:100%; max-width:340px;}
  }
  @media (max-width:560px){
    .card-grid{grid-template-columns:1fr;}
    .status-list{grid-template-columns:1fr;}
    .tech-grid{grid-template-columns:repeat(2,1fr);}
  }
  :focus-visible{outline:2px solid var(--glow); outline-offset:3px;}
