/* ================================================================
   ARIF MAINUDDIN — Cyber Security Portfolio
   style.css  |  Complete stylesheet
   ================================================================ */

/* ── Google Fonts import ── */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800;900&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap');

/* ── CSS Variables ── */
:root {
  --primary:      #2563EB;
  --primary-lt:   #3B82F6;
  --secondary:    #7C3AED;
  --accent:       #06B6D4;
  --accent2:      #10B981;
  --bg:           #F8FAFC;
  --bg2:          #EFF6FF;
  --surface:      #FFFFFF;
  --surface2:     rgba(255,255,255,0.78);
  --border:       rgba(37,99,235,0.13);
  --text:         #1E293B;
  --text2:        #475569;
  --text3:        #94A3B8;
  --shadow:       0 4px 24px rgba(37,99,235,0.10);
  --shadow-lg:    0 14px 50px rgba(37,99,235,0.17);
  --nav-bg:       rgba(248,250,252,0.90);
  --card-bg:      rgba(255,255,255,0.84);
  --hero-grad:    linear-gradient(135deg,#EFF6FF 0%,#F0F9FF 50%,#F5F3FF 100%);
  --blur:         blur(18px);
  --r:            1rem;
  --r-lg:         1.5rem;
  --ease:         0.3s ease;
}

[data-theme="dark"] {
  --bg:        #080D1A;
  --bg2:       #0D1526;
  --surface:   #1A2540;
  --surface2:  rgba(26,37,64,0.80);
  --border:    rgba(100,160,255,0.12);
  --text:      #F0F4FF;
  --text2:     #8FA0C0;
  --text3:     #50668A;
  --shadow:    0 4px 24px rgba(0,0,0,0.50);
  --shadow-lg: 0 14px 50px rgba(0,0,0,0.60);
  --nav-bg:    rgba(8,13,26,0.92);
  --card-bg:   rgba(26,37,64,0.75);
  --hero-grad: linear-gradient(135deg,#080D1A 0%,#0D1526 50%,#110E28 100%);
}

/* ── Reset ── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:'Inter',sans-serif;
  background:var(--bg);
  color:var(--text);
  overflow-x:hidden;
  cursor:none;
  transition:background var(--ease),color var(--ease);
}
img{max-width:100%;display:block;}
a{text-decoration:none;color:inherit;}
ul{list-style:none;}
button{font-family:'Inter',sans-serif;cursor:pointer;}
@media(max-width:768px){body{cursor:auto;}}

/* ── Custom Cursor ── */
#cursor,#cursor-ring{
  position:fixed;border-radius:50%;pointer-events:none;
  z-index:9999;transform:translate(-50%,-50%);
}
#cursor{width:8px;height:8px;background:var(--accent);transition:transform .08s;}
#cursor-ring{
  width:34px;height:34px;border:2px solid var(--primary);opacity:.5;
  transition:width .2s,height .2s,border-color .2s,opacity .2s,left .06s linear,top .06s linear;
}
body.hovered #cursor-ring{width:52px;height:52px;opacity:.85;border-color:var(--accent);}

/* ── Scroll Progress ── */
#scroll-progress{
  position:fixed;top:0;left:0;height:3px;z-index:1001;width:0%;
  background:linear-gradient(90deg,var(--primary),var(--accent),var(--secondary));
  transition:width .08s linear;
}

/* ── Loader ── */
#loader{
  position:fixed;inset:0;background:var(--bg2);z-index:10000;
  display:flex;align-items:center;justify-content:center;
  flex-direction:column;gap:1.5rem;
  transition:opacity .6s ease,visibility .6s ease;
}
#loader.hidden{opacity:0;visibility:hidden;}
.loader-logo{
  font-family:'Poppins',sans-serif;font-size:2.4rem;font-weight:900;
  background:linear-gradient(135deg,var(--primary),var(--accent));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  letter-spacing:3px;
}
.loader-bar-track{width:210px;height:3px;background:var(--border);border-radius:99px;overflow:hidden;}
.loader-bar{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));animation:loadAnim 1.9s ease-in-out forwards;}
@keyframes loadAnim{from{width:0}to{width:100%}}
.loader-text{font-family:'JetBrains Mono',monospace;font-size:.72rem;color:var(--text3);letter-spacing:2.5px;}

