/* =========================================================
   shahzaib.dev v3 — dark, professional, numbered sections
   Inspiration blend: Brittany Chiang (structure, side rails,
   numbered nav) + Josh Comeau (spring motion) + a light
   editor-style accent for tags (Tamal Sen), kept minimal.
   ========================================================= */

@view-transition { navigation: auto; }

:root{
  --bg: #0a0f1a;
  --bg-alt: #0d1420;
  --surface: #111927;
  --surface-2: #16202f;
  --border: #1f2a3a;
  --border-strong: #2b3a4f;

  --text-bright: #e7edf6;
  --text: #b8c4d6;
  --text-muted: #7c8aa0;
  --text-faint: #4d5972;

  --accent: #3ddc97;
  --accent-dim: #2ba876;
  --accent-soft: rgba(61,220,151,0.10);
  --accent-soft-2: rgba(61,220,151,0.18);
  --gold: #e3b341;
  --gold-soft: rgba(227,179,65,0.10);

  --maxw: 1180px;
  --radius: 12px;
  --spring: cubic-bezier(.34,1.56,.64,1);
  --ease: cubic-bezier(.4,0,.2,1);

  /* type scale — 8 steps, replaces 14 ad-hoc font-sizes */
  --fs-2xs: 11px;   /* eyebrow labels, sidebar meta */
  --fs-xs:  12.5px; /* tags/chips, small meta */
  --fs-sm:  13.5px; /* buttons, nav links */
  --fs-base:15px;   /* secondary body copy, card text */
  --fs-md:  16px;   /* primary paragraph copy */
  --fs-lg:  18px;   /* card headings */
  --fs-xl:  24px;   /* featured card / sub-headings */

  /* display scale — 3 fluid steps, replaces 6 one-off clamp() headings */
  --fs-display-1: clamp(38px, 7vw, 72px); /* hero name */
  --fs-display-2: clamp(30px, 6vw, 56px); /* hero role, contact heading, detail hero title */
  --fs-display-3: clamp(24px, 3.4vw, 34px); /* section titles, thumbnail placeholders */
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
}

body{
  background:var(--bg);
  color:var(--text);
  font-family:'Inter', -apple-system, sans-serif;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

h1,h2,h3,h4{font-family:'Sora', sans-serif; letter-spacing:-0.02em; font-weight:700; color:var(--text-bright);}
.mono{font-family:'JetBrains Mono', monospace;}
a{color:inherit; text-decoration:none;}
img{display:block; max-width:100%;}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:4px;}
::selection{background:var(--accent); color:#06120c;}

.wrap{max-width:var(--maxw); margin:0 auto; padding:0 40px;}
@media (max-width:640px){.wrap{padding:0 24px;}}

section{padding:130px 0; scroll-margin-top:88px;}
@media (max-width:900px){section{padding:90px 0; scroll-margin-top:76px;}}
@media (max-width:640px){section{padding:64px 0; scroll-margin-top:70px;}}

/* ---- view transitions (for navigating into project detail pages) ---- */
::view-transition-old(page), ::view-transition-new(page){
  animation-duration:.32s; animation-timing-function:var(--ease);
}
body{ view-transition-name: page; }

/* ---- reveal on scroll ---- */
.reveal{opacity:0; transform:translateY(20px); transition:opacity .7s var(--ease), transform .7s var(--ease);}
.reveal.in{opacity:1; transform:translateY(0);}

/* ================= SIDE RAILS (Brittany-style) ================= */
.side-rail{
  position:fixed; bottom:0; z-index:40; display:flex; flex-direction:column; align-items:center;
  gap:22px; padding-bottom:34px;
}
.side-rail.left{ left:clamp(24px, 3.5vw, 56px); }
.side-rail.right{ right:clamp(24px, 3.5vw, 56px); }
.side-rail::after{ content:''; width:1px; height:90px; background:var(--text-faint); margin-top:4px; }
.side-rail a{
  color:var(--text-muted); transition:transform .25s var(--spring), color .2s;
  display:flex; align-items:center; justify-content:center;
}
.side-rail a:hover{color:var(--accent); transform:translateY(-3px);}
.side-rail.right .vert-text{
  writing-mode:vertical-rl; font-family:'JetBrains Mono'; font-size:var(--fs-xs); color:var(--text-muted);
  letter-spacing:0.05em; transition:color .2s, transform .25s var(--spring);
}
.side-rail.right .vert-text:hover{color:var(--accent); transform:translateY(-3px);}
@media (max-width:900px){ .side-rail{display:none;} }

/* ================= NAVBAR ================= */
header{
  position:sticky; top:0; z-index:100;
  background:rgba(10,15,26,0.78); backdrop-filter:blur(12px) saturate(140%);
  border-bottom:1px solid var(--border);
}
nav{
  max-width:var(--maxw); margin:0 auto; padding:20px 40px;
  display:flex; align-items:center; justify-content:space-between;
}
@media (max-width:640px){nav{padding:16px 24px;}}
.logo{
  font-family:'JetBrains Mono'; font-weight:700; font-size:var(--fs-lg); color:var(--accent);
  display:flex; align-items:center; gap:2px;
}
.navlinks-list{display:flex; gap:34px; align-items:center;}

/* ================= MOBILE MENU ================= */
.hamburger{
  display:none; flex-direction:column; gap:5px; width:24px; background:none; border:none; padding:4px;
}
.hamburger span{ width:100%; height:2px; background:var(--text-bright); border-radius:2px; transition:transform .25s var(--ease), opacity .2s; }
.hamburger.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2){ opacity:0; }
.hamburger.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

