/* ============================================
   PORTFOLIO — style.css  (Final)
   Font: Space Grotesk + DM Mono
   ============================================ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root {
  --bg:       #000000;
  --surf:     #290229;
  --surf2:    #141414;
  --accent:   #89ec07;
  --adim:     rgba(200,241,53,.08);
  --accent2:  #ff4d4d;
  --text:     #e8e8e0;
  --muted:    #555;
  --border:   rgba(0, 0, 0, 0);
  --font:     'Space Grotesk',sans-serif;
  --mono:     'DM Mono',monospace;
  --r:        10px;
  --ease:     cubic-bezier(.16,1,.3,1);
}

html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--font);overflow-x:hidden;cursor:none;line-height:1.6}
img{display:block;max-width:100%}
a{cursor:none}
::selection{background:var(--accent);color:#000}

body::before{
  content:'';position:fixed;inset:0;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
  opacity:.025;pointer-events:none;z-index:9990
}

/* ── SCROLL PROGRESS ── */
#scroll-progress{position:fixed;top:0;left:0;height:2px;width:0%;background:var(--accent);z-index:9999;transition:width .1s linear;pointer-events:none}

/* ── CURSOR ── */
#cursor{width:10px;height:10px;background:var(--accent);border-radius:50%;position:fixed;top:0;left:0;pointer-events:none;z-index:9998;transform:translate(-50%,-50%);transition:width .25s,height .25s,background .25s}
#cursor-ring{width:38px;height:38px;border:1.5px solid rgba(200,241,53,.4);border-radius:50%;position:fixed;top:0;left:0;pointer-events:none;z-index:9997;transform:translate(-50%,-50%)}
body.cur-grow #cursor{width:18px;height:18px;background:var(--accent2)}
body.cur-grow #cursor-ring{width:56px;height:56px;border-color:rgba(255,77,77,.3)}

/* ============================================
   NAV
============================================ */
nav{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:22px 52px;z-index:200;background:linear-gradient(to bottom,rgba(8,8,8,.96),transparent);transition:background .3s}
nav.scrolled{background:rgba(8,8,8,.97);border-bottom:1px solid var(--border)}
.logo{font-size:1.15rem;font-weight:700;letter-spacing:-.02em;color:var(--text);text-decoration:none}
.logo span{color:var(--accent)}
.nav-links{display:flex;gap:36px;list-style:none}
.nav-links a{color:var(--muted);text-decoration:none;font-size:.82rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;transition:color .2s;position:relative}
.nav-links a::after{content:'';position:absolute;bottom:-3px;left:0;width:0;height:1px;background:var(--accent);transition:width .3s var(--ease)}
.nav-links a:hover,.nav-links a.active{color:var(--accent)}
.nav-links a:hover::after,.nav-links a.active::after{width:100%}
.nav-cta{border:1px solid var(--border);padding:9px 22px;border-radius:100px;color:var(--text);text-decoration:none;font-size:.82rem;font-weight:500;letter-spacing:.04em;transition:border-color .2s,color .2s,background .2s}
.nav-cta:hover{border-color:var(--accent);color:var(--accent);background:var(--adim)}
.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:none;padding:4px}
.hamburger span{display:block;width:24px;height:1.5px;background:var(--text);border-radius:2px;transition:all .3s var(--ease)}
.hamburger.open span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.hamburger.open span:nth-child(2){opacity:0;transform:scaleX(0)}
.hamburger.open span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
.mobile-menu{position:fixed;inset:0;background:rgba(8,8,8,.98);display:flex;align-items:center;justify-content:center;z-index:150;opacity:0;pointer-events:none;transition:opacity .35s var(--ease)}
.mobile-menu.open{opacity:1;pointer-events:all}
.mobile-menu ul{list-style:none;text-align:center}
.mobile-menu ul li{margin:20px 0}
.mobile-menu ul li a{font-size:2.2rem;font-weight:700;color:var(--text);text-decoration:none;letter-spacing:-.03em;transition:color .2s}
.mobile-menu ul li a:hover{color:var(--accent)}

/* ============================================
   HERO
============================================ */
#hero{min-height:100vh;display:flex;align-items:center;justify-content:space-between;gap:40px;padding:130px 52px 80px;position:relative;overflow:hidden}
.hero-left{flex:1;max-width:580px}