/* ── Navigation ── */
nav{
  position:fixed;top:0;left:0;width:100%;z-index:1000;height:68px;
  display:flex;align-items:center;justify-content:space-between;padding:0 2rem;
  background:var(--nav-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border-bottom:1px solid var(--border);
  transition:box-shadow var(--ease),background var(--ease);
}
nav.scrolled{box-shadow:var(--shadow);}
.nav-logo{
  font-family:'Poppins',sans-serif;font-weight:900;font-size:1.25rem;
  background:linear-gradient(135deg,var(--primary),var(--accent));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  letter-spacing:.5px;white-space:nowrap;
}
.nav-links{display:flex;align-items:center;gap:.1rem;}
.nav-links a{
  color:var(--text2);font-size:.855rem;font-weight:500;
  padding:.48rem .82rem;border-radius:.5rem;
  transition:color .2s,background .2s;white-space:nowrap;
}
.nav-links a:hover,.nav-links a.active{color:var(--primary);background:rgba(37,99,235,.08);}
.nav-right{display:flex;align-items:center;gap:.7rem;}
.theme-btn{
  width:38px;height:38px;border-radius:50%;border:1.5px solid var(--border);
  background:var(--surface2);color:var(--text2);
  display:flex;align-items:center;justify-content:center;font-size:1rem;
  backdrop-filter:blur(8px);transition:all .2s;
}
.theme-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary);}
.nav-cta{
  padding:.5rem 1.2rem;border-radius:.6rem;border:none;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  color:#fff;font-size:.855rem;font-weight:700;
  transition:opacity .2s,transform .2s;white-space:nowrap;
}
.nav-cta:hover{opacity:.88;transform:translateY(-1px);}
.hamburger{
  display:none;flex-direction:column;gap:5px;
  background:none;border:none;width:26px;padding:2px 0;
}
.hamburger span{display:block;height:2px;background:var(--text2);border-radius:2px;transition:all .3s;}
.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.hamburger.open span:nth-child(2){opacity:0;transform:scaleX(0);}
.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
.mobile-menu{
  position:fixed;top:68px;left:0;width:100%;
  background:var(--nav-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border-bottom:1px solid var(--border);
  padding:1rem 1.5rem 1.5rem;display:none;flex-direction:column;gap:.25rem;
  z-index:999;box-shadow:var(--shadow-lg);
}
.mobile-menu.open{display:flex;}
.mobile-menu a{
  color:var(--text2);font-size:.95rem;font-weight:500;
  padding:.72rem 1rem;border-radius:.5rem;transition:all .2s;
}
.mobile-menu a:hover{color:var(--primary);background:rgba(37,99,235,.08);}
@media(max-width:980px){
  .nav-links,.nav-cta{display:none;}
  .hamburger{display:flex;}
}

/* ── Shared Section ── */
section{padding:6rem 2rem;}
.section-inner{max-width:1200px;margin:0 auto;}
.alt-bg{background:var(--bg2);}
.section-tag{
  display:inline-flex;align-items:center;gap:.6rem;
  color:var(--primary);font-size:.76rem;font-weight:700;
  letter-spacing:2.5px;text-transform:uppercase;margin-bottom:.9rem;
}
.section-tag::before{
  content:'';width:28px;height:2px;
  background:linear-gradient(90deg,var(--primary),var(--accent));
  border-radius:99px;flex-shrink:0;
}
.section-title{
  font-family:'Poppins',sans-serif;
  font-size:clamp(1.8rem,3.5vw,2.75rem);
  font-weight:900;line-height:1.2;letter-spacing:-.5px;margin-bottom:1.1rem;
}
.section-title span{
  background:linear-gradient(135deg,var(--primary),var(--accent));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.section-sub{color:var(--text2);max-width:620px;line-height:1.85;font-size:.97rem;}

/* ── Scroll Reveal ── */
.fade-up{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease;}
.fade-up.visible{opacity:1;transform:none;}
.delay-1{transition-delay:.08s;}
.delay-2{transition-delay:.16s;}
.delay-3{transition-delay:.24s;}
.delay-4{transition-delay:.32s;}
.delay-5{transition-delay:.40s;}
.delay-6{transition-delay:.48s;}

/* ── Buttons ── */
.btn-primary{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.88rem 2rem;border-radius:.75rem;border:none;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  color:#fff;font-size:.95rem;font-weight:700;
  box-shadow:0 4px 20px rgba(37,99,235,.35);
  transition:transform .2s,box-shadow .2s;
}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(37,99,235,.48);}
.btn-outline{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.88rem 2rem;border-radius:.75rem;
  border:1.5px solid var(--border);background:var(--surface2);
  color:var(--text);font-size:.95rem;font-weight:700;
  backdrop-filter:blur(8px);transition:all .2s;
}
.btn-outline:hover{border-color:var(--primary);color:var(--primary);background:rgba(37,99,235,.07);transform:translateY(-2px);}

/* ================================================================
   HERO
   ================================================================ */
#home{
  min-height:100vh;display:flex;align-items:center;
  padding:88px 2rem 3rem;background:var(--hero-grad);
  position:relative;overflow:hidden;
}
.hero-grid-bg{
  position:absolute;inset:0;pointer-events:none;
  background-image:
    linear-gradient(rgba(37,99,235,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(37,99,235,.05) 1px,transparent 1px);
  background-size:64px 64px;
}
.hero-shapes{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
.hs{position:absolute;border-radius:50%;}
.hs1{
  width:660px;height:660px;top:-230px;right:-190px;
  background:radial-gradient(circle,rgba(37,99,235,.14),transparent 70%);
  animation:hFloat 10s ease-in-out infinite;
}
.hs2{
  width:430px;height:430px;bottom:-130px;left:-130px;
  background:radial-gradient(circle,rgba(124,58,237,.12),transparent 70%);
  animation:hFloat 12s ease-in-out infinite 2.5s;
}
.hs3{
  width:270px;height:270px;top:46%;left:34%;
  background:radial-gradient(circle,rgba(6,182,212,.10),transparent 70%);
  animation:hFloat 8s ease-in-out infinite 1.2s;
}
@keyframes hFloat{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(20px,-22px) scale(1.06);}}

.hero-container{
  max-width:1200px;margin:0 auto;width:100%;
  display:grid;grid-template-columns:1fr 1fr;
  align-items:center;gap:4rem;position:relative;z-index:1;
}

/* Left */
.hero-badge{
  display:inline-flex;align-items:center;gap:.55rem;
  background:rgba(37,99,235,.1);border:1px solid rgba(37,99,235,.22);
  color:var(--primary);padding:.45rem 1.1rem;border-radius:99px;
  font-size:.78rem;font-weight:700;letter-spacing:.5px;margin-bottom:1.3rem;
  backdrop-filter:blur(8px);
}
.badge-dot{
  width:8px;height:8px;background:var(--accent2);
  border-radius:50%;animation:pls 2s ease-in-out infinite;flex-shrink:0;
}
@keyframes pls{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(1.55);}}