.mobile-menu{
  display:none; flex-direction:column; gap:2px; background:var(--bg-alt); border-bottom:1px solid var(--border);
  padding:10px 24px 20px; position:sticky; top:65px; z-index:99;
}
.mobile-menu.open{ display:flex; }
.mobile-menu a{
  font-family:'JetBrains Mono'; font-size:var(--fs-base); color:var(--text-muted); padding:14px 4px;
  border-bottom:1px solid var(--border-soft, var(--border));
}
.mobile-menu a .num{ color:var(--accent); margin-right:8px; }
.mobile-menu a.nav-cta-mobile{ color:var(--accent); font-weight:600; border-bottom:none; }

@media (max-width:800px){
  .hamburger{ display:flex; }
  .navlinks-list a.numbered{ display:none; }
}
.navlinks-list a{
  font-size:var(--fs-sm); color:var(--text-muted); font-weight:500; transition:color .2s;
  font-family:'JetBrains Mono';
}
.navlinks-list a .num{color:var(--accent); margin-right:5px;}
.navlinks-list a:hover{color:var(--text-bright);}
.nav-cta{
  border:1px solid var(--accent); color:var(--accent) !important; padding:9px 18px; border-radius:6px;
  font-size:var(--fs-sm) !important; font-weight:600; transition:all .25s var(--spring);
}
.nav-cta:hover{background:var(--accent-soft); transform:translateY(-2px);}

