/* ═══════════════════════════════════════════════════════════════
   VISHAL ARYA 3D PORTFOLIO — MASTER STYLESHEET
   Dark / Light Theme · CSS 3D · Glassmorphism · Responsive
═══════════════════════════════════════════════════════════════ */

/* ── THEME VARIABLES ──────────────────────────────────────── */
:root, [data-theme="dark"] {
  --bg:      #030b18;
  --bg2:     #060f22;
  --bg3:     #091529;
  --text:    #e2e8f5;
  --muted:   #7a90b8;
  --dim:     #3a4d6b;
  --glass:   rgba(255,255,255,0.034);
  --glass2:  rgba(255,255,255,0.07);
  --border:  rgba(255,255,255,0.07);
  --border2: rgba(255,255,255,0.13);
  --a1:      #3b82f6;
  --a2:      #8b5cf6;
  --a3:      #06b6d4;
  --a1-glow: rgba(59,130,246,0.25);
  --a2-glow: rgba(139,92,246,0.2);
  --shadow:  0 12px 40px rgba(0,0,0,0.6);
  --cshadow: 0 4px 24px rgba(0,0,0,0.4);
  --r: 20px; --rs: 12px;
  --t: 0.3s cubic-bezier(0.4,0,0.2,1);
  --nav-bg: rgba(3,11,24,0.85);
}
[data-theme="light"] {
  --bg:      #f0f5ff;
  --bg2:     #ffffff;
  --bg3:     #e4ecff;
  --text:    #0f172a;
  --muted:   #475569;
  --dim:     #94a3b8;
  --glass:   rgba(255,255,255,0.75);
  --glass2:  rgba(255,255,255,0.95);
  --border:  rgba(0,0,0,0.07);
  --border2: rgba(0,0,0,0.13);
  --a1:      #2563eb;
  --a2:      #7c3aed;
  --a3:      #0891b2;
  --a1-glow: rgba(37,99,235,0.18);
  --a2-glow: rgba(124,58,237,0.14);
  --shadow:  0 12px 40px rgba(0,0,0,0.12);
  --cshadow: 0 4px 20px rgba(0,0,0,0.1);
  --nav-bg: rgba(240,245,255,0.9);
}

/* ── RESET ────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;font-size:16px;}
body{
  font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);
  line-height:1.7;overflow-x:hidden;transition:background 0.4s,color 0.4s;
}
a{text-decoration:none;color:inherit;}
ul{list-style:none;}
::-webkit-scrollbar{width:5px;}
::-webkit-scrollbar-track{background:var(--bg2);}
::-webkit-scrollbar-thumb{background:var(--a1);border-radius:3px;}

/* ── SCROLL PROGRESS ──────────────────────────────────────── */
.scroll-bar{
  position:fixed;top:0;left:0;height:3px;width:0%;z-index:9999;
  background:linear-gradient(90deg,var(--a1),var(--a2),var(--a3));
  transition:width 0.1s;
}