.hero-name{
  font-family:'Poppins',sans-serif;
  font-size:clamp(2.6rem,5.5vw,4.2rem);
  font-weight:900;line-height:1.08;letter-spacing:-2px;margin-bottom:.9rem;
}
.hero-name span{
  background:linear-gradient(135deg,var(--primary),var(--accent));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.hero-title-row{
  display:flex;align-items:center;gap:.6rem;
  font-size:1.04rem;font-weight:500;color:var(--text2);
  margin-bottom:1.35rem;min-height:1.7rem;
}
.hero-title-row i{color:var(--accent);flex-shrink:0;}
#typed-text{color:var(--accent);font-weight:700;}
.tcursor{color:var(--primary);animation:blink 1s step-end infinite;font-weight:300;}
@keyframes blink{50%{opacity:0;}}

.hero-desc{
  color:var(--text2);line-height:1.87;margin-bottom:2.2rem;
  max-width:500px;font-size:.97rem;
}
.hero-btns{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2.4rem;}
.hero-socials{display:flex;gap:.6rem;flex-wrap:wrap;}
.soc-icon{
  width:40px;height:40px;border-radius:50%;
  border:1.5px solid var(--border);background:var(--surface2);
  color:var(--text2);display:flex;align-items:center;justify-content:center;
  font-size:.95rem;backdrop-filter:blur(8px);transition:all .25s;
}
.soc-icon:hover{
  background:var(--primary);color:#fff;border-color:var(--primary);
  transform:translateY(-3px);box-shadow:0 6px 18px rgba(37,99,235,.35);
}

/* Right — photo ring */
.hero-right{display:flex;align-items:center;justify-content:center;position:relative;}
.ring-wrap{position:relative;width:380px;height:380px;}
.ring-outer{
  width:100%;height:100%;border-radius:50%;padding:4px;
  background:linear-gradient(135deg,var(--primary),var(--accent),var(--secondary));
  box-shadow:0 0 80px rgba(37,99,235,.25),0 0 130px rgba(6,182,212,.1);
  animation:rSpin 20s linear infinite;position:relative;
}
.ring-outer::before{
  content:'';position:absolute;inset:-3px;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 55%,var(--accent) 75%,transparent 100%);
  animation:rSpin 3.8s linear infinite;
}
@keyframes rSpin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
.ring-inner{
  width:100%;height:100%;border-radius:50%;overflow:hidden;
  background:var(--surface);animation:rSpin 20s linear infinite reverse;
}
.ring-inner img{width:100%;height:100%;object-fit:cover;object-position:top center;}

/* Floating stat badges */
.stat-badge{
  position:absolute;background:var(--surface);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border:1px solid var(--border);border-radius:var(--r);
  padding:.85rem 1.1rem;box-shadow:var(--shadow-lg);
  display:flex;align-items:center;gap:.6rem;
}
.stat-badge.sb1{bottom:10px;left:-45px;animation:sbFloat 4.5s ease-in-out infinite;}
.stat-badge.sb2{top:35px;right:-45px;animation:sbFloat 4.5s ease-in-out infinite 2.2s;}
@keyframes sbFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-9px);}}
.stat-badge i{font-size:1.35rem;}
.sb-num{font-family:'Poppins',sans-serif;font-weight:900;font-size:1.3rem;line-height:1;}
.sb-lbl{font-size:.68rem;color:var(--text3);margin-top:.1rem;}

@media(max-width:960px){
  #home{padding:88px 1.5rem 3rem;}
  .hero-container{grid-template-columns:1fr;gap:2.5rem;}
  .hero-right{order:-1;}
  .ring-wrap{width:260px;height:260px;}
  .hero-badge,.hero-title-row{justify-content:center;}
  .hero-name,.hero-desc{text-align:center;}
  .hero-desc{margin-inline:auto;}
  .hero-btns,.hero-socials{justify-content:center;}
  .stat-badge.sb1{left:-8px;}
  .stat-badge.sb2{right:-8px;}
}

/* ================================================================
   ABOUT
   ================================================================ */