.hero-tag{font-size:.78rem;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-bottom:36px;display:flex;align-items:center;gap:12px;font-weight:400}
.hero-tag::before{content:'';width:32px;height:1px;background:var(--accent);flex-shrink:0}

.hero-title{font-size:clamp(3.2rem,7vw,7rem);font-weight:700;line-height:.92;letter-spacing:-.04em}
.hero-title .line{display:block;overflow:hidden;padding-bottom:.06em}
.hero-title .line > span{display:block;transform:translateY(110%);animation:slideUp .9s var(--ease) forwards}
.hero-title .line:nth-child(1) > span{animation-delay:.05s}
.hero-title .line:nth-child(2) > span{animation-delay:.18s}
.hero-title .line:nth-child(3) > span{animation-delay:.30s}

/* typing line — NO clipping, NO separate cursor element */
.hero-title .typing-line{overflow:visible;min-height:1.05em}
/* The typed word has a CSS ::after pseudo cursor that disappears when paused via .no-cursor class on the span */
.hero-title .accent{color:var(--accent);font-style:italic}
#typing-word::after{content:'|';color:var(--accent);font-style:normal;margin-left:3px;animation:tblink .65s step-end infinite}
#typing-word.paused::after{display:none}   /* ← key fix: cursor vanishes on pause */

@keyframes tblink{0%,100%{opacity:1}50%{opacity:0}}
@keyframes slideUp{to{transform:translateY(0)}}

.hero-bottom{display:flex;flex-direction:column;gap:28px;margin-top:52px;opacity:0;animation:fadeIn 1s .7s forwards}
.hero-desc{max-width:400px;font-size:.9rem;line-height:1.8;color:var(--muted);font-weight:400}
.hero-desc strong{color:var(--text);font-weight:600}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap}
@keyframes fadeIn{to{opacity:1}}

/* ── HERO VISUAL ── */
.hero-visual{flex:0 0 auto;width:400px;position:relative;opacity:0;animation:fadeIn 1s .9s forwards}
.hero-grid{position:absolute;inset:-40px;background-image:radial-gradient(circle,rgba(200,241,53,.18) 1px,transparent 1px);background-size:28px 28px;z-index:0;mask-image:radial-gradient(ellipse at center,black 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse at center,black 30%,transparent 75%)}
.orb{position:absolute;border-radius:50%;filter:blur(38px);pointer-events:none;z-index:0}
.orb1{width:170px;height:170px;background:rgba(200,241,53,.11);top:-20px;right:-10px;animation:floatY 6s ease-in-out infinite}
.orb2{width:110px;height:110px;background:rgba(255,77,77,.07);bottom:30px;left:-10px;animation:floatY 8s ease-in-out infinite reverse}
.orb3{width:70px;height:70px;background:rgba(80,150,255,.09);bottom:90px;right:20px;animation:floatY 5s ease-in-out 2s infinite}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}

.code-window{position:relative;z-index:1;background:#0d0d0d;border:1px solid rgba(255,255,255,.09);border-radius:14px;overflow:hidden;box-shadow:0 0 0 1px rgba(200,241,53,.06),0 28px 70px rgba(0,0,0,.55);animation:floatWin 7s ease-in-out infinite}
@keyframes floatWin{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-10px) rotate(-1deg)}}