/* ================= HERO ================= */
.hero{
  min-height:88vh; display:flex; flex-direction:column; justify-content:center;
  padding-top:60px; padding-bottom:60px;
}
.hero .hi{ font-family:'JetBrains Mono'; color:var(--accent); font-size:var(--fs-md); margin-bottom:20px; }
.hero h1{ font-size:var(--fs-display-1); line-height:1.05; color:var(--text-bright); margin-bottom:6px; }
.hero h2{ font-size:var(--fs-display-2); line-height:1.1; color:var(--text-muted); margin-bottom:28px; }
.hero p.desc{ max-width:560px; font-size:var(--fs-md); color:var(--text-muted); margin-bottom:44px; }
.btn{
  display:inline-flex; align-items:center; gap:8px; padding:16px 32px; border-radius:6px;
  font-family:'JetBrains Mono'; font-size:var(--fs-base); font-weight:600; transition:all .25s var(--spring);
  border:1px solid transparent;
}
.btn-outline{ border:1px solid var(--accent); color:var(--accent); }
.btn-outline:hover{ background:var(--accent-soft); transform:translateY(-3px); box-shadow:0 12px 28px rgba(61,220,151,0.15); }
.btn-solid{ background:var(--accent); color:#06120c; }
.btn-solid:hover{ transform:translateY(-3px); box-shadow:0 12px 28px rgba(61,220,151,0.22); background:#4bf0a8; }

/* ================= SECTION HEAD (numbered) ================= */
.sec-head{ display:flex; align-items:baseline; gap:16px; margin-bottom:56px; white-space:nowrap; }
.sec-head .num{ font-family:'JetBrains Mono'; color:var(--accent); font-size:var(--fs-lg); font-weight:600; }
.sec-head h2{ font-size:var(--fs-display-3); }
.sec-head .line{ flex:1; height:1px; background:var(--border-strong); margin-left:10px; }
@media (max-width:560px){ .sec-head{white-space:normal;} }

/* ================= ABOUT ================= */
.about-grid{ display:grid; grid-template-columns:1fr 280px; gap:56px; align-items:start; }
@media (max-width:820px){ .about-grid{grid-template-columns:1fr; gap:36px;} }
.about-text p{ color:var(--text-muted); font-size:var(--fs-md); margin-bottom:18px; max-width:560px; }
.about-text strong{ color:var(--text-bright); font-weight:600; }
.about-text .taglist{ display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; max-width:460px; }
.about-text .taglist span{
  font-family:'JetBrains Mono'; font-size:var(--fs-xs); color:var(--accent); position:relative; padding-left:16px;
}
.about-text .taglist span::before{ content:'▹'; position:absolute; left:0; }

.photo-frame{ position:relative; width:100%; max-width:260px; }
.photo-frame .frame-bg{
  position:absolute; inset:16px -16px -16px 16px; border:2px solid var(--accent); border-radius:8px; z-index:0;
  transition:inset .3s var(--ease);
}
.photo-frame:hover .frame-bg{ inset:12px -12px -12px 12px; }
.photo-frame .frame-img{
  position:relative; z-index:1; border-radius:8px; overflow:hidden; aspect-ratio:1/1;
  filter:grayscale(30%) contrast(1.02);
  transition:filter .3s var(--ease);
}
.photo-frame:hover .frame-img{ filter:grayscale(0%); }
.photo-frame .frame-img img{ width:100%; height:100%; object-fit:cover; }

/* ================= SKILLS ================= */
.skills-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; align-items:start; }
@media (max-width:820px){ .skills-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .skills-grid{grid-template-columns:1fr;} }
.skill-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:24px;
  transition:transform .25s var(--spring), border-color .25s;
}
.skill-card:hover{ transform:translateY(-5px); border-color:var(--accent-dim); }
.skill-card h3{ font-size:var(--fs-base); margin-bottom:16px; font-family:'JetBrains Mono'; color:var(--accent); font-weight:600; }
.chip-row{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{
  font-family:'JetBrains Mono'; font-size:var(--fs-xs); color:var(--text-muted); background:var(--surface-2);
  border:1px solid var(--border); padding:5px 11px; border-radius:5px;
}

/* ================= PROJECTS ================= */
.projects-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:22px; }
@media (max-width:820px){ .projects-grid{grid-template-columns:1fr;} }
.project-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden;
  transition:transform .3s var(--spring), border-color .3s, box-shadow .3s; display:flex; flex-direction:column;
}
.project-card:hover{ transform:translateY(-6px); border-color:var(--accent-dim); box-shadow:0 20px 50px -20px rgba(61,220,151,0.18); }
.project-card.featured{ grid-column:1/-1; display:grid; grid-template-columns:1fr 1fr; }
@media (max-width:820px){ .project-card.featured{grid-template-columns:1fr;} }
.p-thumb{
  min-height:170px; background:
    linear-gradient(135deg, var(--accent-soft), var(--gold-soft)),
    repeating-linear-gradient(45deg, rgba(255,255,255,0.015) 0 2px, transparent 2px 16px);
  display:flex; align-items:center; justify-content:center; border-bottom:1px solid var(--border);
  overflow:hidden;
}
/* real screenshot support — drop a <img class="p-thumb-img"> inside .p-thumb
   and the gradient/pattern becomes an invisible fallback behind it */