.about-grid{
  display:grid;grid-template-columns:1fr 1.15fr;
  gap:4rem;align-items:start;margin-top:3.5rem;
}
.about-img-wrap{position:relative;}
.about-photo-card{
  width:100%;aspect-ratio:3/4;max-width:360px;
  border-radius:var(--r-lg);overflow:hidden;
  background:linear-gradient(135deg,rgba(37,99,235,.08),rgba(124,58,237,.08));
  border:1px solid var(--border);position:relative;
}
.about-photo-card img{
  width:100%;height:100%;
  object-fit:cover;object-position:top center;
  display:block;
}
.about-terminal{
  position:absolute;bottom:1rem;left:1rem;right:1rem;
  background:rgba(8,13,26,.88);backdrop-filter:blur(16px);
  border:1px solid rgba(6,182,212,.25);border-radius:.75rem;padding:.85rem 1rem;
}
.term-prompt{font-family:'JetBrains Mono',monospace;font-size:.7rem;color:var(--accent);margin-bottom:.28rem;}
.term-output{font-family:'JetBrains Mono',monospace;font-size:.76rem;color:#e2e8f0;}
.exp-badge{
  position:absolute;bottom:-20px;right:-20px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r);padding:1.1rem 1.3rem;
  box-shadow:var(--shadow-lg);text-align:center;min-width:130px;
}
.exp-num{
  font-family:'Poppins',sans-serif;font-weight:900;font-size:2.4rem;
  background:linear-gradient(135deg,var(--primary),var(--accent));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  line-height:1;
}
.exp-lbl{color:var(--text2);font-size:.75rem;margin-top:.3rem;}
.about-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;}
.tag{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.35rem .9rem;border-radius:99px;font-size:.78rem;font-weight:600;border:1px solid;
}
.tb{background:rgba(37,99,235,.1);color:var(--primary);border-color:rgba(37,99,235,.18);}
.tg{background:rgba(16,185,129,.1);color:var(--accent2);border-color:rgba(16,185,129,.18);}
.tp{background:rgba(124,58,237,.1);color:var(--secondary);border-color:rgba(124,58,237,.18);}
.tc{background:rgba(6,182,212,.1);color:var(--accent);border-color:rgba(6,182,212,.18);}

.about-bio{color:var(--text2);line-height:1.9;font-size:.96rem;margin-bottom:1.2rem;}
.skills-label{font-family:'Poppins',sans-serif;font-weight:700;font-size:1rem;margin-bottom:1rem;}
.skills-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem;margin-top:1.5rem;}
.sk-item{}
.sk-head{display:flex;justify-content:space-between;font-size:.8rem;font-weight:600;margin-bottom:.42rem;}
.sk-head span:last-child{color:var(--primary);}
.sk-bar{height:6px;background:var(--border);border-radius:99px;overflow:hidden;}
.sk-fill{
  height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--primary),var(--accent));
  width:0;transition:width 1.3s cubic-bezier(.4,0,.2,1);
}

/* Counters */
.counters-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;margin-top:4rem;}
.ctr-card{
  text-align:center;padding:1.85rem 1rem;
  background:var(--card-bg);backdrop-filter:blur(16px);
  border:1px solid var(--border);border-radius:var(--r);
  box-shadow:var(--shadow);transition:transform var(--ease),box-shadow var(--ease);
}
.ctr-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);}
.ctr-num{
  font-family:'Poppins',sans-serif;font-weight:900;font-size:2.35rem;
  background:linear-gradient(135deg,var(--primary),var(--accent));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  line-height:1;
}
.ctr-lbl{color:var(--text2);font-size:.82rem;margin-top:.55rem;}

@media(max-width:960px){
  .about-grid{grid-template-columns:1fr;gap:3rem;}
  .about-photo-card{max-width:100%;aspect-ratio:3/2;}
  .counters-row{grid-template-columns:repeat(2,1fr);}
  .skills-grid{grid-template-columns:1fr;}
  .exp-badge{right:0;}
}

/* ================================================================
   SERVICES
   ================================================================ */
.services-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(305px,1fr));
  gap:1.75rem;margin-top:3rem;
}
.svc-card{
  background:var(--card-bg);backdrop-filter:blur(16px);
  border:1px solid var(--border);border-radius:var(--r-lg);
  padding:2rem;box-shadow:var(--shadow);
  transition:transform var(--ease),box-shadow var(--ease),border-color var(--ease);
  position:relative;overflow:hidden;
}
.svc-card::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(135deg,rgba(37,99,235,.04),rgba(124,58,237,.04));
  opacity:0;transition:opacity var(--ease);pointer-events:none;border-radius:var(--r-lg);
}
.svc-card:hover{transform:translateY(-7px);box-shadow:var(--shadow-lg);border-color:rgba(37,99,235,.28);}
.svc-card:hover::after{opacity:1;}
.svc-icon{
  width:58px;height:58px;border-radius:1rem;
  display:flex;align-items:center;justify-content:center;
  font-size:1.45rem;color:#fff;margin-bottom:1.35rem;
  box-shadow:0 6px 20px rgba(37,99,235,.28);position:relative;z-index:1;
}
.svc-title{font-family:'Poppins',sans-serif;font-weight:700;font-size:1.1rem;margin-bottom:.7rem;position:relative;z-index:1;}
.svc-desc{color:var(--text2);font-size:.9rem;line-height:1.75;margin-bottom:1.5rem;position:relative;z-index:1;}
.svc-link{
  display:inline-flex;align-items:center;gap:.4rem;
  color:var(--primary);font-size:.875rem;font-weight:700;
  transition:gap .2s;position:relative;z-index:1;
}
.svc-link:hover{gap:.85rem;}