/* ── PRELOADER ────────────────────────────────────────────── */
.preloader{
  position:fixed;inset:0;background:var(--bg);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  z-index:99999;transition:opacity 0.6s,visibility 0.6s;
}
.preloader.gone{opacity:0;visibility:hidden;}
.pl-ring{
  width:70px;height:70px;border-radius:50%;
  border:3px solid var(--border2);
  border-top-color:var(--a1);border-right-color:var(--a2);
  animation:spin 1s linear infinite;margin-bottom:1rem;
}
@keyframes spin{to{transform:rotate(360deg);}}
.pl-logo{
  font-family:'Space Grotesk',sans-serif;font-size:2rem;font-weight:800;
  background:linear-gradient(135deg,var(--a1),var(--a2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.pl-logo span{color:var(--a3);-webkit-text-fill-color:var(--a3);}

/* ── CUSTOM CURSOR ────────────────────────────────────────── */
.cursor{
  position:fixed;width:10px;height:10px;background:var(--a1);
  border-radius:50%;pointer-events:none;z-index:9998;
  transform:translate(-50%,-50%);transition:transform 0.1s,background 0.3s;
}
.cursor-follower{
  position:fixed;width:36px;height:36px;border:2px solid var(--a1);
  border-radius:50%;pointer-events:none;z-index:9997;
  transform:translate(-50%,-50%);opacity:0.5;
  transition:left 0.12s ease,top 0.12s ease,width 0.3s,height 0.3s,opacity 0.3s;
}
@media(pointer:coarse){.cursor,.cursor-follower{display:none;}}

/* ── NAVBAR ───────────────────────────────────────────────── */
.navbar{
  position:fixed;top:0;left:0;right:0;z-index:1000;
  padding:0 2rem;background:transparent;
  transition:background 0.4s,box-shadow 0.3s,backdrop-filter 0.3s;
}
.navbar.scrolled{
  background:var(--nav-bg);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  box-shadow:0 1px 0 var(--border2);
}
.nav-inner{
  max-width:1280px;margin:0 auto;
  display:flex;align-items:center;justify-content:space-between;height:70px;
}
.nav-logo{
  font-family:'Space Grotesk',sans-serif;font-size:1.7rem;font-weight:800;
  background:linear-gradient(135deg,var(--a1),var(--a2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.logo-dot{color:var(--a3);-webkit-text-fill-color:var(--a3);}
.nav-links{display:flex;gap:0.15rem;align-items:center;}
.nav-links a{
  padding:0.4rem 0.9rem;border-radius:8px;font-size:0.87rem;
  font-weight:500;color:var(--muted);transition:color var(--t),background var(--t);
}
.nav-links a:hover{color:var(--text);background:rgba(59,130,246,0.08);}
.nav-links a.active{color:var(--a1);}
.nav-actions{display:flex;align-items:center;gap:0.6rem;}
.theme-btn{
  width:40px;height:40px;border-radius:10px;
  background:var(--glass2);border:1px solid var(--border2);
  color:var(--muted);font-size:1rem;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all var(--t);
}
.theme-btn:hover{color:var(--a1);border-color:var(--a1);}
.hamburger{
  display:none;flex-direction:column;gap:5px;background:none;
  border:none;cursor:pointer;padding:4px;
}
.hamburger span{display:block;width:22px;height:2px;background:var(--text);border-radius:2px;transition:var(--t);}

/* ── SECTIONS ─────────────────────────────────────────────── */
.section{padding:6rem 2rem;}
.container{max-width:1200px;margin:0 auto;}
.sec-header{margin-bottom:3rem;}
.sec-label{
  font-size:0.7rem;font-weight:700;letter-spacing:0.2em;
  color:var(--a1);text-transform:uppercase;
}
.sec-title{
  font-family:'Space Grotesk',sans-serif;
  font-size:clamp(2rem,4vw,3rem);font-weight:800;
  color:var(--text);margin-top:0.3rem;
}
.accent-grad{
  background:linear-gradient(135deg,var(--a1),var(--a2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}

/* Glass card base */
.glass-card{
  background:var(--glass);border:1px solid var(--border);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-radius:var(--r);
}

/* ── REVEAL ANIMATION ─────────────────────────────────────── */
.ri{
  opacity:0;transform:translateY(32px);
  transition:opacity 0.7s ease,transform 0.7s ease;
}
.ri.in{opacity:1;transform:translateY(0);}

/* ═══════════════════════════════════════════════════════════
   HERO
═══════════════════════════════════════════════════════════ */
.hero{
  min-height:100vh;display:flex;align-items:center;
  position:relative;overflow:hidden;padding:5rem 4rem 4rem;
}
#heroCanvas{
  position:absolute;inset:0;width:100%;height:100%;
  z-index:0;pointer-events:none;
}
.hero-content{position:relative;z-index:1;max-width:660px;}
.hero-badge{
  display:inline-flex;align-items:center;gap:8px;
  background:rgba(0,212,170,0.1);border:1px solid rgba(0,212,170,0.25);
  color:var(--a3);padding:0.4rem 1rem;border-radius:50px;
  font-size:0.8rem;font-weight:500;margin-bottom:1.5rem;
}
.badge-pulse{
  width:8px;height:8px;background:var(--a3);border-radius:50%;
  animation:pulse 2s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:0.5;transform:scale(1.4);}}
.hero-name{
  font-family:'Space Grotesk',sans-serif;
  font-size:clamp(3rem,8vw,6rem);font-weight:900;line-height:0.95;
  color:var(--text);margin-bottom:1rem;letter-spacing:-2px;
}
.name-row{display:block;}
.hero-role{
  font-size:clamp(1rem,2.5vw,1.35rem);color:var(--muted);
  margin-bottom:1.4rem;display:flex;align-items:center;gap:0.3rem;
  min-height:2rem;
}
.role-static{font-weight:400;}
#typed{color:var(--a1);font-weight:700;}
.caret{color:var(--a1);animation:blink 1s infinite;}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:0;}}
.hero-bio{font-size:0.95rem;color:var(--muted);margin-bottom:2rem;line-height:1.9;}
.hero-bio strong{color:var(--text);}

/* KPIs */
.hero-kpis{
  display:flex;align-items:center;
  background:var(--glass);border:1px solid var(--border);
  border-radius:var(--rs);padding:1rem 1.4rem;
  width:fit-content;margin-bottom:2rem;gap:0;
}
.kpi{text-align:center;padding:0 1.3rem;}
.kpi-n{display:block;font-family:'Space Grotesk',sans-serif;font-size:1.6rem;font-weight:800;color:var(--a1);}
.kpi-l{font-size:0.72rem;color:var(--muted);}
.kpi-sep{width:1px;height:36px;background:var(--border2);}

/* 3D Buttons */
.hero-btns{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2rem;}
.btn-3d{
  display:inline-flex;align-items:center;gap:0.5rem;
  padding:0.8rem 1.8rem;border-radius:12px;
  font-weight:700;font-size:0.92rem;cursor:pointer;
  transition:all 0.2s;transform-style:preserve-3d;
  position:relative;border:none;
}
.primary-3d{
  background:linear-gradient(135deg,var(--a1),var(--a2));
  color:#fff;box-shadow:0 6px 0 rgba(0,0,0,0.3), 0 10px 30px var(--a1-glow);
}
.primary-3d:hover{transform:translateY(-3px);box-shadow:0 9px 0 rgba(0,0,0,0.3), 0 16px 40px var(--a1-glow);}
.primary-3d:active{transform:translateY(2px);box-shadow:0 4px 0 rgba(0,0,0,0.3);}
.outline-3d{
  background:transparent;color:var(--text);
  border:2px solid var(--border2);
  box-shadow:0 6px 0 rgba(0,0,0,0.15);
}
.outline-3d:hover{transform:translateY(-3px);border-color:var(--a1);color:var(--a1);}
.outline-3d:active{transform:translateY(2px);}

/* Scroll hint */
.scroll-hint{
  position:absolute;bottom:2.5rem;left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:0.5rem;
  color:var(--muted);font-size:0.75rem;z-index:1;
  animation:scrollBounce 2s ease-in-out infinite;
}
@keyframes scrollBounce{0%,100%{transform:translateX(-50%) translateY(0);}50%{transform:translateX(-50%) translateY(8px);}}
.mouse-icon{
  width:24px;height:38px;border:2px solid var(--muted);
  border-radius:12px;display:flex;justify-content:center;padding-top:6px;
}
.mouse-wheel{
  width:3px;height:8px;background:var(--a1);border-radius:2px;
  animation:wheel 1.5s ease-in-out infinite;
}
@keyframes wheel{0%{opacity:1;transform:translateY(0);}100%{opacity:0;transform:translateY(10px);}}

/* ═══════════════════════════════════════════════════════════
   ABOUT
═══════════════════════════════════════════════════════════ */
.about-sec{background:var(--bg2);}
.about-grid{display:grid;grid-template-columns:340px 1fr;gap:3rem;align-items:start;}

/* 3D Flip Card */
.flip-wrap{perspective:1200px;height:430px;}
.flip-inner{
  width:100%;height:100%;position:relative;
  transform-style:preserve-3d;
  transition:transform 0.9s cubic-bezier(0.4,0,0.2,1);
}
.flip-wrap:hover .flip-inner{transform:rotateY(180deg);}
.flip-face{
  position:absolute;inset:0;backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  border-radius:var(--r);padding:2rem;
  display:flex;flex-direction:column;align-items:center;gap:1.2rem;
}
.flip-face.back{transform:rotateY(180deg);}

/* Avatar rings */
.av-ring{
  position:relative;width:140px;height:140px;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.av-core{
  width:100px;height:100px;border-radius:50%;
  background:linear-gradient(135deg,rgba(59,130,246,0.15),rgba(139,92,246,0.15));
  border:2px solid var(--a1);display:flex;align-items:center;justify-content:center;
  font-family:'Space Grotesk',sans-serif;font-size:2.2rem;font-weight:800;
  background:linear-gradient(135deg,var(--a1),var(--a2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  z-index:2;position:relative;
}
.av-orbit{
  position:absolute;border-radius:50%;
  border:1px dashed rgba(59,130,246,0.25);
  animation:orbitSpin linear infinite;
}
.o1{width:130px;height:130px;animation-duration:10s;}
.o2{width:160px;height:160px;animation-duration:15s;animation-direction:reverse;}
.o3{width:190px;height:190px;animation-duration:22s;opacity:0.4;}
@keyframes orbitSpin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
.orb-dot{
  position:absolute;width:10px;height:10px;border-radius:50%;
  box-shadow:0 0 8px currentColor;z-index:3;
}
.d1{background:var(--a1);color:var(--a1);top:8px;left:50%;transform:translateX(-50%);}
.d2{background:var(--a2);color:var(--a2);bottom:8px;right:18px;}
.d3{background:var(--a3);color:var(--a3);bottom:8px;left:18px;}

.about-info-list{width:100%;}
.ai-row{
  display:flex;align-items:center;gap:0.6rem;
  padding:0.5rem 0;border-bottom:1px solid var(--border);
  font-size:0.84rem;color:var(--muted);
}
.ai-row:last-child{border-bottom:none;}
.ai-row i{color:var(--a1);width:16px;flex-shrink:0;}
.flip-hint{
  font-size:0.74rem;color:var(--dim);margin-top:auto;
  display:flex;align-items:center;gap:0.4rem;
}
.back-title{
  font-family:'Space Grotesk',sans-serif;font-size:1.2rem;
  font-weight:700;color:var(--text);margin-bottom:1rem;
}
.values-grid{display:grid;grid-template-columns:1fr 1fr;gap:0.7rem;width:100%;}
.val-item{
  display:flex;flex-direction:column;align-items:center;gap:0.3rem;
  padding:0.8rem;background:var(--glass2);border-radius:var(--rs);
  border:1px solid var(--border);font-size:0.8rem;color:var(--muted);text-align:center;
}
.val-item span:first-child{font-size:1.4rem;}
.back-hint{margin-top:0.5rem;}
.about-txt p{color:var(--muted);margin-bottom:1rem;font-size:0.95rem;}
.about-txt p strong{color:var(--text);}
.about-chips{display:flex;flex-wrap:wrap;gap:0.5rem;margin-top:1.2rem;}
.achip{
  background:rgba(59,130,246,0.08);border:1px solid rgba(59,130,246,0.2);
  color:var(--a1);padding:0.3rem 0.85rem;border-radius:50px;
  font-size:0.78rem;font-weight:500;
}

/* ═══════════════════════════════════════════════════════════
   SKILLS
═══════════════════════════════════════════════════════════ */
.skills-sec{background:var(--bg3);}
.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;}
.skill-card{padding:2rem;transition:transform 0.3s,box-shadow 0.3s;}
.skill-head{
  font-family:'Space Grotesk',sans-serif;font-size:1rem;font-weight:700;
  color:var(--text);margin-bottom:1.5rem;display:flex;align-items:center;gap:0.6rem;
}
.skill-head i{color:var(--a1);}
.sbars{display:flex;flex-direction:column;gap:1rem;}
.sbar-row{}
.sbar-row>div:first-child{
  display:flex;justify-content:space-between;
  font-size:0.83rem;color:var(--muted);margin-bottom:0.4rem;
}
.sbar-row>.sbar-track,.sbar-track{
  height:6px;background:var(--glass2);border-radius:3px;overflow:hidden;
}
/* Fix: The sbar-row has: span(name), span(pct), div.sbar-track */
.sbar-row{display:flex;flex-direction:column;}
.sbar-row .sbar-track{height:6px;background:var(--glass2);border-radius:3px;overflow:hidden;}
.sbar-fill{height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,var(--a1),var(--a2));transition:width 1.3s cubic-bezier(0.25,0.46,0.45,0.94);}
.chips-cloud{display:flex;flex-wrap:wrap;gap:0.5rem;}
.sc{
  display:inline-flex;align-items:center;padding:0.3rem 0.8rem;
  border-radius:50px;font-size:0.78rem;font-weight:500;
  border:1px solid;transition:transform 0.2s;cursor:default;
}
.sc:hover{transform:translateY(-2px);}
.sc.aws{background:rgba(255,153,0,0.08);border-color:rgba(255,153,0,0.25);color:#ffa500;}
.sc.dev{background:rgba(59,130,246,0.08);border-color:rgba(59,130,246,0.25);color:var(--a1);}
.sc.tool{background:rgba(139,92,246,0.08);border-color:rgba(139,92,246,0.25);color:var(--a2);}
.sc.web{background:rgba(6,182,212,0.08);border-color:rgba(6,182,212,0.25);color:var(--a3);}

/* Tilt card (JS-driven) */
.tilt-card{transform-style:preserve-3d;transition:transform 0.15s ease;}

/* ═══════════════════════════════════════════════════════════
   EXPERIENCE (3D TIMELINE)
═══════════════════════════════════════════════════════════ */
.exp-sec{background:var(--bg2);}
.timeline{position:relative;padding-left:2.5rem;}
.timeline::before{
  content:'';position:absolute;left:8px;top:8px;bottom:0;width:2px;
  background:linear-gradient(to bottom,var(--a1),var(--a2),transparent);
}
.tl-item{position:relative;margin-bottom:2.5rem;}
.tl-dot{
  position:absolute;left:-2.6rem;top:1.6rem;
  width:18px;height:18px;border-radius:50%;
  background:var(--a1);border:3px solid var(--bg);
  box-shadow:0 0 12px var(--a1-glow);z-index:1;
}
.active-dot{animation:dotPulse 2.5s ease-in-out infinite;}
@keyframes dotPulse{0%,100%{box-shadow:0 0 12px var(--a1-glow);}50%{box-shadow:0 0 24px var(--a1),0 0 40px var(--a1-glow);}}
.tl-card{
  padding:1.8rem;border-radius:var(--r);
  transition:transform var(--t),box-shadow var(--t),border-color var(--t);
}
.tl-card:hover{transform:translateX(6px);border-color:var(--a1);}
.tl-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;flex-wrap:wrap;gap:0.5rem;}
.tl-top h3{font-family:'Space Grotesk',sans-serif;font-size:1.05rem;font-weight:700;color:var(--text);}
.tl-co{font-size:0.84rem;color:var(--a1);margin-top:0.2rem;}
.tl-co i{margin-right:4px;}
.isro-pill{
  display:inline-block;background:rgba(255,153,0,0.12);
  border:1px solid rgba(255,153,0,0.3);color:#ffa500;
  padding:0.1rem 0.6rem;border-radius:50px;font-size:0.72rem;margin-left:0.5rem;
}
.tl-right-info{display:flex;flex-direction:column;align-items:flex-end;gap:0.3rem;}
.tl-date{font-size:0.78rem;color:var(--muted);}
.tl-curr{
  font-size:0.72rem;font-weight:600;
  background:rgba(0,212,170,0.1);border:1px solid rgba(0,212,170,0.3);
  color:var(--a3);padding:0.15rem 0.6rem;border-radius:50px;
}
.tl-ul{padding-left:1rem;color:var(--muted);font-size:0.86rem;}
.tl-ul li{margin-bottom:0.4rem;list-style:disc;}
.tl-ul li strong{color:var(--a3);}
.tl-chips{display:flex;flex-wrap:wrap;gap:0.4rem;margin-top:1rem;}
.tl-chips span{
  background:rgba(59,130,246,0.06);border:1px solid rgba(59,130,246,0.15);
  color:var(--muted);padding:0.2rem 0.6rem;border-radius:50px;font-size:0.73rem;
}

/* ═══════════════════════════════════════════════════════════
   PROJECTS  (3D flip cards)
═══════════════════════════════════════════════════════════ */
.proj-sec{background:var(--bg3);}
.proj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}

/* Flip container */
.pfc{perspective:1200px;height:360px;}
.pfc-inner{
  width:100%;height:100%;position:relative;
  transform-style:preserve-3d;
  transition:transform 0.8s cubic-bezier(0.4,0,0.2,1);
}
.pfc:hover .pfc-inner{transform:rotateY(180deg);}
.pfc-front,.pfc-back{
  position:absolute;inset:0;backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  border-radius:var(--r);padding:1.8rem;
  display:flex;flex-direction:column;
}
.pfc-back{transform:rotateY(180deg);}

/* Top line accent */
.pfc-front::before{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:var(--r) var(--r) 0 0;
  background:linear-gradient(90deg,var(--a1),var(--a2));opacity:0;
  transition:opacity 0.3s;
}
.pfc:hover .pfc-front::before{opacity:0;}/* hide when flipped */

.pfc-icon{
  width:52px;height:52px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-size:1.4rem;margin-bottom:0.8rem;
}
.cloud-i{background:rgba(59,130,246,0.12);color:var(--a1);}
.sat-i{background:rgba(255,153,0,0.12);color:#ffa500;}
.chart-i{background:rgba(6,182,212,0.12);color:var(--a3);}
.dig-i{background:rgba(139,92,246,0.12);color:var(--a2);}
.bot-i{background:rgba(0,212,170,0.12);color:var(--a3);}
.cv-i{background:rgba(59,130,246,0.12);color:var(--a1);}

.pfc-feat-tag{
  display:inline-block;padding:0.2rem 0.7rem;border-radius:50px;
  font-size:0.72rem;font-weight:600;margin-bottom:0.7rem;
  background:rgba(59,130,246,0.1);border:1px solid rgba(59,130,246,0.25);color:var(--a1);
}
.pfc-feat-tag.isro-tag{background:rgba(255,153,0,0.1);border-color:rgba(255,153,0,0.3);color:#ffa500;}
.pfc-front h3,.pfc-back h3{
  font-family:'Space Grotesk',sans-serif;font-size:1rem;
  font-weight:700;color:var(--text);margin-bottom:0.6rem;
}
.pfc-front p{font-size:0.83rem;color:var(--muted);flex:1;line-height:1.6;}
.pfc-pills{display:flex;flex-wrap:wrap;gap:0.4rem;margin-top:0.8rem;}
.pfc-pills span{
  background:rgba(59,130,246,0.06);border:1px solid rgba(59,130,246,0.15);
  color:var(--a1);padding:0.18rem 0.55rem;border-radius:50px;font-size:0.7rem;
}
.pfc-flip-hint{
  font-size:0.72rem;color:var(--dim);margin-top:0.8rem;
  display:flex;align-items:center;gap:0.3rem;
}
.pfc-list{padding-left:0.2rem;color:var(--muted);font-size:0.82rem;flex:1;}
.pfc-list li{margin-bottom:0.45rem;padding-left:0.2rem;}
.pfc-period{font-size:0.75rem;color:var(--dim);margin-top:0.8rem;display:flex;align-items:center;gap:0.3rem;}
.pfc-gh{
  display:inline-flex;align-items:center;gap:0.4rem;margin-top:0.8rem;
  padding:0.45rem 1rem;border-radius:8px;font-size:0.82rem;font-weight:600;
  background:linear-gradient(135deg,var(--a1),var(--a2));color:#fff;
  transition:opacity 0.2s;
}
.pfc-gh:hover{opacity:0.85;}

/* ═══════════════════════════════════════════════════════════
   CERTIFICATIONS (3D tilt)
═══════════════════════════════════════════════════════════ */
.cert-sec{background:var(--bg2);}
.cert-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}
.cert-card{
  padding:1.8rem;position:relative;overflow:hidden;
  transition:transform 0.15s ease,box-shadow 0.3s;
}
.cert-card:hover{box-shadow:0 20px 50px rgba(0,0,0,0.35);}
.aws-cert{border-color:rgba(255,153,0,0.15);}
/* Shine effect */
.cert-shine{
  position:absolute;width:100px;height:100px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,0.12) 0%,transparent 70%);
  pointer-events:none;transform:translate(-50%,-50%);
  opacity:0;transition:opacity 0.3s;
}
.cert-card:hover .cert-shine{opacity:1;}
.cert-icon-wrap{
  width:54px;height:54px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-size:1.5rem;margin-bottom:1rem;
}
.aws-icon{background:rgba(255,153,0,0.1);color:#ffa500;}
.ai-icon{background:rgba(59,130,246,0.1);color:var(--a1);}
.ml-icon{background:rgba(139,92,246,0.1);color:var(--a2);}
.trophy-icon{background:rgba(0,212,170,0.1);color:var(--a3);}
.star-icon{background:rgba(255,200,0,0.1);color:#ffd700;}
.cert-card h3{font-size:0.95rem;font-weight:700;color:var(--text);margin-bottom:0.2rem;}
.cert-card p{font-size:0.8rem;color:var(--muted);margin-bottom:0.6rem;}
.cert-score{
  display:inline-block;padding:0.2rem 0.7rem;border-radius:50px;
  font-size:0.78rem;font-weight:700;margin-bottom:0.5rem;
}
.blue-score{background:rgba(59,130,246,0.1);border:1px solid rgba(59,130,246,0.25);color:var(--a1);}
.green-score{background:rgba(0,212,170,0.1);border:1px solid rgba(0,212,170,0.25);color:var(--a3);}
.cert-meta{font-size:0.76rem;color:var(--dim);}
.cert-active-badge{
  position:absolute;top:1rem;right:1rem;
  font-size:0.7rem;font-weight:600;padding:0.15rem 0.5rem;
  border-radius:50px;background:rgba(0,212,170,0.1);
  border:1px solid rgba(0,212,170,0.3);color:var(--a3);
}

/* ═══════════════════════════════════════════════════════════
   EDUCATION
═══════════════════════════════════════════════════════════ */
.edu-sec{background:var(--bg3);}
.edu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}
.edu-card{
  padding:2rem;display:flex;gap:1.4rem;align-items:flex-start;
  transition:transform 0.15s ease;
}
.edu-icon{
  width:54px;height:54px;border-radius:14px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:1.4rem;color:var(--a1);
  background:linear-gradient(135deg,rgba(59,130,246,0.12),rgba(139,92,246,0.12));
  border:1px solid rgba(59,130,246,0.2);
}
.edu-body h3{font-size:0.95rem;font-weight:700;color:var(--text);margin-bottom:0.2rem;}
.edu-inst{font-size:0.82rem;color:var(--a1);margin-bottom:0.5rem;}
.edu-row{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:0.5rem;font-size:0.8rem;color:var(--muted);}
.edu-gpa strong{color:var(--a3);}
.edu-courses{font-size:0.76rem;color:var(--dim);line-height:1.6;}

/* ═══════════════════════════════════════════════════════════
   CONTACT  (Email + Phone only, 3D cards)
═══════════════════════════════════════════════════════════ */
.contact-sec{background:var(--bg2);}
.contact-intro{color:var(--muted);margin-top:-1.5rem;margin-bottom:3rem;font-size:0.95rem;}
.contact-duo{
  display:grid;grid-template-columns:1fr 1fr;
  gap:2rem;max-width:800px;margin:0 auto 2rem;
}
.contact-card{
  border-radius:var(--r);padding:2.5rem 2rem;
  position:relative;overflow:hidden;text-align:center;
  transition:transform 0.15s ease,box-shadow 0.3s;
  background:var(--glass);border:1px solid var(--border);
}
.contact-card:hover{box-shadow:var(--shadow);}
.cc-glow{
  position:absolute;inset:0;opacity:0.05;
  background:radial-gradient(ellipse at center,var(--a1) 0%,transparent 70%);
  transition:opacity 0.3s;
}
.phone-glow{background:radial-gradient(ellipse at center,var(--a2) 0%,transparent 70%);}
.contact-card:hover .cc-glow{opacity:0.1;}
.cc-particles{
  position:absolute;inset:0;overflow:hidden;pointer-events:none;
}
.cc-icon{
  width:72px;height:72px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:1.8rem;margin:0 auto 1.2rem;
  background:linear-gradient(135deg,rgba(59,130,246,0.15),rgba(139,92,246,0.1));
  border:2px solid rgba(59,130,246,0.3);color:var(--a1);
  box-shadow:0 0 30px var(--a1-glow);
  animation:iconFloat 3s ease-in-out infinite;position:relative;z-index:1;
}
.phone-icon{
  background:linear-gradient(135deg,rgba(139,92,246,0.15),rgba(6,182,212,0.1));
  border-color:rgba(139,92,246,0.3);color:var(--a2);
  box-shadow:0 0 30px var(--a2-glow);
}
@keyframes iconFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}
.cc-type{font-size:0.78rem;color:var(--dim);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:0.5rem;position:relative;z-index:1;}
.cc-val{
  font-family:'JetBrains Mono',monospace;font-size:0.95rem;
  color:var(--text);font-weight:600;margin-bottom:1.5rem;
  word-break:break-all;position:relative;z-index:1;
}
.cc-actions{display:flex;gap:0.8rem;justify-content:center;position:relative;z-index:1;}
.cc-btn{
  display:inline-flex;align-items:center;gap:0.4rem;
  padding:0.55rem 1.2rem;border-radius:10px;font-size:0.83rem;
  font-weight:600;cursor:pointer;transition:all 0.2s;border:none;
}
.copy-btn{background:var(--glass2);border:1px solid var(--border2);color:var(--muted);}
.copy-btn:hover{color:var(--a1);border-color:var(--a1);}
.send-btn{background:linear-gradient(135deg,var(--a1),var(--a2));color:#fff;}
.send-btn:hover{opacity:0.85;transform:translateY(-1px);}
.call-btn{background:linear-gradient(135deg,var(--a2),var(--a3));color:#fff;}
.call-btn:hover{opacity:0.85;transform:translateY(-1px);}
.contact-note{
  text-align:center;font-size:0.84rem;color:var(--muted);
  max-width:500px;margin:0 auto;
}
.contact-note i{color:var(--a1);margin-right:0.3rem;}
.contact-note strong{color:var(--text);}

/* ── TOAST ────────────────────────────────────────────────── */
.toast{
  position:fixed;bottom:2rem;left:50%;transform:translateX(-50%) translateY(80px);
  background:var(--text);color:var(--bg);padding:0.75rem 1.5rem;
  border-radius:50px;font-size:0.85rem;font-weight:600;
  display:flex;align-items:center;gap:0.5rem;
  z-index:9990;transition:transform 0.4s cubic-bezier(0.34,1.56,0.64,1);
  white-space:nowrap;
}
.toast.show{transform:translateX(-50%) translateY(0);}
.toast i{color:#22c55e;}

/* ── FOOTER ───────────────────────────────────────────────── */
.footer{
  background:var(--bg);border-top:1px solid var(--border);
  padding:2rem;
}
.footer-inner{
  display:flex;justify-content:space-between;align-items:center;
  flex-wrap:wrap;gap:1rem;
}
.footer-logo{
  font-family:'Space Grotesk',sans-serif;font-size:1.5rem;font-weight:800;
  background:linear-gradient(135deg,var(--a1),var(--a2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.footer-inner p{font-size:0.83rem;color:var(--muted);}
.footer-socials{display:flex;gap:1rem;}
.footer-socials a{color:var(--muted);font-size:1.1rem;transition:color var(--t);}
.footer-socials a:hover{color:var(--a1);}

/* ═══════════════════════════════════════════════════════════
   CHATBOT
═══════════════════════════════════════════════════════════ */
.chatbot-wrap{position:fixed;bottom:2rem;right:2rem;z-index:5000;}
.chatbot-win{
  position:absolute;bottom:80px;right:0;width:360px;
  border-radius:var(--r);overflow:hidden;
  display:flex;flex-direction:column;
  transform:scale(0.8) translateY(20px);
  opacity:0;pointer-events:none;
  transition:transform 0.35s cubic-bezier(0.34,1.56,0.64,1),opacity 0.3s;
  transform-origin:bottom right;
}
.chatbot-win.open{transform:scale(1) translateY(0);opacity:1;pointer-events:all;}
.cb-header{
  background:linear-gradient(135deg,var(--a1),var(--a2));
  padding:1rem 1.2rem;display:flex;align-items:center;justify-content:space-between;
}
.cb-hinfo{display:flex;align-items:center;gap:0.8rem;}
.cb-avatar{
  width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,0.2);
  display:flex;align-items:center;justify-content:center;
  font-size:1.1rem;color:#fff;
}
.cb-name{font-weight:700;color:#fff;font-size:0.95rem;}
.cb-status{font-size:0.73rem;color:rgba(255,255,255,0.8);display:flex;align-items:center;gap:0.4rem;}
.cb-dot{width:7px;height:7px;background:#22c55e;border-radius:50%;animation:pulse 2s infinite;}
.cb-close{
  background:rgba(255,255,255,0.2);border:none;color:#fff;
  width:30px;height:30px;border-radius:8px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background 0.2s;
}
.cb-close:hover{background:rgba(255,255,255,0.35);}
.cb-msgs{
  flex:1;overflow-y:auto;padding:1rem;
  display:flex;flex-direction:column;gap:0.8rem;
  max-height:340px;background:var(--bg2);
}
.cb-msgs::-webkit-scrollbar{width:4px;}
.cb-msgs::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px;}
.cb-msg{display:flex;flex-direction:column;max-width:90%;}
.bot-msg{align-self:flex-start;}
.user-msg{align-self:flex-end;}
.msg-bub{
  padding:0.75rem 1rem;border-radius:14px;
  font-size:0.83rem;line-height:1.55;
}
.bot-msg .msg-bub{
  background:var(--glass2);border:1px solid var(--border);
  color:var(--text);border-radius:4px 14px 14px 14px;
}
.user-msg .msg-bub{
  background:linear-gradient(135deg,var(--a1),var(--a2));
  color:#fff;border-radius:14px 4px 14px 14px;
}
.cb-quick-btns{display:flex;flex-wrap:wrap;gap:0.4rem;margin-top:0.6rem;}
.qb{
  padding:0.3rem 0.75rem;border-radius:50px;font-size:0.75rem;font-weight:500;
  background:var(--glass2);border:1px solid var(--border2);color:var(--muted);
  cursor:pointer;transition:all 0.2s;
}
.qb:hover{border-color:var(--a1);color:var(--a1);}
/* Typing indicator */
.typing-indicator{display:flex;gap:4px;padding:0.75rem 1rem;}
.typing-indicator span{
  width:7px;height:7px;background:var(--muted);border-radius:50%;
  animation:typing 1.2s ease-in-out infinite;
}
.typing-indicator span:nth-child(2){animation-delay:0.2s;}
.typing-indicator span:nth-child(3){animation-delay:0.4s;}
@keyframes typing{0%,80%,100%{transform:scale(1);opacity:0.4;}40%{transform:scale(1.3);opacity:1;}}
.cb-input-area{
  display:flex;gap:0.5rem;padding:0.8rem;
  background:var(--bg2);border-top:1px solid var(--border);
}
#cbInput{
  flex:1;background:var(--glass2);border:1px solid var(--border2);
  border-radius:10px;padding:0.6rem 1rem;font-size:0.85rem;
  color:var(--text);outline:none;font-family:'Inter',sans-serif;
  transition:border-color 0.2s;
}
#cbInput:focus{border-color:var(--a1);}
#cbInput::placeholder{color:var(--dim);}
#cbSend{
  width:40px;height:40px;border-radius:10px;border:none;cursor:pointer;
  background:linear-gradient(135deg,var(--a1),var(--a2));
  color:#fff;font-size:0.9rem;transition:opacity 0.2s;
  display:flex;align-items:center;justify-content:center;
}
#cbSend:hover{opacity:0.85;}

/* Chatbot toggle button */
.cb-toggle{
  position:relative;width:60px;height:60px;border-radius:50%;border:none;
  background:linear-gradient(135deg,var(--a1),var(--a2));
  color:#fff;font-size:1.4rem;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 25px var(--a1-glow);
  transition:transform 0.3s,box-shadow 0.3s;
}
.cb-toggle:hover{transform:scale(1.1);box-shadow:0 12px 35px var(--a1-glow);}
.cb-pulse{
  position:absolute;inset:-4px;border-radius:50%;
  border:2px solid var(--a1);opacity:0.5;
  animation:cbPulse 2.5s ease-in-out infinite;
}
@keyframes cbPulse{0%{transform:scale(1);opacity:0.5;}100%{transform:scale(1.5);opacity:0;}}
.cb-tooltip{
  position:absolute;bottom:calc(100% + 10px);right:0;
  background:var(--text);color:var(--bg);padding:0.4rem 0.9rem;
  border-radius:8px;font-size:0.78rem;font-weight:600;white-space:nowrap;
  pointer-events:none;opacity:0;transform:translateY(4px);
  transition:opacity 0.2s,transform 0.2s;
}
.cb-toggle:hover .cb-tooltip{opacity:1;transform:translateY(0);}
.cb-tooltip::after{
  content:'';position:absolute;top:100%;right:20px;
  border:5px solid transparent;border-top-color:var(--text);
}

/* ═══════════════════════════════════════════════════════════
   RESPONSIVE
═══════════════════════════════════════════════════════════ */
@media(max-width:1024px){
  .proj-grid{grid-template-columns:repeat(2,1fr);}
  .cert-grid{grid-template-columns:repeat(2,1fr);}
  .edu-grid{grid-template-columns:repeat(2,1fr);}
  .about-grid{grid-template-columns:1fr;}
  .flip-wrap{height:auto;perspective:none;}
  .flip-inner{transform-style:flat;transform:none!important;}
  .flip-face.back{position:static;transform:none;display:none;}
  .flip-face.front{position:static;}
  .flip-hint{display:none;}
}
@media(max-width:768px){
  .hero{padding:5rem 1.5rem 4rem;text-align:center;}
  .hero-kpis{justify-content:center;width:100%;}
  .hero-btns{justify-content:center;}
  .navbar .nav-links{
    display:none;flex-direction:column;
    position:absolute;top:70px;left:0;right:0;
    background:var(--nav-bg);backdrop-filter:blur(20px);
    padding:1rem 0;border-bottom:1px solid var(--border);
  }
  .navbar .nav-links.open{display:flex;}
  .hamburger{display:flex;}
  .proj-grid{grid-template-columns:1fr;}
  .cert-grid{grid-template-columns:1fr;}
  .edu-grid{grid-template-columns:1fr;}
  .skills-grid{grid-template-columns:1fr;}
  .contact-duo{grid-template-columns:1fr;}
  .section{padding:4rem 1.2rem;}
  .chatbot-win{width:320px;}
  .pfc{height:320px;}
}
@media(max-width:480px){
  .hero-name{letter-spacing:-1px;}
  .kpi{padding:0 0.8rem;}
  .kpi-n{font-size:1.2rem;}
}

/* ═══════════════════════════════════════════════════════════
   SKILLS — ICON BUBBLE GRID
═══════════════════════════════════════════════════════════ */

/* Tab filters */
.sk-tabs {
  display: flex; gap: 0.5rem; flex-wrap: wrap;
  margin-bottom: 2.2rem;
}
.sk-tab {
  padding: 0.45rem 1.2rem; border-radius: 50px;
  font-size: 0.83rem; font-weight: 600; cursor: pointer;
  border: 1px solid var(--border2);
  background: var(--glass); color: var(--muted);
  transition: all 0.25s;
}
.sk-tab:hover { color: var(--a1); border-color: var(--a1); }
.sk-tab.active {
  background: linear-gradient(135deg, var(--a1), var(--a2));
  color: #fff; border-color: transparent;
  box-shadow: 0 4px 18px var(--a1-glow);
}

/* Bubble grid */
.sk-bubble-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 1rem;
}
.sk-bubble {
  background: var(--glass);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 1.2rem 0.8rem 1rem;
  display: flex; flex-direction: column; align-items: center;
  gap: 0.5rem; text-align: center;
  cursor: default;
  transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
  position: relative; overflow: hidden;
}
.sk-bubble::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(135deg, var(--a1), var(--a2));
  opacity: 0; transition: opacity 0.25s; z-index: 0;
}
.sk-bubble:hover { transform: translateY(-6px) scale(1.04); box-shadow: 0 14px 35px rgba(0,0,0,0.2); border-color: var(--a1); }
.sk-bubble:hover::before { opacity: 0.04; }
.sk-bubble.hidden { display: none; }

.sk-icon {
  width: 52px; height: 52px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem; position: relative; z-index: 1;
  transition: transform 0.3s;
}
.sk-bubble:hover .sk-icon { transform: scale(1.15) rotate(-5deg); }
.sk-bubble > span {
  font-size: 0.78rem; font-weight: 600; color: var(--text);
  position: relative; z-index: 1; line-height: 1.3;
}
.sk-level {
  width: 100%; height: 4px;
  background: var(--glass2); border-radius: 2px; overflow: hidden;
  position: relative; z-index: 1;
}
.sk-bar {
  height: 100%; width: 0;
  background: linear-gradient(90deg, var(--a1), var(--a2));
  border-radius: 2px;
  transition: width 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.sk-pct {
  font-size: 0.7rem; color: var(--muted);
  font-family: 'JetBrains Mono', monospace;
  position: relative; z-index: 1;
}

/* ═══════════════════════════════════════════════════════════
   CERTIFICATIONS — AWS Banner + Credly + Developer cert
═══════════════════════════════════════════════════════════ */

/* AWS 3-cert banner */
.aws-banner {
  display: flex; align-items: center; gap: 1.2rem;
  background: linear-gradient(135deg, rgba(255,153,0,0.08), rgba(255,153,0,0.03));
  border: 1px solid rgba(255,153,0,0.2);
  border-radius: var(--r); padding: 1.2rem 1.8rem;
  margin-bottom: 2rem; position: relative; overflow: hidden;
}
.aws-banner-icon {
  font-size: 2.2rem; color: #ff9900; flex-shrink: 0;
  text-shadow: 0 0 20px rgba(255,153,0,0.4);
}
.aws-banner-title {
  display: block; font-family: 'Space Grotesk', sans-serif;
  font-size: 1rem; font-weight: 700; color: var(--text);
}
.aws-banner-sub { font-size: 0.8rem; color: var(--muted); }
.aws-banner-dots {
  margin-left: auto; display: flex; gap: 0.4rem; flex-shrink: 0;
}
.aws-banner-dots span {
  width: 10px; height: 10px; border-radius: 50%;
  background: #ff9900; opacity: 0.6;
  animation: awsDot 1.5s ease-in-out infinite;
}
.aws-banner-dots span:nth-child(2) { animation-delay: 0.3s; }
.aws-banner-dots span:nth-child(3) { animation-delay: 0.6s; }
@keyframes awsDot { 0%,100%{opacity:0.3;transform:scale(1);} 50%{opacity:1;transform:scale(1.3);} }

/* Cert grid — 4 columns for 7 cards */
.cert-grid { grid-template-columns: repeat(4, 1fr); }

/* Clickable cert card */
.cert-link { text-decoration: none; display: block; cursor: pointer; }
.cert-link:hover { text-decoration: none; }

/* Credly badge tag */
.cert-credly-tag {
  position: absolute; top: 0.8rem; right: 0.8rem;
  background: rgba(255,153,0,0.12); border: 1px solid rgba(255,153,0,0.3);
  color: #ff9900; padding: 0.15rem 0.55rem; border-radius: 50px;
  font-size: 0.68rem; font-weight: 600;
  display: flex; align-items: center; gap: 0.3rem;
  transition: background 0.2s;
}
.cert-link:hover .cert-credly-tag { background: rgba(255,153,0,0.22); }

/* Developer cert icon */
.dev-icon { background: rgba(6,182,212,0.1); color: var(--a3); border: none; }

@media (max-width: 1100px) { .cert-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 768px)  {
  .cert-grid { grid-template-columns: repeat(2, 1fr); }
  .sk-bubble-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
  .aws-banner { flex-wrap: wrap; }
}
@media (max-width: 480px)  { .cert-grid { grid-template-columns: 1fr 1fr; } }
