/* ══════════════════════════════════════════
   SOHAIB PORTFOLIO — Light Theme Rebuild
   style.css
══════════════════════════════════════════ */

:root {
  --bg:       #f5f4f0;
  --surface:  #ffffff;
  --accent:   #6366f1;
  --accent-d: #4f46e5;
  --accent-t: rgba(99,102,241,0.12);
  --text:     #0f0f0f;
  --muted:    #666666;
  --border:   #e2e2e2;
  --glow:     #22d3ee;
  --shadow:   0 2px 16px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.05);
  --shadow-h: 0 8px 32px rgba(0,0,0,0.12), 0 2px 8px rgba(0,0,0,0.06);
  --radius:   14px;
  --fh:       'Syne', sans-serif;
  --fb:       'DM Sans', sans-serif;
  --ease:     cubic-bezier(0.16,1,0.3,1);
}

*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:auto; }
body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--fb);
  font-size: 16px;
  line-height: 1.6;
  overflow-x: hidden;
  cursor: none;
}
a { color:inherit; text-decoration:none; cursor:none; }
::selection { background: var(--accent-t); }

/* ── Cursor ─────────────────────────────── */
#cursor-dot {
  position:fixed; width:7px; height:7px;
  background:var(--accent); border-radius:50%;
  pointer-events:none; z-index:9999;
  transform:translate(-50%,-50%);
  will-change:left,top;
}
#cursor-ring {
  position:fixed; width:38px; height:38px;
  border:1.5px solid var(--accent); border-radius:50%;
  pointer-events:none; z-index:9998;
  transform:translate(-50%,-50%);
  opacity:0.5;
  transition:width .3s var(--ease),height .3s var(--ease),opacity .3s;
  will-change:left,top;
}
.cursor-expand #cursor-ring { width:56px; height:56px; opacity:0.9; }

/* ── Scroll Progress ────────────────────── */
#scroll-progress {
  position:fixed; top:0; left:0; height:2px; width:0%;
  background:linear-gradient(90deg,var(--accent),var(--glow));
  z-index:9000; transition:width .06s linear;
  box-shadow:0 0 8px rgba(99,102,241,.4);
}

/* ── Canvas ─────────────────────────────── */
#three-canvas {
  position:fixed; top:0; left:0;
  width:100%; height:100%;
  z-index:1; pointer-events:none;
}

/* ── Scroll Proxy ───────────────────────── */
#scroll-proxy {
  height:5000px; width:1px;
  position:relative; z-index:0; pointer-events:none;
}