/* ================================================================
   TIMELINE
   ================================================================ */
.timeline-body{padding-left:2rem;position:relative;margin-top:3rem;}
.timeline-body::before{
  content:'';position:absolute;left:0;top:8px;bottom:0;width:2px;
  background:linear-gradient(to bottom,var(--primary),var(--accent),transparent);
  border-radius:99px;
}
.tl-item{position:relative;padding-left:2rem;padding-bottom:2.75rem;}
.tl-item:last-child{padding-bottom:0;}
.tl-dot{
  position:absolute;left:calc(-2rem - 6px);top:4px;
  width:14px;height:14px;border-radius:50%;
  background:linear-gradient(135deg,var(--primary),var(--accent));
  border:2px solid var(--bg2);box-shadow:0 0 0 4px rgba(37,99,235,.18);
}
.tl-year{font-family:'JetBrains Mono',monospace;font-size:.74rem;color:var(--accent);font-weight:700;margin-bottom:.3rem;letter-spacing:.5px;}
.tl-role{font-family:'Poppins',sans-serif;font-weight:700;font-size:1.05rem;margin-bottom:.2rem;}
.tl-org{color:var(--primary);font-size:.85rem;font-weight:600;margin-bottom:.5rem;}
.tl-desc{color:var(--text2);font-size:.9rem;line-height:1.75;}

/* ================================================================
   GALLERY
   ================================================================ */
.gallery-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin:2rem 0 1.5rem;}
.filter-btn{
  padding:.5rem 1.2rem;border-radius:99px;border:1.5px solid var(--border);
  background:transparent;color:var(--text2);font-size:.86rem;font-weight:600;
  transition:all .2s;font-family:'Inter',sans-serif;
}
.filter-btn.active,.filter-btn:hover{
  background:var(--primary);color:#fff;border-color:var(--primary);
  box-shadow:0 4px 14px rgba(37,99,235,.3);
}
.gallery-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));
  gap:1rem;
}
.gal-item{
  position:relative;border-radius:var(--r);overflow:hidden;
  background:var(--surface);border:1px solid var(--border);
  aspect-ratio:4/3;cursor:zoom-in;
}
.gal-placeholder{
  width:100%;height:100%;
  display:flex;align-items:center;justify-content:center;
  flex-direction:column;gap:.6rem;
}
.gal-placeholder i{font-size:2.5rem;opacity:.5;}
.gal-placeholder span{font-size:.7rem;color:var(--text3);}
.gal-img{width:100%;height:100%;object-fit:cover;transition:transform .45s ease;}
.gal-item:hover .gal-img{transform:scale(1.07);}
.gal-overlay{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(8,13,26,.9),transparent 55%);
  opacity:0;transition:opacity .3s;
  display:flex;align-items:flex-end;padding:1.1rem;
}
.gal-item:hover .gal-overlay{opacity:1;}
.gal-caption{color:#fff;font-size:.82rem;font-weight:600;}

/* Lightbox */
#lightbox{
  position:fixed;inset:0;background:rgba(0,0,0,.93);
  z-index:8000;display:none;align-items:center;justify-content:center;padding:2rem;
}
#lightbox.open{display:flex;}
#lightbox img{max-width:90vw;max-height:82vh;border-radius:var(--r);object-fit:contain;box-shadow:0 24px 80px rgba(0,0,0,.7);}
#lb-close{
  position:absolute;top:1.25rem;right:1.25rem;color:#fff;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);
  border-radius:50%;width:46px;height:46px;
  display:flex;align-items:center;justify-content:center;
  font-size:1.2rem;transition:background .2s;
}
#lb-close:hover{background:rgba(255,255,255,.25);}

/* ================================================================
   TV / MEDIA
   ================================================================ */