.code-window-bar{display:flex;align-items:center;gap:7px;padding:11px 16px;background:rgba(255,255,255,.03);border-bottom:1px solid rgba(255,255,255,.06)}
.win-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}
.win-dot.red{background:#ff5f57}.win-dot.yellow{background:#ffbd2e}.win-dot.green{background:#28c840}
.code-window-title{font-family:var(--mono);font-size:.7rem;color:var(--muted);margin-left:8px}
.code-body{padding:18px 22px;font-family:var(--mono);font-size:.78rem;line-height:1.9}
.code-line{white-space:nowrap;opacity:0;transform:translateX(-8px);animation:cLine .35s var(--ease) forwards}
.code-line.indent{padding-left:18px}.code-line.indent2{padding-left:36px}
.code-line:nth-child(1){animation-delay:1s}.code-line:nth-child(2){animation-delay:1.1s}
.code-line:nth-child(3){animation-delay:1.2s}.code-line:nth-child(4){animation-delay:1.3s}
.code-line:nth-child(5){animation-delay:1.4s}.code-line:nth-child(6){animation-delay:1.5s}
.code-line:nth-child(7){animation-delay:1.6s}.code-line:nth-child(8){animation-delay:1.7s}
.code-line:nth-child(9){animation-delay:1.8s}.code-line:nth-child(10){animation-delay:1.9s}
@keyframes cLine{to{opacity:1;transform:translateX(0)}}
.c-kw{color:#c792ea}.c-var{color:#82aaff}.c-fn{color:#82d2ff}.c-key{color:#7fdbca}
.c-str{color:#c3e88d}.c-op{color:#89ddff}.c-br{color:#ffcb6b}.c-bool{color:#ff9d00}

/* floating pills */
.float-pill{position:absolute;z-index:2;background:rgba(15,15,15,.9);border:1px solid rgba(200,241,53,.2);border-radius:100px;font-size:.68rem;font-weight:600;color:var(--text);padding:7px 14px;white-space:nowrap;backdrop-filter:blur(8px)}
.pill1{top:-18px;left:10px;animation:floatY 4s ease-in-out infinite}
.pill2{bottom:60px;left:-30px;animation:floatY 5s ease-in-out 1s infinite}
.pill3{bottom:-10px;right:10px;animation:floatY 6s ease-in-out .5s infinite}

/* ── BUTTONS ── */
.btn{display:inline-flex;align-items:center;gap:8px;padding:13px 28px;border-radius:100px;font-family:var(--font);font-size:.82rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;transition:all .3s var(--ease)}
.btn-primary{background:var(--accent);color:#000;border:1px solid var(--accent)}.btn-primary:hover{background:transparent;color:var(--accent)}
.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--text)}

/* ── MARQUEE ── */
.marquee-section{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:16px 0;overflow:hidden;background:var(--surf)}
.marquee-track{display:flex;white-space:nowrap;animation:marquee 20s linear infinite}
.marquee-track span{font-size:.72rem;font-weight:500;color:var(--muted);letter-spacing:.14em;text-transform:uppercase;padding:0 28px;flex-shrink:0}
.marquee-track .mdot{color:var(--accent);padding:0 4px}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ── SHARED SECTION ── */
section{padding:110px 52px}
.section-label{font-size:.7rem;font-weight:600;color:var(--accent);letter-spacing:.22em;text-transform:uppercase;margin-bottom:20px;display:flex;align-items:center;gap:14px}
.section-label::after{content:'';height:1px;width:50px;background:var(--border)}
.section-title{font-size:clamp(2.2rem,4.5vw,4rem);font-weight:700;letter-spacing:-.04em;line-height:1;margin-bottom:52px}

/* ── ABOUT ── */
#about{background:var(--surf);border-top:1px solid var(--border)}
.about-inner{display:grid;grid-template-columns:1fr 1.4fr;gap:80px;align-items:center}
.about-img-wrap{position:relative}
.about-img-frame{border-radius:var(--r);overflow:hidden;border:1px solid var(--border);aspect-ratio:3/4;max-height:500px}
.about-img-frame img{width:100%;height:100%;object-fit:cover;filter:grayscale(.2) contrast(1.08);transition:filter .5s}
.about-img-frame:hover img{filter:grayscale(0) contrast(1)}
.about-badge{position:absolute;bottom:-18px;right:-18px;width:96px;height:96px;border:1px solid var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.62rem;font-weight:600;color:var(--accent);letter-spacing:.08em;text-align:center;text-transform:uppercase;line-height:1.4}
.about-text p{font-size:.92rem;line-height:1.85;color:var(--muted);margin-bottom:18px}
.about-text p strong{color:var(--text);font-weight:600}
.about-stats{display:flex;gap:40px;margin-top:48px;padding-top:40px;border-top:1px solid var(--border)}
.stat-num{font-size:2.6rem;font-weight:700;color:var(--accent);letter-spacing:-.05em;line-height:1}
.stat-label{font-size:.72rem;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-top:6px}

/* ============================================
   EDUCATION  — staircase + canvas
============================================ */
#education{background:var(--bg);border-top:1px solid var(--border);overflow:hidden}
.edu-header{margin-bottom:0}

.edu-layout{display:grid;grid-template-columns:1fr 360px;gap:60px;align-items:start}

/* ── Staircase cards ── */
.stair-wrapper{display:flex;flex-direction:column;gap:0}

.stair-item{display:flex;align-items:flex-start;gap:20px;position:relative;padding-bottom:0}

/* Staircase horizontal offset — each card steps right */
.s1{margin-left:0}
.s2{margin-left:48px}
.s3{margin-left:96px}

/* Connector line between steps */
.stair-item:not(:last-child)::after{
  content:'';
  position:absolute;
  left:19px;
  top:calc(100% - 24px);
  width:1px;
  height:48px;
  background:linear-gradient(to bottom,rgba(200,241,53,.35),transparent);
}

/* Step number */
.stair-num{
  flex-shrink:0;
  width:40px;height:40px;
  border-radius:50%;
  border:1px solid rgba(200,241,53,.25);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:.65rem;font-weight:500;
  color:var(--accent);
  background:rgba(200,241,53,.05);
  margin-top:24px;
  transition:background .3s,border-color .3s;
  flex-shrink:0;
}
.stair-item:hover .stair-num{background:rgba(200,241,53,.12);border-color:rgba(200,241,53,.5)}

/* Card */
.stair-card{
  flex:1;
  background:var(--surf);
  border:1px solid var(--border);
  border-radius:14px;
  padding:24px 28px;
  max-width:520px;
  margin-bottom:32px;
  position:relative;
  overflow:hidden;
  transition:border-color .35s,transform .35s var(--ease),box-shadow .35s;
}
.stair-card::before{
  content:'';position:absolute;top:0;left:0;
  width:3px;height:100%;
  background:linear-gradient(to bottom,var(--accent),transparent);
  border-radius:14px 0 0 14px;
  opacity:0;transition:opacity .3s;
}
.stair-item:hover .stair-card{
  border-color:rgba(200,241,53,.22);
  transform:translateY(-4px);
  box-shadow:0 16px 48px rgba(0,0,0,.35);
}
.stair-item:hover .stair-card::before{opacity:1}

.stair-card-top{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.stair-icon-wrap{width:42px;height:42px;border-radius:10px;background:var(--adim);border:1px solid rgba(200,241,53,.12);display:flex;align-items:center;justify-content:center;font-size:1.2rem;flex-shrink:0;transition:background .3s}
.stair-item:hover .stair-icon-wrap{background:rgba(200,241,53,.13)}
.stair-meta{display:flex;flex-direction:column;gap:4px}
.stair-badge{font-family:var(--mono);font-size:.6rem;font-weight:500;color:var(--accent);letter-spacing:.16em;text-transform:uppercase;background:var(--adim);padding:3px 9px;border-radius:100px;display:inline-block}
.stair-year{font-family:var(--mono);font-size:.65rem;color:var(--muted);letter-spacing:.08em}
.stair-title{font-size:1.05rem;font-weight:700;letter-spacing:-.025em;color:var(--text);margin-bottom:4px}
.stair-school{font-size:.8rem;color:var(--muted);font-weight:500;margin-bottom:10px}
.stair-desc{font-size:.8rem;line-height:1.75;color:var(--muted);margin-bottom:14px}
.stair-pills{display:flex;gap:8px;flex-wrap:wrap}
.stair-pills span{font-size:.63rem;font-weight:600;color:var(--text);background:rgba(255,255,255,.04);border:1px solid var(--border);padding:3px 11px;border-radius:100px;letter-spacing:.05em}

/* Staircase slide-in from right with stagger */
.stair-item.reveal{opacity:0;transform:translateX(70px) translateY(16px);transition:opacity .75s var(--ease),transform .75s var(--ease)}
.stair-item.reveal.visible{opacity:1;transform:translateX(0) translateY(0)}
.s1.reveal{transition-delay:.0s}
.s2.reveal{transition-delay:.18s}
.s3.reveal{transition-delay:.35s}

/* ── Canvas panel ── */
.edu-canvas-wrap{
  position:sticky;
  top:120px;
  background:var(--surf);
  border:1px solid var(--border);
  border-radius:16px;
  overflow:hidden;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:0;
}
.edu-canvas-wrap canvas{width:100%;display:block;height:220px}

.edu-canvas-overlay{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:var(--border);
  border-top:1px solid var(--border);
}
.edu-stat-card{background:var(--surf);padding:18px 14px;text-align:center}
.edu-stat-num{font-size:1.6rem;font-weight:700;color:var(--accent);letter-spacing:-.04em;line-height:1}
.edu-stat-lbl{font-size:.58rem;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-top:4px;line-height:1.3}

.edu-label-float{
  position:absolute;
  top:14px;right:16px;
  font-family:var(--mono);font-size:.6rem;font-weight:500;
  color:rgba(200,241,53,.4);letter-spacing:.12em;text-transform:uppercase;
  line-height:1.4;text-align:right;
}

/* ── SKILLS ── */
#skills{border-top:1px solid var(--border);background:var(--surf)}
.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--r);overflow:hidden}
.skill-card{background:var(--surf);padding:34px 28px;position:relative;overflow:hidden;transition:background .3s}
.skill-card::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 0%,rgba(200,241,53,.07),transparent 70%);opacity:0;transition:opacity .3s}
.skill-card:hover{background:var(--surf2)}.skill-card:hover::before{opacity:1}
.skill-icon{font-size:1.4rem;margin-bottom:16px;display:block}
.skill-card h3{font-size:.95rem;font-weight:700;letter-spacing:-.02em;margin-bottom:16px;color:var(--text)}
.skill-card ul{list-style:none}
.skill-card ul li{font-size:.76rem;color:var(--muted);line-height:1.9;padding-left:15px;position:relative}
.skill-card ul li::before{content:'→';position:absolute;left:0;color:var(--accent);font-size:.68rem}