.p-thumb-img{ width:100%; height:100%; object-fit:cover; display:block; }
.project-card.featured .p-thumb{ border-bottom:none; border-right:1px solid var(--border); min-height:100%; }
@media (max-width:820px){ .project-card.featured .p-thumb{border-right:none; border-bottom:1px solid var(--border); min-height:170px;} }
.p-thumb .tm{ font-family:'Sora'; font-weight:800; color:var(--accent); opacity:.45; font-size:var(--fs-md); }
.p-body{ padding:26px; display:flex; flex-direction:column; flex:1; }
.p-badge{
  display:inline-flex; align-items:center; gap:6px; font-family:'JetBrains Mono'; font-size:var(--fs-2xs); font-weight:600;
  color:var(--gold); background:var(--gold-soft); padding:4px 12px; border-radius:100px; margin-bottom:14px; width:fit-content;
}
.p-body h3{ font-size:var(--fs-lg); margin-bottom:10px; }
.project-card.featured .p-body h3{ font-size:var(--fs-xl); }
.p-body p{ color:var(--text-muted); font-size:var(--fs-base); margin-bottom:16px; flex:1; }
.p-view{
  font-family:'JetBrains Mono'; font-size:var(--fs-sm); font-weight:600; color:var(--accent); display:flex; align-items:center; gap:6px;
  margin-top:auto;
}
.p-view .arrow{ transition:transform .25s var(--spring); }
.project-card:hover .p-view .arrow{ transform:translateX(5px); }

/* ================= CONTACT ================= */
.contact-section{ text-align:center; }
.contact-section .sec-head{ justify-content:center; }
.contact-section h2.big{ font-size:var(--fs-display-2); margin-bottom:22px; }
.contact-section p{ color:var(--text-muted); max-width:480px; margin:0 auto 40px; font-size:var(--fs-md); }
.contact-links-row{ display:flex; gap:20px; justify-content:center; flex-wrap:wrap; margin-top:56px; }
.contact-links-row a{
  font-family:'JetBrains Mono'; font-size:var(--fs-sm); color:var(--text-muted); transition:color .2s;
}
.contact-links-row a:hover{ color:var(--accent); }

footer.site-footer{ text-align:center; padding:30px 0; color:var(--text-faint); font-family:'JetBrains Mono'; font-size:var(--fs-xs); }

/* ================= PROJECT DETAIL PAGE ================= */
.detail-nav-space{ padding-top:0; }
.back-link{
  display:inline-flex; align-items:center; gap:8px; font-family:'JetBrains Mono'; font-size:var(--fs-sm);
  color:var(--text-muted); margin-bottom:28px; transition:color .2s, transform .25s var(--spring);
}
.back-link:hover{ color:var(--accent); transform:translateX(-3px); }
.detail-hero h1{ font-size:var(--fs-display-2); margin-bottom:16px; }
.detail-hero .sub{ font-size:var(--fs-md); color:var(--text-muted); max-width:600px; margin-bottom:30px; }
.detail-thumb{
  border-radius:16px; overflow:hidden; border:1px solid var(--border); aspect-ratio:16/7.5;
  background:linear-gradient(135deg, var(--accent-soft), var(--gold-soft));
  display:flex; align-items:center; justify-content:center; margin:48px 0 64px;
}
.detail-thumb .bigtm{ font-family:'Sora'; font-weight:800; color:var(--accent); opacity:.4; font-size:var(--fs-display-3); }
.detail-grid{ display:grid; grid-template-columns:1fr 300px; gap:60px; }
@media (max-width:860px){ .detail-grid{grid-template-columns:1fr;} }
.detail-body p{ color:var(--text-muted); font-size:var(--fs-md); margin-bottom:20px; max-width:640px; }
.detail-body h3{ font-size:var(--fs-lg); margin:34px 0 18px; color:var(--text-bright); }
.feature-list{ list-style:none; display:flex; flex-direction:column; gap:13px; }
.feature-list li{ display:flex; gap:12px; font-size:var(--fs-base); color:var(--text-muted); align-items:flex-start; }
.feature-list li::before{
  content:'▹'; color:var(--accent); font-family:'JetBrains Mono'; font-weight:700; margin-top:1px;
}
.detail-sidebar{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:26px;
  height:fit-content; position:sticky; top:100px;
}
.sidebar-row{ padding:16px 0; border-bottom:1px solid var(--border); }
.sidebar-row:first-child{ padding-top:0; }
.sidebar-row:last-child{ border-bottom:none; padding-bottom:0; }
.sidebar-row .lbl{
  font-family:'JetBrains Mono'; font-size:var(--fs-2xs); color:var(--text-faint); text-transform:uppercase;
  letter-spacing:0.06em; margin-bottom:10px;
}