.media-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));
  gap:1.75rem;margin-top:3rem;
}
.media-card{
  background:var(--card-bg);backdrop-filter:blur(16px);
  border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--shadow);transition:transform var(--ease),box-shadow var(--ease);
}
.media-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);}
.yt-wrap{position:relative;width:100%;padding-bottom:56.25%;height:0;overflow:hidden;background:#000;}
.yt-wrap iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none;}
.media-body{padding:1.4rem;}
.media-date{font-family:'JetBrains Mono',monospace;font-size:.72rem;color:var(--accent);margin-bottom:.45rem;letter-spacing:.5px;}
.media-title{font-family:'Poppins',sans-serif;font-weight:700;font-size:1rem;margin-bottom:.5rem;line-height:1.4;}
.media-desc{color:var(--text2);font-size:.875rem;line-height:1.65;margin-bottom:1rem;}
.media-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;}
.media-ch{font-size:.78rem;color:var(--text3);display:flex;align-items:center;gap:.35rem;}
.media-ch i{color:var(--primary);}
.watch-btn{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.45rem 1.1rem;border-radius:.55rem;border:none;
  background:linear-gradient(135deg,#FF0000,#CC0000);
  color:#fff;font-size:.78rem;font-weight:700;transition:opacity .2s,transform .2s;
}
.watch-btn:hover{opacity:.88;transform:translateY(-1px);}

/* ================================================================
   BOOKS
   ================================================================ */
.books-grid{
  display:grid;grid-template-columns:repeat(6,1fr);
  gap:1.5rem;margin-top:3rem;
}
.book-card{
  background:var(--card-bg);backdrop-filter:blur(16px);
  border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--shadow);
  transition:transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .3s;
}
.book-card:hover{transform:translateY(-10px) rotate(-.8deg);box-shadow:var(--shadow-lg);}
.book-cover-area{
  height:220px;display:flex;align-items:center;
  justify-content:center;position:relative;overflow:hidden;
}
.book-spine{
  width:138px;height:186px;border-radius:.5rem;
  display:flex;align-items:center;justify-content:center;
  flex-direction:column;gap:.6rem;padding:1rem;
  box-shadow:6px 8px 24px rgba(0,0,0,.35),-3px 0 8px rgba(0,0,0,.15);
}
.book-spine i{font-size:2.2rem;color:rgba(255,255,255,.88);}
.book-spine-title{
  font-family:'Poppins',sans-serif;font-size:.63rem;font-weight:800;
  color:rgba(255,255,255,.85);text-align:center;line-height:1.3;
}
.book-body{padding:1.25rem;}
.book-stars{display:flex;align-items:center;gap:.2rem;margin-bottom:.55rem;}
.book-stars i{color:#F59E0B;font-size:.76rem;}
.book-stars span{font-size:.71rem;color:var(--text3);margin-left:.22rem;}
.book-title{font-family:'Poppins',sans-serif;font-weight:700;font-size:.94rem;margin-bottom:.42rem;line-height:1.4;}
.book-desc{color:var(--text2);font-size:.8rem;line-height:1.65;margin-bottom:.6rem;}
.book-year{font-family:'JetBrains Mono',monospace;font-size:.72rem;color:var(--accent);margin-bottom:1rem;}
.book-actions{display:flex;justify-content:center;}
.bk-btn{
  flex:0 1 auto;min-width:140px;padding:.65rem 1.5rem;border-radius:.55rem;border:none;
  font-size:.8rem;font-weight:700;font-family:'Inter',sans-serif;transition:all .2s;
  display:inline-flex;align-items:center;justify-content:center;text-align:center;
  line-height:1.2;white-space:nowrap;box-sizing:border-box;
}
.bk-btn.primary{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;}
.bk-btn:hover{transform:translateY(-1px);opacity:.9;}

/* ================================================================
   TESTIMONIALS
   ================================================================ */
.testi-mask{
  overflow:hidden;
  mask-image:linear-gradient(90deg,transparent,black 8%,black 92%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,black 8%,black 92%,transparent);
}
.testi-track{
  display:flex;gap:1.5rem;
  animation:tScroll 38s linear infinite;width:max-content;
}
.testi-track:hover{animation-play-state:paused;}
@keyframes tScroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.testi-card{
  background:var(--card-bg);backdrop-filter:blur(16px);
  border:1px solid var(--border);border-radius:var(--r-lg);
  padding:1.75rem;box-shadow:var(--shadow);min-width:328px;max-width:368px;flex-shrink:0;
}
.testi-stars{color:#F59E0B;font-size:.84rem;letter-spacing:1px;margin-bottom:.85rem;}
.testi-text{color:var(--text2);font-size:.9rem;line-height:1.75;font-style:italic;margin-bottom:1.25rem;}
.testi-author{display:flex;align-items:center;gap:.75rem;}
.testi-avatar{
  width:44px;height:44px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:1rem;
}
.testi-name{font-weight:700;font-size:.88rem;}
.testi-role{color:var(--text3);font-size:.75rem;margin-top:.1rem;}


/* ================================================================
   CONTACT
   ================================================================ */
.contact-grid{
  display:grid;grid-template-columns:1fr 1.25fr;
  gap:4rem;margin-top:3rem;align-items:start;
}
.contact-heading{font-family:'Poppins',sans-serif;font-weight:700;font-size:1.5rem;margin-bottom:.9rem;}
.contact-intro{color:var(--text2);line-height:1.85;margin-bottom:2rem;font-size:.96rem;}
.contact-row{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1.35rem;}
.ci-box{
  width:46px;height:46px;border-radius:.8rem;flex-shrink:0;
  background:rgba(37,99,235,.1);color:var(--primary);
  display:flex;align-items:center;justify-content:center;font-size:1.1rem;
}
.ci-lbl{font-size:.72rem;color:var(--text3);margin-bottom:.15rem;letter-spacing:.5px;}
.ci-val{font-weight:600;font-size:.9rem;line-height:1.5;}
.ci-val a{color:inherit;transition:color .2s;}
.ci-val a:hover{color:var(--primary);}
.contact-socials{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:2rem;}
.csoc{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.55rem 1rem;border-radius:.7rem;border:1.5px solid var(--border);
  background:var(--surface2);color:var(--text2);
  font-size:.82rem;font-weight:600;backdrop-filter:blur(8px);transition:all .2s;
}
.csoc:hover{border-color:var(--primary);color:var(--primary);background:rgba(37,99,235,.07);transform:translateY(-2px);}
.form-card{
  background:var(--card-bg);backdrop-filter:blur(16px);
  border:1px solid var(--border);border-radius:var(--r-lg);
  padding:2rem;box-shadow:var(--shadow);
}
.form-card-title{font-family:'Poppins',sans-serif;font-weight:700;font-size:1.25rem;margin-bottom:1.5rem;}
.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.form-grp{margin-bottom:1.15rem;}
.form-lbl{display:block;font-size:.8rem;font-weight:700;margin-bottom:.44rem;}
.form-inp,.form-ta{
  width:100%;padding:.78rem 1rem;border-radius:.72rem;
  border:1.5px solid var(--border);background:var(--surface2);
  color:var(--text);font-family:'Inter',sans-serif;font-size:.9rem;
  backdrop-filter:blur(8px);outline:none;transition:border-color .2s,box-shadow .2s;
}
.form-inp:focus,.form-ta:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.12);}
.form-ta{resize:vertical;min-height:130px;}
.form-submit-btn{
  width:100%;padding:.9rem;border-radius:.75rem;border:none;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  color:#fff;font-size:1rem;font-weight:700;font-family:'Inter',sans-serif;
  box-shadow:0 4px 20px rgba(37,99,235,.3);transition:all .2s;
  display:flex;align-items:center;justify-content:center;gap:.5rem;
}
.form-submit-btn:hover{opacity:.9;transform:translateY(-2px);box-shadow:0 8px 28px rgba(37,99,235,.4);}
.form-status{margin-top:.9rem;font-size:.82rem;font-weight:600;min-height:1.2em;text-align:center;}
@media(max-width:880px){
  .contact-grid{grid-template-columns:1fr;gap:2.5rem;}
  .form-row-2{grid-template-columns:1fr;}
}