/* ── Boot Overlay ───────────────────────── */
#boot-overlay {
  position:fixed; inset:0; z-index:200;
  display:flex; align-items:center; justify-content:center;
  background:rgba(245,244,240,0.96);
  backdrop-filter:blur(4px);
}
#login-box {
  width:min(420px,90vw);
  background:#fff;
  border:1px solid var(--border);
  border-radius:12px;
  overflow:hidden;
  box-shadow:0 20px 60px rgba(0,0,0,0.12);
  font-family:'Courier New',monospace;
}
.os-bar {
  display:flex; align-items:center; gap:6px;
  padding:10px 14px;
  background:#f8f8f8; border-bottom:1px solid var(--border);
}
.os-dot { width:11px; height:11px; border-radius:50%; }
.os-dot.red    { background:#ff5f57; }
.os-dot.yellow { background:#febc2e; }
.os-dot.green  { background:#28c840; }
.os-title { flex:1; text-align:center; font-size:11px; color:var(--muted); }
.login-body { padding:28px; }
.login-mono  { font-family:'Syne',sans-serif; font-size:2rem; font-weight:800; color:var(--accent); text-align:center; margin-bottom:4px; letter-spacing:-0.02em; }
.login-sub   { text-align:center; font-size:12px; color:var(--muted); margin-bottom:20px; }
.login-field-row {
  display:flex; align-items:center; gap:8px;
  margin-bottom:10px; font-size:13px; color:#333;
  padding:10px 12px;
  background:#fafafa; border:1px solid var(--border); border-radius:7px;
}
.lf-label { color:var(--accent); font-weight:700; width:36px; }
.lf-sep   { color:var(--muted); }
.lf-value { flex:1; }
.cursor-blink { color:var(--accent); animation:blink .7s step-end infinite; }
@keyframes blink { 50%{opacity:0;} }
#login-msg { margin-top:12px; font-size:12px; text-align:center; min-height:18px; }
#login-msg.error   { color:#ef4444; }
#login-msg.success { color:#10b981; }
@keyframes shake {
  0%,100%{transform:translateX(0)} 20%{transform:translateX(-8px)}
  40%{transform:translateX(8px)}  60%{transform:translateX(-5px)}
  80%{transform:translateX(5px)}
}
.shake { animation:shake .45s ease; }

/* ── Section Overlays ───────────────────── */
.section-overlay {
  position:fixed; inset:0; z-index:50;
  display:flex; align-items:center;
  pointer-events:none;
  opacity:0; visibility:hidden;
  transition:opacity .35s ease, visibility .35s ease;
  will-change:opacity;
}
.section-overlay.visible {
  opacity:1; visibility:visible; pointer-events:auto;
}
#hero-overlay.visible { z-index:55; }

.section-left {
  position:absolute; left:0;
  width:min(52%,640px);
  padding:60px 36px 60px 72px;
  max-height:100vh; overflow-y:auto;
  scrollbar-width:none;
}
.section-left::-webkit-scrollbar { display:none; }

.section-label {
  font-size:11px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--accent); margin-bottom:10px;
}
.section-title {
  font-family:var(--fh);
  font-size:clamp(2rem,3.5vw,3rem);
  font-weight:700; line-height:1.1;
  color:var(--text); margin-bottom:1.2rem;
}
.section-body { font-size:15px; color:var(--muted); line-height:1.75; margin-bottom:1rem; }

/* ── Hero ───────────────────────────────── */
.hero-content { padding-top:0; }
.hero-eyebrow {
  font-size:13px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--accent); margin-bottom:10px;
}
.hero-name {
  font-family:var(--fh);
  font-size:clamp(3rem, 8.5vw, 6.5rem);
  font-weight:800; line-height:.88;
  letter-spacing:-.04em; color:var(--text);
  margin-bottom:.3em;
}
.hero-sub {
  font-family:var(--fh);
  font-size:clamp(1rem,2vw,1.4rem);
  font-weight:400; color:var(--muted); margin-bottom:.5rem;
}
.hero-stack { font-size:13px; color:#999; letter-spacing:.04em; margin-bottom:2rem; }
.hero-cta   { display:flex; gap:12px; flex-wrap:wrap; }

/* ── Buttons ────────────────────────────── */
.btn-primary {
  display:inline-flex; align-items:center; gap:6px;
  padding:13px 26px; background:var(--accent); color:#fff;
  font-family:var(--fb); font-size:14px; font-weight:600;
  border:none; border-radius:8px; cursor:none;
  box-shadow:0 4px 16px rgba(99,102,241,.35);
  transition:background .2s, box-shadow .2s, transform .15s;
}
.btn-primary:hover { background:var(--accent-d); transform:translateY(-1px); box-shadow:0 8px 24px rgba(99,102,241,.4); }
.btn-ghost {
  display:inline-flex; align-items:center;
  padding:13px 26px; background:transparent;
  color:var(--text); font-size:14px; font-weight:500;
  border:1.5px solid var(--border); border-radius:8px; cursor:none;
  transition:border-color .2s, color .2s, transform .15s;
}
.btn-ghost:hover { border-color:var(--accent); color:var(--accent); transform:translateY(-1px); }
.btn-submit { width:100%; justify-content:center; font-size:15px; padding:15px; }

/* ── About Pills ────────────────────────── */
.pill-group { display:flex; flex-wrap:wrap; gap:8px; margin-top:1.2rem; }
.pill {
  padding:5px 14px;
  background:var(--accent-t); border:1px solid rgba(99,102,241,.2);
  border-radius:100px; font-size:12px; font-weight:500; color:var(--accent);
}

/* ── Project Cards ──────────────────────── */
.project-grid { display:flex; flex-direction:column; gap:10px; margin-top:.5rem; }
.project-card {
  display:flex; align-items:stretch; gap:0;
  background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius); overflow:hidden; cursor:none;
  box-shadow:var(--shadow);
  transition:box-shadow .2s, transform .2s;
}
.project-card:hover { box-shadow:var(--shadow-h); transform:translateX(4px); }
.proj-thumb {
  width:56px; flex-shrink:0;
}
.proj-thumb.t1 { background:linear-gradient(160deg,#6366f1,#22d3ee); }
.proj-thumb.t2 { background:linear-gradient(160deg,#3b82f6,#06b6d4); }
.proj-thumb.t3 { background:linear-gradient(160deg,#8b5cf6,#ec4899); }
.proj-thumb.t4 { background:linear-gradient(160deg,#f59e0b,#ef4444); }
.proj-thumb.t5 { background:linear-gradient(160deg,#10b981,#3b82f6); }
.proj-content { flex:1; padding:12px 16px; }
.proj-num  { font-size:10px; font-weight:700; color:var(--accent); letter-spacing:.1em; display:block; margin-bottom:2px; }
.proj-name { font-size:13px; font-weight:600; color:var(--text); margin-bottom:2px; }
.proj-impact { font-size:11px; color:#10b981; font-style:italic; margin-bottom:3px; }
.proj-tech { font-size:11px; color:var(--muted); }
.proj-arrow { padding:12px 16px; display:flex; align-items:center; color:var(--accent); font-size:16px; transition:transform .2s; }
.project-card:hover .proj-arrow { transform:translateX(4px); }

/* ── Skill Tag Cloud ────────────────────── */
.skill-categories { display:flex; flex-direction:column; gap:16px; margin-top:.5rem; }
.skill-cat h4 {
  font-size:10px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted); margin-bottom:8px; font-weight:600;
}
.tag-cloud { display:flex; flex-wrap:wrap; gap:7px; }
.tag {
  padding:6px 14px;
  background:var(--surface); border:1px solid var(--border);
  border-radius:100px; font-size:12px; font-weight:500; color:var(--text);
  box-shadow:0 1px 3px rgba(0,0,0,.04);
  transition:border-color .2s, color .2s, background .2s;
}
.tag:hover { border-color:var(--accent); color:var(--accent); background:var(--accent-t); }
.tag.hot { border-color:rgba(99,102,241,.3); color:var(--accent); background:var(--accent-t); }

/* ── Experience Timeline ────────────────── */
.timeline { position:relative; padding-left:32px; margin-top:.5rem; }
.timeline::before {
  content:'';
  position:absolute; left:7px; top:4px; bottom:4px;
  width:2px; background:linear-gradient(180deg,var(--accent),transparent);
  border-radius:2px;
}
.tl-item {
  position:relative; padding:0 0 28px 20px;
  opacity:0; transform:translateX(-12px);
  transition:opacity .5s ease, transform .5s var(--ease);
}
.tl-item.visible { opacity:1; transform:translateX(0); }
.tl-dot {
  position:absolute; left:-25px; top:4px;
  width:16px; height:16px; border-radius:50%;
  background:var(--surface); border:2.5px solid var(--accent);
  box-shadow:0 0 0 3px var(--accent-t);
}
.tl-year { font-size:11px; font-weight:700; color:var(--accent); letter-spacing:.08em; margin-bottom:3px; }
.tl-role { font-size:14px; font-weight:600; color:var(--text); margin-bottom:2px; }
.tl-desc { font-size:13px; color:var(--muted); }

/* ── Contact Form ───────────────────────── */
form { display:flex; flex-direction:column; gap:12px; margin-top:1.2rem; }
.form-group { display:flex; flex-direction:column; gap:5px; }
.form-group label { font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
.form-group input,
.form-group textarea {
  background:var(--surface); border:1.5px solid var(--border);
  border-radius:8px; color:var(--text); font-family:var(--fb);
  font-size:14px; padding:11px 14px; outline:none; resize:none;
  transition:border-color .2s, box-shadow .2s; cursor:none;
}
.form-group input:focus,
.form-group textarea:focus { border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-t); }
.form-group input::placeholder,
.form-group textarea::placeholder { color:#bbb; }

/* ── Modal ──────────────────────────────── */
.modal-overlay {
  position:fixed; inset:0; z-index:500;
  background:rgba(245,244,240,.88); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transition:opacity .3s, visibility .3s;
}
.modal-overlay.open { opacity:1; visibility:visible; }
.modal-box {
  width:min(540px,90vw); background:var(--surface);
  border:1px solid var(--border); border-radius:18px; padding:40px;
  position:relative; box-shadow:0 24px 60px rgba(0,0,0,0.12);
  transform:translateY(18px) scale(0.97);
  transition:transform .3s var(--ease);
}
.modal-overlay.open .modal-box { transform:translateY(0) scale(1); }
.modal-close {
  position:absolute; top:14px; right:14px;
  background:var(--bg); border:1px solid var(--border); color:var(--muted);
  border-radius:50%; width:32px; height:32px;
  display:flex; align-items:center; justify-content:center;
  cursor:none; font-size:13px;
  transition:color .2s, border-color .2s;
}
.modal-close:hover { color:var(--text); border-color:var(--accent); }
.modal-box h3 { font-family:var(--fh); font-size:1.35rem; margin-bottom:.8rem; }
.modal-box p  { font-size:14px; color:var(--muted); line-height:1.75; margin-bottom:1rem; }
.modal-tags   { display:flex; flex-wrap:wrap; gap:7px; }
.modal-tags span {
  padding:4px 12px; background:var(--accent-t);
  border:1px solid rgba(99,102,241,.2); border-radius:100px;
  font-size:11px; font-weight:500; color:var(--accent);
}

/* ── Toast ──────────────────────────────── */
#toast {
  position:fixed; bottom:28px; left:50%;
  transform:translateX(-50%) translateY(70px);
  background:var(--surface); border:1px solid var(--border);
  border-radius:100px; padding:11px 26px;
  font-size:13px; font-weight:500; color:var(--text);
  z-index:9999; opacity:0;
  box-shadow:0 8px 30px rgba(0,0,0,.1);
  transition:transform .4s var(--ease), opacity .4s;
  white-space:nowrap;
}
#toast.show    { transform:translateX(-50%) translateY(0); opacity:1; }
#toast.success { border-color:rgba(16,185,129,.4); color:#10b981; }
#toast.error   { border-color:rgba(239,68,68,.4); color:#ef4444; }

/* ── Footer ─────────────────────────────── */
#site-footer {
  position:fixed; bottom:0; left:0; right:0;
  z-index:48; padding:18px 72px;
  display:flex; align-items:center; justify-content:space-between;
  pointer-events:none; opacity:0;
  transition:opacity .4s ease;
}
#site-footer.visible { opacity:1; pointer-events:auto; }
.footer-links { display:flex; gap:20px; }
.footer-link {
  font-size:12px; font-weight:500; letter-spacing:.06em;
  color:var(--muted); cursor:none;
  text-transform:uppercase;
  transition:color .2s;
}
.footer-link:hover { color:var(--accent); }
.footer-copy { font-size:11px; color:#bbb; }

/* ── Utility ────────────────────────────── */
.hidden { display:none !important; }

/* ── Mobile ─────────────────────────────── */
@media (max-width:767px) {
  body { cursor:auto; }
  #cursor-dot, #cursor-ring { display:none; }
  #three-canvas, #boot-overlay, #scroll-proxy, #site-footer { display:none; }

  .section-overlay {
    position:relative !important; opacity:1 !important;
    visibility:visible !important; pointer-events:auto !important;
    display:block !important; inset:unset !important;
  }
  .section-left {
    position:relative !important; width:100% !important;
    padding:56px 24px 36px !important; max-height:none !important;
  }
  .hero-name { font-size:18vw; }

  #mobile-pc {
    display:flex; flex-direction:column; align-items:center;
    padding:48px 24px 0;
  }
  .m-monitor {
    width:220px; border:5px solid #ddd; border-radius:10px 10px 3px 3px;
    background:#f0f0f0; overflow:hidden;
    box-shadow:0 0 30px rgba(99,102,241,0.1);
  }
  .m-screen {
    height:140px; background:#0a0a1a; padding:10px 12px;
    position:relative; overflow:hidden;
  }
  .m-screen-text { font-family:'Courier New',monospace; font-size:10px; color:#22d3ee; line-height:1.8; }
  .m-blink { animation:blink .8s step-end infinite; }
  .m-bezel-bottom { height:10px; background:#e8e8e8; }
  .m-neck  { width:16px; height:24px; background:#ddd; }
  .m-base  { width:120px; height:8px; background:#ddd; border-radius:0 0 5px 5px; }
  .m-keyboard { width:200px; height:18px; background:#e8e8e8; border-radius:3px; margin-top:8px; }
}

@media (min-width:768px) { #mobile-pc { display:none; } }

::-webkit-scrollbar { width:3px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:rgba(99,102,241,.25); border-radius:3px; }