/* ── CONTACT ── */
#contact{border-top:1px solid var(--border);text-align:center;padding:130px 52px}
.contact-inner{max-width:680px;margin:0 auto;display:flex;flex-direction:column;align-items:center}
.contact-inner .section-label{justify-content:center}
.contact-inner .section-label::after{display:none}
.contact-title{font-size:clamp(2.8rem,7vw,6.5rem);font-weight:700;letter-spacing:-.04em;line-height:.95;margin-bottom:40px}
.contact-title span{color:var(--accent);font-style:italic}
.contact-email{font-size:1rem;color:var(--muted);text-decoration:none;border-bottom:1px solid var(--border);padding-bottom:4px;transition:color .2s,border-color .2s;margin-bottom:40px;display:inline-block}
.contact-email:hover{color:var(--accent);border-color:var(--accent)}
.contact-btns{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-bottom:56px}
.socials{display:flex;gap:28px;flex-wrap:wrap;justify-content:center}
.social-link{font-size:.72rem;font-weight:600;color:var(--muted);text-decoration:none;letter-spacing:.1em;text-transform:uppercase;transition:color .2s}
.social-link:hover{color:var(--accent)}

/* ── FOOTER ── */
footer{padding:22px 52px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border)}
footer span{font-size:.72rem;color:var(--muted)}