/* ================================================================
   NEWSLETTER
   ================================================================ */
.nl-section{
  background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%);
  padding:5rem 2rem;text-align:center;position:relative;overflow:hidden;
}
.nl-section::before{
  content:'';position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:50px 50px;
}
.nl-inner{max-width:560px;margin:0 auto;position:relative;z-index:1;}
.nl-inner h2{
  font-family:'Poppins',sans-serif;font-weight:900;
  font-size:clamp(1.5rem,3vw,2rem);color:#fff;margin-bottom:.75rem;
}
.nl-inner p{color:rgba(255,255,255,.82);margin-bottom:1.75rem;font-size:.97rem;}
.nl-form{display:flex;gap:.75rem;}
.nl-inp{
  flex:1;padding:.88rem 1.25rem;border-radius:.75rem;border:none;
  background:rgba(255,255,255,.18);color:#fff;font-size:.95rem;
  font-family:'Inter',sans-serif;backdrop-filter:blur(8px);
  outline:none;transition:background .2s;
}
.nl-inp::placeholder{color:rgba(255,255,255,.65);}
.nl-inp:focus{background:rgba(255,255,255,.28);}
.nl-btn{
  padding:.88rem 1.75rem;border-radius:.75rem;border:none;
  background:#fff;color:var(--primary);font-weight:800;
  font-family:'Inter',sans-serif;font-size:.95rem;
  transition:all .2s;white-space:nowrap;
}
.nl-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.2);}
@media(max-width:560px){.nl-form{flex-direction:column;}}

/* ================================================================
   FOOTER
   ================================================================ */
footer{background:var(--bg2);border-top:1px solid var(--border);padding:3.5rem 2rem 1.75rem;}
.footer-inner{max-width:1200px;margin:0 auto;}
.footer-top{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:3rem;margin-bottom:3rem;}
.footer-brand p{color:var(--text2);font-size:.875rem;line-height:1.8;margin:.85rem 0 1.35rem;max-width:290px;}
.footer-socials{display:flex;flex-wrap:wrap;gap:.5rem;}
.fsoc{
  width:36px;height:36px;border-radius:50%;
  border:1.5px solid var(--border);background:var(--surface2);
  color:var(--text2);display:flex;align-items:center;justify-content:center;
  font-size:.88rem;transition:all .2s;
}
.fsoc:hover{background:var(--primary);color:#fff;border-color:var(--primary);transform:translateY(-2px);box-shadow:0 4px 12px rgba(37,99,235,.3);}
.footer-col h4{font-family:'Poppins',sans-serif;font-weight:700;font-size:.95rem;margin-bottom:1.1rem;}
.footer-links{display:flex;flex-direction:column;gap:.55rem;}
.footer-links a{color:var(--text2);font-size:.875rem;transition:color .2s,transform .2s;display:inline-flex;align-items:center;gap:.3rem;}
.footer-links a:hover{color:var(--primary);transform:translateX(3px);}
.footer-bottom{
  border-top:1px solid var(--border);padding-top:1.5rem;
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;
}
.footer-bottom p{color:var(--text3);font-size:.82rem;}
.back-top{
  width:40px;height:40px;border-radius:50%;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  color:#fff;border:none;display:flex;align-items:center;justify-content:center;
  font-size:.9rem;transition:transform .2s,box-shadow .2s;
}
.back-top:hover{transform:translateY(-3px);box-shadow:0 6px 16px rgba(37,99,235,.4);}
@media(max-width:768px){
  .footer-top{grid-template-columns:1fr;gap:2rem;}
  .footer-bottom{flex-direction:column;text-align:center;}
}

/* ================================================================
   FLOATING BUTTONS
   ================================================================ */
#wa-float,#top-float{
  position:fixed;right:1.5rem;z-index:900;
  width:50px;height:50px;border-radius:50%;border:none;
  display:flex;align-items:center;justify-content:center;
  font-size:1.45rem;box-shadow:0 6px 24px rgba(0,0,0,.25);
  transition:transform .2s,opacity .3s;
}
#wa-float{bottom:5.75rem;background:#25D366;color:#fff;}
#top-float{bottom:1.5rem;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;opacity:0;pointer-events:none;}
#top-float.show{opacity:1;pointer-events:auto;}
#wa-float:hover,#top-float:hover{transform:translateY(-4px);}

/* ================================================================
   BOOKS GRID — responsive column counts
   ================================================================ */
@media(max-width:1200px){ .books-grid{ grid-template-columns:repeat(4,1fr); } }
@media(max-width:860px){  .books-grid{ grid-template-columns:repeat(3,1fr); gap:1.1rem; } }
@media(max-width:600px){  .books-grid{ grid-template-columns:repeat(2,1fr); gap:1rem; } }
@media(max-width:400px){  .books-grid{ grid-template-columns:1fr; } }

/* ================================================================
   RESPONSIVE — TABLET & MOBILE REFINEMENTS
   (site already has per-section breakpoints above; these fill gaps
   for smaller phones and general spacing/typography scaling)
   ================================================================ */
@media(max-width:1024px){
  .services-grid{ grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); }
  .media-grid{ grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); }
}

@media(max-width:768px){
  section{ padding:4rem 1.25rem; }
  .section-inner{ padding:0; }
  .section-title{ font-size:clamp(1.5rem,6vw,2.1rem); }
  .section-sub{ font-size:.9rem; }

  nav{ padding:0 1rem; }
  .nav-logo{ font-size:1.05rem; }

  .hero-container{ gap:2rem; }
  .hero-desc{ font-size:.92rem; }
  .hero-btns{ flex-direction:column; align-items:stretch; }
  .hero-btns .btn-primary,.hero-btns .btn-outline{ justify-content:center; }

  .services-grid{ grid-template-columns:1fr; gap:1.25rem; }
  .svc-card{ padding:1.5rem; }

  .gallery-grid{ grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:.75rem; }
  .media-grid{ grid-template-columns:1fr; gap:1.25rem; }

  .testi-card{ min-width:270px;max-width:280px;padding:1.35rem; }

  .counters-row{ grid-template-columns:repeat(2,1fr); gap:1rem; }
  .ctr-num{ font-size:1.9rem; }

  .timeline-body{ padding-left:1.5rem; }
  .tl-item{ padding-left:1.25rem;padding-bottom:2rem; }
  .tl-dot{ left:calc(-1.5rem - 6px); }

  .nl-form{ flex-direction:column; }
  .nl-inner h2{ font-size:1.4rem; }

  #wa-float,#top-float{ width:44px;height:44px;font-size:1.2rem;right:1rem; }
  #wa-float{ bottom:5rem; }
  #top-float{ bottom:1rem; }
}

@media(max-width:480px){
  .hero-name{ font-size:2.1rem; }
  .hero-title-row{ font-size:.9rem; }
  .hero-badge{ font-size:.7rem;padding:.4rem .85rem; }
  .ring-wrap{ width:210px;height:210px; }
  .stat-badge{ padding:.6rem .8rem;gap:.45rem; }
  .stat-badge .sb-num{ font-size:1.05rem; }
  .stat-badge .sb-lbl{ font-size:.6rem; }

  .about-terminal{ padding:.6rem .75rem; }
  .exp-badge{ padding:.85rem 1rem;min-width:100px; }
  .exp-num{ font-size:1.8rem; }

  .skills-grid{ gap:.9rem; }

  .gallery-filters{ gap:.4rem; }
  .filter-btn{ padding:.4rem .9rem;font-size:.78rem; }
  .gallery-grid{ grid-template-columns:repeat(2,1fr); }

  .book-cover-area{ height:170px; }
  .book-body{ padding:1rem; }

  .form-card{ padding:1.4rem; }
  .contact-socials{ gap:.45rem; }
  .csoc{ font-size:.76rem;padding:.48rem .85rem; }

  .footer-top{ gap:1.75rem; }
}

/* ── Accessibility ── */
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px;}
.skip-link{
  position:fixed;top:-100%;left:1rem;z-index:20000;
  background:var(--primary);color:#fff;padding:.6rem 1.2rem;
  border-radius:.5rem;font-weight:700;font-size:.875rem;transition:top .2s;
}
.skip-link:focus{top:1rem;}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;}
}