/* ── REVEAL ── */
.reveal{opacity:0;transform:translateY(32px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal-d1{transition-delay:.1s}.reveal-d2{transition-delay:.2s}.reveal-d3{transition-delay:.3s}
/* Staircase items handled above */
.stair-item.reveal{opacity:0;transform:translateX(70px) translateY(16px);transition:opacity .75s var(--ease),transform .75s var(--ease)}
.stair-item.reveal.visible{opacity:1;transform:translateX(0) translateY(0)}

/* ── RESPONSIVE ── */
@media(max-width:1100px){
  #hero{flex-direction:column;justify-content:center}
  .hero-visual{width:100%;max-width:400px}
  .edu-layout{grid-template-columns:1fr}
  .edu-canvas-wrap{position:relative;top:auto}
  .skills-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:768px){
  nav{padding:18px 24px}
  .nav-links,.nav-cta{display:none}
  .hamburger{display:flex}
  section{padding:80px 24px}
  #hero{padding:110px 24px 60px}
  #contact{padding:100px 24px}
  .hero-title{font-size:clamp(2.6rem,11vw,4rem)}
  .hero-bottom{margin-top:36px}
  .hero-visual{display:none}
  .about-inner{grid-template-columns:1fr;gap:48px}
  .about-img-frame{max-height:300px}
  .about-stats{gap:24px}
  .s1,.s2,.s3{margin-left:0}
  .stair-item.reveal{transform:translateY(24px)}
  .stair-item.reveal.visible{transform:translateY(0)}
  .skills-grid{grid-template-columns:1fr}
  footer{flex-direction:column;gap:10px;padding:20px 24px;text-align:center}
  #cursor,#cursor-ring{display:none}
  body{cursor:auto}
  a{cursor:auto}
}